¿Estás visitando desde Panamá?
Ingresá a Linware Panamá ⯈
Continuar en Linware Panamá ⯈
×
¿Qué estás buscando?
BUSCAR!
BLOG
SUSE Linux Enterprise Server como host ECS Anywhere
Publicada el 02/06/2021

El 27 de mayo de 2021 AWS anunció   la disponibilidad de ECS Anywhere . También hay una  guía de configuración del laboratorio en casa .

ECS es un servicio de orquestación de contenedores y, con la adición de "Anywhere",  el servicio ahora puede llegar a su centro de datos para orquestar sus aplicaciones en contenedores.

Las piezas importantes para que esto funcione son el Agente de Amazon SSM , el código de inicio de Amazon ECS y el Agente de Amazon ECS . El propio agente de ECS se ejecuta en un contenedor que se extrae de un bucket de S3 en AWS. El contenedor está construido por AWS.

Con el lanzamiento de la versión 3.0.1209 de amazon-ssm-agent y la versión 1.52.1 de los paquetes amazon-ecs-init en el repositorio de módulos de nube pública de SUSE, ahora es posible utilizar los paquetes compatibles y creados por SUSE Sistemas SLES 15 SP2 y posteriores y SLES 12 SP5 para integrarse con un clúster de AWS ECS. Los paquetes también están en openSUSE y en openSUSE Build Service  . Antes del lanzamiento de estas versiones de paquetes, AWS proporcionaba compatibilidad con ECS Anywhere para los paquetes de compilación de AWS que se instalan al ejecutar el script ecs-anywhere-install.sh que forma parte del árbol de origen de amazon-ecs-init.

La configuración de las estructuras de red para la comunicación entre su centro de datos y AWS es independiente de la funcionalidad de ECS Anywhere y, como tal, no cubriré el aspecto de la conectividad de la red. Todo se puede ejecutar a través de Internet, pero probablemente desee configurar una conexión VPN o tener un enlace directo cuando expanda su clúster ECS a su centro de datos.

Si desea utilizar los paquetes proporcionados por SUSE, solo se requieren unos pocos pasos, como se describe a continuación. Asegúrese de que los módulos Public Cloud y Container estén habilitados en su sistema. Una última nota antes de entrar en detalles. Es posible conectar los nodos del clúster a ECS sin instalar aws-cli en los nodos del clúster. Lo que significa que todos los comandos aws mostrados se pueden ejecutar en un sistema diferente. Para simplificar, asumiré que el paquete aws-cli se instala (se instala) en los sistemas que están destinados a formar parte del clúster de ECS.

zypper en amazon-ecs-init amazon-ssm-agent aws-cli

Las herramientas de línea de comandos de aws utilizan credenciales de un archivo de configuración ~ / .aws / config o intentan encontrar la información pertinente en el entorno de ejecución. Las variables de entorno que deberán establecerse en este caso son

AWS_DEFAULT_REGION
AWS_SECRET_ACCESS_KEY
AWS_ACCESS_KEY_ID

El archivo de configuración está en formato INI. Consulte la documentación de AWS cli .

Los ejemplos asumen una configuración tal que ningún '-profile' y '-región' se requieren argumentos. Esto hace que los comandos de ejemplo sean más cortos.

Desea crear una nueva función de IAM o, si ya tiene una función de IAM que desea utilizar para ECS Anywhere, desea asegurarse de que la función tenga la configuración adecuada. Asumiré que estás empezando desde cero.

Cree un archivo llamado ssm-trust-policy.json con el siguiente contenido:

{
"Versión": "2012-10-17",
"Declaración": {
"Efecto": "Permitir",
"Principal": {"Servicio": [
"ssm.amazonaws.com"
]},
"Acción": "Sts: AssumeRole"
}
}

Creemos el rol. Usaré $ ROLE_NAME como marcador de posición para que lo sustituyas por un nombre a tu gusto.

aws iam create-role –nombre-rol $ ROLE_NAME –assume-role-policy-document file: //ssm-trust-policy.json
aws iam attach-role-policy –nombre-rol $ ROLE_NAME –policy-arn arn: aws : iam :: aws: policy / AmazonSSMManagedInstanceCore
aws iam attach-role-policy –nombre-de-rol $ ROLE_NAME –policy-arn arn: aws: iam :: aws: policy / service-role / AmazonEC2ContainerServiceforEC2Role

Puede verificar la configuración del rol con

aws iam lista-políticas-de-función-adjunta –nombre-función $ ROLE_NAME

Si ya tiene un clúster de ECS que desea expandir a su DC, simplemente use el nombre del clúster existente como sustituto de $ CLUSTER_NAME. Nuevamente, supongo que está mirando desde cero y, como tal, primero debemos crear un grupo.

A continuación, queremos crear un código de activación para el agente SSM.

aws ssm crear-activación –iam-role $ ROLE_NAME | tee ssm-activación.json

Necesitará estos datos en el siguiente paso. Tenga en cuenta que las claves de activación caducan. Como tal, dependiendo de la cantidad de nodos que configure y el tiempo que tarde, es posible que tenga que volver a generar las claves.

Todo lo que sigue debe ejecutarse en el sistema que pasará a formar parte del clúster de ECS, como root.

A continuación, registre el sistema con SSM

amazon-ssm-agent -register -code “$ CODE” -id “$ ID” -region “AWS_DEFAULT_REGION”

Con el sistema registrado, ahora puede iniciar el servicio de agente de ssm de amazon

systemctl enable amazon-ssm-agent.service
systemctl start amazon-ssm-agent.service

Y para verificar que todo está en buen estado, ejecute

estado de systemctl amazon-ssm-agent.service

Cuando el servicio se inicia por primera vez, proporciona mensajes de advertencia sobre la configuración del registro. Estos pueden ignorarse. Verá “Worker ssm-agent-worker (pid: SOME_NUMBER) started” en la salida y con eso todo está en orden.

Ahora necesitamos configurar los archivos de configuración para ECS y luego terminamos

echo “ECS_CLUSTER = $ CLUSTER_NAME” >> / etc / ecs / ecs.config
mkdir / var / lib / ecs
echo “AWS_DEFAULT_REGION = $ AWS_DEFAULT_REGION” >> / var / lib / ecs / ecs.config
echo “ECS_EXTERNAL = true”> > /var/lib/ecs/ecs.config

Si tiene varios sistemas que está integrando en un clúster, puede copiar estos archivos de configuración.

systemctl enable docker.service
systemctl start docker.service
systemctl enable amazon-ecs.service
systemctl start amazon-ecs.service

Y para verificar que todo está funcionando, ejecute

estado de systemctl amazon-ecs.service

Por último, pero no menos importante, verifique que su sistema esté incluido en el clúster.

aws ecs lista-contenedor-instancias –cluster $ CLUSTER_NAME

Y eso fue todo. Para obtener detalles sobre la implementación de tareas y cómo funciona ECS desde la línea de comandos o la interfaz de usuario web, consulte la documentación de AWS correspondiente.

Ir al Blog