我有一个运行 nginx 和一些 web 应用程序的服务。k8s 部署清单如下所示:
kind: Service
...
...
- port: 443
targetPort: 30443
protocol: TCP
name: https
...
---
kind: Deployment
...
...
- containerPort: 443
hostIP: my ip
hostPort: 30443
protocol: TCP
当我通过 https://ip:port 或 https://server_domain_name:port 访问它时,它可以正常工作,但是如何设置 nginx-ingress 以摆脱端口号并仅通过 https://server_domain_name 访问它?
我试图搜索像这样的配置示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 443
但它不起作用
答案1
正确定义您的服务后,如下所示的内容可能会对您有所帮助。
笔记:请注意,我的集群正在运行旧版本,并且api版本已弃用。您需要检查并根据集群版本更新版本。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: domain1.com
http:
paths:
- backend:
serviceName: domain1-store-service
servicePort: 80
- host: domain2.com
http:
paths:
- backend:
serviceName: domain2-video-service
servicePort: 80