Tutorial: Preparación de una aplicación para AKS

Se aplica a: AKS en Azure Stack HCI 22H2, AKS en Windows Server

En este tutorial, la parte uno de los siete, se prepara una aplicación de varios contenedores para su uso en un clúster de Kubernetes cuando se usa Azure Kubernetes Service habilitado por Azure Arc. Las herramientas de desarrollo existentes, como Docker Compose, se usan para compilar y probar una 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:

Esta ilustración muestra la imagen de contenedor de Azure Voting App que se ejecuta localmente en un explorador web local

En tutoriales posteriores, la imagen de contenedor se carga en un Azure Container Registry y, a continuación, se implementa en un clúster de Kubernetes.

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 para su configuración en Windows.

Nota

AKS no incluye los componentes de Docker necesarios para completar todos los pasos de estos tutoriales. 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 de votación básica, con un componente web front-end y una instancia back-end de Redis. El componente web se empaqueta en una imagen de contenedor personalizada. La instancia de Redis usa una imagen sin modificar de Docker Hub.

Use GitHub para clonar la aplicación de ejemplo en el entorno de desarrollo:

git clone https://github.com/Azure-Samples/azure-voting-app-redis.git

Cambie al directorio clonado:

cd azure-voting-app-redis

En el directorio se encuentra el código fuente de la aplicación, un archivo de Docker Compose creado previamente y un archivo de manifiesto de Kubernetes. Estos archivos se usan en todo el conjunto del tutorial. El contenido y la estructura del directorio son los siguientes:

azure-voting-app-redis
│   azure-vote-all-in-one-redis.yaml
│   docker-compose.yaml
│   LICENSE
│   README.md
│
├───azure-vote
│   │   app_init.supervisord.conf
│   │   Dockerfile
│   │   Dockerfile-for-app-service
│   │   sshd_config
│   │
│   └───azure-vote
│       │   config_file.cfg
│       │   main.py
│       │
│       ├───static
│       │       default.css
│       │
│       └───templates
│               index.html
│
└───jenkins-tutorial
        config-jenkins.sh
        deploy-jenkins-vm.sh

Creación de imágenes de contenedor

Puede usar Docker Compose para automatizar la creación de imágenes de contenedor y la implementación de aplicaciones de varios contenedores.

Use el archivo docker-compose.yaml de ejemplo para crear la imagen de contenedor, descargar la imagen de Redis e iniciar la aplicación:

docker-compose up -d

Cuando haya finalizado, use el comando docker images para ver las imágenes creadas. Se han descargado o creado tres imágenes. La imagen azure-vote-front contiene la aplicación de front-end y usa la imagen nginx-flask como base. La imagen redis se usa para iniciar una instancia de Redis.

$ docker images

REPOSITORY                                     TAG                 IMAGE ID            CREATED             SIZE
mcr.microsoft.com/azuredocs/azure-vote-front   v1                  84b41c268ad9        9 seconds ago       944MB
mcr.microsoft.com/oss/bitnami/redis            6.0.8               3a54a920bb6c        2 days ago          103MB
tiangolo/uwsgi-nginx-flask                     python3.6           a16ce562e863        6 weeks ago         944MB

Ejecute el comando docker ps para ver los contenedores en ejecución:

$ docker ps

CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS              PORTS                           NAMES
d10e5244f237        mcr.microsoft.com/azuredocs/azure-vote-front:v1   "/entrypoint.sh /sta…"   3 minutes ago       Up 3 minutes        443/tcp, 0.0.0.0:8080->80/tcp   azure-vote-front
21574cb38c1f        mcr.microsoft.com/oss/bitnami/redis:6.0.8         "/opt/bitnami/script…"   3 minutes ago       Up 3 minutes        0.0.0.0:6379->6379/tcp          azure-vote-back

Prueba local de la aplicación

Para ver la aplicación en ejecución, escriba 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 imagen de contenedor que la aplicación de votación de Azure se ejecuta localmente abierta en un explorador web local

Limpieza de recursos

Ahora que la funcionalidad de la aplicación se ha validado, los contenedores en ejecución se pueden detener y eliminar. No elimine las imágenes de contenedor (en el siguiente tutorial, la imagen azure-vote-front se carga en una instancia de Azure Container Registry).

Detenga y quite las instancias de contenedor y los recursos con el comando docker-compose down:

docker-compose down

Al quitar la aplicación local, tiene una imagen de Docker que contiene la aplicación Azure Vote, azure-vote-front, para su uso con el siguiente tutorial.

Pasos siguientes

En este tutorial, se ha probado una aplicación y se han creado imágenes del contenedor para 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

Pase al siguiente tutorial para aprender a almacenar imágenes de contenedor en Azure Container Registry.