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.
Tabla de Contenidos
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: //
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.