Migre aplicaciones Java locales para AWS usar AWS App2Container - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Migre aplicaciones Java locales para AWS usar AWS App2Container

Creado por Dhananjay Karanjkar () AWS

Entorno: PoC o piloto

Origen: aplicaciones

Objetivo: aplicación contenerizada desplegada en Amazon ECS

Tipo R: redefinir la plataforma

Carga de trabajo: código abierto

Tecnologías: migración; aplicaciones web y móviles

AWSservicios: Amazon EC2 Container Registry; Amazon ECS

Resumen

Aviso: ya no AWS CodeCommit está disponible para nuevos clientes. Los clientes actuales de AWS CodeCommit pueden seguir utilizando el servicio con normalidad. Más información

AWSApp2Container (A2C) es una herramienta de línea de comandos que ayuda a transformar las aplicaciones existentes que se ejecutan en máquinas virtuales en contenedores, sin necesidad de cambiar el código. A2C descubre las aplicaciones que se ejecutan en un servidor, identifica las dependencias y genera los artefactos relevantes para una implementación perfecta en Amazon Elastic Container Service (AmazonECS) y Amazon Elastic Kubernetes Service (Amazon). EKS

Este patrón proporciona los pasos para migrar de forma remota las aplicaciones Java locales implementadas en un servidor de aplicaciones a AWS Fargate o EKS Amazon mediante App2Container a través de la máquina de trabajo. 

La máquina de trabajo se puede utilizar en los siguientes casos de uso:

  • La instalación de Docker no está permitida o no está disponible en los servidores de aplicaciones donde se ejecutan las aplicaciones Java.

  • Debe gestionar la migración de varias aplicaciones implementadas en distintos servidores físicos o virtuales.

Este patrón utiliza, y. AWS CodeCommit AWS CodePipeline AWS CodeBuild

Requisitos previos y limitaciones

Requisitos previos 

  • Un servidor de aplicaciones con una aplicación Java que se ejecuta en un servidor Linux

  • Una máquina de trabajo con un sistema operativo Linux

  • Una máquina de trabajo con al menos 20 GB de espacio disponible en disco

Limitaciones

Arquitectura

Pila de tecnología de origen

  • Aplicaciones Java que se ejecutan en un servidor Linux

Pila de tecnología de destino

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodeDeploy

  • AWS CodePipeline

  • Amazon Elastic Container Registry

  • AWS Fargate

Arquitectura de destino

Arquitectura para aplicaciones Java locales enAWS.

Herramientas

Herramientas

  • AWSApp2Container: AWS App2Container (A2C) es una herramienta de línea de comandos que le ayuda a seleccionar y cambiar las aplicaciones que se ejecutan en sus centros de datos locales o en máquinas virtuales, para que se ejecuten en contenedores gestionados por Amazon o Amazon. ECS EKS

  • AWS CodeBuild— AWS CodeBuild es un servicio de compilación en la nube totalmente gestionado. CodeBuild compila el código fuente, ejecuta pruebas unitarias y produce artefactos listos para su despliegue.

  • AWS CodeCommit— AWS CodeCommit es un servicio de control de versiones alojado por Amazon Web Services que puede utilizar para almacenar y gestionar de forma privada activos (como documentos, código fuente y archivos binarios) en la nube.

  • AWS CodePipeline— AWS CodePipeline es un servicio de entrega continua que puede utilizar para modelar, visualizar y automatizar los pasos necesarios para lanzar su software.

  • Amazon ECS: Amazon Elastic Container Service (AmazonECS) es un servicio de administración de contenedores rápido y altamente escalable que permite ejecutar, detener y administrar contenedores en un clúster.

  • Amazon ECR: Amazon Elastic Container Registry (AmazonECR) es un servicio AWS gestionado de registro de imágenes de contenedores seguro, escalable y fiable.

  • Amazon EKS: Amazon Elastic Kubernetes Service (EKSAmazon) es un servicio gestionado que puede utilizar para ejecutar AWS Kubernetes sin necesidad de instalar, operar ni mantener su propio plano de control o nodos de Kubernetes.

  • AWSFargate: AWS Fargate es una tecnología que puedes usar con Amazon ECS para ejecutar contenedores sin tener que administrar servidores o clústeres de instancias de Amazon Elastic Compute Cloud (Amazon). EC2 Con Fargate, ya no tendrá que aprovisionar, configurar ni escalar clústeres de máquinas virtuales para ejecutar los contenedores.

Epics

TareaDescripciónHabilidades requeridas

Cree un secreto para acceder al servidor de aplicaciones.

Para acceder al servidor de aplicaciones de forma remota desde la máquina de trabajo, cree un secreto en AWS Secrets Manager. Para su secreto, puede usar la clave SSH privada o el certificado y la clave SSH privada. Para obtener más información, consulte Administrar los secretos de AWS App2Container.

DevOps, desarrollador
TareaDescripciónHabilidades requeridas

Instalar el archivo tar.

Ejecute sudo yum install -y tar.

DevOps, Desarrollador

Instale el AWSCLI.

Para instalar la interfaz de línea de comandos de Amazon (AWSCLI), ejecutecurl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

Descomprima awscliv2.zip.

Ejecute sudo ./aws/install.

DevOps, Desarrollador

Instale App2Container.

Ejecute los comandos siguientes:

curl -o AWSApp2Container-installer-linux.tar.gz https://app2container-release-us-east-1.s3.us-east-1.amazonaws.com/latest/linux/AWSApp2Container-installer-linux.tar.gz

sudo tar xvf AWSApp2Container-installer-linux.tar.gz

sudo ./install.sh

DevOps, Desarrollador

Configure los perfiles.

Para configurar el perfil AWS predeterminado, ejecutesudo aws configure.

Para configurar el perfil AWS predeterminado nombrado, ejecutesudo aws configure --profile <profile name>.

DevOps, Desarrollador

Instalar Docker.

Ejecute los siguientes comandos.

sudo yum install -y docker

sudo systemctl enable docker & sudo systemctl restart docker

Inicie App2Container.

Para inicializar App2Container, necesita la siguiente información:

  • workspace: para almacenar los artefactos de contenerización de aplicaciones. Recomendamos aportar una ruta de directorio que tenga al menos 20 GB de espacio libre en disco.

  • awsProfile: AWS perfil configurado en el servidor. Esto es necesario para cargar artefactos en Amazon S3, ejecutar el containerize comando y generar AWS artefactos para su despliegue en Amazon ECS o AmazonEKS.

  • s3Bucket: Para extraer y almacenar AWS artefactos.

  • metricsReportPermission: para recopilar y almacenar las métricas reportadas.

  • dockerContentTrust: para firmar la imagen de Docker.

Ejecute sudo app2container init.

DevOps, Desarrollador
TareaDescripciónHabilidades requeridas

Configure la máquina de trabajo para conectarse remotamente y ejecutar los comandos de App2Container en el servidor de aplicaciones.

Para configurar la máquina de trabajo, se requiere la siguiente información:

  • Server FQDN: el nombre completo del dominio del servidor de aplicaciones.

  • Server IP address: la dirección IP del servidor de aplicaciones. La dirección IP FQDN o la dirección IP son suficientes.

  • SecretARN: El nombre del recurso de Amazon (ARN) del secreto que se utiliza para conectarse al servidor de aplicaciones y que se almacena en Secrets Manager.

  • AuthMethod: el método de autenticación key o cert.

Ejecute sudo app2container remote configure.

DevOps, Desarrollador
TareaDescripciónHabilidades requeridas

Descubra las aplicaciones Java en las instalaciones.

Para descubrir de forma remota todas las aplicaciones en ejecución en el servidor de aplicaciones, ejecute el siguiente comando.

sudo app2container remote inventory --target <FQDN/IP of App server>

Este comando genera una lista de las aplicaciones implementadas en inventory.json.

Desarrollador, DevOps

Analice las aplicaciones descubiertas.

Para analizar de forma remota cada aplicación mediante el identificador de aplicación obtenido en la fase de inventario, ejecute el siguiente comando.

sudo app2container remote analyze --application-id <java-app-id> --target <FQDN/IP of App Server>

Esto genera un archivo analysis.json en la ubicación del espacio de trabajo. Una vez generado este archivo, puede modificar los parámetros de contenerización en función de sus necesidades.

Desarrollador, DevOps

Extraiga las aplicaciones analizadas.

Para generar un archivo de aplicaciones para la aplicación analizada, ejecute de forma remota el siguiente comando, que generará el paquete tar en la ubicación del espacio de trabajo.

sudo app2container remote extract --application-id <application id> --target <FQDN/IP of App Server>

Los artefactos extraídos se pueden generar en la máquina de trabajo local.

Desarrollador, DevOps
TareaDescripciónHabilidades requeridas

Coloque en contenedores los artefactos extraídos.

Guarde en contenedores los artefactos extraídos en el paso anterior ejecutando el siguiente comando.

sudo app2container containerize --input-archive <tar bundle location on worker machine>

Desarrollador, DevOps

Finalice el objetivo.

Para finalizar el objetivo, abra deployment.json, que se crea cuando se ejecuta el comando containerize. Para especificar AWS Fargate como objetivo, createEcsArtifacts establézcalo en. true Para establecer Amazon EKS como objetivo, establézcalo createEksArtifacts en true.

Desarrollador, DevOps
TareaDescripciónHabilidades requeridas

Genere artefactos de AWS despliegue en la máquina de trabajo.

Para generar artefactos de implementación, ejecute el siguiente comando.

sudo app2container generate app-deployment --application-id <application id>

Esto genera la ecs-master.yml AWS CloudFormation plantilla en el espacio de trabajo.

DevOps

Aprovisione los artefactos.

Para aprovisionar aún más los artefactos generados, implemente la AWS CloudFormation plantilla ejecutando el siguiente comando.

aws cloudformation deploy --template-file <path to ecs-master.yml> --capabilities CAPABILITY_NAMED_IAM --stack-name <application id>–ECS

DevOps

Genere la canalización.

Modifique pipeline.json, que se creó en la historia anterior, en función de sus necesidades. A continuación, ejecute el comando generate pipeline para generar los artefactos de implementación de la canalización.

DevOps

Recursos relacionados