Duration: ~3 hours Goal: Deploy GloryLabs Recruitment Platform to local Kubernetes cluster Status: Partial Success - Infrastructure setup complete, troubleshooting deployment issues
Successfully built production-ready Docker images for both frontend and backend:
Backend Image:
recruitment-backend:localFrontend Image:
recruitment-frontend:localnpm ci to npm install (no package-lock.json)Build Commands:
# Backend
cd backend
docker build -t recruitment-backend:local .
# Frontend
cd frontend/recruitment-portal
docker build --target production -t recruitment-frontend:local .
docker-desktop contextglorylabs-local namespaceMade significant improvements to the Helm chart for production readiness:
Chart.yaml Updates:
13.2.24 → 18.1.318.6.1 → 23.2.2New Templates Created:
serviceaccount.yaml - Required for pod creationFrontend Deployment Enhancements:
glorylabs-recruitment-platform-backend/ to /healthValues Configuration (values-local.yaml):
image:
backend:
repository: recruitment-backend
pullPolicy: Never
tag: "local"
frontend:
repository: recruitment-frontend
pullPolicy: Never
tag: "local"
postgresql:
enabled: true
operator:
enabled: false
image:
tag: "18.0.0-debian-12-r6"
auth:
username: recruitment
password: "localpass123"
database: recruitment_local
redis:
enabled: true
image:
tag: "8.2.2-debian-12-r0"
auth:
password: "localredis123"
minio:
enabled: false
cvService:
enabled: false
Modified Files:
/backend/Dockerfile - ARM64 compatibility fixes/frontend/recruitment-portal/Dockerfile - Build and permission fixes/frontend/recruitment-portal/angular.json - Increased style budgets/helm/recruitment-platform/Chart.yaml - Updated dependencies/helm/recruitment-platform/values-local.yaml - Local deployment config/helm/recruitment-platform/templates/frontend-configmap.yaml - Added nginx.conf/helm/recruitment-platform/templates/frontend-deployment.yaml - Added volume mounts/helm/recruitment-platform/templates/serviceaccount.yaml - Created new/helm/recruitment-platform/templates/cv-service-deployment.yaml - Added conditionalProblem: Bitnami subchart dependencies are not respecting image tag overrides in values-local.yaml
Current Behavior:
bitnami/postgresql:16.1.0-debian-11-r15 (doesn't exist)bitnami/redis:7.2.3-debian-11-r2 (doesn't exist)Error:
Error: ImagePullBackOff
Failed to pull image "docker.io/bitnami/postgresql:16.1.0-debian-11-r15":
manifest for bitnami/postgresql:16.1.0-debian-11-r15 not found
Root Cause: The Bitnami Helm subcharts have their own values.yaml with hardcoded image tags that are overriding our configuration.
Potential Solutions:
--set flags during Helm install to force overrideProblem: Backend deployment exists but no pods are being created
Status: RESOLVED (ServiceAccount created)
Previous Error: serviceaccount "glorylabs-recruitment-platform" not found
Fix Applied: Created serviceaccount.yaml template
Note: Still need to verify backend pod starts after database issues are resolved
Problem: Frontend pods crash because they can't connect to backend
Error:
nginx: [emerg] host not found in upstream "glorylabs-recruitment-platform-backend"
Status: Configuration is correct, waiting for backend to start
| Component | Image Status | Config Status | Pod Status | Notes | |-----------|--------------|---------------|------------|-------| | Backend | ✅ Built | ✅ Ready | ❌ Not Running | Waiting for DB | | Frontend | ✅ Built | ✅ Ready | ❌ Crash Loop | Waiting for backend | | PostgreSQL | ❌ Image Issue | ⚠️ Override fails | ❌ ImagePullBackOff | Bitnami subchart issue | | Redis | ❌ Image Issue | ⚠️ Override fails | ❌ ImagePullBackOff | Bitnami subchart issue | | Nginx Ingress | N/A | N/A | Skipped | Using port-forward instead |
# Check cluster status
kubectl cluster-info
kubectl get nodes
# Check all resources
kubectl get all -n glorylabs-local
# Check pod logs
kubectl logs <pod-name> -n glorylabs-local
# Describe pod for events
kubectl describe pod <pod-name> -n glorylabs-local
# Check Helm release
helm list -n glorylabs-local
helm status glorylabs -n glorylabs-local
# Force recreate statefulsets
kubectl delete statefulset glorylabs-postgresql glorylabs-redis-master -n glorylabs-local
# Upgrade Helm release
helm upgrade glorylabs ./helm/recruitment-platform -f ./helm/recruitment-platform/values-local.yaml -n glorylabs-local
# Uninstall and reinstall
helm uninstall glorylabs -n glorylabs-local
kubectl delete namespace glorylabs-local
helm install glorylabs ./helm/recruitment-platform -f ./helm/recruitment-platform/values-local.yaml -n glorylabs-local --create-namespace
Try one of these approaches:
Option A: Force Image Override with --set
helm upgrade glorylabs ./helm/recruitment-platform \\
-f ./helm/recruitment-platform/values-local.yaml \\
-n glorylabs-local \\
--set postgresql.image.tag=18.0.0-debian-12-r6 \\
--set redis.image.tag=8.2.2-debian-12-r0
Option B: Update to Latest Bitnami Chart Versions
Edit Chart.yaml dependencies to use the absolute latest versions that have ARM64 support
Option C: Use Simple K8s Manifests Instead Create simple Deployment/StatefulSet YAML files for PostgreSQL and Redis instead of using Helm subcharts
Once databases are running:
kubectl logs <backend-pod> -n glorylabs-localOnce all pods are running:
kubectl port-forward svc/glorylabs-recruitment-platform-frontend 4200:80 -n glorylabs-localkubectl port-forward svc/glorylabs-recruitment-platform-backend 8090:8080 -n glorylabs-localhttp://localhost:4200Document the working deployment process in K8S_LOCAL_QUICKSTART.md
/backend/Dockerfile, /frontend/recruitment-portal/Dockerfile/helm/recruitment-platform//helm/recruitment-platform/values-local.yaml/CURRENT_TASK.mdGiven the complexity of the Helm chart with Bitnami subcharts, consider one of these paths forward:
The current work is valuable and will be needed for production deployment. The Helm chart improvements made today will be useful when deploying to a production Kubernetes cluster.
Session End: November 2, 2025 Next Session: Continue with database image resolution or switch to simplified K8s approach
Reacties