Tutorial: Actualización de una aplicación en Azure Kubernetes Service (AKS)

Después de implementar una aplicación en Kubernetes, se puede actualizar especificando una nueva imagen de contenedor o la versión de la imagen. Una actualización se preconfigura para que solo una parte de la implementación se actualice al mismo tiempo. Esta actualización preconfigurada permite que la aplicación siga ejecutándose durante la actualización. También proporciona un mecanismo de reversión si se produce un error de implementación.

En este tutorial, la sección seis de siete, se actualiza la aplicación de ejemplo de Azure Vote. Aprenderá a:

  • Actualizar el código de la aplicación de front-end
  • Crear una imagen de contenedor actualizada
  • Insertar una imagen de contenedor en Azure Container Registry
  • Implementar la imagen de contenedor actualizada

Antes de empezar

En los tutoriales anteriores se empaquetó una aplicación en una imagen de contenedor. Esta imagen se cargó en Azure Container Registry y el usuario creó un clúster de AKS. Luego la aplicación se implementó en el clúster de AKS.

También se clonó un repositorio de aplicaciones que incluye el código fuente de la aplicación y un archivo de Docker Compose creado previamente que se usa en este tutorial. Confirme que ha creado un clon del repositorio y que ha cambiado los directorios en el repositorio clonado. Si no ha finalizado estos pasos y desea continuar, comience con el Tutorial 1: Creación de imágenes de contenedor.

Para realizar este tutorial es necesario ejecutar la versión 2.0.53, o superior, de la CLI de Azure. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

Actualización de una aplicación

Vamos a realizar un cambio en la aplicación de ejemplo y, después, a actualizar la versión ya implementada en el clúster de AKS. Asegúrese de que está en el directorio clonado azure-voting-app-redis. El código fuente de la aplicación de ejemplo se puede encontrar en el directorio azure-vote. Abra el archivo config_file.cfg con un editor, como vi:

vi azure-vote/azure-vote/config_file.cfg

Cambie los valores de VOTE1VALUE y VOTE2VALUE por otros diferentes, como colores. En el ejemplo siguiente se muestran los valores actualizados:

# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'

Guarde y cierre el archivo. En vi, use :wq.

Actualización de la imagen del contenedor

Para volver a crear la imagen del front-end y probar la aplicación actualizada, use docker-compose. El argumento --build se emplea para indicar a Docker Compose que vuelva a crear la imagen de la aplicación.

docker-compose up --build -d

Prueba de la aplicación de forma local

Para comprobar que la imagen de contenedor actualizada muestra los cambios, abra un explorador web local en http://localhost:8080.

Screenshot showing an example of the updated container image Azure Voting App running locally opened in a local web browser

Los valores actualizados que se proporcionan en el archivo config_file.cfg se muestran en la aplicación en ejecución.

Etiquetado e inserción de la imagen

Para usar correctamente la imagen actualizada, etiquete la imagen azure-vote-front con el nombre del servidor de inicio de sesión de seguridad del registro de ACR. Para obtener el nombre del servidor de inicio de sesión, use el comando az acr list:

az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

Use la docker tag para etiquetar la imagen. Reemplace <acrLoginServer> por el nombre del servidor de inicio de sesión de ACR o el nombre de host del registro público y actualice la versión de la imagen a : v2 como se muestra a continuación:

docker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <acrLoginServer>/azure-vote-front:v2

Ahora use docker push para cargar la imagen en el registro. Reemplace <acrLoginServer> por el nombre del servidor de inicio de sesión de ACR.

Nota:

Si surgen problemas al realizar inserciones en el registro de ACR, asegúrese de que no se ha cerrado la sesión. Ejecute el comando az acr login y use el nombre de la instancia de Azure Container Registry que creó en el paso Creación de una instancia de Azure Container Registry. Por ejemplo, az acr login --name <azure container registry name>.

docker push <acrLoginServer>/azure-vote-front:v2

Implementación de la aplicación actualizada

Para proporcionar el tiempo máximo de actividad, se deben ejecutar varias instancias del pod de aplicación. Compruebe el número de instancias de front-end en ejecución con el comando kubectl get pods:

$ kubectl get pods

NAME                               READY     STATUS    RESTARTS   AGE
azure-vote-back-217588096-5w632    1/1       Running   0          10m
azure-vote-front-233282510-b5pkz   1/1       Running   0          10m
azure-vote-front-233282510-dhrtr   1/1       Running   0          10m
azure-vote-front-233282510-pqbfk   1/1       Running   0          10m

Si no tiene varios pods de front-end, escale la implementación de azure-vote-front de la manera siguiente:

kubectl scale --replicas=3 deployment/azure-vote-front

Use el comando kubectl set para actualizar la aplicación. Actualice <acrLoginServer> con el nombre de host o de servidor de inicio de sesión del registro del contenedor y especifique la versión de la aplicación v2:

kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:v2

Para supervisar la implementación, use el comando kubectl get pod. A medida que se implementa la aplicación actualizada, sus pods se terminan y se vuelven a crear con la nueva imagen de contenedor.

kubectl get pods

La salida del ejemplo siguiente muestra los pods que terminan y las nuevas instancias que se ejecutan a medida que progresa la implementación:

$ kubectl get pods

NAME                               READY     STATUS        RESTARTS   AGE
azure-vote-back-2978095810-gq9g0   1/1       Running       0          5m
azure-vote-front-1297194256-tpjlg  1/1       Running       0          1m
azure-vote-front-1297194256-tptnx  1/1       Running       0          5m
azure-vote-front-1297194256-zktw9  1/1       Terminating   0          1m

Prueba de la aplicación actualizada

Para ver la aplicación actualizada, obtenga primero la dirección IP externa del servicio azure-vote-front:

kubectl get service azure-vote-front

Ahora, abra un explorador web a la dirección IP del servicio:

Screenshot showing an example of the updated image Azure Voting App running in an AKS cluster opened in a local web browser.

Pasos siguientes

En este tutorial, ha actualizado una aplicación y ha implementado esta actualización en el clúster de AKS. Ha aprendido a:

  • Actualizar el código de la aplicación de front-end
  • Crear una imagen de contenedor actualizada
  • Insertar una imagen de contenedor en Azure Container Registry
  • Implementar la imagen de contenedor actualizada

Pase al siguiente tutorial para aprender a actualizar un clúster de AKS a una nueva versión de Kubernetes.