Quickstart: Ligue um cluster Kubernetes existente ao Arco de Azure

Começa com kubernetes ativados pelo Azure Arc utilizando o Azure CLI ou Azure PowerShell para ligar um cluster Kubernetes existente ao Arco Azure.

Para uma visão conceptual dos clusters de ligação ao Arco de Azure, consulte a visão geral do agente Kubernetes habilitado para o Arco Azure.

Pré-requisitos

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

  • Uma compreensão básica dos conceitos fundamentais de Kubernetes.

  • Uma identidade (utilizador ou principal de serviço) que pode ser usada para iniciar sessão no Azure CLI e ligar o seu cluster ao Azure Arc.

    Importante

    • A identidade deve ter permissões de 'Ler' e 'Escrever' no tipo de recurso Kubernetes ativado pelo Arco Azure (Microsoft.Kubernetes/connectedClusters).
    • O Cluster Kubernetes - Azure Arc Onboarding fun incorporado pode ser usado para esta identidade. Esta função é útil para o embarque à escala, uma vez que tem apenas as permissões granulares necessárias para ligar clusters ao Arco Azure, e não tem permissão para atualizar, eliminar ou modificar quaisquer outros clusters ou outros recursos Azure.
  • Instale ou atualize o Azure CLI para a versão mais recente.

  • Instale a versão mais recente da extensão CLI connectedk8s :

    az extension add --name connectedk8s
    
  • Um agrupamento kubernetes em funcionamento. Se não tiver um, pode criar um cluster usando uma destas opções:

    • Kubernetes em Docker (KIND)

    • Crie um cluster Kubernetes usando Docker para Mac ou Windows

    • Cluster Kubernetes auto-gerido usando Cluster API

      Nota

      O cluster precisa de ter pelo menos um nó de sistema operativo e tipo linux/amd64de arquitetura. Aglomerados com apenas linux/arm64 nós ainda não estão apoiados.

  • Um ficheiro kubeconfig e um contexto que aponta para o seu cluster.

  • Instale o Leme 3. Certifique-se de que a versão Helm 3 é < 3.7.0.

Fornecedores de registo de Kubernetes ativados pelo Arco Azure

  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 registado, deverá ver o RegistrationState estado para estes espaços de nome mudar para Registered.

Cumprir os requisitos da rede

Importante

Os agentes Azure Arc requerem que os URLs de saída seguintes https://:443 funcionem. Para *.servicebus.windows.net, websockets precisa ser ativado para acesso de saída em firewall e proxy.

Ponto final (DNS) Description
https://management.azure.com (para Azure Cloud), https://management.usgovcloudapi.net (para o Governo dos EUA) É necessário que o agente se conecte ao Azure e registe o cluster.
https://<region>.dp.kubernetesconfiguration.azure.com (para Azure Cloud), https://<region>.dp.kubernetesconfiguration.azure.us (para o Governo dos EUA) O ponto final do plano de dados para o agente emitir o estado e obter as informações de configuração.
https://login.microsoftonline.com, https://<region>.login.microsoft.com( login.windows.net para Azure Cloud), https://login.microsoftonline.us( <region>.login.microsoftonline.us para o Governo Azure US) É necessário obter e atualizar os tokens do Azure Resource Manager.
https://mcr.microsoft.com, https://*.data.mcr.microsoft.com Obrigado a retirar imagens de contentores para agentes do Arco Azure.
https://gbl.his.arc.azure.com (para Azure Cloud), https://gbl.his.arc.azure.us (para o Governo dos EUA) Necessário para obter o ponto final regional para puxar certificados de identidade gerido atribuídos pelo sistema.
https://*.his.arc.azure.com (para Azure Cloud), https://usgv.his.arc.azure.us (para o Governo dos EUA) Obrigado a retirar certificados de identidade gerida atribuídos pelo sistema.
https://k8connecthelm.azureedge.net az connectedk8s connect usa Helm 3 para implantar agentes do Arco Azure no cluster Kubernetes. Este ponto final é necessário para o download do cliente Helm para facilitar a implementação do gráfico de leme do agente.
guestnotificationservice.azure.com, *.guestnotificationservice.azure.com, sts.windows.net, https://k8sconnectcsp.azureedge.net Para Cluster Connect e para cenários personalizados baseados em localização.
*.servicebus.windows.net Para Cluster Connect e para cenários personalizados baseados em localização.

Nota

Para traduzir o *.servicebus.windows.net wildcard em pontos finais específicos, utilize o comando \GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>. Dentro deste comando, a região deve ser especificada para o <location> espaço reservado.

Importante

Para visualizar e gerir clusters conectados no portal do Azure, certifique-se de que a sua rede permite o tráfego de *.arc.azure.net.

Criar um grupo de recursos

Execute o seguinte comando:

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

Resultado:

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

Ligue um cluster Kubernetes existente

Execute o seguinte comando:

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

Nota

Se estiver a iniciar sessão no Azure CLI utilizando um principal de serviço, é necessário definir um parâmetro adicional para ativar a função de localização personalizada no cluster.

Resultado:

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 referido sem o parâmetro de localização especificado cria o recurso Kubernetes ativado pelo Arco Azure no mesmo local que o grupo de recursos. Para criar o recurso Kubernetes ativado pelo Arco Azure num local diferente, especifique ou --location <region>-l <region> quando executa o az connectedk8s connect comando.

Importante

Em alguns casos, a implementação pode falhar devido a um erro de tempo limite. Consulte o nosso guia de resolução de problemas para obter detalhes sobre como resolver este problema.

Conecte-se usando um servidor de procuração de saída

Se o seu cluster estiver por trás de um servidor de procuração de saída, os pedidos devem ser encaminhados através do servidor de procuração de saída.

  1. Defina as variáveis de ambiente necessárias para a CLI do Azure para utilizar 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. Executar o comando de ligação com os proxy-https parâmetros e proxy-http parâmetros especificados. Se o seu servidor proxy estiver configurado com HTTP e HTTPS, certifique-se de que utiliza --proxy-http para o proxy HTTP e --proxy-https para o representante HTTPS. Se o seu servidor proxy utilizar apenas HTTP, pode utilizar 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 utilizado para especificar a gama CIDR e os pontos finais de forma separada por vírgula, de modo a que qualquer comunicação dos agentes a estes pontos finais não vá através do representante 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, kubectl get svc -A devolve uma lista de serviços onde todos os serviços têm valores clusterIP na gama 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 procuração de saída. --proxy-cert é necessário se precisar de injetar certificados fidedignos esperados por procuração na loja de certificados fidedignas de cápsulas de agente.
  • O proxy de saída tem de ser configurado para permitir ligações websocket.

Para servidores de procuração de saída, onde apenas um certificado de confiança precisa de ser fornecido sem as entradas de ponto final do servidor proxy, az connectedk8s connect pode ser executado apenas com a --proxy-cert entrada especificada. No caso de serem esperados vários certificados fidedignos, a cadeia de certificados combinados pode ser fornecida num único ficheiro utilizando o --proxy-cert parâmetro.

Nota

  • --custom-ca-cert é um pseudónimo para --proxy-cert. Qualquer um dos parâmetros pode ser usado intercambiavelmente. Passar ambos os parâmetros no mesmo comando honrará o que passou por último.

Executar o comando de ligação com o --proxy-cert parâmetro especificado:

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

Verifique a ligação do cluster

Execute o seguinte comando:

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

Resultado:

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.

Dica

Para ajudar a resolver problemas durante a ligação do seu cluster, consulte os problemas de ligação do Diagnóstico para os clusters Kubernetes ativados pelo Arco Azure.

Ver agentes do Azure Arc para Kubernetes

Kubernetes habilitado a Azure Arc coloca alguns agentes no espaço de azure-arc nomes.

  1. Veja estas implementações e cápsulas utilizando:

    kubectl get deployments,pods -n azure-arc
    
  2. Verifique se todas as cápsulas estão em estado.Running

    Resultado:

     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 estes agentes, consulte a visão geral do agente Kubernetes ativada pelo Azure Arc.

Limpar os recursos

Pode eliminar o recurso Kubernetes ativado pelo Arco Azure, quaisquer recursos de configuração associados e quaisquer agentes que corram no cluster utilizando o Azure CLI utilizando o seguinte comando:

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

Se o processo de eliminação falhar, utilize o seguinte comando para forçar a eliminação (adicionando -y se pretender contornar a solicitação de confirmação):

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

Este comando também pode ser utilizado se tiver problemas ao criar uma nova implantação de cluster (devido a recursos anteriormente criados não serem completamente removidos).

Nota

Eliminar o recurso Kubernetes ativado pelo Arco Azure utilizando o portal do Azure remove quaisquer recursos de configuração associados, mas não remove quaisquer agentes em execução no cluster. A melhor prática é eliminar o recurso Kubernetes ativado pelo Arco Azure, utilizando az connectedk8s delete em vez de eliminar o recurso no portal do Azure.

Passos seguintes

Avance para o próximo artigo para aprender a implementar configurações para o seu cluster Kubernetes conectado usando GitOps.