Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При подключении к кластеру вы можете безопасно подключиться к кластерам Kubernetes с поддержкой Azure Arc в любом месте, не требуя включения в брандмауэра любого входящего порта.
Доступ к серверу API кластера Kubernetes с поддержкой Azure Arc включает следующие сценарии:
- Интерактивная отладка и устранение неполадок.
- Доступ из кластера к службам Azure для пользовательских расположений и других ресурсов, созданных в кластере.
Прежде чем начать, ознакомьтесь с общими сведениями о функции подключения кластера.
Предварительные условия
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Существующий подключенный кластер Kubernetes с поддержкой Azure Arc.
- Если вы еще не подключили кластер, используйте руководство по быстрому запуску.
- Обновите ваших агентов до последней версии.
Включите требования к сети для Kubernetes с поддержкой Arc, включая все конечные точки, перечисленные как необходимые для подключения к кластеру.
Установите или обновите Azure CLI до последней версии.
Установите последнюю версию
connectedk8sрасширения Azure CLI:az extension add --name connectedk8sЕсли расширение
connectedk8sуже установлено, обновите его до последней версии:az extension update --name connectedk8sЗамените заполнители и выполните следующую команду, чтобы задать переменные среды:
CLUSTER_NAME=<cluster-name> RESOURCE_GROUP=<resource-group-name> ARM_ID_CLUSTER=$(az connectedk8s show -n $CLUSTER_NAME -g $RESOURCE_GROUP --query id -o tsv)
Настройка проверки подлинности
В существующем кластере с поддержкой Azure Arc создайте ClusterRoleBinding, используя проверку подлинности Microsoft Entra ID или токен учетной записи службы.
Проверка подлинности идентификатора Microsoft Entra
Получите связанный с объектом Microsoft Entra ID
objectId. Для учетных записей отдельных пользователей получите имя участника-пользователя (UPN), связанное с объектом Microsoft Entra ID.Для учетной записи группы Microsoft Entra:
AAD_ENTITY_ID=$(az ad group show --group <group-name> --query id -o tsv)Для учетной записи одного пользователя Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)Для приложения Microsoft Entra:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Авторизовать сущность с соответствующими разрешениями.
Если вы используете собственные ClusterRoleBinding или RoleBinding Kubernetes для проверок авторизации в кластере, и файл
kubeconfigуказывает на API-сервер Kubernetes (kube-apiserver) вашего кластера для прямого доступа, вы можете создать такую привязку, сопоставив её с сущностью Microsoft Entra ID, которой нужен доступ к этому кластеру. Например:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_IDЕсли вы используете Azure RBAC для проверки авторизации в кластере, можно создать соответствующее назначение роли Azure, сопоставленное с объектом Microsoft Entra ID. Например:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER az role assignment create --role "Azure Arc Enabled Kubernetes Cluster User Role" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER
Аутентификация по токену сервисной учетной записи
Примечание.
Команды на этой вкладке предполагают оболочку, совместимую с Bash (Linux, macOS или подсистема Windows для Linux). Для Windows PowerShell перейдите на вкладку Azure PowerShell.
Когда файл
kubeconfigуказывает на API-сервер Kubernetes (kube-apiserver) вашего кластера Kubernetes, выполните эту команду, чтобы создать учетную запись службы. В этом примере создается учетная запись службы в пространстве имен по умолчанию, но вы можете заменить его на любое другое пространство имен дляdefault.kubectl create serviceaccount demo-user -n defaultСоздайте ClusterRoleBinding, чтобы предоставить этой учетной записи службы соответствующие разрешения в кластере. Если вы использовали другое пространство имен в первой команде, замените его здесь
default.kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-userСоздайте маркер учетной записи службы:
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: demo-user-secret annotations: kubernetes.io/service-account.name: demo-user type: kubernetes.io/service-account-token EOFTOKEN=$(kubectl get secret demo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')Выведите токен в консоль:
echo $TOKEN
Доступ к кластеру с клиентского устройства
После настройки проверки подлинности в кластере выполните на любом клиентском устройстве следующие действия, чтобы запустить прокси подключения к кластеру и выполнять команды kubectl для кластера Kubernetes с поддержкой Azure Arc.
Войдите, используя либо аутентификацию Microsoft Entra ID, либо аутентификацию с помощью токена служебной учетной записи.
Получите подключение
kubeconfigк кластеру, которое вы используете для взаимодействия с кластером из любого места (даже за пределами брандмауэра), на основе параметра проверки подлинности:Для проверки подлинности Microsoft Entra ID:
# Microsoft Entra ID authentication az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUPДля аутентификации с использованием токена сервисной учетной записи:
# Service account token authentication az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKENПримечание.
Эта команда открывает прокси-сервер и блокирует текущую оболочку.
В другом сеансе оболочки используйте
kubectlдля отправки запросов в кластер. Например, выполните следующую команду:kubectl get pods -n default
Если подключение работает правильно, в ответе перечислены все поды в пространстве имён default.
Известные ограничения
Следующее ограничение действует при использовании cluster connect для доступа к кластеру Kubernetes с поддержкой Azure Arc.
Если вы входите в Azure CLI с помощью субъекта-службы Microsoft Entra ID перед запуском az connectedk8s proxy, и этот субъект-службы входит более чем в 200 групп, может появиться следующая ошибка:
Overage claim (users with more than 200 group membership) for SPN is currently not supported. For troubleshooting, please refer to aka.ms/overageclaimtroubleshoot
Чтобы обойти это ограничение:
- Создайте субъект-службу, который с меньшей вероятностью входит в большое число групп.
-
Войдите в Azure CLI с помощью служебного пользователя перед выполнением
az connectedk8s proxyкоманды.
Следующие шаги
- Настройте Microsoft Entra ID RBAC в кластерах.
- Развертывание расширений кластера и управление ими.
- Помогите защитить кластер другими способами, следуя инструкциям в книге безопасности для Kubernetes с поддержкой Azure Arc.