Usar o Cluster Connect para se conectar a clusters Kubernetes habilitados para o Azure Arc
Com o Cluster Connect, você pode se conectar com segurança aos clusters do Kubernetes habilitados para o Azure Arc sem exigir que nenhuma porta de entrada seja habilitada 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.
Uma visão geral conceitual desse recurso está disponível em Conexões de cluster – Kubernetes habilitado para Azure Arc.
Pré-requisitos
Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Instale a extensão
connectedk8s
da CLI do Azure, com versão >= 1.2.5: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
Um cluster conectado do Kubernetes habilitado para Azure Arc.
- Se você ainda não tiver conectado um cluster, use nosso guia de início rápido.
- Atualize seus agentes para a versão >= 1.5.3.
Os pontos de extremidade a seguir precisam ser habilitados para acesso de saída além daqueles mencionados em conectando um cluster Kubernetes ao Azure Arc:
Ponto de extremidade Porta *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 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)
Habilitar o recurso Cluster Connect
Você pode habilitar o Cluster Connect em qualquer cluster Kubernetes habilitado para o Azure Arc executando o seguinte comando em um computador em que o arquivo kubeconfig
é apontado para o cluster de interesse:
az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP
Opção de autenticação do Azure Active Directory
Obtenha o
objectId
associado à sua entidade do Azure AD.Para uma conta de usuário do Azure AD:
AAD_ENTITY_OBJECT_ID=$(az ad signed-in-user show --query objectId -o tsv)
Para um aplicativo do AD do Azure:
AAD_ENTITY_OBJECT_ID=$(az ad sp show --id <id> --query objectId -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
de seu cluster para acesso direto, você poderá criar um mapeamento para a entidade do Azure AD (entidade de serviço ou usuário) que precisa acessar esse cluster. Exemplo:kubectl create clusterrolebinding admin-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_OBJECT_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 Azure AD. Exemplo:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_OBJECT_ID --scope $ARM_ID_CLUSTER
opção de autenticação de token da conta de serviço
Com o
kubeconfig
arquivo apontando para oapiserver
do seu cluster Kubernetes, crie uma conta de serviço em qualquer namespace (o comando a seguir a cria no namespace padrão):kubectl create serviceaccount admin-user
Crie o ClusterRoleBinding ou RoleBinding para conceder a essa conta de serviço as permissões apropriadas no cluster. Exemplo:
kubectl create clusterrolebinding admin-user-binding --clusterrole cluster-admin --serviceaccount default:admin-user
Obtenha o token da conta de serviço usando os seguintes comandos:
SECRET_NAME=$(kubectl get serviceaccount admin-user -o jsonpath='{$.secrets[0].name}')
TOKEN=$(kubectl get secret ${SECRET_NAME} -o jsonpath='{$.data.token}' | base64 -d | sed $'s/$/\\\n/g')
Acessar o cluster
Configure o kubeconfig baseado no Cluster Connect necessário para acessar o cluster com base na opção de autenticação usada:
Se estiver usando a opção de autenticação do Azure Active Directory, depois de fazer logon na CLI do Azure usando a entidade de interesse do Azure AD, obtenha o
kubeconfig
do Cluster Connect necessário para se comunicar com o cluster em qualquer lugar (até mesmo de fora do firewall que protege o cluster):az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Se estiver usando a opção de autenticação de conta de serviço, obtenha o
kubeconfig
do Cluster Connect necessário para se comunicar com o cluster em qualquer lugar:az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Use
kubectl
para enviar solicitações ao cluster:kubectl get pods
Agora você deve ver uma resposta do cluster que contém a lista de todos os pods no default
namespace.
Limitações conhecidas
Ao fazer solicitações ao cluster Kubernetes, se a entidade do Azure AD usada for parte de mais de 200 grupos, o seguinte erro será observado, pois essa é uma limitação conhecida:
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.
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
- Configure o RBAC do Azure AD em seus clusters.
- Implante e gerencie as extensões do cluster.