Exercício – habilitar o cluster do AKS Edge Essentials para Arc

Concluído

Neste exercício, implantamos o AKS Edge Essentials em um cluster K3S de um único computador com um nó do Linux e o habilitamos para o Arc. Usamos o Azure Cloud Shell para criar uma VM (máquina virtual) do Azure com o Windows 11 Enterprise e executamos um script do PowerShell para facilitar a implantação do AKS Edge Essentials e, em seguida, conectá-lo ao Azure Arc.

Criar recursos necessários na sua assinatura do Azure

Esta unidade fornece comandos da CLI do Azure que você pode executar com uma assinatura do Azure. Se não tiver uma assinatura do Azure, crie-a gratuitamente agora mesmo.

Importante

É necessária uma assinatura do Azure com a função Proprietário ou uma combinação das funções Colaborador e Administrador de Acesso do Usuário. Para verificar o nível de acesso, navegue até sua assinatura no portal do Azure, selecione Controle de acesso (IAM) no lado esquerdo do portal do Azure e, em seguida, selecione Exibir meu acesso. Para obter mais informações, consulte como gerenciar grupos de recursos do Azure usando o portal do Azure.

  1. Em outra guia do navegador, acesse o Azure Cloud Shell.

  2. Execute os comandos a seguir no Cloud Shell para configurar sua sessão e criar um grupo de recursos a ser usado nesta unidade. Substitua o valor de <your-Azure-subscription-ID> pelo valor da ID da assinatura do Azure:

    resourcegroup="aksedge-training"
    location="westus3"
    subscriptionid="<your-Azure-subscription-ID>"
    
    az account set --subscription $subscriptionid
    az group create --name $resourcegroup --location $location
    
  3. Crie uma nova entidade de serviço com a função Proprietário interna e restrita ao escopo do grupo de recursos. Essa entidade de serviço é usada para se conectar ao Azure Arc. Use o comando az ad sp create-for-rbac:

    resourcegroup="aksedge-training"
    serviceprincipalname="aksedge-sp"
    subscriptionid=$(az account show --query id -o tsv)
    
    az ad sp create-for-rbac --name $serviceprincipalname --role "Owner" --scopes /subscriptions/$subscriptionid/resourceGroups/$resourcegroup
    

    Observação

    Anote Service Principal appId e Service Principal password. Você precisará dela mais tarde.

  4. Habilite todos os provedores de recursos necessários na assinatura do Azure usando o comando az provider register:

    az provider register --namespace Microsoft.HybridCompute
    az provider register --namespace Microsoft.GuestConfiguration
    az provider register --namespace Microsoft.HybridConnectivity
    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    

Criar uma VM do Azure com o Windows 11 Enterprise

Vamos criar a VM do Azure com o Windows 11 Enterprise usando o Azure Cloud Shell.

  1. Execute o seguinte comando no Cloud Shell para definir as variáveis para criar a VM do Azure e executar o script do PowerShell AksEdgeQuickStart-v2.ps1 posteriormente:

    resourcegroup="aksedge-training"
    location="westus3"
    vmname="myVM"
    username="azureuser"
    let "randomIdentifier=$RANDOM*$RANDOM"
    adminpassword="Admin-$randomIdentifier-Password!"
    subscriptionname=$(az account show --query name -o tsv)
    subscriptionid=$(az account show --query id -o tsv)
    tenantid=$(az account show --query tenantId -o tsv)
    
    echo Admin Password: $adminpassword
    echo Subscription Name: $subscriptionname
    echo Subscription ID: $subscriptionid
    echo Tenant ID: $tenantid
    echo Resource Group Name: $resourcegroup
    

    Observação

    Anote Admin Password, Subscription Name, Subscription ID, Tenant ID e Resource Group Name. Você precisará dela mais tarde.

  2. Crie a VM do Azure com o Windows 11 Enterprise usando o comando az vm create:

    az vm create \
        --resource-group $resourcegroup \
        --location $location \
        --name $vmname \
        --image MicrosoftVisualStudio:windowsplustools:base-win11-gen2:latest \
        --public-ip-sku Standard \
        --admin-username $username \
        --admin-password $adminpassword \
        --size Standard_D2s_v5 \
        --security-type TrustedLaunch
    

    A criação da VM e dos recursos de suporte demora alguns minutos. O seguinte exemplo de saída mostra que a operação de criação de VM foi bem-sucedida.

    {
        "fqdns": "",
        "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aksedge-training/providers/Microsoft.Compute/virtualMachines/myVM",
        "location": "westus3",
        "macAddress": "00-00-00-00-00-00",
        "powerState": "VM running",
        "privateIpAddress": "10.0.0.4",
        "publicIpAddress": "00.000.000.000",
        "resourceGroup": "aksedge-training",
        "zones": ""
    }
    
    
  3. Execute o cmdlet Get-AzRemoteDesktopFile do PowerShell para obter o arquivo RDP para se conectar à VM:

    publicIp=$(az vm show -d -g $resourcegroup -n $vmname --query publicIps -o tsv)
    echo full address:s:$publicIp > ./myvm.rdp
    echo username:s:$username >> ./myvm.rdp
    
  4. Baixe o arquivo RDP no computador local:

    download myvm.rdp
    
  5. Abra o arquivo RDP e conecte-se à VM usando azureuser como o usuário e Admin Password, do qual você fez uma anotação anteriormente, como a senha.

Dica

Ao fazer logon pela primeira vez na VM do Azure do Windows 11 Enterprise, você pode aceitar todas as opções clicando em Avançar e Aceitar.

Implantar e habilitar o AKS Edge Essentials para Arc

Agora que a VM foi criada, vamos executar o script do PowerShell AksEdgeQuickStart-v2.ps1 para facilitar a implantação do AKS Edge Essentials e conectá-lo ao Azure Arc.

Observação

Os comandos a seguir são executados na linha de comando do PowerShell da VM.

  1. Para abrir a linha de comando do PowerShell, clique no menu Iniciar e digite PowerShell. Depois, execute o seguinte comando para alterar o diretório de trabalho para C:\aksedgeLearn:

    if (!(Test-Path -Path "C:\aksedgeLearn")) {
        New-Item -ItemType Directory -Path "C:\aksedgeLearn" | Out-Null
    }
    Push-Location "C:\aksedgeLearn"
    
  2. Baixe o instalador do K3s do AKS Edge Essentials:

    curl -L -o AksEdge-Learn.msi "https://aka.ms/aks-edge/k3s-msi"
    
  3. Defina os parâmetros para criar um cluster K3S de um único computador com um nó do Linux. Os arquivos aideuser-config.json e aksedge-config.json são usados para executar o script do PowerShell AksEdgeQuickStart-v2.ps1. Substitua os valores de [SUBSCRIPTION_NAME], [SUBSCRIPTION_ID], [TENANT_ID], [RESOURCE_GROUP_NAME], [SERVICE_PRINCIPAL_ID] e [SERVICE_PRINCIPAL_PASSWORD] pelos valores que você anotou anteriormente:

    $aideuserConfig = @"
    {
        "SchemaVersion": "1.1",
        "Version": "1.0",
        "AksEdgeProduct": "AKS Edge Essentials - K3s",
        "AksEdgeProductUrl": "C:\\aksedgeLearn\\AksEdge-Learn.msi",
        "Azure": {
            "SubscriptionName": "[SUBSCRIPTION_NAME]",
            "SubscriptionId": "[SUBSCRIPTION_ID]",
            "TenantId": "[TENANT_ID]",
            "ResourceGroupName": "[RESOURCE_GROUP_NAME]",
            "ServicePrincipalName": "aksedge-sp",
            "Location": "westus3",
            "CustomLocationOID":"",
            "Auth":{
                "ServicePrincipalId":"[SERVICE_PRINCIPAL_ID]",
                "Password":"[SERVICE_PRINCIPAL_PASSWORD]"
            }
        },
        "AksEdgeConfigFile": "aksedge-config.json"
    }
    "@
    
    echo $aideuserConfig | Out-File -FilePath "aideuser-config.json"
    
    $aksedgeConfig = @"
    {
        "SchemaVersion": "1.9",
        "Version": "1.0",
        "DeploymentType": "SingleMachineCluster",
        "Init": {
            "ServiceIPRangeSize": 10
        },
        "Network": {
            "NetworkPlugin": "flannel",
            "InternetDisabled": false
        },
        "User": {
            "AcceptEula": true,
            "AcceptOptionalTelemetry": true
        },
        "Machines": [
            {
                "LinuxNode": {
                    "CpuCount": 2,
                    "MemoryInMB": 4096,
                    "DataSizeInGB": 20
                }
            }
        ]
    }
    "@
    
    echo $aksedgeConfig | Out-File -FilePath "aksedge-config.json"
    
  4. Baixe e execute script do PowerShell AksEdgeQuickStart-v2.ps1:

    $url = "https://raw.githubusercontent.com/Azure/AKS-Edge/main/tools/scripts/AksEdgeQuickStart/AksEdgeQuickStart-v2.ps1"
    Invoke-WebRequest -Uri $url -OutFile .\AksEdgeQuickStart-v2.ps1
    Unblock-File .\AksEdgeQuickStart-v2.ps1
    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
    
    .\AksEdgeQuickStart-v2.ps1 -AideUserConfigFilePath .\aideuser-config.json -AksEdgeConfigFilePath .\aksedge-config.json
    

    Observação

    O processo de instalação leva cerca de 10 minutos para ser concluído.

    Esse script automatiza as seguintes etapas:

    • Na pasta de trabalho da VM C:\aksedgeLearn, o script baixa o arquivo GitHub de Azure/AKS-Edge e descompacta em uma pasta AKS-Edge-main.
    • Invoca a função Start-AideWorkflow que executa as seguintes tarefas:
      • Instala o MSI do AKS Edge Essentials.
      • Instala os recursos necessários do sistema operacional do host (Install-AksEdgeHostFeatures).
      • Implanta um cluster K3S de um único computador com um nó do Linux.
    • Invoca a função Connect-AideArc que executa as seguintes tarefas:
      • Instala o Azure Connected Machine Agent e conecta o computador host ao Arc para Servidores.
      • Conecta o cluster implantado ao Arc para Kubernetes conectados.

    O exemplo a seguir, com as últimas linhas da saída, mostra que o download e a instalação da distribuição do K3s do AKS Edge Essentials foram bem-sucedidos. Você também pode acessar o arquivo de log em C:\aksedgeLearn\aksedgedlog-yymmdd-hhmm.txt

    ...
    [01/26/2024 16:20:23] AksEdge - Connecting cluster to Azure Arc
    
     - Checking Az PS module dependencies
     - Checking for NuGet
     - NuGet found
     - Az.Resources module with version 6.4.1 is found
     - Az.Accounts module with version 2.11.2 is found
     - Az.ConnectedKubernetes module with version 0.9.0 is found
     - Connecting to Azure Account
     - Verifying Azure Account connection ...
     - Verifying the Azure resource providers Microsoft.Kubernetes, Microsoft.KubernetesConfiguration, Microsoft.ExtendedLocation are registered
     - Resource provider Microsoft.Kubernetes is registered.
     - Resource provider Microsoft.KubernetesConfiguration is registered.
     - Resource provider Microsoft.ExtendedLocation is registered.
     - Checking whether cluster 'myVM-k3s' is connected to Azure Arc...
     - All checks succeeded. Connecting cluster to Azure Arc.
     - Populating tags for AKS-EE Cluster
    -- Connection succeeded.
    Connecting Azure Arc-enabled Server..
    Disabling WindowsAzureGuestAgent
    VERBOSE: Performing the operation "Set-Service" on target "Windows Azure Guest Agent (WindowsAzureGuestAgent)".
    VERBOSE: Performing the operation "Stop-Service" on target "Windows Azure Guest Agent (WindowsAzureGuestAgent)".
    WARNING: Waiting for service 'Windows Azure Guest Agent (WindowsAzureGuestAgent)' to stop...
    -- Connection succeeded.
    Azure Arc connections successful.
    Duration: 0 hrs 8 mins 29 seconds
    

    Screenshot of Windows VM with PowerShell commands output demonstrating a successful deployment of AKS Edge Essentials and connected with Azure Arc.

  5. Para confirmar se a implantação foi bem-sucedida, execute o seguinte comando:

    kubectl get nodes -o wide
    kubectl get pods -A -o wide
    

    A seguinte captura de tela de exemplo mostra que o nó do Linux está pronto e os pods estão em execução:

    Screenshot of Windows VM with PowerShell commands output demonstrating a successful deployment of AKS Edge Essentials.

Exibir o cluster no portal do Azure

  1. Você poderá exibir seu cluster no portal do Azure se navegar até o grupo de recursos aksedge-training e selecionar o recurso myVM-k3sKubernetes – Azure Arc.

  2. No painel esquerdo, selecione a opção Namespaces em Recursos do Kubernetes (versão prévia).

    Screenshot of AKS Edge Essentials Kubernetes Azure Arc resource in Azure portal with namespaces highlight.

  3. Você precisa entrar usando um token de portador para exibir os recursos do Kubernetes. Para obter o token, execute o seguinte comando na linha de comando do PowerShell da VM:

    Get-AksEdgeManagedServiceToken
    
  4. Agora, você pode exibir recursos em seu cluster. As Cargas de trabalho mostram os pods em execução no cluster.

    Screenshot of AKS Edge Essentials Kubernetes Azure Arc workloads in Azure portal.