Включение кэша артефактов в реестре контейнеров Azure с помощью Azure CLI

Из этой статьи вы узнаете, как использовать Azure CLI для включения функции кэша артефактов в реестре контейнеров Azure (ACR) с проверкой подлинности или без нее.

Помимо необходимых компонентов, перечисленных здесь, требуется учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .

Предпосылки

В этой статье мы используем пример экземпляра ACR с именем MyRegistry.

Создание учетных данных

Перед настройкой учетных данных убедитесь, что вы сможете создавать и хранить секреты в 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.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, учетные данные необходимы для создания правила кэша.

Назначение разрешений Key Vault с помощью Azure RBAC

С помощью Azure RBAC можно назначить пользователям соответствующие разрешения, чтобы они могли получить доступ к Azure 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 
    

    Запишите значение основного идентификатора, так как вам это потребуется на шаге 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 
    
    

Подсказка

С помощью идентификатора ресурса Хранилища ключей предоставляется доступ ко всем секретам в Хранилище ключей. Если вы предпочитаете, вы можете предоставить доступ только к секретам имени пользователя и пароля. Для этого вместо команды из шага 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
    

Дальнейшие действия