【问题标题】:Adding SSL certificate to ingress controller vs adding it to ingress resource将 SSL 证书添加到入口控制器与将其添加到入口资源
【发布时间】:2020-07-14 21:27:40
【问题描述】:

入口控制器部署.yml

    spec:
  containers:
    - args:
        - /nginx-ingress-controller
        - --default-backend-service=stratus/nginx-ingress-default-backend
        - --election-id=ingress-controller-leader
        - --ingress-class=nginx
        - --configmap=ingress-controller-leader-nginx
        - --enable-ssl-passthrough

入口资源.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: 'REPOSITORY_NAME'
  namespace: service
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-passthrough: "false"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  tls:
    - hosts:
        - "xyz-development.com"
    - secretName: ingress-secret-tls
  rules:
    - host: "xyz-development.com" 
      http:
        paths:
        - path: /service/
          backend:
            serviceName: 'REPOSITORY_NAME'
            servicePort: 8080

秘密包含一个签名证书,CN 为 xyz-development.com

端点:xyz-development.com/service/swagger-ui.html

如果我尝试使用上述配置访问端点,我最终会出现“您的连接不是私有的”错误。

但是如果我将入口控制器 deployment.yml 修改为

    spec:
  containers:
    - args:
        - /nginx-ingress-controller
        - --default-backend-service=stratus/nginx-ingress-default-backend
        - --election-id=ingress-controller-leader
        - --ingress-class=nginx
        - --configmap=stratus/ingress-controller-leader-nginx
        - --enable-ssl-passthrough
        - --default-ssl-certificate=service/ingress-secret-tls

那么网站是安全的,我的有效证书。

  1. 这是预期的行为吗?
  2. 即使在控制器中去掉了默认的ssl证书标志,不应该使用入口resource.yml中提到的秘密吗?
  3. 任何其他指针或更好的做法将不胜感激

【问题讨论】:

  • 是自签名证书吗?你是什​​么CA?
  • @KoopaKiller 是我们中心化团队的 CA。
  • 好的,所以nginx容器有CA密钥来验证证书?

标签: ssl kubernetes kubernetes-ingress nginx-ingress


【解决方案1】:

清单中有一个小错误导致第一个选项失败;它应该.spec.tls 条目数组中的新元素:

- secretName: ingress-secret-tls # wrong
  secretName: ingress-secret-tls # correct

【讨论】:

    【解决方案2】:

    当您获得非私有连接时,您是点击 URL https://xyz-development.com/ 还是使用 IP 地址?如果您使用的是 IP 地址,NGINX 将不会加载该 TLS 证书,它可能会加载其他默认证书(如果您在 k8s 上运行,则为 kubernetes 假证书)

    当您直接将该配置添加到入口控制器时,它将成为您的默认 TLS 证书,因此无论您使用什么域名,它都会为您提供该证书。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 2018-12-21
      • 2018-12-26
      • 1970-01-01
      • 2012-10-16
      • 2020-09-22
      相关资源
      最近更新 更多