Exercice – Cluster AKS Edge Essentials avec Arc

Effectué

Dans cet exercice, nous déployons AKS Edge Essentials dans un cluster K3S à une seule machine avec un nœud Linux et nous l’activons pour Arc. Nous utilisons Azure Cloud Shell pour créer une machine virtuelle Azure avec Windows 11 Entreprise et exécuter un script PowerShell pour faciliter le déploiement d’AKS Edge Essentials, puis le connecter à Azure Arc.

Créer les ressources nécessaires dans votre abonnement Azure

Cette unité fournit des commandes Azure CLI que vous pouvez exécuter avec un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez-en un gratuitement maintenant.

Important

Vous avez besoin d’un abonnement Azure avec le rôle Propriétaire ou avec une combinaison des rôles Contributeur et Administrateur de l’accès utilisateur. Vous pouvez vérifier votre niveau d’accès en accédant à votre abonnement dans le portail Azure, en sélectionnant Contrôle d’accès (IAM) du côté gauche du portail Azure, puis en sélectionnant Afficher mon accès. Pour plus d’informations, consultez Gérer des groupes de ressources Azure en utilisant le portail Azure.

  1. Dans un autre onglet du navigateur, accédez au portail Azure.

  2. Exécutez les commandes suivantes dans Cloud Shell pour configurer votre session et créer un groupe de ressources à utiliser pour cette unité. Remplacez la valeur de <your-Azure-subscription-ID> par la valeur de votre ID d’abonnement :

    resourcegroup="aksedge-training"
    location="westus3"
    subscriptionid="<your-Azure-subscription-ID>"
    
    az account set --subscription $subscriptionid
    az group create --name $resourcegroup --location $location
    
  3. Créez un principal de service avec le rôle Propriétaire intégré et restreint à l’étendue du groupe de ressources. Ce principal de service est utilisé pour se connecter à Azure Arc. Utilisez la commande 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
    

    Remarque

    Notez la valeur de Service Principal appId et de Service Principal password. Vous en aurez besoin ultérieurement.

  4. Activez tous les fournisseurs de ressources nécessaires dans l’abonnement Azure en utilisant la commande 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
    

Créer une machine virtuelle Azure avec Windows 11 Entreprise

Créons la machine virtuelle Azure avec Windows 11 Entreprise en utilisant Azure Cloud Shell.

  1. Exécutez la commande suivante dans Cloud Shell afin de définir les variables pour la création de la machine virtuelle Azure et exécuter après cela le script PowerShell AksEdgeQuickStart-v2.ps1 :

    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
    

    Remarque

    Notez la valeur de Admin Password, Subscription Name, Subscription ID, Tenant ID et Resource Group Name. Vous en aurez besoin ultérieurement.

  2. Créez la machine virtuelle Azure avec Windows 11 Entreprise en utilisant la commande 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 création de la machine virtuelle et des ressources de support ne nécessite que quelques minutes. L’exemple de sortie suivant illustre la réussite de l’opération de création d’une machine virtuelle.

    {
        "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. Exécutez la cmdlet PowerShell Get-AzRemoteDesktopFile afin d’obtenir le fichier RDP pour vous connecter à la machine virtuelle :

    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. Téléchargez le fichier RDP sur votre machine locale :

    download myvm.rdp
    
  5. Ouvrez le fichier RDP et connectez-vous à la machine virtuelle en utilisant azureuser comme utilisateur, et le Admin Password dont vous avez pris note auparavant comme mot de passe.

Conseil

Quand vous vous connectez pour la première fois à la machine virtuelle Azure Windows 11 Entreprise, vous pouvez accepter toutes les options en cliquant sur Suivant, puis sur Accepter.

Déployer un cluster AKS Edge Essentials avec Arc

Maintenant que la machine virtuelle est créée, exécutons le script PowerShell AksEdgeQuickStart-v2.ps1 pour déployer facilement AKS Edge Essentials et le connecter à Azure Arc.

Remarque

Les commandes suivantes sont exécutées dans la ligne de commande PowerShell de la machine virtuelle.

  1. Ouvrez la ligne de commande PowerShell en cliquant sur le menu Démarrer, puis en tapant PowerShell. Exécutez ensuite la commande suivante pour faire passer le répertoire actif sur C:\aksedgeLearn :

    if (!(Test-Path -Path "C:\aksedgeLearn")) {
        New-Item -ItemType Directory -Path "C:\aksedgeLearn" | Out-Null
    }
    Push-Location "C:\aksedgeLearn"
    
  2. Téléchargez le programme d’installation d’AKS Edge Essentials K3S :

    curl -L -o AksEdge-Learn.msi "https://aka.ms/aks-edge/k3s-msi"
    
  3. Définissez les paramètres pour créer un cluster K3S à une seule machine avec un nœud Linux. Les fichiers aideuser-config.json et aksedge-config.json sont utilisés pour exécuter le script PowerShell AksEdgeQuickStart-v2.ps1. Remplacez les valeurs de [SUBSCRIPTION_NAME], [SUBSCRIPTION_ID], [TENANT_ID], [RESOURCE_GROUP_NAME], [SERVICE_PRINCIPAL_ID] et [SERVICE_PRINCIPAL_PASSWORD] par les valeurs que vous avez notées précédemment :

    $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. Téléchargez et exécutez le script 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
    

    Remarque

    Le processus d’installation prend environ 10 minutes.

    Ce script automatise les étapes suivantes :

    • Dans le dossier de travail C:\aksedgeLearn de la machine virtuelle, le script télécharge l’archive GitHub de Azure/AKS-Edge et la décompresse dans un dossier AKS-Edge-main.
    • Appelle la fonction Start-AideWorkflow qui effectue les tâches suivantes :
      • Installe le fichier MSI d’AKS Edge Essentials.
      • Installe les fonctionnalités requises du système d’exploitation hôte (Install-AksEdgeHostFeatures).
      • Déploie un cluster K3S à une seule machine avec un nœud Linux.
    • Appelle la fonction Connect-AideArc qui effectue les tâches suivantes :
      • Installe Azure Connected Machine Agent et connecte l’ordinateur hôte à Arc pour serveurs.
      • Connecter le cluster déployé à Arc pour Kubernetes connecté.

    L’exemple suivant avec les dernières lignes de la sortie montre que le téléchargement et l’installation de la distribution K3S d’AKS Edge Essentials ont été effectués correctement. Vous pouvez également accéder au fichier journal ici : 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
    

    Capture d’écran de la machine virtuelle Windows avec la sortie des commandes PowerShell montrant un déploiement réussi d’AKS Edge Essentials et connectée à Azure Arc.

  5. Vérifiez que le déploiement a réussi en exécutant la commande suivante :

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

    L’exemple de capture d’écran suivant montre que le nœud Linux est prêt et que les pods sont en cours d’exécution :

    Capture d’écran de la machine virtuelle Windows avec la sortie des commandes PowerShell montrant un déploiement réussi d’AKS Edge Essentials.

Afficher votre cluster dans le portail Azure

  1. Vous pouvez voir votre cluster dans le portail Azure si vous accédez au groupe de ressources aksedge-training, puis que vous sélectionnez la ressource myVM-k3s Kubernetes – Azure Arc.

  2. Dans le volet gauche, sélectionnez l’option Espaces de noms sous Ressources Kubernetes (préversion).

    Capture d’écran de la ressource AKS Edge Essentials Kubernetes Azure Arc dans le portail Azure avec des espaces de noms mis en évidence.

  3. Vous devez vous connecter en utilisant un jeton du porteur pour voir les ressources Kubernetes. Pour obtenir le jeton, exécutez la commande suivante dans la ligne de commande PowerShell de la machine virtuelle :

    Get-AksEdgeManagedServiceToken
    
  4. Vous pouvez maintenant voir les ressources sur votre cluster. Le volet Charges de travail montre les pods en cours d’exécution sur votre cluster.

    Capture d’écran de charges de travail AKS Edge Essentials Kubernetes Azure Arc dans le portail Azure.