Skip to content

SWEProject25/helm-charts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

343 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hankers Helm Charts

Hankers Logo

Production Kubernetes Helm Charts

GitOps-ready Helm charts for Hankers microservices


📌 Overview

Centralized Helm charts repository for all Hankers services. These charts are deployed via ArgoCD and follow Kubernetes best practices for production workloads.


📦 Available Charts

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

🚀 Quick Start

Install a Chart

# 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 hankers

Upgrade a Chart

helm upgrade backend ./backend --namespace hankers -f values-prod.yaml

Uninstall

helm uninstall backend --namespace hankers

📁 Repository Structure

helm-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/
    └── ...

⚙️ Configuration

Common Values

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://..."

Environment-Specific Values

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

🔧 Chart Templates

Key Templates in Each Chart

  • 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

Template Features

  • ✅ 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)

🔄 GitOps with ArgoCD

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: true

📊 Monitoring Integration

Charts include Prometheus annotations for automatic metrics scraping:

annotations:
  prometheus.io/scrape: "true"
  prometheus.io/port: "8000"
  prometheus.io/path: "/metrics"

🔐 Secrets Management

Sensitive values are managed through:

  1. Kubernetes Secrets — Base64 encoded in cluster
  2. External Secrets Operator — Sync from Azure Key Vault (optional)
  3. Sealed Secrets — Encrypted secrets in Git (optional)

Example secret reference:

env:
  - name: DATABASE_PASSWORD
    valueFrom:
      secretKeyRef:
        name: backend-secrets
        key: db-password

🧪 Testing Charts

# 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.yaml

📝 Contributing

When adding or modifying charts:

  1. Follow the existing template structure
  2. Update Chart.yaml version (semantic versioning)
  3. Document new values in values.yaml comments
  4. Test with helm lint and helm template
  5. Create a pull request with changelog

📚 Related Repositories


📄 License

Part of the Hankers platform. See main DevOps repository for license details.


💡 These charts are deployed to production at hankers.tech

About

Repo that has all the helm charts for the project

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages