gpt4 book ai didi

http - 您可以在 k8s nginx 入口中为每个规则设置后端协议(protocol)吗?

转载 作者:行者123 更新时间:2023-12-02 11:56:06 24 4
gpt4 key购买 nike

我有一个 Kubernetes 集群设置,其中设置了两个服务。

Service1 链接到 Deployment1,Service2 链接到 Deployment2。

Deployment1 为只能使用 http 连接的 Pod 提供服务。

Deployment2 为只能使用 https 连接的 Pod 提供服务。

使用 kubectl port-forward 并执行到 pod 中,我知道服务和部署正在响应,服务之间的内部连接工作正常。

我有一个 nginx 入口设置以允许外部连接到这两个服务。服务只能使用 https 连接,并且任何传入的 http 连接都需要重定向到 https。这是入口设置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: master-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "true"
cert-manager.io/cluster-issuer: "letsencrypt-production"
spec:
tls:
- secretName: tls-secret-one
hosts:
- service1.domain.com
- service2.domain.com
rules:
- host: "service1.domain.com"
http:
paths:
- path: /
backend:
serviceName: service1
servicePort: 60001
- host: "service2.domain.com"
http:
paths:
- path: /
backend:
serviceName: service2
servicePort: 60002

这是问题所在。使用这个 yaml,我可以毫无问题地连接到 service1(http 后端),但连接到 service2(https 后端)会导致 502 Bad Gateway。

如果我添加注释' nginx.ingress.kubernetes.io/backend-protocol: "https"' 连接切换。我无法再连接到 service1(http 后端),但可以连接到 service2(https 后端)

我可以理解为什么交换机会这样做,但我的问题是:

您可以在 nginx-ingress 中为每个规则设置后端协议(protocol)吗?

最佳答案

不可能在单个入口中为每个规则设置后端协议(protocol)。为了实现您想要的,您可以为 service1 创建两个不同的入口,为 service2 创建另一个入口,并使用 http 注释 service1 的入口,使用 https 注释 service2 的入口。

关于http - 您可以在 k8s nginx 入口中为每个规则设置后端协议(protocol)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59748287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com