Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Из этой статьи вы узнаете, как использовать Azure CLI для включения функции кэша артефактов в реестре контейнеров Azure (ACR) с проверкой подлинности или без нее.
Помимо необходимых компонентов, перечисленных здесь, требуется учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Предпосылки
- Azure CLI. Для выполнения команд в этой статье можно использовать Azure Cloud Shell или локальную установку Azure CLI. Чтобы использовать его локально, требуется Azure CLI версии 2.46.0 или более поздней. Чтобы подтвердить версию Azure CLI, выполните команду
az --version. Чтобы выполнить установку или обновление, см. сведения в статье Установка Azure CLI. - Существующий экземпляр ACR. Если у вас еще нет, воспользуйтесь нашим кратким руководством по созданию нового реестра контейнеров.
- Существующее хранилище ключей для создания и хранения учетных данных.
- Разрешения на настройку и получение секретов из Key Vault.
В этой статье мы используем пример экземпляра ACR с именем MyRegistry.
Создание учетных данных
Перед настройкой учетных данных убедитесь, что вы сможете создавать и хранить секреты в 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.net/secrets/usernamesecret \ -p https://MyKeyvault.vault.azure.net/secrets/passwordsecretЗапустите
az acr credential set update, чтобы обновить секретный идентификатор Key Vault имени пользователя или пароля в наборе учетных записей.az acr credential-set update -r MyRegistry -n MyDockerHubCredSet -p https://MyKeyvault.vault.azure.net/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
Подсказка
Чтобы создать правило кэша без использования учетных данных, используйте ту же команду без указанных учетных данных. Например, az acr cache create --registry Myregistry --name MyRule --source-repo MySourceRepository --target-repo MyTargetRepository. Для некоторых источников, таких как Docker Hub, учетные данные необходимы для создания правила кэша.
Назначение разрешений Key Vault с помощью Azure RBAC
С помощью Azure RBAC можно назначить пользователям соответствующие разрешения, чтобы они могли получить доступ к Azure 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Запишите значение основного идентификатора, так как вам это потребуется на шаге 3.
Отображение свойств Key Vault для получения идентификатора ресурса:
az keyvault show --name MyKeyVaultName --resource-group MyResouceGroupДля следующего шага потребуется это значение идентификатора ресурса.
Назначьте роль Пользователь секретов Key Vault системной идентичности набора учетных данных:
az role assignment create --role "Key Vault Secrets User" --assignee CredentialSetPrincipalID --scope KeyVaultResourceID
Подсказка
С помощью идентификатора ресурса Хранилища ключей предоставляется доступ ко всем секретам в Хранилище ключей. Если вы предпочитаете, вы можете предоставить доступ только к секретам имени пользователя и пароля. Для этого вместо команды из шага 2 выполните следующие команды, чтобы получить только секреты имени пользователя и пароля:
az keyvault secret show --vault-name MyKeyVaultName --name MyUsernameSecretName
az keyvault secret show --vault-name MyKeyVaultName --name MyPasswordSecretName
Затем выполните шаг 3 дважды, сначала заменив KeyVaultResourceID на идентификатор секрета имени пользователя, а затем на идентификатор секрета пароля.
Назначение разрешений Key Vault с помощью политик доступа
Кроме того, можно использовать политики доступа для назначения разрешений.
Получите основной идентификатор системного удостоверения, используемого для доступа к Key Vault:
az acr credential-set show --name CredentialSet --registry MyRegistryЗапишите значение основного идентификатора, оно понадобится на следующем шаге.
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
Очистка ресурсов
При отсутствии необходимости удалите созданное правило кэша и учетные данные.
Чтобы удалить правило кэша, выполните следующую команду
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.