共用方式為


使用 Azure CLI 在 Azure Container Registry 中啟用成品快取

在本文中,您將瞭解如何使用 Azure CLI 在 Azure Container Registry (ACR) 中啟用 artifact 快取功能,不論是否需要驗證。

除了此處所列的必要條件之外,您還需要具有作用中訂用帳戶的 Azure 帳戶。 免費建立帳戶

先決條件

在本文中,我們會使用名為 的 MyRegistry範例 ACR 實例。

建立認證

設定認證之前,您必須能在 Azure KeyVault 中建立和儲存祕密,並從 Key Vault 擷取祕密

  1. 執行 az acr credential set create

    az acr credential-set create 
    -r MyRegistry \
    -n MyDockerHubCredSet \
    -l docker.io \ 
    -u https://MyKeyvault.vault.azure.net/secrets/usernamesecret \
    -p https://MyKeyvault.vault.azure.net/secrets/passwordsecret
    
  2. 執行 az acr credential set update 以更新認證集上的使用者名稱或密碼 Key Vault 秘密識別碼:

    az acr credential-set update -r MyRegistry -n MyDockerHubCredSet -p https://MyKeyvault.vault.azure.net/secrets/newsecretname
    
  3. 執行 az acr credential-set show 以顯示認證:

    az acr credential-set show -r MyRegistry -n MyDockerHubCredSet
    

建立快取規則

接下來,建立並設定將成品從存放庫提取至快取的快取規則。

  1. 若要建立新的快取規則,請執行 az acr cache create

    az acr cache create -r MyRegistry -n MyRule -s docker.io/library/ubuntu -t ubuntu -c MyDockerHubCredSet
    
  2. 若要更新快取規則上的認證,請執行 az acr cache update

    az acr cache update -r MyRegistry -n MyRule -c NewCredSet
    

    如果您需要移除認證,請執行 az acr cache update -r MyRegistry -n MyRule --remove-cred-set

  3. 若要顯示快取規則, 請執行 az acr cache show

     az acr cache show -r MyRegistry -n MyRule
    

小提示

若要建立不使用認證的快取規則,請使用沒有指定認證的相同命令。 例如: az acr cache create --registry Myregistry --name MyRule --source-repo MySourceRepository --target-repo MyTargetRepository 。 對於某些來源,例如 Docker Hub,需要認證才能建立快取規則。

使用 Azure RBAC 將許可權指派給 Key Vault

您可以使用 Azure RBAC 將適當的許可權指派給使用者,讓他們能夠存取 Azure Key Vault。

需要Microsoft.KeyVault/vaults/secrets/getSecret/action許可權才能存取金鑰保管庫。 Key Vault Secrets User Azure 內建角色通常會被授予,因為它是包含此動作的最少權限的角色。 或者,您可以建立包含該許可權的自定義角色。

所使用的步驟會根據您使用的是 Azure CLI 或 Bash 而有所不同。

  1. 取得用來存取 Key Vault 的系統身分識別主體識別碼:

    az acr credential-set show --name MyCredentialSet --registry MyRegistry 
    

    記下主體標識碼值,因為您在步驟 3 中需要此值。

  2. 顯示 Key Vault 的屬性,以取得其資源識別碼:

    az keyvault show --name MyKeyVaultName --resource-group MyResouceGroup
    

    在下一個步驟中,您將需要此資源識別符值。

  3. Key Vault 秘密使用者 角色指派給認證集的系統身分識別:

    az role assignment create --role "Key Vault Secrets User" --assignee CredentialSetPrincipalID --scope KeyVaultResourceID 
    
    

小提示

使用 Key Vault 的資源識別符會授與 Key Vault 中所有秘密的存取權。 如果您願意,您可以授予存取權僅限於使用者名稱和密碼。 若要這樣做,請執行以下命令,而不是步驟 2 中的命令,只擷取使用者名稱和密碼的機密:

az keyvault secret show --vault-name MyKeyVaultName --name MyUsernameSecretName
az keyvault secret show --vault-name MyKeyVaultName --name MyPasswordSecretName

接下來,執行步驟 3 兩次,先以使用者名稱密碼的識別碼取代 KeyVaultResourceID ,然後使用密碼密碼的識別碼取代 。

使用存取原則指派 Key Vault 的權限

或者,您可以使用存取原則來指派許可權。

  1. 取得用來存取 Key Vault 的系統身分識別主體識別碼:

    az acr credential-set show --name CredentialSet --registry MyRegistry
    

    記下主體標識碼值,因為您將在下一個步驟中用到它。

  2. 在拉取映像之前,請執行 az keyvault set-policy 命令以指派 Key Vault 的存取權。 例如,若要指派認證的許可權以存取 KeyVault 秘密:

    az keyvault set-policy --name MyKeyVault --object-id MyCredentialSetPrincipalID --secret-permissions get
    

提取您的映像

若要從快取提取映像,請使用 Docker 命令,並提供登錄登入伺服器名稱、存放庫名稱及其所需的標記。 例如,若要從存放庫 hello-world 中提取具有所需標籤 latest 的映像以供登錄登入伺服器 myregistry.azurecr.io,請執行:

 docker pull myregistry.azurecr.io/hello-world:latest

清理資源

不再需要時,請刪除您建立的快取規則和認證。

  1. 若要刪除快取規則, 請執行 az acr cache delete

    az acr cache delete -r MyRegistry -n MyRule
    
  2. 若要刪除認證,請執行 az acr credential-set delete

    az acr credential-set delete -r MyRegistry -n MyDockerHubCredSet
    

後續步驟