我已经建立了一个OpenShift Origin 1.1.3集群。现在我从私人注册表中提取图像。此注册表是“不安全的”。它具有自签名证书和凭据以进行身份验证。我能够执行docker login
并在我的节点上手动提取图像。
问题是只有该节点才能访问该图像。因此,当我缩放我的pod(基于该图像)时,所有副本都将在该特定节点上运行。其他节点无法提取或使用图像。
所以我想为我的图片创建一个图像流:
oc import-image --insecure=true ec2-xxx:5000/image
But: message: you may not have access to the Docker image "ec2-xxx:5000/image"
reason: Unauthorized
我读过有关创建秘密的内容。我创造了它:
oc secrets new-dockercfg mysecret --docker-server=ec2-xxx:5000 --docker-username=*** --docker-password=*** --docker-email=any@mail.com
如何将此秘密添加到我的图片流中?这是正确的方法吗?
答案 0 :(得分:2)
@cloudnoob他的回答对我很有帮助。 但主要问题是我以错误的方式创造了我的秘密。 我在使用loglevel 5启动OpenShift master后看到了这一点。
Unable to find a secret to match https://ec2-xxx:5000/v2/test/image/manifests/83
所以我不得不用https创建我的秘密(它被称为不安全的自签名证书,但它使用https):
oc secrets new-dockercfg mysecret --docker-server=https://ec2-xxx:5000 --docker-username=*** --docker-password=*** --docker-email=any@mail.com
在这一步之后,我不得不执行cloudnoob的步骤。将秘密添加到服务帐户。之后,导入是成功的。
答案 1 :(得分:0)
Openshift Origin Doc 要使用密钥为pod提取图像,您必须将秘密添加到您的服务帐户。此示例中的服务帐户名称应与pod将使用的服务帐户的名称相匹配; default是默认服务帐户:
$ oc secrets添加serviceaccount / default secrets / --for = pull
要使用秘密来推送和拉出构建图像,秘密必须可以安装在窗格内。您可以通过运行:
来完成此操作$ oc secrets添加serviceaccount / builder secrets /