拉取映像 Azure 容器注册表 - Kubernetes
Pull image Azure Container Registry - Kubernetes
有没有人对在 Azure 容器服务 (kubernetes)
中 运行 时如何从 Azure 容器注册表中提取有任何建议
我尝试了如下示例部署,但镜像拉取失败:
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
所以首先创建注册表访问密钥
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 地址,并将用户名、密码和电子邮件地址替换为您的 ACR 管理员用户的值。注:邮箱地址可以是value.
然后在部署中,您只需告诉 kubernetes 使用该密钥来拉取镜像,如下所示:
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 实例。
有没有人对在 Azure 容器服务 (kubernetes)
中 运行 时如何从 Azure 容器注册表中提取有任何建议我尝试了如下示例部署,但镜像拉取失败:
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
所以首先创建注册表访问密钥
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 地址,并将用户名、密码和电子邮件地址替换为您的 ACR 管理员用户的值。注:邮箱地址可以是value.
然后在部署中,您只需告诉 kubernetes 使用该密钥来拉取镜像,如下所示:
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 实例。