閱讀英文

共用方式為

使用 Azure CLI 在 Azure 容器注册表中启用项目缓存

本文介绍如何使用 Azure CLI 在 Azure 容器注册表(ACR)中使用或不进行身份验证来启用 项目缓存功能

除了此处列出的先决条件之外,还需要具有活动订阅的 Azure 帐户。 创建试用订阅

先决条件

在本文中,我们使用名为 MyRegistry的示例 ACR 实例。

创建凭据

在配置凭据之前,请确保能够在 Azure Key Vault 中创建和存储机密 ,并从 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.cn/secrets/usernamesecret \
    -p https://MyKeyvault.vault.azure.cn/secrets/passwordsecret
    
  2. 运行 az acr credential set update 以更新凭据集上的用户名或密码 Key Vault 机密 ID:

    az acr credential-set update -r MyRegistry -n MyDockerHubCredSet -p https://MyKeyvault.vault.azure.cn/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。

访问 Key Vault 需要 Microsoft.KeyVault/vaults/secrets/getSecret/action 权限。 通常会授予 Key Vault 机密用户 Azure 内置角色,因为它是包含此操作的最低特权角色。 或者,可以创建包含该权限的自定义角色。

使用的步骤因使用的是 Azure CLI 还是 Bash 而异。

  1. 获取用于访问 Key Vault 的系统身份的主要标识符:

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

    请记下主 ID 值,因为你将在步骤 3 中用到它。

  2. 显示 Key Vault 的属性以获取其资源 ID:

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

    下一步需要此资源 ID 值。

  3. 将 Key Vault 机密用户角色分配给凭据集的系统标识:

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

提示

使用 Key Vault 的资源 ID 授予对 Key Vault 中的所有机密的访问权限。 如果愿意,只能授予对用户名和密码机密的访问权限。 为此,请运行以下命令,而不是步骤 2 中的命令,以仅检索用户名和密码机密:

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

接下来,执行步骤 3 两次,首先将KeyVaultResourceID替换为用户名机密的ID,然后替换为密码机密的ID。

使用访问策略向 Key Vault 分配权限

或者,可以使用访问策略来分配权限。

  1. 获取用于访问 Key Vault 的系统身份的主要标识符:

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

    请注意主 ID 值,因为下一步需要用到它。

  2. 运行 az keyvault set-policy 命令,在拉取映像之前分配对 Key Vault 的访问权限。 例如,为凭据分配访问密钥保管库机密的权限:

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

拉取映像

若要从缓存拉取映像,请使用 Docker 命令并提供注册表登录服务器名称、存储库名称及其所需标记。 例如,若要从具有注册表登录服务器hello-world所需标记latest的存储库myregistry.azurecr.cn拉取映像,请运行:

 docker pull myregistry.azurecr.cn/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
    

后续步骤

注意:作者透過 AI 的協助創作了這篇文章。 深入了解