Compartilhar via


Início Rápido: Conectar um cluster do Kubernetes existente ao Azure Arc

Introdução ao Kubernetes habilitado para o Azure Arc usando a CLI do Azure ou o Azure PowerShell para conectar um cluster Kubernetes existente ao Azure Arc.

Para obter uma visão conceitual de como conectar clusters ao Azure Arc, veja Visão geral do agente do Kubernetes habilitado para Azure Arc. Para uma experiência de exemplo/prática, visite o Azure Arc Jumpstart.

Pré-requisitos

Importante

Além desses pré-requisitos, certifique-se de atender a todos os requisitos de rede do Kubernetes habilitado para Azure Arc.

Registrar provedores do Kubernetes habilitado para Azure Arc

  1. Insira os seguintes comandos:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    
  2. Monitore o processo de registro. O registro pode levar até 10 minutos.

    az provider show -n Microsoft.Kubernetes -o table
    az provider show -n Microsoft.KubernetesConfiguration -o table
    az provider show -n Microsoft.ExtendedLocation -o table
    

    Depois de registrado, você verá o estado RegistrationState desses namespaces mudar para Registered.

Criar um grupo de recursos

Execute o comando a seguir:

az group create --name AzureArcTest --___location EastUS --output table

Saída:

Location    Name
----------  ------------
eastus      AzureArcTest

Conectar um cluster existente do Kubernetes

Execute o comando a seguir para se conectar ao cluster. Esse comando implanta os agentes do Azure Arc no cluster e instala o Helm v. 3.6.3 na pasta .azure do computador de implantação. Essa instalação do Helm 3 só é usada para o Azure Arc e não remove nem altera nenhuma versão do Helm instalada anteriormente no computador.

Neste exemplo, o nome do cluster é AzureArcTest1.

az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest

Saída:

Helm release deployment succeeded

    {
      "aadProfile": {
        "clientAppId": "",
        "serverAppId": "",
        "tenantId": ""
      },
      "agentPublicKeyCertificate": "xxxxxxxxxxxxxxxxxxx",
      "agentVersion": null,
      "connectivityStatus": "Connecting",
      "distribution": "gke",
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1",
      "identity": {
        "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "SystemAssigned"
      },
      "infrastructure": "gcp",
      "kubernetesVersion": null,
      "lastConnectivityTime": null,
      "___location": "eastus",
      "managedIdentityCertificateExpirationTime": null,
      "name": "AzureArcTest1",
      "offering": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "AzureArcTest",
      "tags": {},
      "totalCoreCount": null,
      "totalNodeCount": null,
      "type": "Microsoft.Kubernetes/connectedClusters"
    }

Dica

O comando acima sem o parâmetro de local especificado cria o recurso do Kubernetes habilitado para Azure Arc no mesmo local que o grupo de recursos. Para criar o recurso do Kubernetes habilitado para Azure Arc em um local diferente, especifique --___location <region> ou -l <region> ao executar o comando az connectedk8s connect.

Importante

Se a implantação falhar devido a um erro de tempo limite, veja nosso guia de solução de problemas para obter detalhes sobre como resolver esse problema.

Conectar-se usando um servidor proxy de saída

Se o cluster estiver atrás de um servidor proxy de saída, as solicitações deverão ser roteadas por meio do servidor proxy de saída.

  1. Na máquina de implantação, defina as variáveis de ambiente necessárias para a CLI do Azure usar o servidor proxy de saída:

    export HTTP_PROXY=<proxy-server-ip-address>:<port>
    export HTTPS_PROXY=<proxy-server-ip-address>:<port>
    export NO_PROXY=<cluster-apiserver-ip-address>:<port>
    
  2. No cluster do Kubernetes, execute o comando connect com os parâmetros proxy-https e proxy-http especificados. Se o servidor proxy estiver configurado com HTTP e HTTPS, certifique-se de usar --proxy-http para o proxy HTTP e --proxy-https para o proxy HTTPS. Se o servidor proxy usar apenas HTTP, você poderá usar esse valor para ambos os parâmetros.

    az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --proxy-cert <path-to-cert-file>
    

Observação

  • Algumas solicitações de rede, como as que envolvem a comunicação de serviço a serviço no cluster, precisam ser separadas do tráfego que é roteado por meio do servidor proxy para comunicação de saída. O parâmetro --proxy-skip-range pode ser usado para especificar o intervalo de CIDR e os pontos de extremidade separados por vírgula, de maneira que qualquer comunicação dos agentes com esses pontos de extremidade não passe pelo proxy de saída. No mínimo, o intervalo CIDR dos serviços do cluster deve ser especificado como um valor para esse parâmetro. Por exemplo, digamos que kubectl get svc -A retorne uma lista de serviços em que todos os serviços tenham valores ClusterIP no intervalo 10.0.0.0/16. O valor a ser especificado para --proxy-skip-range será 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc.
  • --proxy-http, --proxy-https e --proxy-skip-range são esperados para a maioria dos ambientes de proxy de saída. --proxy-cert será necessário se você precisar injetar certificados confiáveis esperados pelo proxy no repositório de certificados confiáveis dos pods do agente.
  • O proxy de saída precisa ser configurado para permitir conexões WebSocket.

Para servidores de proxy de saída, se você estiver fornecendo apenas um certificado confiável, poderá executar az connectedk8s connect apenas com o parâmetro --proxy-cert especificado:

az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>

Se houver vários certificados confiáveis, a cadeia de certificados (certificado folha, certificado intermediário, certificado raiz) precisará ser combinada em um único arquivo que é passado no --proxy-cert parâmetro.

Observação

  • --custom-ca-cert é um alias para --proxy-cert. Qualquer parâmetro pode ser usado de forma intercambiável. A transmissão dos dois parâmetros no mesmo comando respeitará aquele que foi transmitido por último.

Verificar a conexão do cluster

Execute o comando a seguir:

az connectedk8s list --resource-group AzureArcTest --output table

Saída:

Name           Location    ResourceGroup
-------------  ----------  ---------------
AzureArcTest1  eastus      AzureArcTest

Para obter ajuda para solucionar problemas de conexão, consulte Diagnosticar problemas de conexão para clusters do Kubernetes habilitados para Azure Arc.

Observação

Depois de integrar o cluster, leva até dez minutos para que os metadados de cluster (como a versão do cluster e o número de nós) apareçam na página de visão geral do recurso kubernetes habilitado para Azure Arc no portal do Azure.

Exibir os agentes do Azure Arc para Kubernetes

O Kubernetes habilitado para Azure Arc implanta vários agentes no namespace azure-arc.

  1. Veja essas implantações e os pods usando:

    kubectl get deployments,pods -n azure-arc
    
  2. Verifique se todos os pods estão em um estado Running.

    Saída:

     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
     deployment.apps/cluster-metadata-operator   1/1     1            1           13d
     deployment.apps/clusterconnect-agent        1/1     1            1           13d
     deployment.apps/clusteridentityoperator     1/1     1            1           13d
     deployment.apps/config-agent                1/1     1            1           13d
     deployment.apps/controller-manager          1/1     1            1           13d
     deployment.apps/extension-manager           1/1     1            1           13d
     deployment.apps/flux-logs-agent             1/1     1            1           13d
     deployment.apps/kube-aad-proxy              1/1     1            1           13d
     deployment.apps/metrics-agent               1/1     1            1           13d
     deployment.apps/resource-sync-agent         1/1     1            1           13d
    
     NAME                                            READY   STATUS    RESTARTS   AGE
     pod/cluster-metadata-operator-9568b899c-2stjn   2/2     Running   0          13d
     pod/clusterconnect-agent-576758886d-vggmv       3/3     Running   0          13d
     pod/clusteridentityoperator-6f59466c87-mm96j    2/2     Running   0          13d
     pod/config-agent-7cbd6cb89f-9fdnt               2/2     Running   0          13d
     pod/controller-manager-df6d56db5-kxmfj          2/2     Running   0          13d
     pod/extension-manager-58c94c5b89-c6q72          2/2     Running   0          13d
     pod/flux-logs-agent-6db9687fcb-rmxww            1/1     Running   0          13d
     pod/kube-aad-proxy-67b87b9f55-bthqv             2/2     Running   0          13d
     pod/metrics-agent-575c565fd9-k5j2t              2/2     Running   0          13d
     pod/resource-sync-agent-6bbd8bcd86-x5bk5        2/2     Running   0          13d
    

Para obter mais informações sobre esses agentes, consulte Visão geral do agente do Kubernetes habilitado para o Azure Arc.

Limpar os recursos

Você pode excluir o recurso kubernetes habilitado para Azure Arc, todos os recursos de configuração associados e todos os agentes em execução no cluster usando o seguinte comando:

az connectedk8s delete --name AzureArcTest1 --resource-group AzureArcTest

Se o processo de exclusão falhar, use o comando a seguir para forçar a exclusão (adicione -y se quiser ignorar a solicitação de confirmação):

az connectedk8s delete -n AzureArcTest1 -g AzureArcTest --force

Esse comando também pode ser usado se você tiver problemas ao criar uma nova implantação de cluster (causados pela remoção incompleta de recursos criados anteriormente).

Observação

A exclusão do recurso do Kubernetes habilitado para Azure Arc pelo portal do Azure remove todos os recursos de configuração associados, mas não remove nenhum agente em execução no cluster. Por isso, recomendamos excluir o recurso kubernetes habilitado para Azure Arc usando az connectedk8s delete em vez de excluir o recurso no portal do Azure.

Próximas etapas