【发布时间】:2021-09-28 06:34:38
【问题描述】:
我正在使用 k8s 和 Nginx 入口控制器
(https://docs.nginx.com/nginx-ingress-controller/)。
我有一个主机名 test.example.com,它使用两个同名签名的证书(RSA 和 GOST)来处理 HTTPS 连接。
是否有使用 Nginx Ingress 终止这些 TLS 连接的正确方法?还是我最好使用外部负载均衡器?
【问题讨论】:
我正在使用 k8s 和 Nginx 入口控制器
(https://docs.nginx.com/nginx-ingress-controller/)。
我有一个主机名 test.example.com,它使用两个同名签名的证书(RSA 和 GOST)来处理 HTTPS 连接。
是否有使用 Nginx Ingress 终止这些 TLS 连接的正确方法?还是我最好使用外部负载均衡器?
【问题讨论】:
首先让我们弄清楚terminating 是什么:
SSL 终止是指在将加密流量传递到 Web 服务器之前对其进行解密的过程。
还有其他方法以及您提到的使用外部LoadBalancer 但正弦Nginx 是LoadBalancer 无需添加另一个外部LoadBalancer
【讨论】:
所以,答案实际上在 GitHub 页面的讨论中 https://github.com/nginxinc/kubernetes-ingress/issues/1899#issuecomment-905952871
没有直接支持,但可以尝试使用 server-sn-ps 的解决方法:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
nginx.org/server-snippets: |
ssl_certificate /etc/nginx/secrets/default-second-cafe-secret; # namespace-name
ssl_certificate_key /etc/nginx/secrets/default-second-cafe-secret; # namespace-name
spec:
ingressClassName: nginx
tls:
- hosts:
- cafe.example.com
secretName: cafe-secret
- hosts: # this part is needed so that the IC gets the second-cafe-secret from k8s API and store it on the file system at /etc/nginx/secrets/namespace-name
- random-workaround-host
secretName: second-cafe-secret
rules:
- host: cafe.example.com
【讨论】: