Docker 如何将自签名证书放入GKE集群的每个节点?
我在GKE有一个kubernetes星系团。集群内部有一个私有docker注册表服务。此服务的证书通过运行以下命令在docker映像中生成:Docker 如何将自签名证书放入GKE集群的每个节点?,docker,kubernetes,google-cloud-platform,google-kubernetes-engine,Docker,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,我在GKE有一个kubernetes星系团。集群内部有一个私有docker注册表服务。此服务的证书通过运行以下命令在docker映像中生成: openssl-req-x509-newkey rsa:4096-days 365-nodes-sha256-keyout/certs/tls.key-out/certs/tls.crt-subc”/CN=registry proxy 当任何使用此私有注册表中的图像的pod尝试提取图像时,我会收到一个错误: x509: certificate signe
openssl-req-x509-newkey rsa:4096-days 365-nodes-sha256-keyout/certs/tls.key-out/certs/tls.crt-subc”/CN=registry proxy
当任何使用此私有注册表中的图像的pod尝试提取图像时,我会收到一个错误:
x509: certificate signed by unknown authority
有没有办法将自签名证书放在集群中的所有GKE节点上以解决此问题
更新
我按照@ArmandoCuevas在其评论中的建议,将CA证书放在每个GKE节点上,但这没有帮助,仍然得到错误
x509:由未知机构签署的证书
。是什么引起的?如何将docker图像拉入吊舱?TL;DR:您需要对GKE中的节点执行的几乎所有修改,如向服务器添加受信任的根证书,都可以使用守护程序完成
用户创建了一个关于如何执行您希望执行的操作的惊人指南。可以找到链接
作为总结,Sam建议如何执行此更改的方法是使用守护程序在每个节点中分发证书。由于守护程序保证每个节点上始终有一个pod,pod将负责将您的证书添加到节点,以便您可以从私有注册表中提取映像
通常情况下,您自己添加节点将不起作用,因为如果GKE需要重新创建节点,您更改的节点将丢失。使用DS的这种方法可以保证,即使重新创建了节点,由于守护程序将在节点中安排一个“检修吊舱”,因此您将始终拥有证书
Sam提出的步骤非常简单:
非常感谢您的回答,该解决方案很好,但不知何故,将
myCA.pem
复制到/mnt/etc/ssl/certs并运行update ca certificates&&systemctl restart docker
并没有帮助。我仍然收到错误x509:由未知权限签署的证书
。我所做的您可以在一个单独的问题中找到,可能将CA证书置于/etc/ssl/certs
并运行更新CA证书
无法正常工作。当我试图从此目录中删除证书并重新启动更新ca证书
时,我收到一条消息0已添加,0已删除;完成。
我找到了另一个解决方案如何应用CA证书,但仍然收到错误x509:由未知机构签署的证书
Hi Max。我认为一个可能的解决方案是将svc名称用作证书的CN。如果创建证书,则可以使用服务fqdn as CN创建自签名证书。例如,您可以在NS“docker”中创建服务“registry”,因此服务fqdn应该类似于registry.docker.svc.cluster.local
。您可以将该FQDN用于CNI,因为我发现了问题。它与containerd
连接,而不是Docker
。你可以在这里查看我的答案
cp /myCA.pem /mnt/etc/ssl/certs
nsenter --target 1 --mount update-ca-certificates
nsenter --target 1 --mount systemctl restart docker