Skip to content

SzymonWilczewski/kubernetes-comments-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Projekt Technologie Chmurowe

Aplikacja podzielona jest na katalog "frontend" (React), "backend" (Express łączący się wewnątrz klastra z Mongo i Redisem) oraz "k8s" zawierający wszystkie pliki konfiguracyjne Kubernetesa. Aplikacja służy do dodawania i usuwania dowolnych komentarzy do bazy Mongo lub Redis. W Mongo dane są trwałe, a w Redisie ulotne. Frontend posiada trzy instancje, których ilość można zmniejszyć/zwiększyć według potrzeb, a Express i bazy danych po jednej.

Uruchamianie projektu

Preliminaries

# Ensure ingress-nginx is running kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.46.0/deploy/static/provider/cloud/deploy.yaml kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx # Ensure kube-dns is running kubectl get services kube-dns --namespace=kube-system 

/k8s

kubectl apply -f . 

http://localhost/

Namespaces

# Create namespaces kubectl create namespace development kubectl create namespace production # Create context kubectl config set-context dev --namespace=development --cluster=docker-desktop --user=docker-desktop kubectl config set-context prod --namespace=production --cluster=docker-desktop --user=docker-desktop # Switch between context kubectl config use-context dev kubectl config use-context prod # Check current context kubectl config current-context kubectl config get-contexts 

Zespół deweloperski pracuje nad kolejnymi wersjami aplikacji (w kontekście "dev", żeby nie trzeba było przy każdej komendzie używać flagi --namespace), a każda kolejna wersja jest publikowana za pomocą następujących komend:

/backend

docker build -t backend . docker tag backend szymonwilczewski/tc-backend:<wersja> docker push szymonwilczewski/tc-backend:<wersja> 

/frontend

docker build -t frontend . docker tag frontend szymonwilczewski/tc-frontend:<wersja> docker push szymonwilczewski/tc-frontend:<wersja> 

Następnie zmieniany jest tag w deploymencie i po uruchomieniu nowego deploymentu zmiany są widoczne w namespace deweloperskim

/k8s

kubectl apply -f . 

Gdy aplikacja jest już gotowa i działa stabilnie zespół deweloperski publikuje "pełną wersję" aplikacji (np. Dev-1.0) i można zmienić tag w deploymencie w namespace produkcyjnym i wprowadzić zmiany

/prod

kubectl config use-context prod kubectl apply -f . 

W razie potrzeby zmiany można w łatwy sposób cofnąć poprzez komendy:

# Rollout history kubectl rollout history deployment frontend-deployment # Change rollout version kubectl rollout undo deployment frontend-deployment [--to-revision=0]