如何在Ingress的YAML文件中使用已创建的TLS Secret
正确配置Ingress使用TLS Secret的方法
你通过kubectl create secret tls server --key server.key --cert server.crt创建的是标准Kubernetes TLS Secret,这类Secret无需使用nginx.ingress.kubernetes.io/ssl-certificate和nginx.ingress.kubernetes.io/ssl-certificate-key注解,直接在Ingress的spec.tls字段中引用即可。
你当前的配置存在两个问题:
- 错误使用注解指定证书,标准TLS Secret不需要这种方式
ssl-certificate-key填写的server.key无效,因为TLS Secret已经封装了证书和密钥,无需分别指定
以下是修正后的完整Ingress YAML:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: alpha-ingress-srv annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/use-regex: "true" spec: tls: - hosts: - kavishkamk.live secretName: server # 引用你创建的TLS Secret名称 rules: - host: kavishkamk.live http: paths: - path: /api/users/?(.*) pathType: Prefix backend: service: name: alpha-auth-srv port: number: 4000
补充说明:
spec.tls.hosts必须和Ingress规则中的host完全一致,这样Ingress Controller才会为该域名匹配对应证书- 确保TLS Secret和Ingress资源处于同一个命名空间中,否则需要额外配置跨命名空间引用(推荐两者同namespace)
- 直接删除原配置中的证书相关注解,Ingress Controller会自动从
spec.tls.secretName指定的Secret中读取证书和密钥
内容的提问来源于stack exchange,提问作者Kavishka Madhushan
相关产品推荐
相关产品推荐

