如何更新docker容器文件系统中的旧证书



我需要更新当前通过kubernetes pod运行的docker容器中的证书。包含这些证书的三个豆荚分别名为"app"、"celery"one_answers"celery beat">

运行

kubectl exec -it app -- sh

然后是ls

我可以看到旧的证书在那里。我的VM文件系统上有新的证书,需要将这些证书放入正在运行的pod中,以便程序重新开始工作。我尝试重建用于创建运行容器的docker映像(使用现有的docker组合文件),但这似乎不起作用。我认为容器中的文件系统最初是使用docker卷装载的。这可能是在本地完成的,而现在项目是在远程Linux VM上完成的。什么是自然的方式,让新的证书进入运行舱,让其他一切保持不变?

我可以kubectl cp新的证书,问题是,当pod得到重新创建,他们恢复到旧的证书。

任何帮助都将非常感激。

检查您的部署文件,在卷部分,如果有一些提到configmap, secret, PV或PVC的名称更可能是"certs"(通常我们使用这样的名称),如果它存在,并且提到的是secret或configmap,您只需要直接更新此资源。如果提到的是PV或PVC,你需要通过CLI来更新它,我建议你改成secret。

检查您的部署资源:kubectl get deploy <DEPLOY NAME> -o yaml(如果您不使用部署,请更改为正确的资源类型)。

同样,您可以访问您的pod shell并运行df -hT,这可能会提示您的驱动器和挂载点。

在最坏的情况下,当在容器构建期间添加cert时,您可以通过(这不是最佳实践)来解决它。最佳实践是构建一个新映像):

  • 编辑容器图像,删除证书,用新标签推送(不要覆盖旧标签)
  • 用新的证书创建一个secret
  • 在相同的路径中使用相同的名称挂载这个秘密。
  • 修改部署中的镜像版本。

您可以使用kubectl edit deploy <DEPLOY NAME>来编辑您的资源。

编辑容器镜像,使用docker commit: https://docs.docker.com/engine/reference/commandline/commit/

相关内容

最新更新