gpt4 book ai didi

kubernetes - 如何配置入口以使用 https 将流量定向到 https 后端

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

我有一个使用 https 的后端。
我想根据 URL/路径分离该后端的负载。

我决定使用 ingress 来执行这个基于 url/path 的逻辑,以便将流量移动到不同的后端(相同的后端,只是复制到不同的 NodePorts )

我的问题是如何配置入口以接收 https 请求并将这些 https 请求转发到 https 后端?

谢谢

编辑:
我添加了 yaml 文件:

spec:
rules:
- http:
paths:
- backend:
serviceName: service
servicePort: 9443
path: /carbon
- backend:
serviceName: service2
servicePort: 9443
path: /oauth

出于某种原因,我不能将规则表单 http 更改为 https

最佳答案

关注:此答案适用于 github 上 kubernetes 组织提供的 ingress-nginx 解决方案 (https://github.com/kubernetes/ingress-nginx)

如果你想在 k8s 中使用负载均衡机制,你应该使用 services而是在该服务后面启动多个实例,这样 k8s 将进行负载平衡。如果您想使用不同版本的后端(例如 prod 和 test),则分离它们的方式很好
如果您的服务只能通过 https 访问,您需要在入口 yaml 中添加以下注释:( documentation )

nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
要保护入口本身,请查看以下内容: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
但是,如果您希望后端服务解密 TLS 通信,请改用以下注释:( documentation )
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
编辑:
如果您想通过 TLS 访问后端,则 Ingress YAML 应如下所示:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-name
namespace: namespace-name
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
rules:
- http:
paths:
- backend:
serviceName: service
servicePort: 9443
path: /carbon
- backend:
serviceName: service2
servicePort: 9443
path: /oauth
如果您想在入口 Controller 中使用 TLS 解密通过 TLS 到达后端,则入口 YAML 应如下所示:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-name
namespace: namespace-name
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
tls:
- hosts:
- app.myorg.com
secretName: tls-secret
rules:
- http:
paths:
- backend:
serviceName: service
servicePort: 9443
path: /carbon
- backend:
serviceName: service2
servicePort: 9443
path: /oauth
重要的是要注意 tls-secret 是为主机 (app.myorg.com) 颁发的具有有效证书的 SecretConfig 的名称

如果您想通过 TLS 到达后端,并在后端使用 TLS 解密,则 Ingress YAML 应如下所示:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-name
namespace: namespace-name
annotations:
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
rules:
- http:
paths:
- backend:
serviceName: service
servicePort: 9443
path: /carbon
- backend:
serviceName: service2
servicePort: 9443
path: /oauth
我自己从未测试过最后一个版本,所以我不知道它是否真的有效,但我强烈建议阅读 this该变体的段落。

关于kubernetes - 如何配置入口以使用 https 将流量定向到 https 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54459015/

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