Использование соединителя службы в Служба Azure Kubernetes (AKS)
Служба Azure Kubernetes (AKS) — это одна из служб вычислений, поддерживаемых соединителем служб. Эта статья поможет вам понять следующее:
- Какие операции выполняются в кластере при создании подключения к службе.
- Использование ресурсов Kubernetes, созданных соединителем службы.
- Устранение неполадок и просмотр журналов соединителя служб в кластере AKS.
Необходимые компоненты
- В этом руководстве предполагается, что вы уже знаете основные понятия соединителя служб.
Операции, выполняемые соединителем службы в кластере AKS
В зависимости от различных целевых служб и типов проверки подлинности, выбранных при создании подключения к службе, соединитель службы выполняет различные операции в кластере AKS. Ниже перечислены возможные операции, сделанные соединителем службы.
Добавление расширения Kubernetes соединителя службы
Имя sc-extension
расширения Kubernetes добавляется в кластер при первом создании подключения к службе. Далее расширение помогает создавать ресурсы Kubernetes в кластере пользователя, когда запрос на подключение службы поступает в соединитель службы. Расширение можно найти в кластере AKS в портал Azure в меню "Расширения + приложения".
Расширение также хранит метаданные подключений кластера. Удаление расширения делает все подключения в кластере недоступными. Оператор расширения размещается в пространстве sc-system
имен кластера.
Создание ресурсов Kubernetes
Соединитель служб создает некоторые ресурсы Kubernetes для пространства имен, указанного пользователем при создании подключения к службе. Ресурсы Kubernetes хранят сведения о подключении, необходимые определениям рабочей нагрузки пользователя или коду приложения для связи с целевыми службами. В зависимости от различных типов проверки подлинности создаются разные ресурсы Kubernetes.
Connection String
Для типов проверки Service Principal
подлинности создается секрет Kubernetes.
Workload Identity
Для типа проверки подлинности учетная запись службы Kubernetes также создается в дополнение к секрету Kubernetes.
Ресурсы Kubernetes, созданные соединителем службы для каждого подключения к службе, можно найти в портал Azure в ресурсе Kubernetes в меню соединителя службы.
Удаление подключения к службе не удаляет связанный ресурс Kubernetes. При необходимости удалите ресурс вручную, используя например команду kubectl delete.
Включение надстройки azureKeyvaultSecretsProvider
Если целевая служба — Azure Key Vault, а драйвер CSI хранилища секретов включен при создании подключения к службе, соединитель службы включает azureKeyvaultSecretsProvider
надстройку для кластера.
Следуйте инструкциям из руководства по подключению к Azure Key Vault с помощью драйвераCSI, чтобы настроить подключение к Azure Key Vault с помощью драйвера CSI для хранилища секретов.
Включение удостоверения рабочей нагрузки и издателя OpenID Connect (OIDC)
Если при создании подключения к службе используется Workload Identity
тип проверки подлинности, соединитель службы включает удостоверение рабочей нагрузки и издателя OIDC для кластера.
Если используется 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. Используйте следующие команды, чтобы проверить наличие ошибок, возникших во время установки или обновления расширения.
k8s-extension
Установите расширение Azure CLI.az extension add --name k8s-extension
Получение состояния расширения соединителя службы.
statuses
Проверьте свойство в выходных данных команды, чтобы определить ошибки.az k8s-extension show \ --resource-group MyClusterResourceGroup \ --cluster-name MyCluster \ --cluster-type managedClusters \ --name sc-extension
Проверка журналов кластера Kubernetes
Если во время установки расширения возникает ошибка, и сообщение об ошибке в statuses
свойстве не предоставляет достаточных сведений, вы можете продолжить исследование, проверив журналы Kubernetes с помощью следующих действий.
Подключитесь к кластеру AKS.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
Расширение Соединителя служб устанавливается в
sc-system
пространстве имен с помощью диаграммы Helm. Проверьте пространство имен и выпуск Helm с помощью следующих команд.Проверьте, существует ли пространство имен.
kubectl get ns
Проверьте состояние выпуска helm.
helm list -n sc-system
Во время установки или обновления расширения задание 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
ресурсов.
Устранение рисков.
Убедитесь, что кластер находится в состоянии "Успешно" и повторите создание.
Выполните следующую команду, чтобы убедиться, что подписка зарегистрирована в поставщике
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
Следующий шаг
Узнайте, как интегрировать различные целевые службы и ознакомиться с параметрами конфигурации и методами проверки подлинности.