证书管理器的证书文件挂载在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;
而且效果很好。 此外,证书由证书经理顺利重新颁发。
但是,由于重新颁发的证书文件未在nginx容器中更新,因此从浏览器访问时表示证书已过期。
如果我强制重新启动 pod,没有问题,但我想自动化它。
我想知道是否有办法在不强制重新启动 pod 的情况下自动续订证书。
不确定该证书是否适用于使用Nginx或主Nginx ingress
处理集群全部流量的特定应用程序。
如果它是处理集群整个流量的主Nginx,您可以创建入口并在那里添加证书管理器集成。
证书管理器将管理证书并将其保存在机密中,入口将使用该机密运行时。每当证书续订时,机密内容将更新游戏,而入口将使用相同的机密名称。
在上述情况下,不需要重新启动 Pod 。
如果您想阅读并检查整个示例,请参阅:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes
在上面的示例中,Nginx将在没有任何证书的情况下运行,同时它将使用秘密存储的证书。
对于 YAML 示例,如果颁发者和入口,请检查: https://stackoverflow.com/a/67184948/5525824