Compartilhar via


Habilitar o Azure Arc no cluster do Kubernetes no dispositivo de GPU do Azure Stack Edge Pro

APLICA-SE A:Sim para a SKU GPU ProAzure Stack Edge Pro - GPUSim para a SKU Pro 2Azure Stack Edge Pro 2Sim para a SKU Pro RAzure Stack Edge Pro RSim para a SKU Mini RAzure Stack Edge Mini R

Este artigo mostra como habilitar o Azure Arc em um cluster existente do Kubernetes no dispositivo do Azure Stack Edge Pro.

Este procedimento pressupõe que você leu e entendeu os seguintes artigos:

Pré-requisitos

Verifique se você atendeu aos seguintes pré-requisitos no dispositivo do Azure Stack Edge Pro e o cliente usado para acessar o dispositivo:

Para dispositivo

  1. Você tem credenciais de logon para um dispositivo Azure Stack Edge Pro de um nó.

    1. O dispositivo está ativado. Confira Ativar o dispositivo.
    2. O dispositivo tem a função de computação configurada por meio do portal do Azure e conta com um cluster Kubernetes. Consulte Configurar computação.
  2. Você tem acesso pleno à assinatura. Você precisará desse acesso durante a etapa de atribuição de função para a entidade de serviço.

Para cliente que acessa o dispositivo

  1. Você tem um sistema cliente Windows que é usado para acessar o dispositivo Azure Stack Edge Pro.

    • O cliente está executando o Windows PowerShell 5.0 ou posterior. Para baixar a versão mais recente do Windows PowerShell, vá para Instalar o Windows PowerShell.

    • Você também pode usar qualquer outro cliente que tenha um Sistema operacional compatível. Este artigo descreve o procedimento usando um cliente Windows.

  2. Você concluiu o procedimento descrito em Acessar o cluster Kubernetes em dispositivo Azure Stack Edge Pro. Você tem:

    • Instalou kubectl no cliente.
    • Verificou se a versão de kubectl do cliente está defasada em, no máximo, uma versão em relação à versão mestre do Kubernetes executada no seu dispositivo Azure Stack Edge Pro.
      • Use kubectl version para verificar a versão de kubectl em execução no cliente. Anote a versão completa.

      • Na interface do usuário local do dispositivo do Azure Stack Edge Pro, acesse Atualização de software e anote o número de versão do servidor do Kubernetes.

        Captura de tela da verificação do número de versão do servidor do Kubernetes.

      • Verifique se essas duas versões são compatíveis.

Registrar os provedores de recursos do Kubernetes

Antes de habilitar o Azure Arc no cluster do Kubernetes, você precisará habilitar e registrar Microsoft.Kubernetes e Microsoft.KubernetesConfiguration na assinatura.

  1. Para habilitar um provedor de recursos, no portal do Azure, acesse a assinatura que você está planejando usar para a implantação. Acesse Provedores de Recursos.

  2. No painel direito, pesquise os provedores que você deseja adicionar. Neste exemplo, Microsoft.Kubernetes e Microsoft.KubernetesConfiguration.

    Captura de tela do registro de provedores de recursos do Kubernetes.

  3. Selecione um provedor de recursos e, na parte superior da barra de comandos, selecione Registrar. O registro leva vários minutos.

    Captura de tela do registro de provedores de recursos do Kubernetes 2.

  4. Atualize a interface do usuário até que você veja que o provedor de recursos está registrado. Repita o processo para ambos os provedores de recursos.

    Captura de tela do registro de provedores de recursos do Kubernetes 3.

Você também pode registrar provedores de recursos por meio do az cli. Para saber mais, confira Registrar os dois provedores no Kubernetes habilitado para Azure Arc.

Criar a entidade de serviço, atribuir função

  1. Você deve ter Subscription ID e o nome do grupo de recursos usado para a implantação de recursos do serviço Azure Stack Edge. Para obter a ID da assinatura, acesse o recurso Azure Stack Edge no portal do Azure. Navegue até Visão geral > Conceitos básicos.

    Captura de tela de como obter o ID da assinatura.

    Para obter o nome do grupo de recursos, acesse Propriedades.

    Captura de tela de como obter o nome do grupo de recursos.

  2. Para criar uma entidade de serviço, use o comando a seguir por meio do az cli.

    az ad sp create-for-rbac --name "<Informative name for service principal>"

    Para saber como fazer logon no az cli, inicie o Cloud Shell no portal do Azure. Ao usar az cli em um cliente local para criar a entidade de serviço, verifique se você está executando a versão 2.25 ou posterior.

    Veja um exemplo.

    PS /home/user> az ad sp create-for-rbac --name "https://azure-arc-for-ase-k8s"
    {
      "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "displayName": "azure-arc-for-ase-k8s",
      "name": "https://azure-arc-for-ase-k8s",
      "password": "<password>",
      "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    PS /home/user>
    
  3. Anote appId, name, password e tenantID, pois você usará esses valores para entrada no próximo comando.

    Há várias maneiras de obter appId. As três opções a seguir são os métodos preferenciais. Se você usar uma das opções a seguir, poderá ignorar as etapas 1, 2 e 3 da seção anterior e ir diretamente para a etapa 4 a seguir.

    • Opção 1 – Usar o Minishell para executar o seguinte cmdlet do PowerShell:

      [Device-IP]: PS> Get-AzureDataBoxEdgeApplicationId
      xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      [Device-IP]: PS>
      
    • Opção 2 – Use as seguintes etapas para exibir detalhes JSON para seu dispositivo no portal do Azure:

      1. Navegue até a visão geral do dispositivo do Azure Stack Edge e selecione a exibição JSON no canto superior direito.

        Captura de tela da página de Visão Geral para seu dispositivo Azure Stack Edge.

      2. Nos detalhes do JSON do Recurso do dispositivo, anote o principalId.

        Captura de tela dos detalhes de exibição do JSON para seu dispositivo Azure Stack Edge.

    • Opção 3 – Usar o PowerShell não Azure Stack Edge em um computador cliente para executar o seguinte comando:

      // ASE resource group and resource name can be obtained from Azure portal
      PS C:\> $ASEResource= GetAzResource –ResourceGroupName <resource-group-name> -ResourceName <resource-name>
      PS C:\> $ASEResource.Identity.PrincipalId
      xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      PS C:\>
      
  4. Depois de criar a entidade de serviço ou de recuperá-la usando uma destas opções, atribua a função Kubernetes Cluster - Azure Arc Onboarding à nova entidade. Essa é uma função interna do Azure (use a ID da função no comando) com permissões limitadas. Use o seguinte comando:

    az role assignment create --role 34e09817-6cbe-4d01-b1a2-e0eac5743d41 --assignee <appId-from-service-principal> --scope /subscriptions/<SubscriptionID>/resourceGroups/<Resource-group-name>

    Veja um exemplo.

    PS /home/user> az role assignment create --role 34e09817-6cbe-4d01-b1a2-e0eac5743d41 --assignee xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --scope /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1
    {
      "canDelegate": null,
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
      "name": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "principalType": "ServicePrincipal",
      "resourceGroup": "myaserg1",
      "roleDefinitionId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Authorization/roleDefinitions/34e09817-6cbe-4d01-b1a2-e0eac5743d41",
      "scope": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1",
      "type": "Microsoft.Authorization/roleAssignments"
    }
    PS /home/user>
    

Habilitar o Arc no cluster do Kubernetes

Siga estas etapas para configurar o cluster do Kubernetes para gerenciamento do Azure Arc:

  1. Conecte-se à interface do PowerShell do dispositivo.

  2. Execute o comando a seguir:

    Set-HcsKubernetesAzureArcAgent -SubscriptionId "<Your Azure Subscription Id>" -ResourceGroupName "<Resource Group Name>" -ResourceName "<Azure Arc resource name (shouldn't exist already)>" -Location "<Region associated with resource group>" -TenantId "<Tenant Id of service principal>" -ClientId "<App id of service principal>"

    Depois de executar esse comando, você irá ver uma nova solicitação para especificar ClientSecret. Forneça a senha da entidade de serviço no prompt.

    Adicione o parâmetro CloudEnvironment se você estiver usando uma nuvem diferente do Azure público. Você pode definir esse parâmetro como AZUREPUBLICCLOUD, AZURECHINACLOUD, AZUREGERMANCLOUD e AZUREUSGOVERNMENTCLOUD.

    Considerações de uso:

    • Para implantar o Azure Arc em seu dispositivo, verifique se você está usando uma região com suporte para o Azure Arc.
    • Use o comando az account list-locations para determinar o nome exato da localização a ser passado no cmdlet Set-HcsKubernetesAzureArcAgent. Os nomes de local normalmente são formatados sem espaços.

    Importante

    Se você obter o Id invés de criar um novo princípio de serviço usando o método mais antigo, não especifique ClientId, TenantIdou ClientSecret.

    Aqui está um exemplo:

    [10.100.10.10]: PS>Set-HcsKubernetesAzureArcAgent -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "myaserg1" -ResourceName "myasetestresarc" -Location "westeurope" -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ClientId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    
    WARNING: A script or application on the remote computer 10.126.76.0 is sending a prompt request. When you are prompted,
    enter sensitive information, such as credentials or passwords, only if you trust the remote computer and the
    application or script that is requesting the data.
    
    cmdlet Set-HcsKubernetesAzureArcAgent at command pipeline position 1
    
    Supply values for the following parameters:
    ClientSecret: **********************************
    [10.100.10.10]: PS>
    

    No portal do Azure, um recurso deve ser criado com o nome fornecido no comando anterior.

    Captura de tela acessando o recurso do Azure Arc.

  3. Para verificar se o Azure Arc foi habilitado com êxito, execute o seguinte comando na interface do PowerShell:

    kubectl get deployments,pods -n azure-arc

    Este é um exemplo de saída que mostra os agentes do Azure Arc implantados no cluster do Kubernetes no namespace azure-arc.

    [10.128.44.240]: PS>kubectl get deployments,pods -n azure-arc
    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
    [10.128.44.240]: PS>
    

Uma visão geral conceitual desses agentes está disponível aqui.

Remover o Arc do cluster do Kubernetes

Para remover o gerenciamento do Azure Arc, siga estas etapas:

  1. Conecte-se à interface do PowerShell do dispositivo.

  2. Execute o comando a seguir:

    Remove-HcsKubernetesAzureArcAgent

Observação

Por padrão, quando o recurso yamls é excluído do repositório Git, os recursos correspondentes não são excluídos do cluster do Kubernetes. Você precisa definir --sync-garbage-collection nos OperatorParams do Arc para permitir a exclusão de recursos quando eles são excluídos no repositório Git. Para obter informações, confira Excluir uma configuração

Próximas etapas

Para entender como executar uma implantação do Azure Arc, consulte Implantar um aplicativo PHP Guestbook sem estado com Redis por meio do GitOps em um dispositivo Azure Stack Edge Pro.