![](/img/trans.png)
[英]how to pull docker image available in ACR from different subscription and tenant id in Azure
[英]Refer the docker image from another azure container repository (ACR) of different subscription
我正在尝试从订阅(DEV-Subscription)中的另一个 Azure 容器注册表(DEV-ACR)中提取订阅(QA-Subscription)的(QA-ACR)中的 docker 映像。
下面是详细的步骤。
在 Subscription DEV-Subscription 中创建了 docker 镜像(例如:docker-image-sample)
在 Subscription DEV-Subscption 中使用以下命令创建了 secret 文件
kubectl create secret docker-registry test-secret --docker-server=devsample.azurecr.io --docker-username=**** --docker-password=****
Pod 通过引用这个秘密在 DEV 订阅中运行。 下面是部署文件
apiVersion: apps/v1beta1 kind: Deployment metadata: name: test spec: replicas: 2 template: metadata: labels: app: test spec: containers: - image: devsample.azurecr.io/test_msdi:latest imagePullPolicy: Always name: test ports: - containerPort: 443 env: - name: ASPNETCORE_ENVIRONMENT value: dev imagePullSecrets: - name: test-secret
我正在尝试从不同订阅的另一个 ACR 中提取 docker 图像。
在这里也像上面一样创建了相同的秘密。
下面是kubernetes部署文件的内容
apiVersion: apps/v1beta1 kind: Deployment metadata: name: test spec: replicas: 2 template: metadata: labels: app: test spec: containers: - image: devsample.azurecr.io/test_msdi:latest imagePullPolicy: Always name: test ports: - containerPort: 443 env: - name: ASPNETCORE_ENVIRONMENT value: qa imagePullSecrets: - name: test-secret
Pod 从不同订阅的另一个 ACR 失败。 问题是“退出拉动图像......”
由于您使用的是 Azure 容器注册表,因此您可能会发现在容器注册表上分配 AKS 服务主体权限比依靠使用 Kubernetes 机密传递凭据更容易。
$Aks = Get-AzAks -ResourceGroupName QaSubscriptionAksResourceGroup -Name QaSubscriptionAks
New-AzRoleAssignment -ApplicationId $Aks.ServicePrincipalProfile.ClientId -RoleDefinitionName AcrPull -ResourceGroupName DevSubscriptionAcrResourceGroup
您可能需要在两个命令之间运行Select-AzSubscription
以从 QA 订阅更改为 DEV 订阅。 一旦设置删除
imagePullSecrets:
- name: test-secret
从您的部署文件中重新运行它。
根据 AKS 实例的部署方式,您可能会发现 AKS 服务主体已在其自己的订阅中分配了 AcrPull 角色,如果是这种情况,您可以完全删除imagePullSecrets
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.