Aggiornare un'applicazione in Kubernetes

Dopo aver distribuito un'applicazione in Kubernetes, è possibile aggiornarla specificando una nuova immagine del contenitore o una nuova versione dell'immagine. Quando si aggiorna un'applicazione, viene eseguito lo staging dell'implementazione dell'aggiornamento, in modo che solo una parte della distribuzione sia aggiornata contemporaneamente. Questo aggiornamento in staging consente all'applicazione di continuare la sua esecuzione durante l'aggiornamento e fornisce un meccanismo di rollback in caso si verifichi un errore nella distribuzione.

In questa esercitazione, parte sei di sette, viene aggiornata l'app Azure Vote di esempio. Le attività da completare comprendono:

  • Aggiornamento del codice dell'applicazione front-end
  • Creazione di un'immagine del contenitore aggiornata
  • Push dell'immagine del contenitore in Registro contenitori di Azure
  • Distribuzione di un'immagine del contenitore aggiornata

Nelle esercitazioni successive, Operations Management Suite verrà configurato per monitorare il cluster Kubernetes.

Prima di iniziare

Nelle esercitazioni precedenti è stato creato un pacchetto di un'applicazione in un'immagine del contenitore, caricata poi in Registro contenitori di Azure, ed è stato creato un cluster Kubernetes. L'applicazione è stata quindi eseguita nel cluster Kubernetes.

Se questi passaggi non sono stati ancora eseguiti e si vuole procedere, tornare a Esercitazione 1 - Creare immagini del contenitore.

Aggiornare l'applicazione

Per completare i passaggi di questa esercitazione, è necessario avere clonato una copia dell'applicazione Azure Vote. Se necessario, creare la copia clonata con il comando seguente:

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

Aprire il file config_file.cfg con qualsiasi editor di testo o codice. È possibile trovare questo file nella directory seguente del repository clonato.

 /azure-voting-app-redis/azure-vote/azure-vote/config_file.cfg

Cambiare i valori per VOTE1VALUE e VOTE2VALUE, quindi salvare il file.

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

Usare docker-compose per ricreare l'immagine front-end ed eseguire l'applicazione aggiornata.

docker-compose -f ./azure-voting-app-redis/docker-compose.yaml up --build -d

Testare l'applicazione in locale

Passare a http://localhost:8080 per vedere l'applicazione aggiornata.

Immagine del cluster Kubernetes in Azure

Applicare tag ed eseguire il push delle immagini

Applicare all'immagine azure voto-anteriore il tag loginServer del registro contenitori.

Se si usa il Registro contenitori di Azure, ottenere il nome di accesso del server con il comando az acr list.

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

Usare docker tag per assegnare il tag all'immagine. Sostituire <acrLoginServer> con il nome di accesso del server del Registro contenitori di Azure o un nome host di un registro pubblico.

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

Usare docker push per caricare l'immagine nel registro. Sostituire <acrLoginServer> con il nome di accesso del server del Registro contenitori di Azure o un nome host di un registro pubblico.

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

Distribuire l'aggiornamento dell'applicazione

Per garantire il tempo di attività massimo, è necessario eseguire più istanze del pod dell'applicazione. Verificare questa configurazione con il comando kubectl get pod.

kubectl get pod

Output:

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

Se non si dispone di più pod che eseguono l'immagine azure-vote-front, scalare la distribuzione azure-vote-front.

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

Per aggiornare l'applicazione, usare il comando kubectl set. Aggiornare <acrLoginServer> con il server di accesso o il nome host del registro contenitori.

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

Per monitorare la distribuzione, utilizzare il comando kubectl get pod. Quando l'applicazione aggiornata viene distribuita, le unità vengono terminate e ricreate con la nuova immagine del contenitore.

kubectl get pod

Output:

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

Testare l'applicazione aggiornata

Ottenere l'indirizzo IP esterno del servizio azure-vote-front.

kubectl get service azure-vote-front

Passare all'indirizzo IP per vedere l'applicazione aggiornata.

Immagine del cluster Kubernetes in Azure

Passaggi successivi

In questa esercitazione è stata aggiornata un'applicazione e l'aggiornamento è stato distribuito in un cluster Kubernetes. Sono state completate le attività seguenti:

  • Aggiornamento del codice dell'applicazione front-end
  • Creazione di un'immagine del contenitore aggiornata
  • Push dell'immagine del contenitore in Registro contenitori di Azure
  • Distribuzione dell'applicazione aggiornata

Passare alla prossima esercitazione per apprendere come monitorare Kubernetes con Operations Management Suite.