Руководство. Использование поставщика Azure Key Vault для драйвера CSI хранилища секретов в кластере Служба Azure Kubernetes (AKS)

Узнайте, как подключиться к Azure Key Vault с помощью драйвера CSI в кластере Служба Azure Kubernetes (AKS) с помощью соединителя службы. В этом руководстве выполняются следующие задачи:

  • Создайте кластер AKS и Azure Key Vault.
  • Создайте подключение между кластером AKS и Azure Key Vault с помощью соединителя службы.
  • SecretProviderClass Создайте CRD и pod поставщик CSI для проверки подключения.
  • Очистите ресурсы.

Предупреждение

Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, требует высокого уровня доверия к приложению и несет риски, которые не присутствуют в других потоках. Этот поток следует использовать только в том случае, если другие более безопасные потоки, такие как управляемые удостоверения, не являются жизнеспособными.

Необходимые компоненты

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

  1. Создайте группу ресурсов для этого руководства.

    az group create \
        --name MyResourceGroup \
        --location eastus
    
  2. Создайте кластер AKS со следующей командой или перейдите к руководству. В этом кластере мы создадим подключение к службе, определение pod и место развертывания примера приложения.

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

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. Создайте Azure Key Vault с помощью следующей команды или перейдите к руководству. Эта целевая служба подключена к кластеру AKS и является службой, из которую драйвер CSI синхронизирует секреты.

    az keyvault create \
        --resource-group MyResourceGroup \  
        --name MyKeyVault \
        --location EastUS
    
  5. Создайте секрет в Key Vault с помощью следующей команды.

    az keyvault secret set \
        --vault-name MyKeyVault \
        --name ExampleSecret \
        --value MyAKSExampleSecret
    

Создание подключения к службе в AKS с помощью соединителя службы

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

  1. Откройте службу Kubernetes в портал Azure и выберите соединитель службы в меню слева.

  2. Выберите "Создать " и заполните следующие параметры. Оставьте другие параметры значениями по умолчанию.

    Параметр Выбранный вариант Description
    Пространство имен Kubernetes default Пространство имен, в котором требуется подключение в кластере.
    тип услуги; Key Vault (включение CSI) Выберите Key Vault в качестве целевого типа службы и проверьте параметр включения CSI .
    Имя подключения keyvault_conn Используйте имя подключения, предоставленное соединителем службы, или выберите собственное имя подключения.
    Подписка <MySubscription> Подписка для целевой службы Azure Key Vault.
    Хранилище ключей <MyKeyVault> Целевое хранилище ключей, к которому требуется подключиться.
    Тип клиента Python Язык кода или платформа, используемая для подключения к целевой службе.
  3. После создания подключения на странице соединителя служб отображаются сведения о новом подключении.

    Снимок экрана: портал Azure, просмотр ресурсов Kubernetes, созданных соединителем службы.

Проверка подключения

  1. Клонируйте репозиторий примера.

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    
  2. Перейдите в пример папки репозитория для Azure Key Vault:

    cd serviceconnector-aks-samples/azure-keyvault-csi-provider
    
  3. Замените заполнители в secret_provider_class.yaml файле в папке azure-keyvault-csi-provider .

    • Замените <AZURE_KEYVAULT_NAME> именем созданного и подключенного хранилища ключей. Значение можно получить на портале Azure Service Connector.
    • Замените <AZURE_KEYVAULT_TENANTID> идентификатором клиента хранилища ключей. Вы можете получить значение из Azure портала для Service Connector.
    • Замените <AZURE_KEYVAULT_CLIENTID> идентификатором клиента удостоверения надстройки azureKeyvaultSecretsProvider . Значение можно получить на портале Azure Service Connector.
    • Замените <KEYVAULT_SECRET_NAME> на созданное имя секрета хранилища ключей, например ExampleSecret
  4. Разверните ресурсы Kubernetes в кластере kubectl apply с помощью команды. Установите kubectl локально с помощью команды az aks install-cli , если она не установлена.

    1. Разверните пользовательское SecretProviderClass определение ресурсов (CRD).

      kubectl apply -f secret_provider_class.yaml
      
    2. podРазверните . Команда создает pod с именем sc-demo-keyvault-csi в пространстве имен по умолчанию кластера AKS.

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

    kubectl get pod/sc-demo-keyvault-csi
    
  6. После запуска модуля будет доступно подключенное содержимое по пути к тому, указанному в YAML развертывания. Используйте следующие команды, чтобы проверить секреты и распечатать секрет теста.

    • Отображение секретов, содержащихся в хранилище секретов, с помощью следующей команды.

      kubectl exec sc-demo-keyvault-csi -- ls /mnt/secrets-store/
      
    • Отображение секрета в хранилище с помощью следующей команды. В этом примере команды показан секрет ExampleSecretтеста.

      kubectl exec sc-demo-keyvault-csi -- cat /mnt/secrets-store/ExampleSecret
      

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

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

az group delete \
    --resource-group MyResourceGroup

Следующие шаги

Ознакомьтесь со следующими статьями, чтобы узнать больше о концепциях соединителя служб и о том, как это помогает AKS подключаться к службам.