Поделиться через


Использование соединителя служб в службе Azure Kubernetes (AKS)

Служба Azure Kubernetes (AKS) — это одна из служб вычислений, поддерживаемых соединителем служб.

В этой статье рассматриваются следующие вопросы:

  • Различия между соединителем служб для AKS и другими вычислительными службами.
  • Операции, выполняемые в кластере во время создания подключения к службе.
  • Операции, выполняемые в целевых службах во время создания подключения к службе.
  • Использование ресурсов Kubernetes, созданных служебным соединителем.
  • Устранение неполадок и просмотр журналов соединителя служб в кластере AKS.

Предпосылки

Различия между соединителем служб для AKS и другими вычислительными службами

Соединитель служб для AKS отличается от того, как он работает с другими вычислительными службами, поддерживаемыми соединителем службы несколькими способами. Ниже описаны параметры и поведение AKS для каждой операции API.

Создание

Ниже перечислены параметры создания, относящиеся к AKS. Для ознакомления с инструкциями по созданию нового подключения в AKS используйте портал Azure или Azure CLI.

  • Сервисный коннектор для AKS требует Kubernetes namespace определения, где создавать ресурсы Kubernetes. По умолчанию используется default пространство имен.
  • Соединитель сервисов для AKS поддерживает Workload Identity в качестве надежного варианта для проверки подлинности учетных данных, в то время как другие вычислительные сервисы предлагают параметры System Managed Identity и User Managed Identity.
  • При использовании Azure Key Vault в качестве целевой службы с включенным драйвером CSI для хранилища секретов, Соединитель служб использует управляемое удостоверение, назначенное пользователем, из надстройки AKS azure-keyvault-secrets-provider для проверки подлинности, не требуя от пользователей указания типа проверки подлинности.
  • Соединитель служб для AKS поддерживает только сетевой Firewall Rules вариант, в то время как другие вычислительные службы также могут поддерживать Private Link и Virtual Network параметры.

Конфигурации списка

Соединитель служб для AKS отображает только конфигурации без учетных данных в представлениях списка конфигураций. При необходимости пользователи должны вручную проверить учетные данные в связанном ресурсе Kubernetes .

Используя команду Azure CLI az aks connection list-configuration, значение конфигурации учетных данных является пустой строкой. На портале Azure значение конфигурации учетных данных скрыто, как показано ниже.

Снимок экрана: конфигурация списка подключений AKS.

Ратификация

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

  • Проверка существования целевой службы
  • Проверка правил брандмауэра IP для доступа к целевой службе
  • Обеспечение назначения ролей для идентификации рабочей нагрузки для доступа к целевой службе

Выходные данные команды Azure CLI az aks connection validate всегда success. Это же относится к порталу Azure, как показано ниже.

Снимок экрана: проверка подключения AKS.

Операции, выполняемые Service Connector в кластере AKS

Операции, выполняемые соединителем службы в кластере AKS, зависят от целевых служб и типов проверки подлинности, выбранных при создании подключения к службе. Ниже перечислены возможные операции, выполняемые соединителем службы.

Добавление расширения соединителя службы Kubernetes

Расширение Kubernetes с именем sc-extension добавляется в кластер при первом создании соединения с сервисом. Далее расширение помогает создавать ресурсы Kubernetes в кластере пользователя всякий раз, когда запрос на подключение службы приходит к соединителю службы. Расширение находится в кластере AKS пользователя на портале Azure в меню "Расширения + приложения ".

Снимок экрана: портал Azure, просмотр расширения AKS.

Метаданные подключения кластера также хранятся в расширении. Удаление расширения делает все подключения в кластере недоступными. Оператор расширения размещается в пространстве имен кластера sc-system.

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

Соединитель службы создает ресурсы Kubernetes в пространстве имен, которое пользователь указывает при создании подключения к службе. Ресурсы Kubernetes хранят сведения о подключении, необходимые определениям рабочей нагрузки пользователя или коду приложения для взаимодействия с целевыми службами. В зависимости от типа проверки подлинности создаются разные ресурсы Kubernetes. Для типов аутентификации Connection String и Service Principal создается секрет Kubernetes. Workload Identity Для типа проверки подлинности учетная запись службы Kubernetes также создается в дополнение к секрету Kubernetes.

Ресурсы Kubernetes, созданные соединителем службы для каждого подключения к службе, можно найти на портале Azure в ресурсе Kubernetes в меню соединителя службы.

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

Удаление подключения к службе не удаляет связанный ресурс Kubernetes. При необходимости удалите ресурс вручную, используя например kubectl delete команду.

Включение надстройки azureKeyvaultSecretsProvider

Если целевая служба — Azure Key Vault и драйвер CSI хранилища секретов включен, Service Connector включает azureKeyvaultSecretsProvider надстройку для кластера.

Снимок экрана: портал Azure, включение драйвера CSI для keyvault при создании подключения.

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

Включение идентификации рабочей нагрузки и издателя OpenID Connect (OIDC)

Если используется Workload Identityтип проверки подлинности, соединитель службы включает удостоверение рабочей нагрузки и издателя OIDC для кластера.

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

Если тип проверки подлинности — Workload Identity, для создания учетных данных федеративного удостоверения требуется управляемое удостоверение, назначенное пользователем. Дополнительные сведения о удостоверениях рабочей нагрузки или обратитесь к следующему руководству для настройки подключения к службе хранилища Azure с помощью удостоверения рабочей нагрузки.

Операции, выполняемые сервисным соединителем на целевых службах

Соединитель служб для AKS выполняет те же операции с целевыми службами, что и другие вычислительные службы. Однако операции зависят от типов целевых служб и методов проверки подлинности. Ниже перечислены некоторые возможные операции.

Получение конфигураций подключения

Соединитель служб извлекает необходимые конфигурации подключений из целевой службы и задает их в качестве секрета Kubernetes в кластере пользователя. Конфигурации подключения зависят от типа целевой службы и метода проверки подлинности:

  • Connection String Для типа проверки подлинности конфигурация обычно включает секрет службы или строку подключения.
  • Обычно для типа проверки подлинности это включает конечную точку службы.
  • Для типа проверки подлинности Service Principal он содержит идентификатор арендатора, идентификатор клиента и секрет клиента основного объекта службы.

Подробные сведения о конкретных целевых службах см. в соответствующей документации, например в руководстве по службам ИИ Azure .

Создание правил брандмауэра на основе IP-адресов

Соединитель служб извлекает исходящий общедоступный IP-адрес из кластера AKS и создает правила брандмауэра IP-адресов в целевой службе, чтобы разрешить сетевой доступ из кластера.

Создание назначений ролей для идентификатора Microsoft Entra

При использовании Workload Identity типа проверки подлинности служебный соединитель автоматически назначает роль для удостоверения. Назначенная роль зависит от целевой службы, чтобы обеспечить соответствующий доступ. Пользователи также могут настраивать назначения ролей по мере необходимости. Дополнительные сведения см. в разделе "Настройка роли".

Используйте ресурсы Kubernetes, созданные соединителем службы

Соединитель служб создает различные ресурсы Kubernetes в зависимости от выбранного типа целевой службы и типа проверки подлинности. В следующих разделах показано, как использовать ресурсы Kubernetes, созданные соединителем службы в определении рабочих нагрузок кластера и коде приложения.

Секрет Kubernetes

Секрет Kubernetes создается, если для типа проверки подлинности задано значение Connection String или Service Principal. Определение рабочей нагрузки кластера может напрямую ссылаться на секрет. В следующем фрагменте кода приведен пример.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
spec:
  template:
    spec:
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

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

Учетная запись службы Kubernetes

Учетная запись службы Kubernetes и секрет создаются при установке Workload Identityтипа проверки подлинности. Определение рабочей нагрузки кластера может ссылаться на учетную запись службы и секрет для аутентификации с помощью идентификации рабочей нагрузки. В следующем фрагменте кода приведен пример.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
  labels:
    azure.workload.identity/use: "true"
spec:
  template:
    spec:
      serviceAccountName: <ServiceAccountCreatedByServiceConnector>
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

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

Устранение неполадок и просмотр журналов

Если при создании подключения к службе возникает ошибка, и ее не удается исправить повторной попыткой, следующие методы помогут собрать дополнительные сведения для устранения неполадок.

Проверка расширения Kubernetes соединителя служб

Расширение Kubernetes соединителя служб основано на расширениях кластера Kubernetes с поддержкой Azure Arc. Используйте следующие команды, чтобы проверить наличие ошибок при установке или обновлении расширения.

  1. k8s-extension Установите расширение Azure CLI.

    az extension add --name k8s-extension
    
  2. Получить состояние расширения коннектора службы. Проверьте свойство statuses в выходных данных команды для выявления ошибок.

    az k8s-extension show \
        --resource-group MyClusterResourceGroup \
        --cluster-name MyCluster \
        --cluster-type managedClusters \
        --name sc-extension
    

Проверка журналов кластера Kubernetes

Если во время установки расширения возникает ошибка, а сообщение об ошибке в statuses свойстве не предоставляет достаточных сведений, вы можете продолжить исследование, проверив журналы Kubernetes, выполнив следующие действия.

  1. Подключитесь к кластеру AKS.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. Расширение Соединителя служб устанавливается в sc-system пространстве имен с помощью диаграммы Helm. Проверьте пространство имен и релиз Helm с помощью следующих команд.

    • Проверьте, существует ли пространство имен.

      kubectl get ns
      
    • Проверьте статус релиза Helm.

      helm list -n sc-system
      
  3. Во время установки или обновления расширения задание Kubernetes, которое вызывается sc-job , создает ресурсы Kubernetes для подключения к службе. Сбой выполнения задания обычно приводит к сбою расширения. Проверьте состояние задания, выполнив следующие команды. Должно быть, если sc-job не существует в пространстве имен sc-system, то выполнялся успешно. Это задание предназначено для автоматического удаления после успешного выполнения.

    • Проверьте наличие работы.

      kubectl get job -n sc-system
      
    • Получите статус задания.

      kubectl describe job/sc-job -n sc-system
      
    • Просмотр журналов заданий.

      kubectl logs job/sc-job -n sc-system
      

Распространенные ошибки и устранение рисков

Ошибка создания расширения

Сообщение об ошибке

  • Unable to get a response from the agent in time.
  • Extension pods can't be scheduled if all the node pools in the cluster are "CriticalAddonsOnly" tainted

Смягчение:

Обратитесь к ошибкам создания расширения

Ошибки Helm

Сообщения об ошибке:

  • Unable to download the Helm chart from the repo URL

Эта ошибка вызвана проблемами подключения, возникающими между кластером и брандмауэром, а также проблемами с блокировкой исходящего трафика. Чтобы устранить эту проблему, ознакомьтесь с правилами исходящей сети и полного доменного имени для кластеров Службы Azure Kubernetes (AKS) и добавьте полное доменное имя, необходимое для извлечения диаграммы Соединителя службы Helm: scaksextension.azurecr.io

Сообщения об ошибке:

  • Timed out waiting for resource readiness
  • Helm chart rendering failed with given values
  • Resource already exists in your cluster
  • Operation is already in progress for Helm

Смягчение:

Ознакомьтесь с ошибками Helm

Конфликт

Сообщение об ошибке

Operation returned an invalid status code: Conflict.

Причина :

Эта ошибка обычно возникает при попытке создать подключение к службе, а кластер Службы Azure Kubernetes (AKS) находится в состоянии обновления. Обновление подключения сервиса конфликтует с одновременным обновлением. Эта ошибка также возникает, когда подписка не зарегистрирована в поставщике Microsoft.KubernetesConfiguration ресурсов.

Смягчение:

  1. Убедитесь, что кластер находится в состоянии "Успешно", и повторите попытку создания.

  2. Выполните следующую команду, чтобы убедиться, что подписка зарегистрирована в поставщике Microsoft.KubernetesConfiguration ресурсов.

    az provider register -n Microsoft.KubernetesConfiguration
    

Несанкционированный доступ к ресурсам

Сообщение об ошибке

You do not have permission to perform ... If access was recently granted, please refresh your credentials.

Причина :

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

Смягчение:

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

Отсутствует регистрация подписки

Сообщение об ошибке

The subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration'

Причина :

Соединитель служб требует, чтобы подписка была зарегистрирована в Microsoft.KubernetesConfiguration, которая является поставщиком ресурсов для расширений кластера Kubernetes с поддержкой Azure Arc.

Смягчение:

Microsoft.KubernetesConfiguration Зарегистрируйте поставщика ресурсов, выполнив следующую команду. Дополнительные сведения об ошибках регистрации поставщика ресурсов см. в разделе "Устранение ошибок для регистрации поставщика ресурсов".

az provider register -n Microsoft.KubernetesConfiguration

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

Узнайте, как интегрировать различные целевые службы и ознакомиться с параметрами конфигурации и методами проверки подлинности.