Comparteix a través de


Tutorial: Preparación de una aplicación para Azure Kubernetes Service (AKS)

En este tutorial, la primera parte de siete, se prepara una aplicación con varios contenedores para usarla en Kubernetes. Puede usar herramientas de desarrollo existentes, como Docker Compose, para compilar y probar la aplicación localmente. Aprenderá a:

  • Clonar el origen de una aplicación de ejemplo desde GitHub.
  • Crear una imagen de contenedor a partir del origen de la aplicación de ejemplo.
  • Probar la aplicación con varios contenedores en un entorno local de Docker.

Tras finalizar, la siguiente aplicación se ejecuta en su entorno de desarrollo local:

Captura de pantalla que muestra la aplicación front-end de Azure Store que se ejecuta localmente abierta en un explorador web local.

En tutoriales posteriores, la imagen de contenedor se carga en una instancia de Azure Container Registry (ACR) y después se implementa en un clúster de AKS.

Antes de empezar

En este tutorial se asume que el usuario tiene un conocimiento básico de los principales conceptos de Docker, como los contenedores, las imágenes de contenedor y los comandos de docker. Si es necesario, consulte la introducción a Docker, donde encontrará datos básicos acerca de los contenedores.

Para completar este tutorial, se necesita un entorno de desarrollo de Docker local en el que se ejecuten contenedores Linux. Docker proporciona paquetes que lo configuran en cualquier sistema Mac, Windows o Linux.

Nota:

Azure Cloud Shell no incluye los componentes de Docker necesarios para completar todos los pasos de este tutorial. Por lo tanto, se recomienda usar un entorno completo de desarrollo de Docker.


Obtención del código de la aplicación

La aplicación de ejemplo que se usa en este tutorial es una aplicación front-end de la tienda básica, incluidos los siguientes implementaciones y servicios de Kubernetes:

Captura de pantalla de la arquitectura de ejemplo de Azure Store.

  • Escaparate: aplicación web para que los clientes vean productos y realicen pedidos.
  • Servicio de producto: muestra información del producto.
  • Servicio de pedidos: realiza pedidos.
  • Rabbit MQ: cola de mensajes para una cola de pedidos.
  1. Use git para clonar la aplicación en su entorno de desarrollo.

    git clone https://github.com/Azure-Samples/aks-store-demo.git
    
  2. Cambie al directorio clonado.

    cd aks-store-demo
    

Revisión del archivo de Docker Compose

La aplicación de ejemplo que se crea en este tutorial usa el archivo YAML docker-compose-quickstart en el repositorio que ha clonado.

services:
  rabbitmq:
    image: rabbitmq:3.13.2-management-alpine
    container_name: 'rabbitmq'
    restart: always
    environment:
      - "RABBITMQ_DEFAULT_USER=username"
      - "RABBITMQ_DEFAULT_PASS=password"
    ports:
      - 15672:15672
      - 5672:5672
    healthcheck:
      test: ["CMD", "rabbitmqctl", "status"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - ./rabbitmq_enabled_plugins:/etc/rabbitmq/enabled_plugins
    networks:
      - backend_services
  order-service:
    build: src/order-service
    container_name: 'order-service'
    restart: always
    ports:
      - 3000:3000
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://order-service:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    environment:
      - ORDER_QUEUE_HOSTNAME=rabbitmq
      - ORDER_QUEUE_PORT=5672
      - ORDER_QUEUE_USERNAME=username
      - ORDER_QUEUE_PASSWORD=password
      - ORDER_QUEUE_NAME=orders
      - ORDER_QUEUE_RECONNECT_LIMIT=3
    networks:
      - backend_services
    depends_on:
      rabbitmq:
        condition: service_healthy
  product-service:
    build: src/product-service
    container_name: 'product-service'
    restart: always
    ports:
      - 3002:3002
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://product-service:3002/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    environment:
      - AI_SERVICE_URL=http://ai-service:5001/
    networks:
      - backend_services
  store-front:
    build: src/store-front
    container_name: 'store-front'
    restart: always
    ports:
      - 8080:8080
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://store-front:80/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    environment:
      - VUE_APP_PRODUCT_SERVICE_URL=http://product-service:3002/
      - VUE_APP_ORDER_SERVICE_URL=http://order-service:3000/
    networks:
      - backend_services
    depends_on:
      - product-service
      - order-service
networks:
  backend_services:
    driver: bridge

Creación de imágenes de contenedor y ejecución de la aplicación

Se puede utilizar Docker Compose para automatizar la creación de imágenes de contenedor y la implementación de aplicaciones con varios contenedores.

Docker

  1. Cree la imagen de contenedor, descargue la imagen rabbitMQ e inicie la aplicación con el comando docker compose :

    docker compose -f docker-compose-quickstart.yml up -d
    
  2. Vea las imágenes creadas mediante el comando docker images.

    docker images
    

    En la siguiente salida de ejemplo reducida se muestran las imágenes creadas:

    REPOSITORY                        TAG                          IMAGE ID
    aks-store-demo-product-service    latest                       72f5cd7e6b84
    aks-store-demo-order-service      latest                       54ad5de546f9
    aks-store-demo-store-front        latest                       1125f85632ae
    rabbitmq                          3.13.2-management-alpine     b1dafc50c098
    ...
    
  3. Vea los contenedores en ejecución mediante el comando docker ps.

    docker ps
    

    En la salida de ejemplo condensada siguiente se muestran cuatro contenedores en ejecución:

    CONTAINER ID        IMAGE
    f27fe74cfd0a        aks-store-demo-product-service
    df1eaa137885        aks-store-demo-order-service
    b3ce9e496e96        aks-store-demo-store-front
    31df28627ffa        rabbitmq:3.13.2-management-alpine
    

Prueba local de la aplicación

Para ver la aplicación en ejecución, vaya a http://localhost:8080 en un explorador web local. Se carga la aplicación de ejemplo, como se muestra en el ejemplo siguiente:

Captura de pantalla que muestra la aplicación front-end de Azure Store abierta en un explorador local.

En esta página, puede ver los productos, agregarlos al carro y, a continuación, realizar un pedido.

Limpieza de recursos

Puesto que validó la funcionalidad de la aplicación, puede detener y quitar los contenedores en ejecución. No elimine las imágenes de contenedor: las usará en el siguiente tutorial.

  • Para detener y quitar las instancias de contenedor y los recursos, use el comando docker-compose down.

    docker compose down
    

Pasos siguientes

En este tutorial, ha creado una aplicación de ejemplo e imágenes de contenedor para la aplicación y, después, ha probado la aplicación. Ha aprendido a:

  • Clonar el origen de una aplicación de ejemplo desde GitHub.
  • Crear una imagen de contenedor a partir del origen de la aplicación de ejemplo.
  • Probar la aplicación con varios contenedores en un entorno local de Docker.

En el tutorial siguiente, descubrirá cómo almacenar imágenes de contenedor en una instancia de ACR.