目录
Please enable Javascript to view the contents

IngressController 启用证书透传

 ·  ☕ 1 分钟

重要

ingress-nginx 启用 SSL Passthrough(证书透传)需要两步:部署时加 --enable-ssl-passthrough 参数,Ingress 对象中设 ssl-redirect: "false"

环境说明

  • Kubernetes v1.15.6
  • nginx-ingress-controller v3.21.0

1. 获取 Chart

1
2
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm pull ingress-nginx/ingress-nginx --version=3.21.0

2. 启用 SSL Passthrough

修改 chart 模板 templates/controller-deployment.yaml,在 Deployment args 中添加:

1
2
3
args:
  - /nginx-ingress-controller
  - --enable-ssl-passthrough

该功能默认禁用。Chart 的 values.yaml 未单独暴露此参数,需要直接修改模板。

3. 配置 Ingress 对象

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    kubernetes.io/ingress.class: nginx
  name: app-tls-ingress
spec:
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: app-service
                port:
                  number: 443
配置作用
--enable-ssl-passthroughController 层面开启 TLS 透传
ssl-redirect: "false"不对该 Ingress 做 HTTP → HTTPS 重定向

证书透传模式下,TLS 握手由后端服务完成,Ingress Controller 只做 TCP 转发。

参考

分享

Hex
作者
Hex
CloudNative Developer