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.
.
├── .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.
- Docker
kubectlkind- Helm 3
curlsau un client HTTP echivalent.
helm lint charts/ticketing --strict
helm template ticketing charts/ticketing \
--namespace cc-lab4Fișierul values.schema.json validează valorile înainte ca manifestele să fie
trimise către Kubernetes.
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 3mInspectați rezultatul:
helm status ticketing -n cc-lab4
kubectl get deployments,statefulsets,pods,services,pvc -n cc-lab4kubectl 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/ticketsTestul inclus în chart poate fi rulat cu:
helm test ticketing -n cc-lab4 --logsOverlay-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-lab4Reveniți la prima revizie:
helm rollback ticketing 1 -n cc-lab4 --wait --timeout 3mmkdir -p dist
helm package charts/ticketing --destination dist
helm show chart dist/ticketing-0.1.0.tgzWorkflow-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.
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.
helm uninstall ticketing -n cc-lab4
kubectl delete pvc -n cc-lab4 --all
kind delete cluster --name cc-lab4PVC-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.