kubernetes - 入口重定向到 localhost tcp 服务
问题描述
我有一个本地网站。该网站是由 docker-compose 创建的,它正在侦听 localhost 端口 3000。
当我尝试:
curl 127.0.0.1:3000
我可以看到响应。
我做了什么:
从我的域提供商我编辑了 DNS 以指向我的服务器,然后我更改了 nginx-ingress:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: virtual-host-ingress
namespace: ingress-basic
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/use-regex: "true"
cert-manager.io/cluster-issuer: "letsencrypt-pp"
spec:
tls:
- hosts:
- nextformulainvesting.com
secretName: ***
rules:
- host: "nextformulainvesting.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: e-frontend-saleor
port:
number: 80
我创建了服务:
apiVersion: v1
kind: Service
metadata:
name: e-frontend-saleor
spec:
ports:
- protocol: TCP
port: 80
targetPort: 3000
但是无论有没有服务,我都会收到错误消息503 Service Temporarily Unavailable
。
如何使用 nginx-ingress 指向我的本地 TCP 服务?
解决方案
为了澄清这个问题,我发布了一个社区 wiki 答案。
此链接提供了有助于解决此问题的答案。基于此-案例的线索是为外部服务器手动创建服务和端点对象。
之后,可以创建一个 Ingress 对象,该对象将指向 external-ip
具有足够端口的 Service 。
以下是类似问题中提供的对象示例。
- 服务和端点对象:
apiVersion: v1
kind: Service
metadata:
name: external-ip
spec:
ports:
- name: app
port: 80
protocol: TCP
targetPort: 5678
clusterIP: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: external-ip
subsets:
- addresses:
- ip: 10.0.40.1
ports:
- name: app
port: 5678
protocol: TCP
- 入口对象:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: external-service
spec:
rules:
- host: service.example.com
http:
paths:
- backend:
serviceName: external-ip
servicePort: 80
path: /
另请参阅此参考资料。
推荐阅读
- c++ - 如果两个静态库使用相同的另一个静态库,如何避免“LNK2005 已定义错误”?
- mysql - 如何在登录 Laravel 之前检查用户活跃度(来自数据库)
- react-native - 我尝试安装 react-native-agora 但不幸的是,当我链接 react native agora 时,应用程序无法构建
- sql - BigQuery SQL:过滤事件序列
- cmake - export CMAKE_PREFIX_PATH=...有什么作用?
- python - 有没有办法用 mininet 创建一个传统的网络,然后用 SDN 替换它的一些节点?
- git - 解决不同回购之间的“合并”
- laravel - 如何从数据库 Laravel 5.7 将图像 + 代码加载到下拉列表中
- azure - 未发送 Azure DevOps Server 2019.1(本地)备份失败通知
- google-bigquery - 我的 Bigquery SQL 不会使用 YEAR 或 CREATE 或 DROP 等函数