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