Självstudie: Uppdatera ett program i AKS aktiverat av Azure Arc
Gäller för: AKS på Azure Local 22H2, AKS på Windows Server
När du har distribuerat ett program i Kubernetes med hjälp av AKS aktiverat av Arc kan du uppdatera det genom att ange en ny containeravbildning eller avbildningsversion. Du bör mellanlagra en uppdatering så att endast 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, del sex av sju, beskrivs hur du uppdaterar Azure Vote-exempelappen. Du lär dig hur du:
- 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 har du lärt dig att:
- Paketera ett program i en containeravbildning och ladda upp avbildningen till Azure Container Registry.
- Skapa ett Kubernetes-kluster på Azure Local och distribuera programmet till klustret.
- Klona en programlagringsplats som innehåller programkällkoden och en i förväg skapad Docker Compose-fil som du kan använda i den här självstudien.
Kontrollera att du har skapat en klon av lagringsplatsen och ändrat kataloger till den klonade katalogen. Om du inte har slutfört de här stegen 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
I det här avsnittet beskrivs hur du gör en ändring i exempelprogrammet och sedan uppdaterar 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 redigerare, till exempel Anteckningar:
notepad 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.
Uppdatera containeravbildningen
För att återskapa klientdelsavbildningen och testa det uppdaterade programmet använder du docker-compose. Argumentet --build
används för att återskapa programbilden:
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
.
De uppdaterade värdena som anges i config_file.cfg visas i ditt program som körs.
Tagga och överföra avbildningen
Om du vill använda den uppdaterade avbildningen korrekt taggar du azure-vote-front-avbildningen med inloggningsservernamnet för din Azure Container Registry-instans. 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å containerregistrets inloggningsserver eller det offentliga registrets värdnamn och uppdatera avbildningsversionen till v2 enligt följande:
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 ditt Azure Container Registry-inloggningsservernamn.
Kommentar
Om du har problem med att skicka till containerregistret kontrollerar du att du fortfarande är inloggad.
Kör kommandot az acr login med namnet på ditt Azure Container Registry som du skapade i steget Skapa ett Azure Container Registry. Exempel: az acr login --name <azure container registry name>
docker push <acrLoginServer>/azure-vote-front:v2
Distribuera det uppdaterade programmet
För att ge maximal drifttid måste du köra flera instanser av programpodden. 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. När det uppdaterade programmet distribueras avslutas dina poddar och skapas igen 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 sedan en webbläsare till IP-adressen för din tjänst:
Nästa steg
I den här självstudien har du uppdaterat ett program och distribuerat den här uppdateringen till ditt Kubernetes-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 för att lära dig hur du uppgraderar ett kluster till en ny version av Kubernetes.