【问题标题】:kubernetes - Nginx, cert-manager, mounted secret file renewal issuekubernetes - Nginx,证书管理器,挂载的秘密文件更新问题
【发布时间】:2021-07-28 11:08:14
【问题描述】:

cert-manager的证书文件挂载在nginx卷上,正在使用中。

例如

nginx deploy.yaml -

  volumes:
    - name: secret-volume
      secret:
        secretName: my.test.app.com
    - name: configmap-volume
      configMap:
        name: nginxconfigmap
  containers:
    - name: nginxhttps
      image: bprashanth/nginxhttps:1.0
      ports:
        - containerPort: 443
        - containerPort: 80
      volumeMounts:
        - mountPath: /etc/nginx/ssl
          name: secret-volume
        - mountPath: /etc/nginx/conf.d
          name: configmap-volume

和我的 nginx.conf 文件在

    ssl_certificate /etc/nginx/ssl/tls.crt;
    ssl_certificate_key /etc/nginx/ssl/tls.key;

而且效果很好。 另外,证书由cert-manager顺利补发。

但是,由于重新颁发的证书文件在nginx容器中没有更新,所以从浏览器访问时说证书已经过期。

如果我强制重启 pod 没有问题,但我想自动化它。

不知道有没有办法在不强制重启pod的情况下自动更新证书。

【问题讨论】:

  • 您所包含的YAML 清单未连接到nginx-ingress 的假设是否正确?请说明证书未更新的步骤(SecretPod 内部或nginx 本身)?根据文档Secret 应该是updated eventually 如果它被挂载为Volume。同样根据this thread,需要重新加载才能使用新证书。

标签: nginx ssl kubernetes google-kubernetes-engine cert-manager


【解决方案1】:

不确定证书是否适用于您使用 Nginx 或主要 Nginx ingress 处理集群的全部流量的特定应用程序。

如果是主 Nginx 处理集群的全部流量,您可以创建 ingress 并添加 cert-manager在那里集成。

Cert-manager 将管理证书并将其保存在密钥中,入口将使用该密钥运行时间。每当证书更新时,秘密内容将更新游戏,而入口将使用相同的秘密名称。

在上述场景中,不需要重新启动 pod。

如果您想阅读和检查整个示例,请参考:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes

在上面的例子中,Nginx 将在没有任何证书的情况下运行,而它将使用秘密存储的证书。

对于 YAML 示例,如果 issueringress 请检查:https://stackoverflow.com/a/67184948/5525824

【讨论】:

  • 感谢您快速准确的回答。!!!很有帮助。
  • 很高兴听到您发现它有帮助并且有效,您也可以为答案投票。
  • 我还不熟悉 Stack Overflow 网站,所以我忘记了!哈哈哈祝你有美好的一天!
  • 不用担心,非常感谢你。祝你有美好的一天。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 2023-03-14
  • 2021-04-25
  • 2018-02-03
  • 1970-01-01
相关资源
最近更新 更多