Självstudie: Uppdatera ett program i Azure Kubernetes Service (AKS)

När ett program har distribuerats i Kubernetes kan du uppdatera det genom att ange en ny containeravbildning eller avbildningsversion. En uppdatering mellanlagras så att bara en del av distributionen uppdateras samtidigt. Den här mellanlagrade uppdateringen gör att programmet kan fortsätta att köras under uppdateringen. Det ger också en mekanism för återställning om ett distributionsfel inträffar.

I den här självstudien, som är del sex av sju, uppdateras Azure Vote-exempelappen. Lär dig att:

  • Uppdatera klientdelens programkod
  • Skapa en uppdaterad containeravbildning
  • Överföra containeravbildningen till Azure Container Registry
  • Distribuera den uppdaterade containeravbildningen

Innan du börjar

I tidigare självstudier paketerades en app i en containeravbildning. Den här avbildningen laddades upp till Azure Container Registry, och du skapade ett AKS-kluster. Programmet distribuerades sedan till AKS-klustret.

En programlagringsplats klonades också som inkluderar programmets källkod och en färdig Docker Compose-fil som används i den här självstudien. Verifiera att du har skapat en klon av lagringsplatsen och har ändrat kataloger i den klonade katalogen. Om du inte har slutfört dessa steg och vill följa med börjar du med Självstudie 1 – Skapa containeravbildningar.

Den här självstudien kräver att du kör Azure CLI version 2.0.53 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Uppdatera ett program

Vi gör en ändring i exempelprogrammet och uppdaterar sedan den version som redan har distribuerats till ditt AKS-kluster. Se till att befinna dig i den klonade azure-voting-app-redis-katalogen. Exempelprogrammets källkod finns sedan inuti katalogen azure-vote. Öppna filen config_file.cfg med en textredigerare, till exempel vi:

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

Ändra värdena för VOTE1VALUE och VOTE2VALUE till olika värden, till exempel färger. I följande exempel visas de uppdaterade värdena:

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

Spara och stäng filen. I vi använder du :wq.

Uppdatera containeravbildningen

För att återskapa klientdelsavbildningen och testa det uppdaterade programmet använder du docker-compose. Argumentet --build används till att instruera Docker Compose att återskapa programavbildningen:

docker-compose up --build -d

Testa appen lokalt

För att kontrollera att den uppdaterade containeravbildningen visar dina ändringar öppnar du en lokal webbläsare till http://localhost:8080.

Skärmbild som visar ett exempel på den uppdaterade containeravbildningen Azure Voting App som körs lokalt öppnad i en lokal webbläsare

De uppdaterade värdena som anges i filen config_file.cfg visas i appen som körs.

Tagga och överföra avbildningen

För att använda den uppdaterade avbildningen på rätt sätt taggar du avbildningen azure-vote-front med inloggningsservernamnet för ACR-registret. Hämta inloggningsservernamnet med kommandot az acr list :

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

Använd docker tag till att tagga avbildningen. Ersätt <acrLoginServer> med namnet på ACR-inloggningsservern eller värdnamnet för det offentliga registret och uppdatera avbildningsversionen till :v2 på följande sätt:

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

Använd nu docker push för att ladda upp avbildningen till registret. Ersätt <acrLoginServer> med namnet på din ACR-inloggningsserver.

Anteckning

Om du har problem med att push-överföra till ditt ACR-register kontrollerar du att du fortfarande är inloggad. Kör kommandot az acr login med namnet på din Azure Container Registry som du skapade i steget Skapa en Azure Container Registry. Till exempel az acr login --name <azure container registry name>.

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

Distribuera det uppdaterade programmet

Du får minimala störningar om flera instanser av programpodden körs. Kontrollera antalet klientdelsinstanser som körs med kommandot 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

Om du inte har flera klientdelspoddar skalar du azure-vote-front-distributionen på följande sätt:

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

När du ska uppdatera programmet använder du kommandot kubectl set. Uppdatera <acrLoginServer> med inloggningsservern eller värdnamnet på ditt containerregister, och ange programversionen v2:

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

Du övervakar distributionen med kommandot kubectl get pod. Eftersom det uppdaterade programmet är distribuerat avslutas dina poddar och återskapas med den nya containeravbildningen.

kubectl get pods

Följande exempelutdata visar poddar som avslutas och nya instanser som körs medan distributionen pågår:

$ 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

Testa det uppdaterade programmet

Om du vill visa det uppdaterade programmet hämtar du först den externa IP-adressen för tjänsten azure-vote-front:

kubectl get service azure-vote-front

Öppna nu en webbläsare till IP-adressen för din tjänst:

Skärmbild som visar ett exempel på den uppdaterade avbildningen Azure Voting App som körs i ett AKS-kluster som öppnas i en lokal webbläsare.

Nästa steg

I den här självstudien har du uppdaterat ett program och distribuerat uppdateringen till ditt AKS-kluster. Du har lärt dig att:

  • Uppdatera klientdelens programkod
  • Skapa en uppdaterad containeravbildning
  • Överföra containeravbildningen till Azure Container Registry
  • Distribuera den uppdaterade containeravbildningen

Gå vidare till nästa självstudie och lär dig hur du uppgraderar ett AKS-kluster till en ny version av Kubernetes.