Использование подключения кластера для безопасного подключения к кластерам Kubernetes с поддержкой Azure Arc
При подключении к кластеру вы можете безопасно подключиться к кластерам Kubernetes с поддержкой Azure Arc в любом месте, не требуя включения в брандмауэра любого входящего порта.
Доступ к apiserver
кластеру Kubernetes с поддержкой Azure Arc включает следующие сценарии:
- Интерактивная отладка и устранение неполадок.
- Доступ к службам Azure для пользовательских расположений и других ресурсов, созданных на его основе.
Прежде чем начать, ознакомьтесь с общими сведениями о функции подключения кластера.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Существующий подключенный кластер Kubernetes с поддержкой Azure Arc.
- Если вы еще не подключились к кластеру, воспользуйтесь этим кратким руководством.
- Обновите агенты до последней версии.
Включите эти конечные точки для исходящего доступа:
Конечная точка Порт *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Примечание.
Чтобы перевести
*.servicebus.windows.net
подстановочный знак в определенные конечные точки, используйте команду\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
. В рамках этой команды регион должен быть указан для<location>
заполнителя.
Чтобы получить сегмент региона региональной конечной точки, удалите все пробелы из имени региона Azure. Например, регион "Восточная часть США 2 " — eastus2
имя региона.
Например, *.<region>.arcdataservices.com
должно находиться *.eastus2.arcdataservices.com
в регионе "Восточная часть США 2".
Чтобы просмотреть список всех регионов, выполните следующую команду:
az account list-locations -o table
Get-AzLocation | Format-Table
Установите или обновите 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. Если вы используете одну учетную запись пользователя, получите имя участника-пользователя, связанное с сущностью 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)
Авторизовать сущность с соответствующими разрешениями.
Если вы используете Kubernetes native ClusterRoleBinding или RoleBinding для проверки авторизации в кластере, с
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
Вы увидите ответ от кластера с полным списком pod в пространстве имен default
.
Известные ограничения
Используйте az connectedk8s show
для проверки версии агента Kubernetes с поддержкой Arc.
При выполнении запросов к кластеру Kubernetes, если используемая сущность Microsoft Entra является частью более 200 групп, может появиться следующая ошибка:
You must be logged in to the server (Error:Error while retrieving group info. Error:Overage claim (users with more than 200 group membership) is currently not supported.
Это известное ограничение. Чтобы обойти эту ошибку, сделайте следующее:
- Создайте субъект-службу, который с меньшей вероятностью входит в большое число групп.
- Войдите в Azure CLI с помощью субъекта-службы перед выполнением
az connectedk8s proxy
команды.
Следующие шаги
- Настройте Microsoft Entra RBAC в кластерах.
- Развертывание расширений кластера и управление ими.