Usar a conexão de cluster para se conectar com segurança a clusters Kubernetes habilitados para Azure Arc
Com a conexão de cluster, você pode se conectar com segurança a clusters Kubernetes habilitados para Azure Arc de qualquer lugar sem exigir que nenhuma porta de entrada seja habilitada no firewall.
O apiserver
acesso ao cluster do Kubernetes habilitado para Azure Arc habilita os seguintes cenários:
- Depuração interativa e solução de problemas.
- Acesso de cluster aos serviços do Azure para locais personalizados e outros recursos criados sobre ele.
Antes de começar, revise a visão geral conceitual do recurso de conexão de cluster.
Pré-requisitos
Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
Um cluster conectado ao Kubernetes habilitado para Azure Arc existente.
- Se ainda não associou um cluster, utilize o nosso início rápido.
- Atualize seus agentes para a versão mais recente.
Habilite os requisitos de rede para Kubernetes habilitado para Arc
Habilite estes pontos de extremidade para acesso de saída:
Ponto final Porta *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Nota
Para traduzir o curinga
*.servicebus.windows.net
em pontos de extremidade específicos, use o comando\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
. Dentro desse comando, a região deve ser especificada para o<location>
espaço reservado.
Para obter o segmento de região de um ponto de extremidade regional, remova todos os espaços do nome da região do Azure. Por exemplo, região Leste dos EUA 2 , o nome da região é eastus2
.
Por exemplo: *.<region>.arcdataservices.com
deve estar *.eastus2.arcdataservices.com
na região Leste dos EUA 2.
Para ver uma lista de todas as regiões, execute este comando:
az account list-locations -o table
Get-AzLocation | Format-Table
Instale ou atualize a CLI do Azure para a versão mais recente.
Instale a versão mais recente da extensão CLI do
connectedk8s
Azure:az extension add --name connectedk8s
Se já tiver instalado a
connectedk8s
extensão, atualize-a para a versão mais recente:az extension update --name connectedk8s
Substitua os espaços reservados e execute o comando abaixo para definir as variáveis de ambiente usadas neste documento:
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)
Configurar a autenticação
No cluster habilitado para Arc existente, crie o ClusterRoleBinding com autenticação do Microsoft Entra ou token de conta de serviço.
Opção de autenticação do Microsoft Entra
Obtenha o
objectId
associado à sua entidade Microsoft Entra. Se você estiver usando uma única conta de usuário, obtenha o nome principal do usuário (UPN) associado à sua entidade do Microsoft Entra.- Para uma conta de grupo do Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --query id -o tsv)
Para uma conta de usuário único do Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)
Para um aplicativo Microsoft Entra:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Autorizar a entidade com as devidas permissões.
Se você estiver usando ClusterRoleBinding ou RoleBinding nativo do Kubernetes para verificações de autorização no cluster, com o
kubeconfig
arquivo apontando para oapiserver
do cluster para acesso direto, poderá criar um mapeado para a entidade Microsoft Entra (entidade de serviço ou usuário) que precisa acessar esse cluster. Por exemplo:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Se você estiver usando o RBAC do Azure para verificações de autorização no cluster, poderá criar uma atribuição de função do Azure aplicável mapeada para a entidade Microsoft Entra. Por exemplo:
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
Opção de autenticação de token de conta de serviço
Com o
kubeconfig
arquivo apontando para oapiserver
cluster do Kubernetes, execute este comando para criar uma conta de serviço. Este exemplo cria a conta de serviço no namespace padrão, mas você pode substituir qualquer outro namespace pordefault
.kubectl create serviceaccount demo-user -n default
Crie ClusterRoleBinding para conceder a esta conta de serviço as permissões apropriadas no cluster. Se você usou um namespace diferente no primeiro comando, substitua-o aqui por
default
.kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
Crie um token de conta de serviço:
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')
Obter o token para saída para o console
echo $TOKEN
Aceder ao cluster a partir de um dispositivo cliente
Agora você pode acessar o cluster de um cliente diferente. Execute as seguintes etapas em outro dispositivo cliente.
Entre usando a autenticação do Microsoft Entra ou a autenticação de token de conta de serviço.
Obtenha a conexão
kubeconfig
de cluster necessária para se comunicar com o cluster de qualquer lugar (mesmo fora do firewall ao redor do cluster), com base na opção de autenticação usada:Se estiver usando a autenticação do Microsoft Entra:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Se estiver usando a autenticação de token de conta de serviço:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Nota
Este comando abrirá o proxy e bloqueará o shell atual.
Em uma sessão de shell diferente, use
kubectl
para enviar solicitações para o cluster:kubectl get pods -A
Agora você deve ver uma resposta do cluster contendo a lista de todos os pods sob o default
namespace.
Limitações conhecidas
Use az connectedk8s show
para verificar a versão do agente Kubernetes habilitado para Arc.
Ao fazer solicitações para o cluster Kubernetes, se a entidade Microsoft Entra usada fizer parte de mais de 200 grupos, você poderá ver o seguinte erro:
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.
Esta é uma limitação conhecida. Para ultrapassar este erro:
Próximos passos
- Configure o Microsoft Entra RBAC em seus clusters.
- Implante e gerencie extensões de cluster.