kubernetes TLS 设置

TLS

你可以通过指定包含 TLS 私钥和证书的 secret 来加密 ingress。目前,ingress 仅支持单个 TLS 端口443,并假定 TLS 连接终止于 ingress 节点(与 Service 及其 Pod 之间的流量都以明文传输)。如果 ingress 中的 TLS 配置部分指定了不同的主机,则它们将通过 SNI TLS 扩展指定主机名(假如 ingress controller 支持 SNI)在多个相同端口上进行复用。TLS secret 中必须包含名为 tls.crt 和 tls.key 的密钥,这里面包含用于 TLS 的证书和密钥,例如:

apiVersion: v1
kind: Secret
metadata:
  name: testsecret-tls
  namespace: default
data:
  tls.crt: base64 编码的证书
  tls.key: base64 编码的私钥
type: kubernetes.io/tls

在 ingress 中引用了这个 secret 将通知 ingress controller 使用 TLS 加密从将客户端到 loadbalancer 的 channel:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: tls-example-ingress
spec:
  tls:
  - hosts:
      - https-example.foo.com
    secretName: testsecret-tls
  rules:
  - host: https-example.foo.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: service1
          servicePort: 80

请注意,各种 ingress controller 支持的 TLS 功能之间存在差距,请参阅有关  nginxGCE

或任何其他平台特定 ingress controller 的文档,以了解 TLS 在你的环境中的工作原理。

发表回复 0

Your email address will not be published. Required fields are marked *