Partager via


Utiliser des extensions avec les pools Batch

Les extensions sont de petites applications qui facilitent la configuration et l’installation post-approvisionnement sur des nœuds de calcul Batch. Vous pouvez sélectionner l’une des extensions autorisées et les installer sur les nœuds de calcul au fur et à mesure qu’elles sont approvisionnées. Après cela, l’extension peut effectuer l’opération prévue.

Vous pouvez vérifier l’état en direct des extensions que vous utilisez et récupérer les informations qu’elles renvoient pour pouvoir effectuer des détections, des corrections ou des fonctionnalités de diagnostic.

Prérequis

  • Les pools avec des extensions doivent utiliser la configuration de machine virtuelle.
  • Le type d’extension CustomScript est réservé au service Azure Batch et ne peut pas être remplacé.
  • Certaines extensions ont besoin, pour fonctionner correctement, d’une identité managée au niveau du pool qui soit accessible dans le contexte d’un nœud de calcul. Consultez Configuration des identités managées dans les pools Batch, si applicable pour les extensions.

Conseil

Les extensions ne peuvent pas être ajoutées à un pool existant. Vous devez recréer les pools pour ajouter, supprimer ou mettre à jour des extensions.

Extensions prises en charge

Les extensions qui peuvent actuellement être installées lors de la création d’un pool Batch sont les suivantes :

Vous pouvez demander de l’aide pour d’autres éditeurs ou types d’extension en ouvrant une demande de support.

Créer un pool avec des extensions

L’exemple suivant crée un pool Batch de nœuds Linux/Windows qui utilise l’extension Azure Key Vault.

URI de l’API REST

 PUT https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Batch/batchAccounts/<batchaccountName>/pools/<batchpoolName>?api-version=2021-01-01

Corps de la demande pour un nœud Linux

{
  "name": "test1",
  "type": "Microsoft.Batch/batchAccounts/pools",
  "properties": {
    "vmSize": "STANDARD_D2S_V5",
    "taskSchedulingPolicy": {
      "nodeFillType": "Pack"
    },
    "deploymentConfiguration": {
      "virtualMachineConfiguration": {
        "imageReference": {
          "publisher": "Canonical",
          "offer": "ubuntu-24_04-lts",
          "sku": "server",
          "version": "latest"
        },
        "nodeAgentSkuId": "batch.node.ubuntu 24.04",
        "extensions": [
          {
            "name": "secretext",
            "type": "KeyVaultForLinux",
            "publisher": "Microsoft.Azure.KeyVault",
            "typeHandlerVersion": "3.0",
            "autoUpgradeMinorVersion": true,
            "settings": {
              "secretsManagementSettings": {
                "pollingIntervalInS": "300",
                "certificateStoreLocation": "/var/lib/waagent/Microsoft.Azure.KeyVault",
                "requireInitialSync": true,
                "observedCertificates": [
                  "https://testkvwestus2.vault.azure.net/secrets/authsecreat"
                ]
              },
              "authenticationSettings": {
                "msiEndpoint": "http://169.254.169.254/metadata/identity",
                "msiClientId": "885b1a3d-f13c-4030-afcf-9f05044d78dc"
              }
            },
            "protectedSettings": {}
          }
        ]
      }
    },
    "scaleSettings": {
      "fixedScale": {
        "targetDedicatedNodes": 1,
        "targetLowPriorityNodes": 0,
        "resizeTimeout": "PT15M"
      }
    }
  },
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
    }
  }
}

Corps de la demande pour un nœud Windows

{
    "name": "test1",
    "type": "Microsoft.Batch/batchAccounts/pools",
    "properties": {
        "vmSize": "STANDARD_D4S_V5",
        "taskSchedulingPolicy": {
            "nodeFillType": "Pack"
        },
        "deploymentConfiguration": {
            "virtualMachineConfiguration": {
                "imageReference": {
                    "publisher": "microsoftwindowsserver",
                    "offer": "windowsserver",
                    "sku": "2025-datacenter",
                    "version": "latest"
                },
                "nodeAgentSkuId": "batch.node.windows amd64",
                "extensions": [
                    {
                        "name": "secretext",
                        "type": "KeyVaultForWindows",
                        "publisher": "Microsoft.Azure.KeyVault",
                        "typeHandlerVersion": "3.0",
                        "autoUpgradeMinorVersion": true,
                        "settings": {
                            "secretsManagementSettings": {
                                "pollingIntervalInS": "300",
                                "requireInitialSync": true,
                                "observedCertificates": [
                                    {
                                        "https://testkvwestus2.vault.azure.net/secrets/authsecreat"
                                        "certificateStoreLocation": "LocalMachine",
                                        "keyExportable": true
                                    }
                                ]
                            },
                            "authenticationSettings": {
                                "msiEndpoint": "http://169.254.169.254/metadata/identity",
                                "msiClientId": "885b1a3d-f13c-4030-afcf-9f05044d78dc"
                            }
                        },
                        "protectedSettings":{}
                    }
                ]
            }
        },
        "scaleSettings": {
            "fixedScale": {
                "targetDedicatedNodes": 1,
                "targetLowPriorityNodes": 0,
                "resizeTimeout": "PT15M"
            }
        }
    },
    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
        }
    }
}

Obtenir des données d’extension à partir d’un pool

L’exemple suivant récupère les données de l’extension Azure Key Vault.

URI de l’API REST

 GET https://<accountName>.<region>.batch.azure.com/pools/<poolName>/nodes/<tvmNodeName>/extensions/secretext?api-version=2010-01-01

Corps de la réponse

{
  "odata.metadata": "https://testwestus2batch.westus2.batch.azure.com/$metadata#extensions/@Element",
  "instanceView": {
    "name": "secretext",
    "statuses": [
      {
        "code": "ProvisioningState/succeeded",
        "level": 0,
        "displayStatus": "Provisioning succeeded",
        "message": "Successfully started Key Vault extension service. 2021-02-08T19:49:39Z"
      }
    ]
  },
  "vmExtension": {
    "name": "KVExtensions",
    "publisher": "Microsoft.Azure.KeyVault",
    "type": "KeyVaultForLinux",
    "typeHandlerVersion": "1.0",
    "autoUpgradeMinorVersion": true,
    "settings": "{\r\n  \"secretsManagementSettings\": {\r\n    \"pollingIntervalInS\": \"300\",\r\n    \"certificateStoreLocation\": \"/var/lib/waagent/Microsoft.Azure.KeyVault\",\r\n    \"requireInitialSync\": true,\r\n    \"observedCertificates\": [\r\n      \"https://testkvwestus2.vault.azure.net/secrets/testumi\"\r\n    ]\r\n  },\r\n  \"authenticationSettings\": {\r\n    \"msiEndpoint\": \"http://169.254.169.254/metadata/identity\",\r\n    \"msiClientId\": \"885b1a3d-f13c-4030-afcf-922f05044d78dc\"\r\n  }\r\n}"
  }
}

Résolution des problèmes liés à l’extension Key Vault

Si l’extension Key Vault est configurée de manière incorrecte, il est possible que le nœud de calcul soit dans un état inhabituel. Pour résoudre les problèmes d’échec de l’extension Key Vault, vous pouvez définir temporairement requireInitialSyncfalse et redéployer votre pool. Une fois que le nœud de calcul est en état d’inactivité, vous pouvez vous connecter au nœud de calcul pour vérifier les journaux d’extension KeyVault pour les erreurs et résoudre les problèmes de configuration. Pour plus d’informations, consultez les liens de documentation d’extension Key Vault suivants.

Considérations relatives à l’extension Intégrité de l’application

L’agent de nœud Batch s’exécutant sur le nœud démarre toujours un serveur HTTP qui retourne l’état d’intégrité de l’agent. Ce serveur HTTP écoute l’adresse IP locale 127.0.0.1 et le port 29879. Il retourne toujours un état de 200, mais avec un corps de réponse indiquant sain ou non sain. Toute autre réponse (ou absence de réponse) est considérée comme un état « inconnu ». Cette configuration est conforme aux instructions d’exécution d’un serveur HTTP qui fournit un « État d’intégrité enrichi » conformément à la documentation officielle « Extension d’intégrité de l’application ».

Si vous mettez en place votre propre serveur de santé, assurez-vous que le serveur HTTP écoute sur un port distinct. Votre serveur d’intégrité doit interroger le serveur Batch Node Agent et le combiner avec votre signal d’intégrité pour générer un résultat d’intégrité composite. Sinon, vous pouvez vous retrouver avec un nœud « sain » qui n’a pas d’agent Batch fonctionnant correctement.

Étapes suivantes