Guia de início rápido: conectar um cluster Kubernetes existente ao Azure Arc

Comece a usar o Kubernetes habilitado para 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 sobre como conectar clusters ao Azure Arc, consulte Visão geral do agente Kubernetes habilitado para Azure Arc. Para experimentar coisas em 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 para o Kubernetes habilitado para Azure Arc.

  • Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.

  • Uma compreensão básica dos principais conceitos do Kubernetes.

  • Uma identidade (usuário ou entidade de serviço) que pode ser usada para fazer logon na CLI do Azure e conectar seu cluster ao Azure Arc.

  • A versão mais recente da CLI do Azure.

  • A versão mais recente da extensão da CLI do Azure connectedk8s , instalada executando o seguinte comando:

    az extension add --name connectedk8s
    
  • Um cluster Kubernetes em execução. Se você não tiver um, poderá criar um cluster usando uma destas opções:

    • Kubernetes em Docker (KIND)

    • Criar um cluster Kubernetes usando o Docker para Mac ou Windows

    • Cluster Kubernetes autogerenciado usando API de cluster

      Nota

      O cluster precisa ter pelo menos um nó de sistema operacional e tipo linux/amd64 de arquitetura e/ou linux/arm64. Consulte Requisitos de cluster para obter mais informações sobre cenários ARM64.

  • Pelo menos 850 MB livres para os agentes Arc que serão implantados no cluster e capacidade para usar aproximadamente 7% de uma única CPU.

  • Um arquivo kubeconfig e contexto apontando para seu cluster. Para saber mais sobre o que é um arquivo kubeconfig e como definir o contexto para apontar para o cluster, consulte este artigo.

Registrar provedores para o Kubernetes habilitado para Azure Arc

  1. Introduza os seguintes comandos:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    
  2. Monitorize o processo de registo. O registo pode demorar 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
    

    Uma vez registrado, você verá o RegistrationState estado desses namespaces mudar para Registered.

Criar um grupo de recursos

Execute o seguinte comando:

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

Saída:

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

Conectar um cluster Kubernetes existente

Execute o seguinte comando para conectar o cluster. Este comando implanta os agentes do Azure Arc no cluster e instala o Helm v. 3.6.3 na .azure pasta da máquina de implantação. Esta instalação do Helm 3 é usada apenas para o Azure Arc e não remove nem altera nenhuma versão instalada anteriormente do Helm na máquina.

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"
    }

Gorjeta

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

Importante

Se a implantação falhar devido a um erro de tempo limite, consulte 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 que a CLI do Azure use 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 Kubernetes, execute o comando connect com os proxy-https parâmetros 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 usa apenas HTTP, você pode 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>
    

Nota

  • Alguns pedidos da rede, como os que envolvem comunicações entre serviços no cluster, têm de ser separados do tráfego que é encaminhado através do servidor proxy para a comunicação de saída. O --proxy-skip-range parâmetro pode ser usado para especificar o intervalo CIDR e os pontos de extremidade de forma separada por vírgulas para que qualquer comunicação dos agentes para esses pontos de extremidade não passe pelo proxy de saída. No mínimo, o intervalo CIDR dos serviços no cluster deve ser especificado como valor deste parâmetro. Por exemplo, digamos que kubectl get svc -A retorna uma lista de serviços em que todos os serviços têm valores ClusterIP no intervalo 10.0.0.0/16. Em seguida, o valor a especificar é --proxy-skip-range 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc.
  • --proxy-http, --proxy-httpse --proxy-skip-range são esperados para a maioria dos ambientes de proxy de saída. --proxy-cert é necessário se você precisar injetar certificados confiáveis esperados por proxy no armazenamento de certificados confiáveis de pods de agente.
  • O proxy de saída tem de ser configurado para permitir ligações websocket.

Para servidores proxy de saída em que apenas um certificado confiável precisa ser fornecido sem as entradas de ponto de extremidade do servidor proxy, az connectedk8s connect pode ser executado apenas com a --proxy-cert entrada especificada. Caso sejam esperados vários certificados confiáveis, a cadeia de certificados combinada pode ser fornecida em um único arquivo usando o --proxy-cert parâmetro.

Nota

  • --custom-ca-cert é um alias para --proxy-cert. Ambos os parâmetros podem ser usados de forma intercambiável. Passar ambos os parâmetros no mesmo comando honrará o passado por último.

Execute o comando connect com o --proxy-cert parâmetro especificado:

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

Verificar a conexão do cluster

Execute o seguinte comando:

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

Saída:

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

Nota

Depois de integrar o cluster, demora cerca de 5 a 10 minutos para que os metadados do cluster (versão do cluster, versão do agente, número de nós, etc.) sejam apresentados na página de descrição geral do recurso do Kubernetes compatível com o Azure Arc no portal do Azure.

Gorjeta

Para obter ajuda na solução de problemas ao conectar seu cluster, consulte Diagnosticar problemas de conexão para clusters Kubernetes habilitados para Azure Arc.

Exibir agentes do Azure Arc para Kubernetes

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

  1. Veja estas implantações e pods usando:

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

    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 Kubernetes habilitado para Azure Arc.

Clean up resources (Limpar recursos)

Você pode excluir o recurso Kubernetes habilitado para Azure Arc, quaisquer recursos de configuração associados e quaisquer agentes em execução no cluster usando a CLI do Azure usando o seguinte comando:

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

Se o processo de exclusão falhar, use o seguinte comando para forçar a exclusão (adicionando -y se quiser ignorar o prompt 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 (devido aos recursos criados anteriormente não terem sido completamente removidos).

Nota

A exclusão do recurso Kubernetes habilitado para ArcGIS do Azure usando o portal do Azure remove todos os recursos de configuração associados, mas não remove nenhum agente em execução no cluster. A prática recomendada é excluir o recurso Kubernetes habilitado para Azure Arc usando az connectedk8s delete , em vez de excluí-lo, no portal do Azure.

Próximos passos