Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При подключении к кластеру вы можете безопасно подключиться к кластерам Kubernetes с поддержкой Azure Arc в любом месте, не требуя включения в брандмауэра любого входящего порта.
Доступ к apiserver
кластеру 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)
Настройка проверки подлинности
В существующем Arc-кластере создайте ClusterRoleBinding с аутентификацией Microsoft Entra или токеном учетной записи службы.
Опция проверки подлинности Microsoft Entra
Получите связанную с сущностью
objectId
Microsoft Entra. Для отдельных пользовательских учетных записей получите основное имя пользователя (UPN), связанное с сущностью Microsoft Entra.Для учетной записи группы Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --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
файлом, указывающим наapiserver
часть вашего кластера для прямого доступа, вы можете создать привязку, сопоставленную с сущностью Microsoft Entra, которая нуждается в доступе к этому кластеру. Например:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Если вы используете Azure RBAC для проверки авторизации в кластере, можно создать применимое назначение роли Azure , сопоставленное с сущностью Microsoft Entra. Например:
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
Опция аутентификации токена сервисной учетной записи
С файлом
kubeconfig
, который указывает на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 EOF
TOKEN=$(kubectl get secret demo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')
Получите маркер для вывода в консоль
echo $TOKEN
Доступ к кластеру с клиентского устройства
Теперь вы можете получить доступ к кластеру из другого клиента. Выполните следующие действия на другом клиентском устройстве.
Войдите, используя аутентификацию Microsoft Entra или аутентификацию по токену учетной записи службы.
Получите подключение
kubeconfig
кластера, необходимое для взаимодействия с кластером из любого места (даже за пределами брандмауэра, окружающего кластер), на основе используемого параметра проверки подлинности:Для аутентификации в Microsoft Entra:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Для аутентификации с использованием токена сервисной учетной записи:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Примечание.
Эта команда открывает прокси-сервер и блокирует текущую оболочку.
В другом сеансе оболочки используйте
kubectl
для отправки запросов в кластер.kubectl get pods -A
Теперь вы должны увидеть ответ от кластера, содержащий список всех подов в пространстве имен default
.
Известные ограничения
При выполнении запросов к кластеру Kubernetes, если используемый субъект-служба Microsoft Entra является частью более 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 RBAC в кластерах.
- Развертывание расширений кластера и управление ими.