Centralized Helm charts repository for all Hankers services. These charts are deployed via ArgoCD and follow Kubernetes best practices for production workloads.
| Chart | Description | Port | Replicas |
|---|---|---|---|
| backend | Django REST API | 8000 | 2-5 |
| frontend | React web app | 3000 | 2-5 |
| ai-bot | AI bot service | 8001 | 1-3 |
| ml-model-service | ML inference | 8080 | 1-2 |
# Add the repo (if published to Helm registry)
helm repo add hankers https://sweproject25.github.io/helm-charts
helm repo update
# Install backend chart
helm install backend hankers/backend -f values-prod.yaml
# Or install from local repo
helm install backend ./backend --namespace hankershelm upgrade backend ./backend --namespace hankers -f values-prod.yamlhelm uninstall backend --namespace hankershelm-charts/
├── backend/
│ ├── Chart.yaml
│ ├── values.yaml
│ ├── values-dev.yaml
│ ├── values-prod.yaml
│ └── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── hpa.yaml
│ ├── configmap.yaml
│ └── secrets.yaml
├── frontend/
│ ├── Chart.yaml
│ ├── values.yaml
│ └── templates/
│ └── ...
├── ai-bot/
│ └── ...
└── ml-model-service/
└── ...
Each chart supports these standard configurations:
# Replica configuration
replicaCount: 2
# Image settings
image:
repository: ghcr.io/sweproject25/backend
tag: "latest"
pullPolicy: IfNotPresent
# Resource limits
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
# Auto-scaling
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 5
targetCPUUtilizationPercentage: 70
# Ingress configuration
ingress:
enabled: true
className: nginx
hosts:
- host: api.hankers.tech
paths:
- path: /
pathType: Prefix
tls:
- secretName: hankers-tls
hosts:
- api.hankers.tech
# Environment variables
env:
- name: DATABASE_URL
value: "postgresql://..."
- name: REDIS_URL
value: "redis://..."Use different values files for each environment:
# Development
helm install backend ./backend -f values-dev.yaml
# Production
helm install backend ./backend -f values-prod.yaml- deployment.yaml — Pod specification, replicas, resources
- service.yaml — ClusterIP service for internal communication
- ingress.yaml — External traffic routing with SSL
- hpa.yaml — Horizontal Pod Autoscaler configuration
- configmap.yaml — Non-sensitive configuration
- secrets.yaml — Encrypted environment variables
- ✅ Health checks (liveness/readiness probes)
- ✅ Rolling updates with zero downtime
- ✅ Resource requests and limits
- ✅ Security context (non-root, read-only filesystem)
- ✅ Pod disruption budgets
- ✅ Service mesh ready (Istio compatible)
These charts are automatically synced by ArgoCD:
# ArgoCD Application manifest
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: backend
spec:
source:
repoURL: https://github.com/SWEProject25/helm-charts
targetRevision: main
path: backend
helm:
valueFiles:
- values-prod.yaml
destination:
server: https://kubernetes.default.svc
namespace: hankers
syncPolicy:
automated:
prune: true
selfHeal: trueCharts include Prometheus annotations for automatic metrics scraping:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8000"
prometheus.io/path: "/metrics"Sensitive values are managed through:
- Kubernetes Secrets — Base64 encoded in cluster
- External Secrets Operator — Sync from Azure Key Vault (optional)
- Sealed Secrets — Encrypted secrets in Git (optional)
Example secret reference:
env:
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: backend-secrets
key: db-password# Lint the chart
helm lint ./backend
# Dry-run install
helm install backend ./backend --dry-run --debug
# Template rendering
helm template backend ./backend -f values-prod.yamlWhen adding or modifying charts:
- Follow the existing template structure
- Update
Chart.yamlversion (semantic versioning) - Document new values in
values.yamlcomments - Test with
helm lintandhelm template - Create a pull request with changelog
- DevOps Infrastructure — Terraform, Ansible, CI/CD
- Backend Service — Nest JS
- Frontend Service — Next JS
Part of the Hankers platform. See main DevOps repository for license details.
💡 These charts are deployed to production at hankers.tech