Usar a conexão de cluster para se conectar com segurança a clusters do Kubernetes habilitados para o Azure Arc
Com a conexão de cluster, você pode se conectar com segurança aos clusters do Kubernetes habilitados para Azure Arc de qualquer lugar sem precisar habilitar as portas de entrada no firewall.
O acesso ao apiserver
do cluster Kubernetes habilitado para o Azure Arc possibilita 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, examine a visão geral conceitual do recurso de conexão de cluster.
Pré-requisitos
Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Um cluster conectado do Kubernetes habilitado para Azure Arc.
- Se você ainda não tiver conectado um cluster, use nosso início rápido.
- Atualize seus agentes para a última versão.
Habilite os requisitos de rede para o Kubernetes habilitado para Arc
Habilite estes pontos de extremidade para o acesso de saída:
Ponto de extremidade Porta *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Observação
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 precisa ser especificada para o espaço reservado<location>
.
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 a última versão da extensão
connectedk8s
da CLI do Azure:az extension add --name connectedk8s
Se você já tiver instalado a
connectedk8s
extensão, atualize a extensão 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 a 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 do Microsoft Entra. Caso esteja usando uma única conta de usuário, obtenha o UPN (nome 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 do Microsoft Entra:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Autorize a entidade com as devidas permissões.
Se você estiver usando o ClusterRoleBinding ou RoleBinding nativo do Kubernetes para verificações de autorização no cluster, com o arquivo
kubeconfig
apontando para oapiserver
do cluster para acesso direto, você poderá criar um mapeado para a entidade do 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 estiver usando o RBAC do Azure para verificações de autorização no cluster, você poderá criar uma atribuição de função do Azure mapeada para a entidade do 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 da conta de serviço
Com o arquivo
kubeconfig
apontando para oapiserver
do 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 essa 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
Criar token da 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 encaminhar a saída para o console
echo $TOKEN
Acessar seu cluster de um dispositivo cliente
Agora você pode acessar o cluster por meio de um cliente diferente. Execute as etapas a seguir em outro dispositivo cliente.
Entre usando a autenticação do Microsoft Entra ou a autenticação de token da conta de serviço.
Obtenha a conexão de cluster
kubeconfig
necessária para se comunicar com o cluster de qualquer lugar (até mesmo de fora do firewall em torno 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 da conta de serviço:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Observação
Esse comando abrirá o proxy e bloqueará o shell atual.
Em uma sessão de shell diferente, use
kubectl
para enviar solicitações ao cluster:kubectl get pods -A
Agora você deve ver uma resposta do cluster que contém a lista de todos os pods no default
namespace.
Limitações conhecidas
Use az connectedk8s show
para verificar a versão do agente de Kubernetes habilitado para Arc.
Ao fazer solicitações ao cluster do Kubernetes, se a entidade do 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.
Essa é uma limitação conhecida. Para passar por esse erro:
- Crie uma entidade de serviço, que é menos provável que seja membro de mais de 200 grupos.
- Entre na CLI do Azure com a entidade de serviço antes de executar o comando
az connectedk8s proxy
.
Próximas etapas
- Configurar o RBAC do Microsoft Entra em seus clusters.
- Implante e gerencie as extensões do cluster.