Руководство: Подключение к служба хранилища Azure в AKS с помощью соединителя сервисов с удостоверением рабочей нагрузки

В этом руководстве описано, как использовать соединитель служб для подключения учетной записи служба хранилища Azure к pod в кластере Azure Kubernetes Service (AKS) с помощью удостоверения рабочей нагрузки. Выполните следующие задачи.

  • Создайте кластер AKS и учетную запись служба хранилища Azure.
  • Создайте подключение между кластером AKS и учетной записью служба хранилища Azure с помощью соединителя службы.
  • Клонируйте пример приложения, которое подключается к учетной записи служба хранилища Azure из кластера AKS.
  • Разверните приложение в модуле pod в кластере AKS и проверьте подключение.
  • Очистите ресурсы.

Предварительные условия

  • Базовое понимание контейнеров, идентификации рабочей нагрузки и AKS. Дополнительные сведения см. в разделе Tutorial: подготовка приложения для Azure Kubernetes Service (AKS).
  • Подписка Azure, в которой у вас есть разрешения на запись ресурсов Azure, в регионе Azure, который поддерживает Service Connector и имеет достаточно поддержки AKS и вычислительных квот для выполнения учебника. Создайте учетную запись бесплатно .
  • Поставщики ресурсов Microsoft.ServiceLinker, Microsoft.ContainerService, Microsoft.ContainerRegistry и Microsoft.ManagedIdentity,зарегистрированные в подписке Azure. Чтобы зарегистрировать поставщиков, можно запустить az provider register -n Microsoft.[service].
  • Git для доступа и клонирования примера репозитория.
  • Docker и kubectl , установленные для управления образом контейнера и ресурсами Kubernetes. Установите kubectl локально, выполнив команду az aks install-cli.
  • Azure CLI установлен.

Создание ресурсов Azure

  1. Войдите в Azure, выполнив az login и следуйте указаниям.

  2. Создайте группу ресурсов Azure для использования в этом руководстве, заменив заполнитель <region> допустимым значением. location должен быть регионом Azure, где подписка имеет достаточную квоту вычислений для ресурсов Azure и никаких ограничений на какие-либо службы.

    az group create \
        --name MyResourceGroup \
        --location <region>
    
  3. Создайте кластер AKS для хранения подключения к службе, определения pod и примера приложения, выполнив следующую команду. Дополнительные сведения см. в разделе Quickstart: развертывание кластера Azure Kubernetes Service (AKS) с помощью Azure CLI.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  4. Подключитесь к кластеру, выполнив следующую команду.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  5. Создайте учетную запись служба хранилища Azure как целевую службу, с которой будет подключаться кластер AKS и взаимодействовать приложение-пример. Дополнительные сведения см. в разделе Создание учетной записи хранения Azure. Выполните следующую команду, заменив <storageaccountname> именем, которое равно 3-24 строчным или числовым символам и является уникальным в Azure.

    az storage account create \
        --resource-group MyResourceGroup \
        --name <storageaccountname> \
        --sku Standard_LRS
    
  6. Создайте реестр контейнеров Azure для размещения образа контейнера приложения, используемого в определении pod AKS. Дополнительные сведения см. в статье Quickstart: создание реестра контейнеров Azure с помощью портала Azure. Выполните следующую команду, заменив <registryname> именем, которое равно 5-50 строчным или числовым символам и является уникальным в Azure.

    az acr create \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --sku Standard
    
  7. Включите анонимную загрузку, чтобы кластер AKS мог использовать образы реестра. Замените <registryname> заполнитель именем реестра.

    az acr update \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --anonymous-pull-enabled
    
  8. Выполните следующую команду, чтобы создать управляемое удостоверение, назначаемое пользователем, которое может быть использовано для создания подключения службы с целью включения идентификации рабочей нагрузки для рабочих нагрузок AKS. Дополнительные сведения см. в разделе Управление управляемыми удостоверениями, назначаемыми пользователем, с помощью портала Azure.

    az identity create \
        --resource-group MyResourceGroup \
        --name MyIdentity
    

Создание подключения к службе с помощью Service Connector

Создайте подключение службы между кластером AKS и учетной записью служба хранилища Azure с помощью Azure CLI или портала Azure.

Выполните следующую команду Azure CLI, чтобы создать подключение службы к учетной записи хранения Azure. Замените <storageaccountname> на имя учетной записи хранения и <user-identity-resource-id> на идентификатор ресурса управляемого удостоверения, назначаемого пользователем.

Идентификатор ресурса управляемого удостоверения, назначаемого пользователем, можно получить из выходных данных предыдущей команды az identity create или использовать формат /subscriptions/<subscription-id>/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyIdentity.

az aks connection create storage-blob \
  --resource-group MyResourceGroup \
  --name MyAKSCluster \
  --target-resource-group MyResourceGroup \
  --account <storageaccountname> \
  --workload-identity <user-identity-resource-id>

После создания подключения на странице соединителя службы Azure портала отображаются сведения о новом подключении. Эти сведения можно использовать при редактировании файла pod.yaml далее в этом руководстве.

Скриншот портала Azure, просмотр ресурсов Kubernetes, созданных Service Connector.

Создание примера приложения

  1. Клонируйте пример репозитория, а затем перейдите в каталог, содержащий пример приложения. Выполните оставшиеся команды из этой папки.

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    cd serviceconnector-aks-samples/azure-storage-workload-identity
    
  2. Создайте и отправьте образы в реестр контейнеров с помощью az acr build команды. Замените <registryname> заполнитель именем реестра.

    az acr build --registry <registryname> --image sc-demo-storage-identity:latest ./
    
  3. Просмотрите образ в вашем реестре контейнеров с помощью команды az acr repository list. Замените <registryname> заполнитель именем реестра.

    az acr repository list --name <registryname> --output table
    

Запуск приложения и проверка подключения

  1. Замените следующие заполнители в файле pod.yaml в папке локального приложения:

    • <YourContainerImage>: замените имя образа в реестре контейнеров, например <registryname>.azurecr.io/sc-demo-storage-identity:latest.
    • <ServiceAccountCreatedByServiceConnector>: замените созданным после создания подключения учетной записью службы Service Connector. Вы можете проверить имя учетной записи службы на странице соединителя службы кластера AKS на портале Azure.
    • <SecretCreatedByServiceConnector>: замените соединитель секретной службы, созданный после создания подключения. Вы можете проверить имя учетной записи службы на странице соединителя службы кластера AKS на портале Azure.
  2. Разверните модуль pod в кластере с помощью kubectl apply. Команда создает pod с именем sc-demo-storage-identity в пространстве имен по умолчанию кластера AKS.

    kubectl apply -f pod.yaml
    
  3. Убедитесь, что развертывание выполнено успешно, просмотрев pod с помощью kubectl.

    kubectl get pod/sc-demo-storage-identity
    
  4. Убедитесь, что подключение установлено, просматривая журналы с помощью kubectl.

    kubectl logs pod/sc-demo-storage-identity
    

Очистка ресурсов

Если вам больше не нужны созданные для этого руководства ресурсы Azure, их можно удалить, удалив группу ресурсов MyResourceGroup.

az group delete \
  --resource-group MyResourceGroup