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 deDAEMON
.
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
-
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.
-
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" }
-
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ámetrocapacityProviderStrategy
. 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 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 untargetGroupArn
y omitir los parámetrosloadBalancerName
. 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": "" }
-
Cuando es necesario cambiar el servicio, utilice la acción de la API
CreateTaskSet
,UpdateTaskSet
oUpdateService
en función de los parámetros que esté actualizando. Si ha creado un conjunto de tareas, utilice el parámetroscale
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 contienetasksetA
y crea untasksetB
, puede probar la validez de transicióntasksetB
antes de que desear pasar el tráfico de producción al mismo. Podría establecer el valorscale
de ambos conjunto de tareas en100
y cuando esté listo para pasar todo el tráfico de producción atasksetB
, podría actualizar el valor descale
detasksetA
a0
para reducirlo.