Exercice – Déployer un cluster K3S à une seule machine AKS Edge Essentials

Effectué

Dans cet exercice, nous déployons AKS Edge Essentials dans un seul cluster K3S à une seule machine avec un nœud Linux et Windows. 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.

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. Commencez par activer le bac à sable Azure.

  2. Exécutez la commande suivante dans Azure Cloud Shell pour définir les variables de création de la machine virtuelle Azure :

    resourcegroup="<rgn>[resource group name]</rgn>"
    vmname="myVM"
    username="azureuser"
    let "randomIdentifier=$RANDOM*$RANDOM"
    adminpassword="Admin-$randomIdentifier-Password!"
    
    echo Admin Password: $adminpassword
    

    Remarque

    Prenez note de la valeur de Admin Password. Vous en aurez besoin ultérieurement.

  3. Créez la machine virtuelle Azure avec Windows 11 Entreprise en utilisant la commande az vm create :

    az vm create \
        --resource-group $resourcegroup \
        --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/learn-rg-0000/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": "learn-rg-0000",
        "zones": ""
    }
    
    

Télécharger AKS Edge Essentials

Téléchargeons le programme d’installation K3s et les fichiers de nœuds Windows vers le partage de fichiers Azure, puis montons-le dans la machine virtuelle afin de pouvoir y accéder à l’aide du lecteur avec la lettre Z.

  1. Prenez note du nom du compte de stockage, de la clé et du nom du partage de fichiers Azure. Vous en aurez besoin ultérieurement :

    storageAccountName=$(az storage account list --resource-group $resourcegroup --query '[0].name' -o tsv)
    storageAccountKey=$(az storage account keys list --resource-group $resourcegroup --account-name $storageAccountName --query '[0].value' -o tsv)
    storageAccountFile=$(az storage share list --account-name $storageAccountName --account-key $storageAccountKey --query '[0].name' -o tsv)
    
    echo Storage Account Name: $storageAccountName
    echo Storage Account Key: $storageAccountKey
    echo Storage Account File: $storageAccountFile
    
  2. Téléchargez le programme d’installation K3s, les fichiers de nœuds Windows et les certificats vers le partage de fichiers Azure :

    curl -L -o ~/clouddrive/MicrosoftRootCertificateAuthority2011.cer "https://download.microsoft.com/download/2/4/8/248D8A62-FCCD-475C-85E7-6ED59520FC0F/MicrosoftRootCertificateAuthority2011.cer" && echo "Downloaded MicrosoftRootCertificateAuthority2011.cer"
    curl -L -o ~/clouddrive/MicCodSigPCA2011.crt "https://www.microsoft.com/pkiops/certs/MicCodSigPCA2011_2011-07-08.crt" && echo "Downloaded MicCodSigPCA2011.crt"
    curl -L -o ~/clouddrive/AksEdge-Learn.msi "https://aka.ms/aks-edge/k3s-msi" && echo "Downloaded AksEdge-Learn.msi"
    curl -L -o ~/clouddrive/AksEdgeWindows-Learn.zip "https://aka.ms/aks-edge/windows-node-zip" && echo "Downloaded AksEdgeWindows-Learn.zip"
    
  3. Créez 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.

    Remarque

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

  6. Ouvrez la ligne de commande PowerShell en cliquant sur le menu Démarrer, puis en tapant PowerShell.

  7. Exécutez les commandes PowerShell suivantes pour monter le partage de fichiers Azure dans la machine virtuelle avec la lettre Z. Remplacez les valeurs de [YOUR_STORAGE_ACCOUNT_NAME], [YOUR_STORAGE_ACCOUNT_KEY] et [YOUR_STORAGE_ACCOUNT_FILE] par celles que vous avez notées précédemment :

    $storageAccountName = "[YOUR_STORAGE_ACCOUNT_NAME]"
    $storageAccountKey = "[YOUR_STORAGE_ACCOUNT_KEY]"
    $storageAccountFile = "[YOUR_STORAGE_ACCOUNT_FILE]"
    
    # Save the password so the drive will persist on reboot
    cmd.exe /C "cmdkey /add:`"$storageAccountName.file.core.windows.net`" /user:`"localhost\$storageAccountName`" /pass:`"$storageAccountKey`""
    
    # Mount the drive with the letter Z
    New-PSDrive -Name Z -PSProvider FileSystem -Root "\\$storageAccountName.file.core.windows.net\$storageAccountFile" -Persist
    

Déployer AKS Edge Essentials

Maintenant que la machine virtuelle a été créée et que les fichiers d’installation ont été téléchargés, exécutons le script PowerShell AksEdgeQuickStart-v2.ps1 pour faciliter le déploiement d’AKS Edge Essentials.

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. Installez des certificats Windows :

    certutil.exe -addstore -f "AuthRoot" "Z:\\MicrosoftRootCertificateAuthority2011.cer"
    certutil.exe -addstore -f "CA" "Z:\\MicCodSigPCA2011.crt"
    
  3. Définissez les paramètres pour créer un cluster K3S à une seule machine avec un nœud Linux et Windows. Les fichiers aideuser-config.json et aksedge-config.json sont utilisés pour exécuter le script PowerShell AksEdgeQuickStart-v2.ps1 :

    $aideuserConfig = @"
    {
        "SchemaVersion": "1.1",
        "Version": "1.0",
        "AksEdgeProduct": "AKS Edge Essentials - K3s",
        "AksEdgeProductUrl": "Z:\\AksEdge-Learn.msi",
        "Azure": {
            "SubscriptionName": "",
            "SubscriptionId": "",
            "TenantId": "",
            "ResourceGroupName": "",
            "ServicePrincipalName": "",
            "Location": "",
            "CustomLocationOID":"",
            "Auth":{
                "ServicePrincipalId":"",
                "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": 2048,
                    "DataSizeInGB": 20
                },
                "WindowsNode": {
                    "CpuCount": 2,
                    "MemoryInMB": 2048
                }
            }
        ]
    }
    "@
    
    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 30 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 :
      • Décompresse les fichiers d’installation Windows.
      • 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 et Windows.

    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/04/2024 15:29:34]
    Waiting for Windows node IP address...
    
    [01/04/2024 15:29:34]
    Testing Windows node control channel...
    
    [01/04/2024 15:29:37]
    ...successfully connected to the Windows node
    
    [01/04/2024 15:31:39]
    Waiting for Windows node to transition to ready state (796 seconds remaining)
    - Waiting for Kubernetes node (myvm-wedge) to reach condition Ready, time remaining = 796 seconds
    - Kubernetes node (myvm-wedge) reached condition Ready
    
    [01/04/2024 15:31:57]
    AksEdge - copying Kubeconfig into the host.
    
    [01/04/2024 15:32:02]
    AksEdge - new deployment successfully created.
    
    * AksEdge VM deployment successfull.
    Deployment Successful.
    Step 4: Connect to Arc
    >> skipping step 4
    Duration: 0 hrs 23 mins 13 seconds
    

    Screenshot of Windows VM with powershell commands output demonstrating a successful download and installation of AKS Edge Essentials K3s distribution.

Conseil

Étant donné que le processus d’installation prend environ 30 minutes, vous pouvez passer à l’unité d’apprentissage suivante. Nous reviendrons plus tard sur ce point.