Implementación de los servicios de Amazon ECS mediante un controlador de terceros - Amazon Elastic Container Service

Implementación de los servicios de Amazon ECS mediante un controlador de terceros

El tipo de implementación externa le permite utilizar cualquier controlador de implementación de terceros para tener un control completo del proceso de implementación de un servicio de Amazon ECS. Los detalles del servicio se administran por medio de las acciones de la API de administración de servicios (CreateService, UpdateService y DeleteService) o las acciones de la API de administración de conjunto de tareas (CreateTaskSet, UpdateTaskSet, UpdateServicePrimaryTaskSet y DeleteTaskSet). Cada acción de la API administra un subconjunto de los parámetros de definición del servicio.

La acción de la API UpdateService actualiza los parámetros de período de gracia de comprobación de estado y recuento deseados de un servicio. Si se tienen que actualizar el tipo de lanzamiento, la versión de la plataforma, los detalles del balanceador de carga, la configuración de red o la definición de tarea, debe crear una nueva tarea.

La acción de la API UpdateTaskSet actualiza únicamente el parámetro de escala de un conjunto de tarea.

La acción de la API UpdateServicePrimaryTaskSet modifica qué conjunto de tareas de un servicio es el conjunto de tareas principal. Cuando llama a la acción de la API DescribeServices, devuelve todos los campos especificados para un conjunto de tareas principal. Si se actualiza el conjunto de tareas principal para un servicio, cualquier valor de parámetro del conjunto de tareas que exista en el nuevo conjunto de tareas principal que difieran del conjunto de tareas principal antiguo en un servicio se actualiza al nuevo valor cuando se define un nuevo conjunto de tareas principal. Si no se ha definido ningún conjunto de tareas principal para un servicio, al describir el servicio, los campos del conjunto de tareas son nulos.

Consideraciones acerca de la implementación externa

Tenga en cuenta lo siguiente al utilizar el tipo de implementación externa:

  • Los tipos de balanceador de carga admitidos son balanceador de carga de aplicaciones o balanceador de carga de red.

  • El tipo de lanzamiento de Fargate o los tipos de controladores de implementación EXTERNAL no son compatibles con la estrategia de programación de DAEMON.

Flujo de trabajo de implementación externa

A continuación, se muestra el flujo de trabajo básico para administrar una implementación externa en Amazon ECS.

Para administrar un servicio de Amazon ECS mediante un controlador de implementación externo
  1. Creación de un servicio de Amazon ECS. El único parámetro obligatorio es el nombre de servicio. Puede especificar los siguientes parámetros al crear un servicio con un controlador de implementación externo. Todos los demás parámetros de servicio se especifican al crear un conjunto de tareas dentro del servicio.

    serviceName

    Tipo: cadena

    Obligatorio: sí

    El nombre de su servicio. Se admiten hasta 255 letras (mayúsculas y minúsculas), números, guiones y caracteres de subrayado. Los nombres de servicio deben ser únicos dentro de un clúster, pero puede tener servicios con el mismo nombre en varios clústeres dentro de una región o en varias regiones.

    desiredCount

    El número de instancias de la definición de tarea de conjunto de tareas especificada para colocar y seguir ejecutando en el servicio.

    deploymentConfiguration

    Parámetros de implementación opcionales que controlan cuántas tareas se ejecutan durante una implementación y la ordenación de tareas de parada e inicio.

    tags

    Tipo: matriz de objetos

    Requerido: no

    Los metadatos que se aplican al servicio para ayudarle a categorizarlas y organizarlas. Cada etiqueta está formada por una clave y un valor opcional, ambos definidos por el usuario. Cuando se elimina un servicio, también se eliminan las etiquetas. Se puede aplicar un máximo de 50 etiquetas al servicio. Para obtener más información, consulte Etiquetado de los recursos de Amazon ECS.

    key

    Tipo: cadena

    Limitaciones de longitud: longitud mínima de 1. Longitud máxima de 128.

    Requerido: no

    Una parte de un par clave-valor que compone una etiqueta. Un clave es una etiqueta general que actúa como una categoría para valores de etiqueta más específicos.

    value

    Tipo: cadena

    Limitaciones de longitud: longitud mínima de 0. La longitud máxima es de 256 caracteres.

    Requerido: no

    La parte opcional de un par clave-valor que compone una etiqueta. Un valor actúa como un descriptor en una categoría de etiquetas (clave).

    enableECSManagedTags

    Especifica si se deben usar etiquetas administradas por Amazon ECS para las tareas dentro del servicio. Para obtener más información, consulte Uso de etiquetas para facturación.

    propagateTags

    Tipo: cadena

    Valores válidos: TASK_DEFINITION | SERVICE

    Requerido: no

    Especifica si se deben copiar las etiquetas de la definición de tareas o el servicio en las tareas del servicio. Si no se especifica ningún valor, las etiquetas no se copian. Solo se pueden copiar las etiquetas en las tareas del servicio durante la creación del servicio. Para agregar etiquetas a una tarea tras la creación del servicio, utilice la acción de la API TagResource.

    schedulingStrategy

    La estrategia de programación que se va a utilizar. Los servicios que utilizan un controlador de implementación solo admiten la estrategia de programación REPLICA.

    placementConstraints

    Una matriz de objetos de restricción de colocación que utilizar para tareas en su servicio. Puede especificar 10 restricciones como máximo por tarea (este límite incluye restricciones en la definición de tareas y las especificadas en tiempo de ejecución). Si utiliza el tipo de lanzamiento de Fargate, no se admiten las restricciones de ubicación de tareas.

    placementStrategy

    Los objetos de estrategia colocación que utilizar para tareas en su servicio. Puede especificar un máximo de cuatro reglas de estrategia por servicio.

    A continuación, se muestra un ejemplo de definición de servicio para crear un servicio mediante un controlador de implementación 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. Crear un conjunto de tareas inicial. El conjunto de tareas contiene los siguientes detalles sobre el servicio:

    taskDefinition

    La definición de tareas en el conjunto de tareas que se va a utilizar.

    launchType

    Tipo: cadena

    Valores válidos: EC2 | FARGATE | EXTERNAL

    Requerido: no

    El tipo de lanzamiento en el que ejecutar su servicio. Si no se especifica ningún tipo de lanzamiento, se usará capacityProviderStrategy de forma predeterminada. Para obtener más información, consulte Tipos de lanzamiento de Amazon ECS.

    Si se especifica launchType, se debe omitir el parámetro capacityProviderStrategy.

    platformVersion

    Tipo: cadena

    Requerido: no

    La versión de la plataforma en la que se ejecutan sus tareas en el servicio. La versión de la plataforma solo se especifica para las tareas que utilizan el tipo de lanzamiento de Fargate. Si no se especifica ninguna, se usará la versión más reciente (LATEST) de forma predeterminada.

    Las versiones de la plataforma de AWS Fargate se utilizan para hacer referencia a un entorno en tiempo de ejecución específico para la infraestructura de tareas de Fargate. Cuando se especifica la versión de la plataforma LATEST al ejecutar una tarea o crear un servicio, se obtiene la versión más actual de la plataforma disponible para las tareas. Cuando se escala un servicio, esas tareas reciben la versión de la plataforma especificada en la implementación actual del servicio. Para obtener más información, consulte Versiones de la plataforma Fargate Linux para Amazon ECS.

    nota

    No se especifican las versiones de la plataforma para las tareas que utilizan el tipo de lanzamiento de EC2.

    loadBalancers

    Un objeto de balanceador de carga que representa el balanceador de carga que utilizar con su servicio. Cuando se utiliza un controlador de implementación externo, solo se admiten Application Load Balancers y Network Load Balancers. Si utiliza un Application Load Balancer, solo se permite un grupo de destino del Application Load Balancer por conjunto de tareas.

    El siguiente fragmento muestra un objeto loadBalancer de ejemplo que se va a utilizar.

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

    Al especificar un objeto loadBalancer, debe especificar un targetGroupArn y omitir los parámetros loadBalancerName.

    networkConfiguration

    La configuración de red del servicio. Este parámetro es necesario para definiciones de tareas que usan el modo de red awsvpc para recibir su propia interfaz de red elástica y no se admite para otros modos de red. Para obtener más información acerca de las redes para el tipo de lanzamiento de Fargate, consulte Opciones de redes de tareas de Amazon ECS para el tipo de lanzamiento de Fargate.

    serviceRegistries

    Los detalles de los registros de detección de servicios que asignar a este servicio. Para obtener más información, consulte Uso de la detección de servicios para conectar los servicios de Amazon ECS con nombres de DNS.

    scale

    Un porcentaje de punto flotante del número de tareas deseado que colocar y seguir ejecutando en el conjunto de tareas. El valor se especifica como un total de porcentaje del desiredCount de un servicio. Los valores aceptados son números entre 0 y 100.

    A continuación, se muestra un ejemplo JSON para crear un conjunto de tareas para un controlador de implementación 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. Cuando es necesario cambiar el servicio, utilice la acción de la API CreateTaskSet, UpdateTaskSet o UpdateService en función de los parámetros que esté actualizando. Si ha creado un conjunto de tareas, utilice el parámetro scale para cada conjunto de tareas en un servicio para determinar cuántas tareas hay que mantener en ejecución en el servicio. Por ejemplo, si tiene un servicio que contiene tasksetA y crea un tasksetB, puede probar la validez de transición tasksetB antes de que desear pasar el tráfico de producción al mismo. Podría establecer el valor scale de ambos conjunto de tareas en 100 y cuando esté listo para pasar todo el tráfico de producción a tasksetB, podría actualizar el valor de scale de tasksetA a 0 para reducirlo.