Skip to content
Cloud-Computing-UPBPublic

About

CC lab 4

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Cloud Computing – Laboratorul 4

Acest repository continuă aplicația Ticketing API din Laboratoarele 1–3 și introduce gestionarea aplicațiilor Kubernetes cu Helm. Codul aplicației a rămas intenționat stabil, schimbarea importantă fiind în modul de împachetare, configurare, instalare și versionare a resurselor din cluster.

Chart-ul charts/ticketing instalează împreună:

  • un Deployment și un Service pentru Ticketing API
  • un ConfigMap și un Secret pentru configurație
  • un StatefulSet, un Service headless și un PVC pentru PostgreSQL
  • un test Helm care verifică endpoint-ul /readyz.

Structura repository-ului

.
├── .github/workflows/ci.yml
├── charts
│   └── ticketing
│       ├── Chart.yaml
│       ├── values.yaml
│       ├── values-scale.yaml
│       ├── values.schema.json
│       └── templates
├── internal
├── k8s-reference
├── Dockerfile
├── docker-compose.yml
├── kind-config.yaml
└── main.go

Directorul k8s-reference păstrează manifestele netemplatizate din Laboratorul 3 numai pentru comparație. Instalarea din acest laborator se face prin chart-ul Helm.

Cerințe

  • Docker
  • kubectl
  • kind
  • Helm 3
  • curl sau un client HTTP echivalent.

Validarea chart-ului

helm lint charts/ticketing --strict

helm template ticketing charts/ticketing \
  --namespace cc-lab4

Fișierul values.schema.json validează valorile înainte ca manifestele să fie trimise către Kubernetes.

Pornire rapidă

Manifestele generate folosesc imaginea publică:

ghcr.io/cloud-computing-upb/lab4:1.0.0

Creați clusterul și instalați release-ul:

kind create cluster --name cc-lab4 --config kind-config.yaml

helm upgrade --install ticketing charts/ticketing \
  --namespace cc-lab4 \
  --create-namespace \
  --wait \
  --timeout 3m

Inspectați rezultatul:

helm status ticketing -n cc-lab4
kubectl get deployments,statefulsets,pods,services,pvc -n cc-lab4

Accesarea aplicației

kubectl port-forward service/ticketing-api -n cc-lab4 8080:80

În alt terminal:

curl http://localhost:8080/livez
curl http://localhost:8080/readyz
curl http://localhost:8080/info
curl http://localhost:8080/tickets

Testul inclus în chart poate fi rulat cu:

helm test ticketing -n cc-lab4 --logs

Upgrade și rollback

Overlay-ul values-scale.yaml mărește numărul de replici și schimbă versiunea raportată de endpoint-ul /info:

helm upgrade ticketing charts/ticketing \
  --namespace cc-lab4 \
  --values charts/ticketing/values.yaml \
  --values charts/ticketing/values-scale.yaml \
  --wait \
  --timeout 3m

helm history ticketing -n cc-lab4

Reveniți la prima revizie:

helm rollback ticketing 1 -n cc-lab4 --wait --timeout 3m

Împachetarea chart-ului

mkdir -p dist
helm package charts/ticketing --destination dist
helm show chart dist/ticketing-0.1.0.tgz

Workflow-ul GitHub Actions verifică formatarea și testele Go, validează și împachetează chart-ul, apoi construiește imaginea multi-platformă. La un tag v1.0.0, imaginea publicată în GHCR primește tag-ul 1.0.0.

Despre parola din values.yaml

Parola implicită este fictivă și există numai pentru laborator. Helm nu este un manager de secrete: valorile renderizate fac parte din starea release-ului. Într-un mediu real, creați un Secret separat și setați postgresql.auth.existingSecret.

Curățare

helm uninstall ticketing -n cc-lab4
kubectl delete pvc -n cc-lab4 --all
kind delete cluster --name cc-lab4

PVC-ul este păstrat intenționat după dezinstalarea release-ului, pentru a evita ștergerea accidentală a datelor. În laborator îl eliminăm explicit înainte de ștergerea clusterului.

About

CC lab 4

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages