Déployez ECS les services Amazon à l'aide d'un contrôleur tiers - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déployez ECS les services Amazon à l'aide d'un contrôleur tiers

Le type de déploiement externe vous permet d'utiliser n'importe quel contrôleur de déploiement tiers pour un contrôle total du processus de déploiement d'un ECS service Amazon. Les détails de votre service sont gérés soit par les API actions de gestion des services (CreateService,UpdateService, etDeleteService), soit par les API actions de gestion des ensembles de tâches (CreateTaskSetUpdateTaskSetUpdateServicePrimaryTaskSet,, etDeleteTaskSet). Chaque API action gère un sous-ensemble des paramètres de définition du service.

L'UpdateServiceAPIaction met à jour le nombre et les paramètres de période de grâce du contrôle de santé souhaités pour un service. Si le type de lancement, la version de plateforme, les détails de l'équilibreur de charge, la configuration du réseau ou la définition de tâche doivent être mis à jour, vous devez créer une nouvelle tâche.

L'UpdateTaskSetAPIaction met à jour uniquement le paramètre d'échelle d'un ensemble de tâches.

L'UpdateServicePrimaryTaskSetAPIaction modifie l'ensemble de tâches d'un service qui est le principal ensemble de tâches. Lorsque vous appelez l'DescribeServicesAPIaction, elle renvoie tous les champs spécifiés pour un ensemble de tâches principal. Si l'ensemble de tâches principal d'un service est mis à jour, toutes les valeurs de paramètres de l'ensemble de tâches qui existe sur l'ensemble de tâches principal différent de l'ancienne tâche principale dans un service sont mises à jour vers la nouvelle valeur lorsqu'un ensemble de tâches principal est défini. Si aucun ensemble de tâches principale n'est défini pour un service, les champs de l'ensemble de tâches sont vides pour la description de service.

Considérations relatives au déploiement externe

Tenez compte des éléments suivants lorsque vous utilisez le type de déploiement externe :

  • Les types d'équilibreur de charge pris en charge sont un Application Load Balancer ou un Network Load Balancer.

  • Le type de lancement Fargate ou les types de contrôleur de déploiement EXTERNAL ne prennent pas en charge la stratégie de planification DAEMON.

Workflow de déploiement externe

Voici le flux de travail de base pour gérer un déploiement externe sur AmazonECS.

Pour gérer un ECS service Amazon à l'aide d'un contrôleur de déploiement externe
  1. Créez un ECS service Amazon. Le seul paramètre requis est le nom de service. Vous pouvez spécifier les paramètres suivants lors de la création d'un service à l'aide d'un contrôleur de déploiement externe. Tous les autres paramètres de service sont spécifiés lors de la création d'un ensemble de tâches dans le service.

    serviceName

    Type : String

    Obligatoire : oui

    Nom de votre service. Il peut comporter jusqu'à 255 lettres (majuscules et minuscules), des chiffres, des tirets ou des traits de soulignement. Dans un cluster, les noms de service doivent être uniques, mais certains services peuvent avoir des noms similaires dans des clusters différents d'une même région ou de plusieurs régions.

    desiredCount

    Le nombre d'instances sur la définition de tâche d'ensemble de tâches spécifié à placer et à continuer d'exécuter au sein du service.

    deploymentConfiguration

    Paramètres de déploiement facultatifs qui contrôlent le nombre de tâches exécutées durant le déploiement et la commande d'arrêt et de démarrage des tâches.

    tags

    Type : tableau d'objets

    Obligatoire : non

    Métadonnées que vous appliquez au service pour faciliter le classement et l'organisation. Chaque étiquette est constituée d'une clé et d'une valeur facultative que vous définissez. Lorsqu'un service est supprimé, les étiquettes sont également supprimées. Un maximum de 50 balises peut être appliqué au service. Pour de plus amples informations, veuillez consulter Marquer les ressources Amazon ECS.

    key

    Type : String

    Contraintes de longueur : Longueur minimum de 1. Longueur maximale de 128.

    Obligatoire : non

    Partie d'une paire clé-valeur qui constitue une étiquette. Une clé est une étiquette générale qui fait office de catégorie pour les valeurs d'étiquette plus spécifiques.

    value

    Type : String

    Contraintes de longueur : Longueur minimum de 0. Longueur maximale de 256.

    Obligatoire : non

    Partie facultative d'une paire clé-valeur qui constitue une étiquette. Une valeur agit comme un descripteur au sein d'une catégorie d'étiquette (clé).

    enableECSManagedTags

    Spécifie s'il faut utiliser les balises ECS gérées par Amazon pour les tâches du service. Pour de plus amples informations, veuillez consulter Utiliser des tags pour la facturation.

    propagateTags

    Type : String

    Valeurs valides : TASK_DEFINITION | SERVICE

    Obligatoire : non

    Indique s'il faut copier les étiquettes de la définition de tâche ou du service dans les tâches du service. Si aucune valeur n'est spécifiée, les étiquettes ne sont pas copiées. Les étiquettes ne peuvent être copiées dans les tâches du service que lors de la création du service. Pour ajouter des balises à une tâche après la création d'un service ou d'une tâche, utilisez l'TagResourceAPIaction.

    schedulingStrategy

    Stratégie de planification à utiliser. Les services utilisant un contrôleur de déploiement externe prennent uniquement en charge la stratégie de planification REPLICA.

    placementConstraints

    Tableau d'objets de contraintes de placement à utiliser pour les tâches de votre service. Vous pouvez spécifier un maximum de 10 contraintes par tâche (cette limite comprend les contraintes de la définition de tâche et celles spécifiées lors de l'exécution). Si vous utilisez le type de lancement Fargate, les contraintes de placement des tâches ne sont pas prises en charge.

    placementStrategy

    Objets de stratégie de placement à utiliser pour les tâches de votre service. Vous pouvez spécifier jusqu'à quatre règles de stratégie par service.

    Voici un exemple de définition de service pour la création d'un service qui utilise un contrôleur de déploiement externe.

    { "cluster": "", "serviceName": "", "desiredCount": 0, "role": "", "deploymentConfiguration": { "maximumPercent": 0, "minimumHealthyPercent": 0 }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "binpack", "field": "" } ], "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION" }
  2. Créez un ensemble de tâches initial. L'ensemble de tâches contient les détails suivants pour votre service :

    taskDefinition

    La définition de tâche pour les tâches dans l'ensemble de tâches à utiliser.

    launchType

    Type : String

    Valeurs valides : EC2 | FARGATE | EXTERNAL

    Obligatoire : non

    Type de lancement sur lequel vous pouvez exécuter votre service. Si aucun type de lancement n'est spécifié, the capacityProviderStrategy par défaut est utilisé par défaut. Pour de plus amples informations, veuillez consulter Types de ECS lancement d'Amazon.

    Si un launchType est spécifié, le paramètre capacityProviderStrategy doit être omis.

    platformVersion

    Type : chaîne

    Obligatoire : non

    Version de la plateforme sur laquelle s'exécutent vos tâches dans le service. Une version de plateforme est spécifiée uniquement pour les tâches utilisant le type de lancement Fargate. Si vous ne spécifiez aucune valeur, la dernière version (LATEST) est utilisée par défaut.

    AWS Les versions de la plate-forme Fargate sont utilisées pour faire référence à un environnement d'exécution spécifique pour l'infrastructure de tâches Fargate. Lorsque vous spécifiez LATEST comme version de plateforme lors de l'exécution d'une tâche ou de la création d'un service, vous obtenez la version de plateforme la plus récente pour vos tâches. Lorsque vous mettez à l'échelle votre service, ces tâches reçoivent la version de plateforme spécifiée dans le déploiement actuel du service. Pour de plus amples informations, veuillez consulter Versions de la plateforme Fargate pour Amazon ECS.

    Note

    Les versions de plate-forme ne sont pas spécifiées pour les tâches utilisant le type de EC2 lancement.

    loadBalancers

    Un objet d'équilibreur de charge qui représente l'équilibreur de charge à utiliser avec votre service. Lorsque vous utilisez un contrôleur de déploiement externe, seuls les équilibreurs de charge Application Load Balancer et les Network Load Balancer sont pris en charge. Si vous utilisez un équilibreur de charge Application Load Balancer, seul un groupe cible d'équilibreur de charge Application Load Balancer est autorisé par tâche.

    L'extrait de code suivant montre un exemple d'objet loadBalancer à utiliser.

    "loadBalancers": [ { "targetGroupArn": "", "containerName": "", "containerPort": 0 } ]
    Note

    Lorsque vous spécifiez un objet loadBalancer, vous devez spécifier targetGroupArn et omettre les paramètres loadBalancerName.

    networkConfiguration

    Configuration réseau du service. Ce paramètre est obligatoire pour les définitions de tâches qui utilisent le mode réseau awsvpc afin de recevoir leur propre interface réseau Elastic. Il n'est pas pris en charge avec les autres modes réseau. Pour plus d'informations sur la mise en réseau pour le type de lancement Fargate, consultez. Options de mise en réseau des ECS tâches Amazon pour le type de lancement Fargate

    serviceRegistries

    Les détails des enregistrements de découverte de service à attribuer à ce service. Pour de plus amples informations, veuillez consulter Utilisez la découverte de services pour associer les ECS services Amazon à des DNS noms.

    scale

    Pourcentage à virgule flottante du nombre souhaité de tâches à placer et à continuer d'exécuter dans l'ensemble de tâches. La valeur est spécifiée en tant que pourcentage total de desiredCount d'un service. Les valeurs acceptées sont des nombres compris entre 0 et 100.

    Voici un JSON exemple de création d'un ensemble de tâches pour un contrôleur de déploiement externe.

    { "service": "", "cluster": "", "externalId": "", "taskDefinition": "", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "loadBalancers": [ { "targetGroupArn": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "launchType": "EC2", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "scale": { "value": null, "unit": "PERCENT" }, "clientToken": "" }
  3. Lorsque des modifications de service sont nécessaires, utilisez l'CreateTaskSetAPIaction UpdateServiceUpdateTaskSet, ou en fonction des paramètres que vous mettez à jour. Si vous avez créé un ensemble de tâches, utilisez le paramètre scale pour chaque ensemble de tâches dans un service afin de déterminer le nombre de tâches à continuer d'exécuter dans le service. Par exemple, si vous disposez d'un service qui contient tasksetA et que vous créez un tasksetB, vous pouvez tester la validité de tasksetB avant de vouloir lui transférer du trafic de production. Vous pouvez régler l'scale pour les deux ensembles de tâches sur 100, et une fois prêt à transférer tout le trafic de production sur tasksetB, vous pouvez mettre à jour l'scale de tasksetA sur 0 pour le diminuer.