如何解决如何在具有一个80端口的一个入口中公开具有多个端口的服务
我想通过一个80端口的入口公开我的两个API服务。
apiVersion: v1
kind: Service
metadata:
name: my-api
spec:
selector:
app: my-api
ports:
- name: api1
port: 3000
targetPort: 3000
- name: api2
port: 4000
targetPort: 4000
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
tls:
- hosts:
- example.com
secretName: app-tls
rules:
- host: example.com
http:
paths:
- path: /my-api(/|$)(.*)
backend:
serviceName: my-api
servicePort: 80
但是当我尝试到达https://example.com/my-api
时,它总是返回503状态代码。
解决方法
servicePort: 80
并不意味着Nginx入口正在端口80
上运行。这实际上是后端服务上的端口,听起来您有两个端口:3000
和4000
。
默认情况下,nginx入口控制器在端口80
上运行,并且如果您还启用了TLS或/和443
。就您而言,如果您想同时使用这两个API,则只需将路径分开即可。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
tls:
- hosts:
- example.com
secretName: app-tls
rules:
- host: example.com
http:
paths:
- path: /my-api1(/|$)(.*)
backend:
serviceName: my-api
servicePort: 3000
- path: /my-api2(/|$)(.*)
backend:
serviceName: my-api
servicePort: 4000
✌️
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。