无法使用Helm图表从Rancher Deployment中访问Private Registry

时间:2019-04-17 11:25:52

标签: kubernetes kubernetes-helm rancher

我觉得Rancher V2.2.2中有一个很大的阻止程序,在这里我无法定义包含用于创建K8s部署的docker映像的Private Azure注册表。

我可以在“资源”->“注册表”中定义azure注册表凭据,并对其进行身份验证以创建工作负载。 (Workload访问私有azure注册表并使用凭据集对其进行身份验证)

现在,如果我创建访问同一私有Azure注册表的Helm图表以拉取映像并创建Pod,则无法显示无法拉取Docker映像。我对其进行了研究,发现K8s部署可以在Rancher UI中找到设置的凭据,但是Kublet无法访问此凭据。

人们给出的常见建议是使用帮助图表部署文件中的机密信息,它也可以工作,但是出于安全考虑,因为任何人都可以访问掌舵图表以查找其中描述的天蓝色凭据。我觉得它仍然是Rancher V2中的常见问题。

问题:Helm chart deployment and private docker repository可以解决该问题,但是如上所述,它具有安全性问题。

我不确定Rancher社区是否也有答案,因为掌舵仓库也提出了相同的解决方案。 请参阅(https://github.com/helm/helm/blob/master/docs/charts_tips_and_tricks.md#creating-image-pull-secrets

我不想在Helm图表的deployement.yaml文件中定义图像拉秘,如下所述

  name: credentials-name
  registry: private-docker-registry
  username: user
  password: pass

2 个答案:

答案 0 :(得分:2)

在当前项目的“资源”->“注册表”下配置一组新的注册表凭据时,Rancher会为您创建一个Kubernetes秘密资源,其中包含指定的凭据。

您可以通过运行以下命令来验证秘密是否存在于该项目的所有命名空间中:

$ kubectl get secrets -n <some-project-namespace>

然后-而不是将您的纯文本帐户凭据保留在deploy.yaml中-您将像这样在容器规范中引用秘密资源:

spec:
  containers:
  - name: mycontainer
    image: myregistry.azurecr.io/org/myimage
  imagePullSecrets:
  - name: project-azure-reg-creds

在上面的示例中,project-azure-reg-creds与您在Rancher中添加的注册表凭据的名称匹配。还要注意,必须在分配给项目的命名空间中创建部署。

答案 1 :(得分:1)

Kubernetes就是它。如果要从私有存储库中提取,则需要imagePullSecret。在Rancher UI中也是如此,它会自动为您关联,因此您不必自己明确定义它。