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


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

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

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

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

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

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

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

Имя sc-extension расширения Kubernetes добавляется в кластер при первом создании подключения к службе. Далее расширение помогает создавать ресурсы 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, созданных соединителем службы.

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

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

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

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

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

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

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

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

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

Использование ресурсов 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.

Устранение рисков.

Сведения об ошибках создания расширения

Ошибки Helm

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

  • Timed out waiting for resource readiness
  • Unable to download the Helm chart from the repo URL
  • 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

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

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