Laboratorinio darbo tikslas - paleisti savo mikroservisą Kubernetes clusteryje, kuris yra Microsoft Azure Cloude (AKS).
Laboratorinio darbo žingsniai ir įvertinimas už kiekvieną žingsnį yra žemiau. Prieš pradėdami užsiregistruokite laboratoriniam darbui: čia
-
Github ir Dockerhub repo paruošimas (4 balai)
-
Susigeneruokite ssh rsa public ir private raktų porą panaudodami
ssh-keygen
programą terminale$ ssh-keygen
-
Public key įdėti į savo github paskyrą
-
Sukurkite tcentric/cloud-lab fork’ą savo github paskyroje - 2 balai
-
Nusiklonuokite savo nuforkintą github repo lokaliai su
git clone
. Visi kodo pakeitimai bus daromi lokaliai -
Sukurtame forke įjungti ir sukonfigūruoti Github Actions. Action įsijungia https://github.com/features/actions. Action'as konfigūruojasi paprastai, sukurkite aplanką
.github/workflows
, į jį įdėkite šį failą (pakeisti <JŪSŲ DOCKERHUB USERNAME> į savo) Failo pavadinimas turi būti release.yml - 2 balai Atkreipkite dėmesį į lygiavimą Išsaugoję failą galite pasižiūrėti ar lygiavimas tiesingas atsidarę release workflow savo github repo (github.com)name: Publish Release on: release: types: [published] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Define vars run: | echo ${{ github.ref }} | cut -d '/' -f 3 > DOCKER_TAG - name: Build and push docker image run: | docker build --tag <JŪSŲ DOCKERHUB USERNAME>/cloud-lab:$(cat DOCKER_TAG) . docker login --username ${{ secrets.DOCKER_USER }} --password ${{ secrets.DOCKER_TOKEN }} docker push <JŪSŲ DOCKERHUB USERNAME>/cloud-lab:$(cat DOCKER_TAG)
-
Docker HUB paruošimas - 1 balas
- Sukurkite repozitoriją "cloud-lab"
- Sugeneruokite personal access token'ą ir išsaugokite vėlesniam panaudojimui
-
Sukonfigūruokite du secret environment variables Github’e. Repo Settings->Secrets.
- DOCKER_TOKEN – dockerhub personal token (iš prieš tai buvusio žingsnio)
- DOCKER_USER – dockerhub username
-
Pakeitimus išsaugokite savo github repozitorijoje panaudojant git commit ir git push
-
-
Konteinerizuotos aplikacijos paleidimas Kubernetes clusteryje (1 balas)
- Parsisiųskite kubeconfig'ą su komanda:
mkdir ~/.kube && curl -X GET -s https://b79d2d57-c967-4074-948e-3ad103dccedb.lab.cloudcat.online/kubeconfig/<JŪSŲ github username> > ~/.kube/config
Arbamkdir .kube
einame į vidųcd .kube
ir parsiunčiame configącurl -X GET -s https://b79d2d57-c967-4074-948e-3ad103dccedb.lab.cloudcat.online/kubeconfig/<username> -o config
- Sukurkite naują release savo github repo, pavadinkite jį v0.1 - 1 balas
- Paruoškite kubernetes manifestus (įrašyti informaciją prie TODO pažymėtų vietų) žiūrėti čia
- Nusiųskite manifestus į kubernetes clusterį su komanda:
kubectl apply -f infrastructure/k8s/
1 balas - Atskirame terminalo lange įvykdykite komandą
kubectl port-forward svc/lab 8080:80
- Naršyklėje atsidarykite: http://localhost:8080 - tai jūsų aplikacija Kuebrnetes clusteryje. Ji automatiškai tikrinis 4 etapo užduotis ir matysite, kada užduotis bus įvykdyta
- Parsisiųskite kubeconfig'ą su komanda:
-
API serviso pakeitimai ir deploymentas (3 balai)
- Pridėti papildomą http endpointą į API servisą /{username} žiūrėti čia - 1 balas Turbūt paredaguoti esamą endpoint iš 'username' į savo username. Toks pat endpoint kviečia du handlerius
- Naujai pridėtas endpointas turėtų grąžinti Sha256 username'o hashą žiūrėti čia
- Pakeitimus išsaugoti savo git repo su git commit ir git push
- Adarykite naują release githube, pavadinkite jį v0.2
- Po to, kai github Actions subuildins naują Docker image'ą, atnaujinkinte jį savo kubernetes deploymente su komanda:
kubectl set image deploy lab app=<DOCKER_USER>/cloud-lab:v0.2
- 2 balai
-
Commands used during deployment:
installs necesary files:
sudo snap install kubectl --classic
sudo apt install curl
environmental variable KUBECONFIG:
Linux:
unset KUBECONFIG
export KUBECONFIG=$KUBECONFIG:$HOME/Desktop/kube/cloud-lab/cloud-lab/.kube/config
shows config in current directory from \.kube\config file
kubectl config view --kubeconfig='.kube\config' | grep namespace
kubectl apply -f infrastructure\k8s\
kubectl port-forward svc/lab 8080:80
kubectl get pod
kubectl set image deploy lab app=youstinus/cloud-lab:v0.2