Implantação de serviços do Amazon ECS usando um controlador de terceiros - Amazon Elastic Container Service

Implantação de serviços do Amazon ECS usando um controlador de terceiros

O tipo de implantação externa permite usar qualquer controlador de implantação de terceiros para ter controle total do processo de implantação em um serviço do Amazon ECS. Os detalhes do seu serviço são gerenciados por ações da API de gerenciamento de serviços (CreateService, UpdateService e DeleteService) ou ações da API de gerenciamento de conjuntos de tarefas (CreateTaskSet, UpdateTaskSet, UpdateServicePrimaryTaskSet e DeleteTaskSet). Cada ação de API gerencia um subconjunto dos parâmetros de definição de serviço.

A ação de API UpdateService atualiza os parâmetros de contagem desejada e período de carência da verificação de integridade para um serviço. Se o tipo de inicialização, a versão da plataforma, os detalhes do load balancer, a configuração de rede ou definição de tarefa precisarem ser atualizados, você deverá criar um novo conjunto de tarefas.

A ação de API UpdateTaskSet atualiza apenas o parâmetro de escala para um conjunto de tarefas.

A ação de API UpdateServicePrimaryTaskSet modifica qual conjunto de tarefas em um serviço é o conjunto de tarefas principal. Quando você chama a ação de API DescribeServices, ela retorna todos os campos especificados para um conjunto de tarefas principal. Se o conjunto de tarefas principal de um serviço for atualizado, qualquer valor de parâmetro de conjunto de tarefas existente no novo conjunto de tarefas principal que for diferente do conjunto de tarefas principal antigo em um serviço será atualizado para o novo valor quando um novo conjunto de tarefas principal for definido. Se nenhum conjunto de tarefas principal for definido para um serviço, durante a descrição do serviço, os campos do conjunto de tarefas serão nulos.

Considerações sobre a implantação externa

Considere o seguinte ao usar o tipo de implantação externa:

  • Os tipos de load balancer compatíveis são um Application Load Balancer ou um Network Load Balancer.

  • O tipo de inicialização do Fargate ou os tipos de controladores de implantação EXTERNAL não são compatíveis com a estratégia de programação do DAEMON.

Fluxo de trabalho de implantações externas

Veja a seguir o fluxo de trabalho básico para gerenciar uma implantação externa no Amazon ECS.

Para gerenciar um serviço do Amazon ECS usando um controlador de implantação externa
  1. Crie um serviço do Amazon ECS. O único parâmetro obrigatório é o nome do serviço. É possível especificar os parâmetros a seguir ao criar um serviço usando um controlador de implantação externo. Todos os outros parâmetros de serviço são especificados durante a criação de um conjunto de tarefas no serviço.

    serviceName

    Tipo: string

    Obrigatório: Sim

    O nome do serviço. São permitidos até 255 letras (caixa alta e baixa), números, hífens e sublinhados. Os nomes dos serviços devem ser exclusivos em um cluster, mas é possível ter serviços com nomes semelhantes em vários clusters em uma ou várias regiões.

    desiredCount

    O número de instanciações da definição de tarefa do conjunto de tarefas especificado para posicionar e manter em execução no serviço.

    deploymentConfiguration

    Parâmetros opcionais de implantação que controlam quantas tarefas são executadas durante uma implantação e a ordem de interrupção e início de tarefas.

    tags

    Tipo: matriz de objetos

    Obrigatório: Não

    Os metadados que você aplica ao serviço para ajudá-lo a categorizá-los e organizá-los. Cada tag consiste em uma chave e um valor opcional, ambos definidos por você. Quando um serviço é excluído, as tags também são excluídas. Um máximo de 50 tags podem ser aplicadas ao serviço. Para ter mais informações, consulte Marcação de recursos do Amazon ECS.

    key

    Tipo: String

    Restrições de tamanho: tamanho mínimo 1. O tamanho máximo é 128.

    Obrigatório: Não

    Uma parte de um par de chave/valor que compõe uma tag. Uma chave é um rótulo geral que age como uma categoria para valores de tag mais específicos.

    value

    Tipo: string

    Restrições de tamanho: o tamanho mínimo é 0. O tamanho máximo é 256.

    Obrigatório: Não

    A parte opcional de um par de chave/valor que compõe uma tag. Um valor atua como um descritor dentro de uma categoria de tag (chave).

    enableECSManagedTags

    Especifica se devem ser usadas as tags gerenciadas do Amazon ECS para as tarefas no serviço. Para ter mais informações, consulte Usar etiquetas para faturamento.

    propagateTags

    Tipo: Sequência

    Valores válidos: TASK_DEFINITION | SERVICE

    Obrigatório: Não

    Especifica se deve copiar as tags da definição de tarefa ou do serviço para as tarefas no serviço. Se nenhum valor for especificado, as tags não serão copiadas. As tags só podem ser copiadas para tarefas no serviço durante a criação do serviço. Para adicionar etiquetas a uma tarefa após a criação do serviço ou da tarefa, use a ação de API TagResource.

    schedulingStrategy

    A estratégia de programação para usar. Os serviços que usam um controlador de implantação externo oferecem suporte apenas à estratégia de programação de REPLICA.

    placementConstraints

    Um array de objetos de restrição de posicionamento para usar em tarefas no serviço. É possível especificar um máximo de 10 restrições por tarefa. Esse limite inclui restrições na definição de tarefa e naquelas especificadas no tempo de execução. Se você estiver usando o tipo de inicialização do Fargate, não haverá suporte para restrições de posicionamento de tarefas.

    placementStrategy

    A estratégia de posicionamento de objetos para usar em tarefas no serviço. É possível especificar um máximo de quatro regras de estratégia por serviço.

    Veja a seguir uma definição de serviço de exemplo para a criação de um serviço usando um controlador de implantação externo.

    { "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. Crie um conjunto de tarefas inicial. O conjunto de tarefas contém os seguintes detalhes sobre o serviço:

    taskDefinition

    A definição de tarefa para as tarefas do conjunto de tarefas usarem.

    launchType

    Tipo: string

    Valores válidos: EC2 | FARGATE | EXTERNAL

    Obrigatório: Não

    O tipo de inicialização na qual executar seu serviço. Se não for especificado um tipo de inicialização, o padrão capacityProviderStrategy será usado. Para ter mais informações, consulte Tipos de inicialização do Amazon ECS.

    Se um launchType for especificado, o parâmetro capacityProviderStrategy deverá ser omitido.

    platformVersion

    Tipo: string

    Obrigatório: Não

    A versão da plataforma na qual suas tarefas no serviço estão em execução. Uma versão da plataforma é especificada apenas para tarefas que usam o tipo de inicialização do Fargate. Se não for especificada, a versão mais recente (LATEST) será usada como padrão.

    As versões da plataforma do AWS Fargate são usadas para fazer referência a um ambiente de runtime específico para a infraestrutura de tarefas do Fargate. Ao especificar a versão da plataforma LATEST quando estiver executando uma tarefa ou criando um serviço, você obtém a versão de plataforma mais atual disponível para suas tarefas. Ao escalar seu serviço, essas tarefas recebem a versão de plataforma especificada na implantação atual do serviço. Para ter mais informações, consulte Versões da plataforma do Fargate para o Amazon ECS.

    nota

    Versões de plataforma não são especificadas para tarefas que usam o tipo de inicialização do EC2.

    loadBalancers

    Um objeto do load balancer que representa o load balancer para uso no serviço. Quando for usado um controlador de implantação externa, somente Application Load Balancers e Network Load Balancers são compatíveis. Se você estiver usando um Application Load Balancer, somente um grupo de destino do Application Load Balancer será permitido por conjunto de tarefas.

    O trecho a seguir mostra o exemplo de um objeto loadBalancer a ser usado.

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

    Ao especificar um objeto loadBalancer, é necessário especificar um targetGroupArn e omitir os parâmetros loadBalancerName.

    networkConfiguration

    A configuração de rede para o serviço. Esse parâmetro é necessário para definições de tarefa que usam o modo de rede awsvpc para receber sua própria interface de rede elástica, e não tem suporte para outros modos de rede. Para obter mais informações sobre redes para o tipo de execução do Fargate, consulte Opções de redes de tarefas do Amazon ECS para o tipo de inicialização do Fargate.

    serviceRegistries

    Os detalhes dos registros de descoberta de serviços a serem atribuídos ao serviço. Para ter mais informações, consulte Uso da descoberta de serviços para conectar serviços do Amazon ECS com nomes DNS.

    scale

    Uma porcentagem de ponto flutuante do número desejado de tarefas para posicionar e manter em execução no conjunto de tarefas. O valor é especificado como uma porcentagem total de desiredCount de um serviço. Os valores aceitos são números entre 0 e 100.

    Veja a seguir um exemplo de JSON para criar um conjunto de tarefas para um controlador de implantação externo.

    { "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. Quando forem necessárias alterações no serviço, use a ação de API UpdateService, CreateTaskSet ou UpdateTaskSet, dependendo de quais parâmetros você estiver atualizando. Se você tiver criado um conjunto de tarefas, use o parâmetro scale para cada tarefa em um serviço para determinar quantas tarefas devem ser mantidas em execução no serviço. Por exemplo, se você tiver um serviço que contenha tasksetA e criar um tasksetB, poderá testar a validade de tasksetB antes de querer fazer a transição do tráfego de produção para ele. Seria possível definir scale para os dois conjuntos de tarefas como 100, e quando estivesse pronto para fazer a transição de todo o tráfego de produção para tasksetB, poderia atualizar scale para tasksetA como 0 para reduzi-lo.