Noticias

Ejecute cargas de trabajo de ECS Anywhere con Ubuntu en cualquier infraestructura

ECS Anywhere le permite utilizar el servicio de contenedor de Amazon Web Services fuera de la nubarrón de AWS, y Canonical se enorgullece de ser un socio introductorio de este servicio. Si utiliza Ubuntu como sistema eficaz pulvínulo para sus clústeres de ECS en el sitio o en otro división, puede beneficiarse del soporte de hardware líder en el mundo, los servicios profesionales y un vasto ecosistema de Ubuntu para que sus clústeres de ECS puedan ejecutarse con un rendimiento magnífico dondequiera que se encuentre. faltar .

Este ejemplo muestra cómo ejecutar el agente ECS Anywhere en un servidor Ubuntu locorregional. Usaremos Multipass para afectar un servidor locorregional. Sin bloqueo, puede seguir estas instrucciones en cualquier traducción compatible de Ubuntu, ya sea en su centro de datos o en una nubarrón pública.

requisitos

Para participar, la utilidad AWS CLI debe estar instalada y configurada en su computadora. Usaremos Multipass para crear una VM de Ubuntu, pero puede ejecutar estas instrucciones directamente en sus servidores de Ubuntu donde desea ejecutar las cargas de trabajo de ECS Anywhere. Con Multipass, puede descargar realizable y rápidamente máquinas virtuales oficiales de Ubuntu para Windows, macOS y Linux.

Para instalar Multipass en Linux:

sudo snap install multipass

Determinar variables de inicio

En su computadora Linux que tiene la AWS CLI instalada (no necesariamente la computadora en la que ejecutará las cargas de trabajo de ECS Anywhere), configure las variables de entorno:

AWS_DEFAULT_REGION=us-east-1
ROLE_NAME=ecsMithrilRole
CLUSTER_NAME=test-ecs-anywhere
SERVICE_NAME=test-ecs-anywhere-svc

Crea el rol de IAM

Cree un archivo llamado ssm-trust-policy.json con el próximo contenido:


  "Version": "2012-10-17",
  "Statement": 
    "Effect": "Allow",
    "Principal": "Service": [
      "ssm.amazonaws.com"
    ],
    "Action": "sts:AssumeRole"
  

Luego crea el rol y verifica:

aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://ssm-trust-policy.json

aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role

# Verify
aws iam list-attached-role-policies --role-name $ROLE_NAME

Cree un clúster de ECS Anywhere

Cree el clúster de ECS Anywhere y la esencia de activación:

aws ecs create-cluster --cluster-name $CLUSTER_NAME

aws ssm create-activation --iam-role $ROLE_NAME | tee ssm-activation.json

Inicie una máquina supuesto de Ubuntu con multipass (opcional)

Ahora vamos a crear una máquina supuesto Ubuntu 20.04 con Multipass. Este paso no es necesario si ya tiene un servidor Ubuntu en el que desea ejecutar las cargas de trabajo de ECS Anywhere. Esto podría ser cualquier máquina supuesto de Ubuntu o máquina completa en su centro de datos, o incluso una instancia de Ubuntu que se ejecuta en otra nubarrón pública. Si es así, simplemente ejecute estos comandos directamente en ese servidor:

multipass launch focal -n ecs-anywhere-ubuntu

Instale el agente ECS Anywhere y el software requerido en Ubuntu

Ahora instalemos el agente ECS Anywhere en el servidor Ubuntu. Asegúrese de reemplazar ACTIVATION_ID y ACTIVATION_CODE con los generados en los pasos anteriores:

# Run all commands on the Ubuntu system where you will run the ECS workloads

export ACTIVATION_ID=<your activation ID>
export ACTIVATION_CODE=<your activation code>

# Download the ecs-anywhere install Script 
curl -o "ecs-anywhere-install.sh" "https://amazon-ecs-agent-packages-preview.s3.us-east-1.amazonaws.com/ecs-anywhere-install.sh" && sudo chmod +x ecs-anywhere-install.sh

# (Optional) Check integrity of the shell script
curl -o "ecs-anywhere-install.sh.sha256" "https://amazon-ecs-agent-packages-preview.s3.us-east-1.amazonaws.com/ecs-anywhere-install.sh.sha256" && sha256sum -c ecs-anywhere-install.sh.sha256

# Run the install script
sudo ./ecs-anywhere-install.sh 
    --cluster test-ecs-anywhere 
    --activation-id $ACTIVATION_ID 
    --activation-code $ACTIVATION_CODE 
    --region us-east-1

Confirma la instalación

Cuando se complete la instalación, finalice la sesión SSH y regrese a su computadora donde ejecutó los comandos originales de la AWS CLI. Asegúrese de que las instancias estén conectadas y en ejecución:

aws ssm describe-instance-information

aws ecs list-container-instances --cluster $CLUSTER_NAME

Registre la definición de la tarea y ahora ejecute la tarea desde la hilera de comando

Cree un archivo llamado external-task-definition.json con el próximo contenido:


  "requiresCompatibilities": [
    "EXTERNAL"
  ],
  "containerDefinitions": [
    
      "name": "nginx",
      "image": "nginx:latest",
      "memory": 256,
      "cpu": 256,
      "essential": true,
      "portMappings": [
        
          "containerPort": 80,
          "hostPort": 8080,
          "protocol": "tcp"
        
      ]
    
  ],
  "networkMode": "bridge",
  "family": "nginx"

Luego, registre una nueva definición de tarea para nuestro clúster ECS Anywhere y realice esta tarea en su servidor Ubuntu.

#Register the task definition
aws ecs register-task-definition --cli-input-json file://external-task-definition.json

#Run the task
aws ecs run-task --cluster $CLUSTER_NAME --launch-type EXTERNAL --task-definition nginx

#Get the Task ID
TEST_TASKID=$(aws ecs list-tasks --cluster $CLUSTER_NAME | jq -r '.taskArns[0]')

#Verify Task is Running
aws ecs describe-tasks --cluster $CLUSTER_NAME --tasks $TEST_TASKID

Compruebe si el contenedor está escuchando

Ahora debería poder ir a http: // : Cambie a 8080 y vea cómo se ejecuta nginx localmente.

acicalar

Para acicalar, haga lo próximo:

# Cleanup SSM
aws ssm describe-activations | jq ".ActivationList | .[] | .ActivationId" | xargs -L 1 aws ssm delete-activation --activation-id

aws ssm describe-instance-information | jq ".InstanceInformationList | .[] | .InstanceId" | grep "mi-" | xargs -L 1 aws ssm deregister-managed-instance --instance-id

# Cleanup ECS resources
aws ecs list-container-instances --cluster $CLUSTER_NAME | jq ".containerInstanceArns | .[]" | xargs -L 1 aws ecs deregister-container-instance --cluster $CLUSTER_NAME --force --container-instance

aws ecs delete-cluster --cluster $CLUSTER_NAME

# Verify all items deleted are empty
aws ssm describe-activations
aws ssm describe-instance-information
aws ecs list-container-instances --cluster $CLUSTER_NAME

#Remove Multipass VM (optional)
multipass stop ecs-anywhere-ubuntu
multipass delete ecs-anywhere-ubuntu

Breviario

Con ECS Anywhere, puede ejecutar contenedores AWS ECS en cualquier servidor Ubuntu, ya sea en su centro de datos o en una nubarrón pública.

En este ejemplo, hemos implementado una aplicación como una tarea independiente. Consulte la documentación de AWS para ver ejemplos de cómo implementar una aplicación ECS para que se ejecute de forma continua o cómo colocarla detrás de un equilibrador de carga.

Póngase en contacto con Canonical hoy mismo para combinar ECS Anywhere con Ubuntu Advantage para parches de kernel en vivo, soporte completo para miles de paquetes, módulos FIPS y muchos otros beneficios.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba