簡體   English   中英

參考來自不同訂閱的另一個 azure 容器存儲庫 (ACR) 的 docker 映像

[英]Refer the docker image from another azure container repository (ACR) of different subscription

我正在嘗試從訂閱(DEV-Subscription)中的另一個 Azure 容器注冊表(DEV-ACR)中提取訂閱(QA-Subscription)的(QA-ACR)中的 docker 映像。

下面是詳細的步驟。

  1. 在 Subscription DEV-Subscription 中創建了 docker 鏡像(例如:docker-image-sample)

  2. 在 Subscription DEV-Subscption 中使用以下命令創建了 secret 文件

    kubectl create secret docker-registry test-secret --docker-server=devsample.azurecr.io --docker-username=**** --docker-password=****
  3. 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
  4. 我正在嘗試從不同訂閱的另一個 ACR 中提取 docker 圖像。

  5. 在這里也像上面一樣創建了相同的秘密。

  6. 下面是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
  7. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM