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

No releases published

Packages

 
 
 

Contributors