Pull image Azure Container Registry - Kubernetes
关于在Azure容器服务(kubernetes)中运行时如何从Azure容器注册表中提取信息的人是否有任何建议
我已经尝试了以下示例部署,但是图像提取失败:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | kind: Deployment apiVersion: extensions/v1beta1 metadata: name: jenkins-master spec: replicas: 1 template: metadata: name: jenkins-master labels: name: jenkins-master spec: containers: - name: jenkins-master image: myregistry.azurecr.io/infrastructure/jenkins-master:1.0.0 imagePullPolicy: Always readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 20 timeoutSeconds: 5 ports: - name: jenkins-web containerPort: 8080 - name: jenkins-agent containerPort: 50000 |
阅读此信息后,我开始工作了。
http://kubernetes.io/docs/user-guide/images/#specifying-imagepullsecrets-on-a-pod
因此首先创建注册表访问键
1 | kubectl create secret docker-registry myregistrykey --docker-server=https://myregistry.azurecr.io --docker-username=ACR_USERNAME --docker-password=ACR_PASSWORD --docker-email=ANY_EMAIL_ADDRESS |
将服务器地址替换为ACR地址的地址,并将USERNAME,PASSWORD和EMAIL地址替换为admin用户的ACR值。注意:电子邮件地址可以是值。
然后在部署中,您只是告诉kubernetes使用该密钥来拉取映像,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | kind: Deployment apiVersion: extensions/v1beta1 metadata: name: jenkins-master spec: replicas: 1 template: metadata: name: jenkins-master labels: name: jenkins-master spec: containers: - name: jenkins-master image: myregistry.azurecr.io/infrastructure/jenkins-master:1.0.0 imagePullPolicy: Always readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 20 timeoutSeconds: 5 ports: - name: jenkins-web containerPort: 8080 - name: jenkins-agent containerPort: 50000 imagePullSecrets: - name: myregistrykey |
这实际上是我们简化了的事情。通过Azure CLI设置Kubernetes群集时,将使用提供者特权创建服务主体。这将启用订阅中任何Azure容器注册表的提取请求。
有一个PR:https://github.com/kubernetes/kubernetes/pull/40142,它已合并到Kubernetes的新部署中。它不适用于现有的kubernetes实例。