En este módulo, construirá la imagen del contenedor para su aplicación monolítica node.js y la enviará a Amazon Elastic Container Registry. Empezar a construir

implementar a amazon ecr

Los contenedores también le permiten empaquetar con facilidad el código de una aplicación, sus configuraciones y sus dependencias en componentes esenciales de uso sencillo que aportan uniformidad de entorno, eficacia operativa, productividad para los desarrolladores y control de versiones. Los contenedores pueden ayudarle a garantizar una implementación rápida, consistente y fiable de las aplicaciones independientemente del entorno.

información general de la arquitectura

Velocidad
El lanzamiento de un contenedor con una nueva versión de código puede realizarse sin considerables gastos generales de implementación. La velocidad operativa se mejora porque el código creado en un contenedor en un equipo local del desarrollador puede desplazarse fácilmente a un servidor de prueba simplemente moviendo el contenedor. Al momento de crear, este contenedor puede enlazarse a otros contenedores necesarios para ejecutar la pila de aplicaciones.

Control de dependencia y canalización mejorada
Una imagen de contenedores Docker es una captura de un determinado punto en el tiempo del código y de las dependencias de una aplicación. Esto le permite a una organización de ingeniería crear una canalización estándar para el ciclo de vida de la aplicación. Por ejemplo:

  1. Los desarrolladores crean y ejecutan el contenedor a nivel local.
  2. El servidor de integración continua ejecuta el mismo contenedor y las pruebas de integración frente al contenedor para asegurarse de que supere las expectativas.
  3. El mismo contenedor se envía a un entorno de almacenamiento donde su tiempo de ejecución se puede comprobar mediante pruebas de carga o control de calidad manual.
  4. El mismo contenedor se envía a la producción.

La posibilidad de crear, probar, enviar y ejecutar el mismo contenedor a través de todas las fases de la canalización de integración e implementación facilita la entrega de una aplicación de alta calidad y de confianza considerablemente más fácil.

Densidad y eficiencia de recursos
Los contenedores facilitan la eficacia de recursos mejorada al permitir múltiples procesos heterogéneos para ejecutarse en un único sistema. La eficacia de recursos es un resultado natural de las técnicas de asignación y aislamiento que usan los contenedores. Los contenedores pueden restringirse para consumir determinadas cantidades de la CPU y memoria de un host. Al comprender qué recursos necesita un contenedor y qué recursos se encuentran disponibles en el servidor del host subyacente, puede ajustar el tamaño de los recursos informáticos que utiliza con los hosts más pequeños o aumentar la densidad de los procesos que se ejecutan en un único gran host, al aumentar la disponibilidad y optimizar el consumo de recursos.

Flexibilidad
La flexibilidad de los contenedores Docker se basa en función de su portabilidad, la facilidad de implementación y tamaño pequeño. A diferencia de la instalación y configuración necesarias en una máquina virtual, los servicios de empaquetado dentro de contenedores les permiten moverse fácilmente entre hosts, aislados de errores de otros servicios adyacentes, y protegidos de las actualizaciones de software o parches descarriados en el sistema del host.

Tiempo de realización: 20 minutos

Servicios utilizados:


En la primera parte de este tutorial, creará la imagen del contenedor de Docker para su aplicación node.js monolítica y la enviará a Amazon Elastic Container Registry. Haga clic en cada número de paso para expandir la sección.

break-the-monolith
  • Paso 1. Obtener configuración

    En los próximos pasos, vamos a utilizar Docker, GitHub, Amazon ECS, y Amazon ECR para implementar el código en contenedores. Para poder completar estos pasos, deberá asegurarse de que dispone de las herramientas adecuadas.

    1. Tener una cuenta de AWS: Si no tiene una cuenta de AWS, puede inscribirse aquí. Todos los ejercicios en este tutorial están diseñados para ser cubiertos con la capa gratuita de AWS.
      ⚐ NOTA: Algunos de los servicios que utilizará pueden requerir que la cuenta esté activa durante más de 12 horas. Si experimenta problemas con los servicios y dispone de una nueva cuenta, espere unos horas e inténtelo de nuevo.
    2. Instalar Docker: Estará utilizando Docker para crear la imagen de archivos que se ejecutan en los contenedores. Docker es un proyecto de código abierto y se puede descargar aquí para Mac o para Windows.
      Una vez que se instala Docker, puede comprobar que está funcionando mediante la ejecución de Docker --version en el terminal. Debería ver algo similar a lo siguiente: Docker version 17.03.0-ce, build 60ccb22.
    3. Instale la CLI de AWS
      • Utilizará la interfaz de línea de comandos (CLI) de AWS para enviar las imágenes a Amazon Elastic Container Registry. Puede obtener más información sobre la CLI aquí.
      • Una vez que la CLI de AWS está instalada, puede comprobar que está funcionando mediante la ejecución de aws --version en el terminal. Debería ver algo similar a lo siguiente: aws-cli/1.11.63 Python/2.7.10 Darwin/16.5.0 botocore/1.5.26.
      • Si ya tiene instalada la CLI de AWS, ejecute el siguiente comando en el terminal para garantizar que se actualiza a la última versión: pip install awscli --upgrade --user
    4. Tener un editor de texto: Si aún no tiene un editor de texto para codificar, debe instalar uno a su entorno local. Atom es un sencillo editor de texto y de código abierto de GitHub que es conocido entre los desarrolladores.
  • Paso 2. Descargar y abrir el proyecto

    Descargar código de GitHub: Vaya a https://github.com/awslabs/amazon-ecs-nodejs-microservices y seleccione "Clone or Download" (Clonar o descargar) para descargar el repositorio GitHub a su entorno local. También puede utilizar el escritorio de GitHub o Git para clonar el repositorio.

    Abrir el proyecto Archivos: Inicie Atom, seleccione "Add Project Folder" (Añadir Carpeta) y seleccione la carpeta donde ha guardado el repositorio "amazon-ecs-nodejs-microservicios". Esto añadirá la totalidad del proyecto en Atom para que pueda trabajar con él.

    En su carpeta del proyecto, debe ver las carpetas de infraestructura y servicios. La infraestructura tiene el código de configuración de la infraestructura de AWS CloudFormation que utilizará en el siguiente paso. La carpeta Servicios contiene el código que conforma la aplicación de node.js.

    Tómese unos minutos para hacer clic en los archivos y familiarizarse con los diferentes aspectos de la aplicación, incluida la base de datos db.json, el servidor server.js, package.json y la aplicación dockerfile.

    proyecto de microservicios
  • Paso 3. Aprovisionar un repositorio

    Crear el repositorio:


    Registrar la información del repositorio:

    • Una vez que presiona Siguiente, debe obtener un mensaje similar al siguiente:
    crear
    • La dirección de repositorio sigue un formato sencillo: [account-id].dkr.ecr.[region].amazonaws.com/[repo-name].

     

    ⚐ NOTA: Necesitará esta dirección, incluido el ID de la cuenta y la región que esté utilizando en los siguientes pasos.

  • Paso 4. Crear y enviar la imagen de Docker

    Abra su terminal y defina la ruta a la sección2-containerized/services/api del código de GitHub en el directorio que haya que clonar o descargar en: ~/amazon-ecs-nodejs-microservices/2-containerized/services/api.

    Autenticar el inicio de sesión de Docker con AWS:

    1. Ejecute aws ecr get-login --no-include-email --region [region]. Ejemplo: aws ecr get-login --no-include-email --region us-west-2En caso de que nunca haya utilizado antes la CLI de AWS, es posible que necesite configurar sus credenciales.
    2. Va a obtener una salida masiva a partir de docker login -u AWS -p ... Copie esta salida completa, péguela y ejecútela en el terminal.
    3. Debería ver Inicio de sesión logrado.

    ⚐ NOTA: Si no logra este inicio de sesión, puede que sea porque tiene una versión más reciente de Docker que ha depreciado el indicador -e none. Para resolver el problema, pegue la salida en su editor de texto, elimine -e none desde el final de la salida y ejecute la salida actualizada en el terminal.

    • Cree la imagen: En el terminal, ejecute docker build -t api. NOTA, el . es importante aquí.
    • Etiquete la imagen: Después de la compilación se haya completado, etiquete la imagen para que pueda enviarla al repositorio: docker tag api:latest [account-id].dkr.ecr.[region].amazonaws.com/api:v1

    ⚐ Consejo profesional: :v1 representa la versión para crear la imagen. Cada vez que cree la imagen, debe aumentar este número de versión. Si utiliza un script, podría utilizar un número automatizado, como, por ejemplo, una marca temporal para etiquetar la imagen. Esta es una práctica recomendada sencilla que le permite volver a una versión anterior de imágenes de contenedores en el futuro.

    • Envíe la imagen a ECR: Ejecute docker push para a enviar su imagen a ECR: docker [push account-id].dkr.ecr.[region].amazonaws.com/api:latest

    Si va al repositorio de ECR, debería ver las imágenes etiquetadas a lo último.

    imágenes