Tutorial: Actualización de una aplicación en Azure Kubernetes Service (AKS)Tutorial: Update an application in 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.After an application has been deployed in Kubernetes, it can be updated by specifying a new container image or image version. Una actualización se preconfigura para que solo una parte de la implementación se actualice al mismo tiempo.An update is staged so that only a portion of the deployment is updated at the same time. Esta actualización preconfigurada permite que la aplicación siga ejecutándose durante la actualización.This staged update enables the application to keep running during the update. También proporciona un mecanismo de reversión si se produce un error de implementación.It also provides a rollback mechanism if a deployment failure occurs.

En este tutorial, la sección seis de siete, se actualiza la aplicación de ejemplo de Azure Vote.In this tutorial, part six of seven, the sample Azure Vote app is updated. Aprenderá a:You learn how to:

  • Actualizar el código de la aplicación de front-endUpdate the front-end application code
  • Crear una imagen de contenedor actualizadaCreate an updated container image
  • Insertar una imagen de contenedor en Azure Container RegistryPush the container image to Azure Container Registry
  • Implementar la imagen de contenedor actualizadaDeploy the updated container image

Antes de empezarBefore you begin

En los tutoriales anteriores se empaquetó una aplicación en una imagen de contenedor.In previous tutorials, an application was packaged into a container image. Esta imagen se cargó en Azure Container Registry y el usuario creó un clúster de AKS.This image was uploaded to Azure Container Registry, and you created an AKS cluster. Luego la aplicación se implementó en el clúster de AKS.The application was then deployed to the AKS cluster.

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.An application repository was also cloned that includes the application source code, and a pre-created Docker Compose file used in this tutorial. Confirme que ha creado un clon del repositorio y que ha cambiado los directorios en el repositorio clonado.Verify that you've created a clone of the repo, and have changed directories into the cloned directory. Si no ha finalizado estos pasos y desea continuar, comience con el Tutorial 1: Creación de imágenes de contenedor.If you haven't completed these steps, and want to follow along, start with Tutorial 1 – Create container images.

Para realizar este tutorial es necesario ejecutar la versión 2.0.53, o superior, de la CLI de Azure.This tutorial requires that you're running the Azure CLI version 2.0.53 or later. Ejecute az --version para encontrar la versión.Run az --version to find the version. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.If you need to install or upgrade, see Install Azure CLI.

Actualización de una aplicaciónUpdate an application

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.Let's make a change to the sample application, then update the version already deployed to your AKS cluster. Asegúrese de que está en el directorio clonado azure-voting-app-redis.Make sure that you're in the cloned azure-voting-app-redis directory. El código fuente de la aplicación de ejemplo se puede encontrar en el directorio azure-vote.The sample application source code can then be found inside the azure-vote directory. Abra el archivo config_file.cfg con un editor, como vi:Open the config_file.cfg file with an editor, such as vi:

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

Cambie los valores de VOTE1VALUE y VOTE2VALUE por otros diferentes, como colores.Change the values for VOTE1VALUE and VOTE2VALUE to different values, such as colors. En el ejemplo siguiente se muestran los valores actualizados:The following example shows the updated values:

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

Guarde y cierre el archivo.Save and close the file. En vi, use :wq.In vi, use :wq.

Actualización de la imagen del contenedorUpdate the container image

Para volver a crear la imagen del front-end y probar la aplicación actualizada, use docker-compose.To re-create the front-end image and test the updated application, use docker-compose. El argumento --build se emplea para indicar a Docker Compose que vuelva a crear la imagen de la aplicación.The --build argument is used to instruct Docker Compose to re-create the application image:

docker-compose up --build -d

Prueba de la aplicación de forma localTest the application locally

Para comprobar que la imagen de contenedor actualizada muestra los cambios, abra un explorador web local en http://localhost:8080.To verify that the updated container image shows your changes, open a local web browser to http://localhost:8080.

Imagen del clúster de Kubernetes en Azure

Los valores actualizados que se proporcionan en el archivo config_file.cfg se muestran en la aplicación en ejecución.The updated values provided in the config_file.cfg file are displayed in your running application.

Etiquetado e inserción de la imagenTag and push the image

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.To correctly use the updated image, tag the azure-vote-front image with the login server name of your ACR registry. Para obtener el nombre del servidor de inicio de sesión, use el comando az acr list:Get the login server name with the az acr list command:

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

Use la docker tag para etiquetar la imagen.Use docker tag to tag the image. 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:Replace <acrLoginServer> with your ACR login server name or public registry hostname, and update the image version to :v2 as follows:

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

Ahora use docker push para cargar la imagen en el registro.Now use docker push to upload the image to your registry. Reemplace <acrLoginServer> por el nombre del servidor de inicio de sesión de ACR.Replace <acrLoginServer> with your ACR login server name.

Nota

Si surgen problemas al realizar inserciones en el registro de ACR, asegúrese de que no se ha cerrado la sesión.If you experience issues pushing to your ACR registry, make sure that you are still logged in. 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.Run the az acr login command using the name of your Azure Container Registry that you created in the Create an Azure Container Registry step. Por ejemplo, az acr login --name <azure container registry name>.For example, az acr login --name <azure container registry name>.

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

Implementación de la aplicación actualizadaDeploy the updated application

Para proporcionar el tiempo máximo de actividad, se deben ejecutar varias instancias del pod de aplicación.To provide maximum uptime, multiple instances of the application pod must be running. Compruebe el número de instancias de front-end en ejecución con el comando kubectl get pods:Verify the number of running front-end instances with the kubectl get pods command:

$ 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:If you don't have multiple front-end pods, scale the azure-vote-front deployment as follows:

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

Use el comando kubectl set para actualizar la aplicación.To update the application, use the kubectl set command. 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:Update <acrLoginServer> with the login server or host name of your container registry, and specify the v2 application version:

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.To monitor the deployment, use the kubectl get pod command. A medida que se implementa la aplicación actualizada, sus pods se terminan y se vuelven a crear con la nueva imagen de contenedor.As the updated application is deployed, your pods are terminated and re-created with the new container image.

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:The following example output shows pods terminating and new instances running as the deployment progresses:

$ 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 actualizadaTest the updated application

Para ver la aplicación actualizada, obtenga primero la dirección IP externa del servicio azure-vote-front:To view the update application, first get the external IP address of the azure-vote-front service:

kubectl get service azure-vote-front

Ahora, abra un explorador web local en la dirección IP del servicio:Now open a local web browser to the IP address of your service:

Imagen del clúster de Kubernetes en Azure

Pasos siguientesNext steps

En este tutorial, ha actualizado una aplicación y ha implementado esta actualización en el clúster de AKS.In this tutorial, you updated an application and rolled out this update to your AKS cluster. Ha aprendido a:You learned how to:

  • Actualizar el código de la aplicación de front-endUpdate the front-end application code
  • Crear una imagen de contenedor actualizadaCreate an updated container image
  • Insertar una imagen de contenedor en Azure Container RegistryPush the container image to Azure Container Registry
  • Implementar la imagen de contenedor actualizadaDeploy the updated container image

Pase al siguiente tutorial para aprender a actualizar un clúster de AKS a una nueva versión de Kubernetes.Advance to the next tutorial to learn how to upgrade an AKS cluster to a new version of Kubernetes.