Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本文介绍如何使用 Azure CLI 在 Azure 容器注册表(ACR)中使用或不进行身份验证来启用 项目缓存功能 。
除了此处列出的先决条件之外,还需要具有活动订阅的 Azure 帐户。 创建试用订阅。
Azure CLI。 可以使用 Azure CLI 的本地安装来运行本文中的命令。 若要在本地使用它,需要 Azure CLI 2.46.0 或更高版本。 若要确认 Azure CLI 版本,请运行
az --version
。 若要安装或升级,请参阅 安装 Azure CLI。现有的 ACR 实例。 如果你还没有容器注册表,可以使用快速入门创建一个新的容器注册表。
现有的密钥保管库,用于创建和存储凭据。
在本文中,我们使用名为 MyRegistry
的示例 ACR 实例。
在配置凭据之前,请确保能够在 Azure Key Vault 中创建和存储机密 ,并从 Key Vault 检索机密。
运行
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
运行
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
若要显示凭据,请运行 az acr credential-set show:
az acr credential-set show -r MyRegistry -n MyDockerHubCredSet
接下来,创建并配置将工件从存储库拉入缓存的缓存规则。
若要创建新的缓存规则,请运行
az acr cache create
:az acr cache create -r MyRegistry -n MyRule -s docker.io/library/ubuntu -t ubuntu -c MyDockerHubCredSet
若要更新缓存规则上的凭据,请运行
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
。若要显示缓存规则,请运行
az acr cache show
:az acr cache show -r MyRegistry -n MyRule
Sugerencia
若要创建不使用凭据的缓存规则,请使用不指定凭据的相同命令。 例如,az acr cache create --registry Myregistry --name MyRule --source-repo MySourceRepository --target-repo MyTargetRepository
。 对于某些源(例如 Docker Hub),需要凭据才能创建缓存规则。
可以使用 Azure RBAC 向用户分配适当的权限,以便他们可以访问 Azure Key Vault。
访问 Key Vault 需要 Microsoft.KeyVault/vaults/secrets/getSecret/action
权限。 通常会授予 Key Vault 机密用户 Azure 内置角色,因为它是包含此操作的最低特权角色。 或者,可以创建包含该权限的自定义角色。
使用的步骤因使用的是 Azure CLI 还是 Bash 而异。
获取用于访问 Key Vault 的系统身份的主要标识符:
az acr credential-set show --name MyCredentialSet --registry MyRegistry
请记下主 ID 值,因为你将在步骤 3 中用到它。
显示 Key Vault 的属性以获取其资源 ID:
az keyvault show --name MyKeyVaultName --resource-group MyResouceGroup
下一步需要此资源 ID 值。
将 Key Vault 机密用户角色分配给凭据集的系统标识:
az role assignment create --role "Key Vault Secrets User" --assignee CredentialSetPrincipalID --scope KeyVaultResourceID
Sugerencia
使用 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 的系统身份的主要标识符:
az acr credential-set show --name CredentialSet --registry MyRegistry
请注意主 ID 值,因为下一步需要用到它。
运行
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
不再需要时,请删除创建的缓存规则和凭据。
若要删除缓存规则,请运行
az acr cache delete
:az acr cache delete -r MyRegistry -n MyRule
若要删除凭据,请运行
az acr credential-set delete
:az acr credential-set delete -r MyRegistry -n MyDockerHubCredSet
- 了解如何排查工件缓存的问题。
- 了解如何使用 Azure 门户启用工件缓存。