Ejercicio: Clúster de AKS Edge Essentials habilitado para Arc

Completado

En este ejercicio, implementaremos AKS Edge Essentials en un clúster K3S de una sola máquina con un nodo Linux y lo habilitaremos para Arc. Usaremos Azure Cloud Shell para crear una máquina virtual (VM) de Azure con Windows 11 Enterprise y ejecutaremos un script de PowerShell para facilitar la implementación de AKS Edge Essentials y luego la conectaremos a Azure Arc.

Creación de los recursos necesarios en la suscripción de Azure

Esta unidad proporciona comandos de la CLI de Azure que puede ejecutar con una suscripción de Azure. Si aún no tiene una suscripción a Azure, cree ahora una cuenta gratuita.

Importante

Necesita una suscripción de Azure con el rol de Propietario, o una combinación de roles de Colaborador y Administrador de acceso de usuario. Para comprobar el nivel de acceso, vaya a la suscripción en Azure Portal, seleccione Control de acceso (IAM) en el lado izquierdo de Azure Portal y, después, Ver mi acceso. Para más información, vea cómo administrar los grupos de recursos de Azure mediante Azure Portal.

  1. En otra pestaña del explorador, vaya a Azure Cloud Shell.

  2. Ejecute los siguientes comandos en Cloud Shell para configurar la sesión y crear un grupo de recursos que se usará para esta unidad. Reemplace el valor de <your-Azure-subscription-ID> por el valor del id. de suscripción de Azure:

    resourcegroup="aksedge-training"
    location="westus3"
    subscriptionid="<your-Azure-subscription-ID>"
    
    az account set --subscription $subscriptionid
    az group create --name $resourcegroup --location $location
    
  3. Cree una entidad de servicio con el rol Propietario integrado y restringido al ámbito del grupo de recursos. Esta entidad de servicio se usa para conectarse a Azure Arc. Use el 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
    

    Nota:

    Anote los valores de Service Principal appId y Service Principal password. Lo necesitará más adelante.

  4. Habilite todos los proveedores de recursos necesarios en la suscripción de Azure mediante el 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
    

Creación de una máquina virtual de Azure con Windows 11 Enterprise

Vamos a crear la máquina virtual de Azure con Windows 11 Enterprise mediante Azure Cloud Shell.

  1. Ejecute el siguiente comando en Cloud Shell para establecer las variables a fin de crear la máquina virtual de Azure y ejecutar el script AksEdgeQuickStart-v2.ps1 de PowerShell más adelante:

    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
    

    Nota:

    Anote los valores de Admin Password, Subscription Name, Subscription ID, Tenant ID y Resource Group Name. Lo necesitará más adelante.

  2. Cree la máquina virtual de Azure con Windows 11 Enterprise mediante el 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
    

    La creación de la máquina virtual y los recursos auxiliares tarda unos minutos en realizarse. En la salida de ejemplo siguiente se muestra que la operación de creación de la máquina virtual se realizó correctamente.

    {
        "fqdns": "",
        "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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. Ejecute el cmdlet Get-AzRemoteDesktopFile de PowerShell para obtener el archivo RDP a fin de conectarse a la máquina virtual:

    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. Descargue el archivo RDP en la máquina local:

    download myvm.rdp
    
  5. Abra el archivo RDP y conéctese a la máquina virtual con azureuser como usuario y el valor de Admin Password que anotó anteriormente, como contraseña.

Sugerencia

Al iniciar sesión por primera vez en la máquina virtual de Azure Windows 11 Enterprise, puede aceptar todas las opciones haciendo clic en Siguiente y Aceptar.

Implementación y habilitación de AKS Edge Essentials para Arc

Ahora que se ha creado la máquina virtual, vamos a ejecutar el script de PowerShell AksEdgeQuickStart-v2.ps1 para facilitar la implementación de AKS Edge Essentials y conectarla a Azure Arc.

Nota:

Los comandos siguientes se ejecutan en la línea de comandos de PowerShell de la máquina virtual.

  1. Para abrir la línea de comandos de PowerShell, haga clic en el menú Inicio y escriba PowerShell. Ejecute el siguiente comando para cambiar el directorio de trabajo a C:\aksedgeLearn:

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

    curl -L -o AksEdge-Learn.msi "https://aka.ms/aks-edge/k3s-msi"
    
  3. Establezca los parámetros para crear un clúster K3s de una sola máquina con un nodo Linux. Los archivos aideuser-config.json y aksedge-config.json se usan para ejecutar el script de PowerShell AksEdgeQuickStart-v2.ps1. Reemplace los valores de [SUBSCRIPTION_NAME], [SUBSCRIPTION_ID], [TENANT_ID], [RESOURCE_GROUP_NAME], [SERVICE_PRINCIPAL_ID] y [SERVICE_PRINCIPAL_PASSWORD] por los valores que anotó 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. Descargue y ejecute el script de 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
    

    Nota:

    El proceso de instalación tarda unos 10 minutos en completarse.

    Este script automatiza los siguientes pasos:

    • En la carpeta de trabajo de la máquina virtual C:\aksedgeLearn, el script descarga el archivo de GitHub de Azure/AKS-Edge y lo descomprime en una carpeta AKS-Edge-main.
    • Invoca la función Start-AideWorkflow que realiza las siguientes tareas:
      • Instala el MSI de AKS Edge Essentials.
      • Instala las características necesarias del sistema operativo host (Install-AksEdgeHostFeatures).
      • Implementa un clúster K3s de una sola máquina con un nodo Linux.
    • Invoca la función Connect-AideArc que realiza las siguientes tareas:
      • Instala el agente de Azure Connected Machine y conecta la máquina host a Arc para servidores.
      • Conecta el clúster implementado en Arc para Kubernetes conectado.

    En el ejemplo siguiente con las últimas líneas de la salida, se muestra que la descarga e instalación de la distribución K3s de AKS Edge Essentials se realizó correctamente. También puede acceder al archivo de registro en 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
    

    Recorte de pantalla de la máquina virtual Windows con la salida de comandos de PowerShell que muestra una implementación correcta de AKS Edge Essentials y conectada con Azure Arc.

  5. Confirme que la implementación se realizó correctamente; para ello, ejecute el comando siguiente:

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

    En la captura de pantalla de ejemplo siguiente se muestra que el nodo Linux está listo y los pods se están ejecutando:

    Recorte de pantalla de la máquina virtual Windows con la salida de comandos de PowerShell que muestra una implementación correcta de AKS Edge Essentials.

Visualización del clúster en Azure Portal

  1. Puede ver el clúster en Azure Portal si navega al grupo de recursos aksedge-training y después selecciona el recurso myVM-k3s Kubernetes: Azure Arc.

  2. En el panel izquierdo, seleccione la opción Espacios de nombres, en Recursos de Kubernetes (versión preliminar).

    Recorte de pantalla del recurso de Kubernetes Azure Arc de AKS Edge Essentials en Azure Portal con los espacios de nombres resaltados.

  3. Debe iniciar sesión con un token de portador para ver los recursos de Kubernetes. Para obtener el token, ejecute el siguiente comando en la línea de comandos de PowerShell de la máquina virtual:

    Get-AksEdgeManagedServiceToken
    
  4. Ahora puede ver los recursos en el clúster. Las Cargas de trabajo muestran los pods que se ejecutan en el clúster.

    Recorte de pantalla de las cargas de trabajo de Kubernetes Azure Arc de AKS Edge Essentials en Azure Portal.