Celem tego laboratorium jest zapoznanie się z Deployment oraz rollout’ami w K8s.
W ramach wykonywanych poleceń przygotujesz Deployment, zreskalujesz liczbę Podów, zbudujesz nowszą wersję aplikacji i wdrożysz ją używając strategii Rollout.
- Zbuduj obraz aplikacji webowej używając dowolnego frameworka/narzędzia tak, by pod adresem ‘/’ był zwracany string “Wersja 1.0.0” lub JSON z podobną treścią. Przy budowaniu użyj taga
v1, np.:
$docker build -t my-app:v1 .
Pamiętaj, że K8s domyślnie próbuje pobierać obrazy z registry więc jeśli nie chcesz pushować zbudowanego obrazu na Dockerhub, upewnij się, że budujesz obraz w otoczeniu K8s:$ eval $(minikube docker-env)– ustawia zmienne środowiskowe powłoki by korzystawała z daemona Dockerowego wewnątrz Minikube. By sprawdzić czy zadziałało poprawnie wykonaj
$docker info | grep Name, powinno zwrócić linijkę jak np.Name: minikube. - Przygotuj Deployment w uruchamiający 2 repliki tej aplikacji. Ustaw
imagePullPolicy: Neverby korzystać ze wcześniej zbudowanego obrazu. - Sprawdź Pody i dopisz wynik do pliku
report.txt.
$ {date; kubectl get pods; } >> report.txt - Podbij liczbę replik Poda w Deployment do 4, zaaplikuj zmiany, sprawdź Pody.
- Dopisz listę Podów oraz opis stanu Deployment do pliku
report.txt.
$ {date; kubectl get pods; kubectl describe deployments <nazwa deployment>; } >> report.txt - Zmodyfikuj konfiguracje deploymentu. Dodaj następujące parametry:
revisionHistoryLimit: 3
progressDeadlineSeconds: 300
minReadySeconds: 10
oraz ustaw strategię nowych wdrożeń by korzystała zRolloutUpdateprzymaxUnavailable: 1orazmaxSurge: 1. - Zaaplikuj zmiany i zapisz nowy stan Deployment do
report.txt
${ date; kubectl describe deployments <nazwa Deployment>; } >> report.txt. - Stwórz nowy Service typu NodePort by udostępnić uruchomioną aplikację.
W zależności od OS możesz zweryfikować poprawność działania poprzez:$ curl $(minikube ip):<nodePort z Service>
albo na MacOS poprzez uruchomienie:
$minikube service <nazwa uruchomionego Service>
I potem:
$curl <ip z wyniku polecenia wyżej>:<nodePort z Service>. - Dopisz wynik polecenia powyżej do pliku
report.txt:$ curl $(<polecenie z poprzedniego kroku) >> report.txt - Zmodyfikuj aplikacje by zwracała “Wersja 2” zamiast “Wersja 1”, zbuduj nowy obraz otagowany jako
v1.
$docker build -t my-app:v2 . - Podmień tag obraza z v1 na v2 w pliku yaml Deployment. Zaaplikuj zmiany. Zapisz stan do pliku reports.txt:
${ date; kubectl describe deployments <nazwa Deployment>; } >> report.txt.
Dopisz output z aplikacji do pliku reports.txt jak w kroku 9.