Развертывание и настройка федерации удостоверений рабочей нагрузки в Kubernetes с поддержкой Azure Arc (предварительная версия)
Вы можете включить функцию удостоверения рабочей нагрузки в кластере Kubernetes с поддержкой Azure Arc с помощью Azure CLI. Этот процесс выполняет следующие высокоуровневые действия.
- Включите функцию идентификации рабочей нагрузки в новом или существующем кластере Kubernetes с поддержкой Arc.
- Создайте управляемое удостоверение (или регистрацию приложения) и учетную запись службы Kubernetes.
- Настройте управляемое удостоверение для федерации маркеров.
- Настройте заметки учетной записи службы и метки pod приложения для использования удостоверения рабочей нагрузки.
- Настройте параметры удостоверения рабочей нагрузки в кластере Kubernetes.
- Отключите удостоверение рабочей нагрузки в кластере.
Общие сведения об этой функции см. в статье "Федерация удостоверений рабочей нагрузки" в Kubernetes с поддержкой Azure Arc (предварительная версия).
Внимание
Функция федерации удостоверений рабочей нагрузки Azure Arc в настоящее время доступна в предварительной версии. Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.
Совет
В этой статье описаны действия, необходимые для развертывания и настройки удостоверения рабочей нагрузки в кластере Kubernetes с поддержкой Arc. Сведения о том, как включить удостоверение рабочей нагрузки для других типов кластеров, см. в следующих статьях:
Необходимые компоненты
- Удостоверение рабочей нагрузки для кластеров Kubernetes с поддержкой Azure Arc (предварительная версия) поддерживается в следующих дистрибутивах Kubernetes:
- Кластер Ubuntu Linux под управлением K3s
- AKS в Edge Essentials
- AKS на HCI 23H2
Чтобы использовать функцию идентификации рабочей нагрузки, необходимо иметь Azure CLI версии 2.64 или более поздней версии, а az connectedk8s
также версию 1.10.0 или более позднюю. Перед обновлением версии Azure CLI обязательно обновите az connectedk8s
версию Azure CLI. Если вы используете Azure Cloud Shell, будет установлена последняя версия Azure CLI.
Включение удостоверения рабочей нагрузки в кластере
Выполните соответствующие действия, чтобы включить функцию идентификации рабочей нагрузки для нового кластера Kubernetes с поддержкой Arc или существующего. В обоих случаях обязательно замените имя и группу ресурсов вашими значениями и настройте параметры по желанию.
Параметр | Описание: | Обязательное поле |
---|---|---|
--enable-oidc-issuer |
Создает и размещает URL-адрес издателя OIDC, который является общедоступным URL-адресом, который позволяет серверу API найти открытые ключи подписи для проверки маркеров. | Обязательное поле |
--enable-workload-identity |
Устанавливает мутирующий веб-перехватчик, который проектирует подписанный маркер учетной записи службы в известный путь и внедряет переменные среды, связанные с проверкой подлинности, в модули pod приложений на основе параметров учетной записи службы с заметками. Для нового кластера, если этот параметр не включен, необходимо подключить проецируемый том по известному пути, который предоставляет маркер подписанной учетной записи службы пути. | Необязательно |
Настройка переменных среды
Для удобства переменные среды, определенные ниже, ссылаются в примерах, приведенных в этой статье. Замените эти значения собственными значениями:
export RESOURCE_GROUP="myRG"
export LOCATION="eastus"
export CLUSTER_NAME="mycluster"
export SERVICE_ACCOUNT_NAMESPACE="myKubernetesnamespace"
export SERVICE_ACCOUNT_NAME="mysa"
export SUBSCRIPTION="$(az account show --query id --output tsv)"
export USER_ASSIGNED_IDENTITY_NAME="myIdentity"
export FEDERATED_IDENTITY_CREDENTIAL_NAME="myFedIdentity"
Чтобы создать кластер с поддержкой Azure Arc с включенным удостоверением рабочей нагрузки, используйте следующую команду:
az connectedk8s connect --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" --enable-oidc-issuer –-enable-workload-identity
Чтобы включить удостоверение рабочей нагрузки в существующем кластере update
Kubernetes с поддержкой Arc, используйте команду.
az connectedk8s update --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" --enable-oidc-issuer --enable-workload-identity
Получение URL-адреса издателя OIDC
Извлеките URL-адрес издателя OIDC и сохраните его в переменной среды. Этот URL-адрес издателя будет использоваться на следующем шаге.
export OIDC_ISSUER="$(az connectedk8s show --name "${CLUSTER_NAME}" --resource-group "${RESOURCE_GROUP}" \
--query "oidcIssuerProfile.issuerUrl" \
--output tsv)"
Чтобы просмотреть переменную среды, введите echo ${OIDC_ISSUER}
. Переменная среды должна содержать URL-адрес издателя, аналогичный следующему примеру:
https://northamerica.oic.prod-arc.azure.com/00000000-0000-0000-0000-000000000000/12345678-1234-1234-1234-123456789123/
По умолчанию издатель использует базовый URL-адрес https://{region}.oic.prod-arc.azure.com/{tenant_id}/{uuid}
, где значение для {region}
соответствия расположению, в котором создается кластер Kubernetes с поддержкой Arc. Значение {uuid}
представляет ключ OpenID Connect (OIDC), который является неизменяемым, случайным образом созданным guid для каждого кластера.
Создание управляемого удостоверения
az identity create
Используйте команду для создания управляемого удостоверения, назначаемого пользователем. С удостоверением рабочей нагрузки отношения доверия устанавливаются между маркером удостоверения управления, назначаемого пользователем, и маркером учетной записи службы кластера Kubernetes.
az identity create \
--name "${USER_ASSIGNED_IDENTITY_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--location "${LOCATION}" \
--subscription "${SUBSCRIPTION}"
Извлеките идентификатор клиента управляемого удостоверения и сохраните его в переменной среды.
export USER_ASSIGNED_CLIENT_ID="$(az identity show \
--resource-group "${RESOURCE_GROUP}" \
--name "${USER_ASSIGNED_IDENTITY_NAME}" \
--query 'clientId' \
--output tsv)"
Создание учетной записи службы Kubernetes
Создайте учетную запись службы Kubernetes и заметите ее с идентификатором клиента управляемого удостоверения, созданного на предыдущем шаге. Подписанные маркеры, связанные с учетной записью службы Kubernetes, будут обменяться маркером идентификатора Microsoft Entra после установления отношения доверия между двумя.
Примените следующий фрагмент кода YAML, чтобы создать учетную запись службы с добавленной заметкой удостоверения рабочей нагрузки.
apiVersion: v1
kind: ServiceAccount
metadata:
annotations:
azure.workload.identity/client-id: "${USER_ASSIGNED_CLIENT_ID}"
name: "${SERVICE_ACCOUNT_NAME}"
namespace: "${SERVICE_ACCOUNT_NAMESPACE}"
Создание учетных данных федеративного удостоверения
az identity federated-credential create
Используйте команду, чтобы создать федеративные учетные данные удостоверения между управляемым удостоверением, издателем учетной записи службы и субъектом. На этом шаге устанавливается отношение доверия между кластером Kubernetes и Microsoft Entra для обмена токенами. Дополнительные сведения об учетных данных федеративных удостоверений в Microsoft Entra см. в разделе "Обзор федеративных учетных данных удостоверений" в идентификаторе Microsoft Entra.
az identity federated-credential create \
--name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} \
--identity-name "${USER_ASSIGNED_IDENTITY_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--issuer "${OIDC_ISSUER}" \
--subject system:serviceaccount:"${SERVICE_ACCOUNT_NAMESPACE}":"${SERVICE_ACCOUNT_NAME}" \
--audience api://AzureADTokenExchange
Примечание.
После добавления учетных данных федерального удостоверения потребуется несколько секунд для распространения. Если запрос маркера выполняется сразу после добавления учетных данных федеративного удостоверения, запрос может завершиться ошибкой до обновления кэша. Чтобы избежать этой проблемы, добавьте небольшую задержку в скриптах после добавления учетных данных федеративного удостоверения.
Настройка заметок учетной записи службы и меток pod
Следующие заметки учетной записи службы и pod доступны для настройки удостоверения рабочей нагрузки на основе требований приложения. Метка pod, указанная ниже, является обязательной, если –-enable-workload-identity
задано значение true
.
Заметки учетной записи службы
Все заметки учетной записи службы являются необязательными. Если заметка не указана, будет использоваться значение по умолчанию.
Номер | Description | По умолч. |
---|---|---|
azure.workload.identity/client-id |
Идентификатор клиента приложения Microsoft Entra для использования с модулем pod. | |
azure.workload.identity/tenant-id |
Идентификатор клиента Azure, в котором зарегистрировано приложение Microsoft Entra. | AZURE_TENANT_ID переменная среды, извлеченная из azure-wi-webhook-config ConfigMap. |
azure.workload.identity/service-account-token-expiration |
expirationSeconds поле для проецируемого маркера учетной записи службы. Настройте для предотвращения простоя, вызванного ошибками при обновлении маркера учетной записи службы. Срок действия маркера учетной записи службы Kubernetes не связан с токенами Microsoft Entra. Срок действия маркеров Microsoft Entra истекает через 24 часа после их выдачи. |
3600 (поддерживаемый диапазон — 3600–86400) |
Метки pod
Номер | Description | Рекомендуемое значение | Обязательное поле |
---|---|---|---|
azure.workload.identity/use |
Требуется в спецификации шаблона pod. Если –-enable-workload-identity задано значение true ,только модули pod с этой меткой мутируются путем изменения веб-перехватчика допуска для внедрения переменных среды Azure и проецируемого тома маркера учетной записи службы. |
true |
Да |
Заметки pod
Все заметки pod являются необязательными. Если заметка не указана, будет использоваться значение по умолчанию.
Номер | Description | По умолч. |
---|---|---|
azure.workload.identity/service-account-token-expiration |
expirationSeconds поле для проецируемого маркера учетной записи службы. Настройте для предотвращения простоя, вызванного ошибками при обновлении маркера учетной записи службы. Срок действия маркера учетной записи службы Kubernetes не связан с токенами Microsoft Entra. Срок действия маркеров Microsoft Entra истекает через 24 часа после их выдачи. |
3600 (поддерживаемый диапазон — 3600–86400) |
azure.workload.identity/skip-containers |
Представляет разделенный точкой с запятой список контейнеров для пропуска добавления проецируемого тома маркера учетной записи службы. Например: container1;container2 . |
По умолчанию том маркера проецируемого маркера учетной записи службы добавляется ко всем контейнерам, если модуль pod помечен с azure.workload.identity/use: true меткой. |
Настройка параметров удостоверения рабочей нагрузки в кластере Kubernetes
Сервер API в кластере Kubernetes должен быть настроен для выдачи маркеров учетной записи службы, которые включают общедоступный URL-адрес издателя OIDC (чтобы Entra знал, где найти открытые ключи для проверки маркера).
Чтобы настроить параметры удостоверений рабочей нагрузки в Ubuntu Linux с K3s, выполните следующие действия, чтобы завершить настройку:
Создайте файл конфигурации k3s.
Измените,
/etc/rancher/k3s/config.yaml
чтобы добавить следующие параметры:`kube-apiserver-arg: - 'service-account-issuer=${OIDC_ISSUER}' - 'service-account-max-token-expiration=24h'`
Сохраните файл config.yaml.
Перезапустите сервер API k3s с помощью команды
systemctl restart k3s
.Мы рекомендуем часто поворачивать ключи учетной записи службы. Дополнительные сведения см. в разделе "Смена ключей издателя учетной записи службы".
Отключение удостоверения рабочей нагрузки
Чтобы отключить функцию идентификации рабочей нагрузки в кластере Kubernetes с поддержкой Azure Arc, выполните следующую команду:
az connectedk8s update
--resource-group "${RESOURCE_GROUP}"
--name "${CLUSTER_NAME}"
--disable-workload-identity
Следующие шаги
- Ознакомьтесь с примером настройки приложения для использования удостоверения рабочей нагрузки.