Samouczek: aktualizowanie aplikacji w usłudze Azure Kubernetes Service (AKS)
Po wdrożeniu aplikacji w usłudze Kubernetes można ją zmodyfikować, określając nowy obraz kontenera lub wersję obrazu. Aktualizacja jest przygotowywana tak, aby tylko część wdrożenia była aktualizowana w tym samym czasie. Ta aktualizacja etapowa umożliwia kontynuowanie działania podczas aktualizacji aplikacji. Udostępnia ona również mechanizm wycofywania w przypadku niepowodzenia wdrożenia.
W tym samouczku (część szósta z siedmiu) aktualizowana jest przykładowa aplikacja do głosowania platformy Azure. Omawiane kwestie:
- Aktualizowanie kodu aplikacji frontonu
- Tworzenie zaktualizowanego obrazu kontenera
- Wypychanie obrazu kontenera do usługi Azure Container Registry
- Wdrażanie zaktualizowanego obrazu kontenera
Zanim rozpoczniesz
W poprzednich samouczkach aplikacja była spakowana do obrazu kontenera. Ten obraz został przekazany do usługi Azure Container Registry i utworzono klaster usługi AKS. Aplikacja została następnie wdrożona w klastrze usługi AKS.
Sklonowano również repozytorium aplikacji, w tym kod źródłowy aplikacji i utworzony wcześniej plik narzędzia Docker Compose używany w tym samouczku. Sprawdź, czy został utworzony klon repozytorium oraz czy katalogi zostały zmienione na sklonowany katalog. Jeśli nie wykonano tych kroków, a chcesz kontynuować pracę, zacznij od części Samouczek 1 — tworzenie obrazów kontenera.
Ten samouczek wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.0.53 lub nowszej. Uruchom polecenie az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Aktualizowanie aplikacji
Wprowadźmy zmianę w przykładowej aplikacji, a następnie zaktualizujmy wersję już wdrożoną do klastra usługi AKS. Upewnij się, że jesteś w sklonowanym katalogu azure-voting-app-redis. Kod źródłowy aplikacji przykładowej znajduje się wówczas w katalogu azure-vote. Otwórz plik config_file.cfg za pomocą edytora, takiego jak vi
:
vi azure-vote/azure-vote/config_file.cfg
Zmień wartości parametrów VOTE1VALUE i VOTE2VALUE na różne wartości, na przykład kolory. Poniższy przykład przedstawia zaktualizowane wartości:
# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'
Zapisz i zamknij plik. W programie vi
użyj polecenia :wq
.
Aktualizowanie obrazu kontenera
Użyj narzędzia docker-compose, aby ponownie utworzyć obraz frontonu i przetestować zaktualizowaną aplikację. Argument --build
jest używany w celu poinstruowania narzędzia Docker Compose o konieczności ponownego utworzenia obrazu aplikacji:
docker-compose up --build -d
Testowanie aplikacji w środowisku lokalnym
Aby sprawdzić, czy w zaktualizowanym obrazie kontenera wyświetlane są wprowadzone zmiany, otwórz stronę http://localhost:8080
w lokalnej przeglądarce internetowej.
Zaktualizowane wartości w pliku config_file.cfg są wyświetlane w uruchomionej aplikacji.
Tagowanie i wypychanie obrazu
Aby w sposób prawidłowy użyć zaktualizowanego obrazu, otaguj obraz azure-vote-front za pomocą nazwy serwera logowania usługi ACR. Nazwę serwera logowania uzyskaj przy użyciu polecenia az acr list:
az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
Użyj polecenia docker tag w celu otagowania obrazu. Zastąp wartość <acrLoginServer>
nazwą serwera logowania usługi ACR lub nazwą hosta rejestru publicznego i zaktualizuj wersję obrazu do wartości :v2 w następujący sposób:
docker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <acrLoginServer>/azure-vote-front:v2
Następnie użyj polecenia docker push w celu przekazania obrazu do rejestru. Zastąp wartość <acrLoginServer>
nazwą serwera logowania usługi ACR.
Uwaga
Jeśli wystąpią problemy z wypychaniem do rejestru usługi ACR, upewnij się, że nadal się zalogowano. Uruchom polecenie az acr login przy użyciu nazwy Azure Container Registry utworzonej w kroku Tworzenie Azure Container Registry. Na przykład az acr login --name <azure container registry name>
.
docker push <acrLoginServer>/azure-vote-front:v2
Wdrażanie zaktualizowanej aplikacji
Aby zapewnić maksymalny czas działania, należy uruchomić wiele wystąpień zasobnika aplikacji. Sprawdź liczbę uruchomionych wystąpień frontonu, używając polecenia 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
Jeśli nie masz wielu zasobników frontonu, przeskaluj wdrożenie azure-vote-front w następujący sposób:
kubectl scale --replicas=3 deployment/azure-vote-front
Aby zaktualizować aplikację, użyj polecenia kubectl set. Zaktualizuj wartość <acrLoginServer>
nazwą serwera logowania lub nazwą hosta rejestru kontenerów, a następnie określ wersję aplikacji v2:
kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:v2
Aby monitorować wdrożenie, użyj polecenia kubectl get pod. Podczas wdrażania aplikacji działanie zasobników jest przerywane, a następnie są one ponownie tworzone przy użyciu obrazu kontenera.
kubectl get pods
Poniższe przykładowe dane wyjściowe przedstawiają zasobniki kończące swoje działanie oraz nowe wystąpienia uruchamiane w miarę postępów wdrażania:
$ 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
Testowanie zaktualizowanej aplikacji
Aby wyświetlić zaktualizowaną aplikację, najpierw uzyskaj zewnętrzny adres IP usługi azure-vote-front
:
kubectl get service azure-vote-front
Teraz otwórz przeglądarkę internetową pod adresem IP usługi:
Następne kroki
W tym samouczku zaktualizowano aplikację i wydano tę aktualizację do klastra usługi AKS. W tym samouczku omówiono:
- Aktualizowanie kodu aplikacji frontonu
- Tworzenie zaktualizowanego obrazu kontenera
- Wypychanie obrazu kontenera do usługi Azure Container Registry
- Wdrażanie zaktualizowanego obrazu kontenera
Przejdź do następnego samouczka, aby dowiedzieć się, jak uaktualnić klaster AKS do nowej wersji klastra Kubernetes.