kubernetes - Nginx、cert-manager、安装的秘密文件更新问题

kubernetes - Nginx, cert-manager, mounted secret file renewal issue

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就可以自动更新证书

不确定证书是否适用于使用 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 请检查: