Deploys the full project to the AET cluster using Helm.
kubectlconfigured with access to the AET cluster (~/.kube/config)helmv3 installed- The repository cloned locally
The app is already continuously deployed by the CD pipeline (.github/workflows/cd.yml) on every push to main — there is a live coffeelovers Helm release on the cluster right now, with its secrets already stored there from that pipeline.
To re-run the deployment yourself (e.g. to confirm it's reproducible) without needing any passwords, from the repository root:
helm upgrade coffeelovers ./infra/helm/coffeelovers \
--namespace team-coffeelovers-devops26 \
--reuse-values--reuse-values tells Helm to reuse the secrets/config already stored on the cluster from the last deploy — no --set-string flags, no env vars, nothing to type in. This is the command to use for grading/verification.
If you're setting this up on a brand new cluster for the first time (no existing release), the secrets need to be supplied once. From infra/helm/:
POSTGRES_PASSWORD=<postgres-password> \
JWT_SECRET=<jwt-secret> \
LOGOS_API_KEY=<logos-api-key> \
./deploy.shThis deploys the entire stack: PostgreSQL, auth-service, trip-service, genai-service, React client, and Ingress.
If you'd rather run Helm directly instead of the script, from the repository root:
helm upgrade --install coffeelovers ./infra/helm/coffeelovers \
--namespace team-coffeelovers-devops26 \
--create-namespace \
--set-string secrets.postgresPassword="<postgres-password>" \
--set-string secrets.jwtSecret="<jwt-secret>" \
--set-string secrets.logosApiKey="<logos-api-key>" \
--wait --timeout 5mkubectl get pods -n team-coffeelovers-devops26All pods should show Running. The app is then available at:
https://team-coffeelovers-devops26.stud.k8s.aet.cit.tum.de
helm uninstall coffeelovers --namespace team-coffeelovers-devops26- Secrets are never committed to the repository. They're supplied once (via GitHub Actions secrets, automatically) and persist on the cluster from then on — that's what makes the
--reuse-valuescommand above possible. deploy.shand the manual first-time-install command are for setting up a new cluster only, or local manual testing. The actual project workflow is: feature branch → PR intodevelop→ PR intomain. The CD pipeline deploys automatically on every push tomain— that's the deployment path used day-to-day.- Image tags are pinned to the Git commit SHA in CI/CD. For a manual deploy,
latestis used by default (set invalues.yaml).