Helm Installation

Deploy Pushpaka on Kubernetes with Helm - Enterprise-ready charts

📋 Prerequisites

  • Kubernetes 1.20+

    kubectl cluster up and running

  • Helm 3.0+

    Helm CLI installed and configured

  • kubectl configured

    Access to your Kubernetes cluster

  • Storage provisioner

    For PostgreSQL and Redis persistence

  • 2+ CPU, 4GB RAM minimum

    Per node for production deployments

🚀 Quick Start

1. Add Helm Repository

helm repo add pushpaka https://pushpaka.vikshro.in/helm
helm repo update

2. Create Namespace

kubectl create namespace pushpaka

3. Create values.yaml

# Save as values.yaml
global:
  domain: "pushpaka.example.com"
  tls:
    enabled: true

api:
  replicaCount: 2
  
worker:
  replicaCount: 3

postgresql:
  auth:
    password: "your-secure-password"

redis:
  auth:
    password: "your-secure-password"

4. Install

helm install pushpaka pushpaka/pushpaka \
  -n pushpaka \
  -f values.yaml

⚙️ Configuration Options

Domain & SSL

global:
  domain: "pushpaka.example.com"
  tls:
    enabled: true
    certManager:
      enabled: true
      issuer: letsencrypt-prod

Automatic SSL/TLS with Let's Encrypt

Component Replicas

api:
  replicaCount: 2
  
dashboard:
  replicaCount: 2
  
worker:
  replicaCount: 3

High availability with multiple replicas

Auto Scaling

api:
  autoscaling:
    enabled: true
    minReplicas: 2
    maxReplicas: 5
    targetCPUUtilizationPercentage: 80
    targetMemoryUtilizationPercentage: 80

Automatically scale based on resource usage

Resource Limits

api:
  resources:
    requests:
      memory: "512Mi"
      cpu: "500m"
    limits:
      memory: "1Gi"
      cpu: "1000m"

Set resource requests and limits

Database

postgresql:
  enabled: true
  auth:
    username: pushpaka
    password: "changeme"
    database: pushpaka
  primary:
    persistence:
      size: 20Gi

PostgreSQL with persistent storage

🔧 Advanced Setup

Custom Storage Class

postgresql:
  primary:
    persistence:
      storageClassName: "fast-ssd"

redis:
  primary:
    persistence:
      storageClassName: "fast-ssd"

Custom Domain (No CNAME)

# Use LoadBalancer instead of NodePort
traefik:
  service:
    type: LoadBalancer
    spec:
      loadBalancerSourceRanges:
        - "0.0.0.0/0"

Monitoring Stack

monitoring:
  enabled: true
  prometheus:
    enabled: true
    retention: 15d
  grafana:
    enabled: true
    adminPassword: "your-password"

Network Security

networkPolicy:
  enabled: true
  policyTypes:
    - Ingress
    - Egress

podDisruptionBudget:
  enabled: true
  minAvailable: 1

Verify Installation

Check Helm Release

helm status pushpaka -n pushpaka
helm get values pushpaka -n pushpaka

Check Pods

kubectl get pods -n pushpaka
kubectl wait --for=condition=ready pod -l app.kubernetes.io/instance=pushpaka -n pushpaka --timeout=300s

Check Services

kubectl get svc -n pushpaka
kubectl get ingress -n pushpaka

View Logs

kubectl logs -f deployment/pushpaka-api -n pushpaka
kubectl logs -f deployment/pushpaka-dashboard -n pushpaka

⬆️ Upgrade Pushpaka

Update Repository

helm repo update pushpaka

Upgrade Release

# Without changing values
helm upgrade pushpaka pushpaka/pushpaka -n pushpaka

# With updated values
helm upgrade pushpaka pushpaka/pushpaka -n pushpaka -f values.yaml

# Dry-run to preview changes
helm upgrade pushpaka pushpaka/pushpaka -n pushpaka --dry-run --debug

Rollback if Needed

# List release history
helm history pushpaka -n pushpaka

# Rollback to previous version
helm rollback pushpaka -n pushpaka

🔧 Troubleshooting

Pods Not Starting

kubectl describe pod POD_NAME -n pushpaka
kubectl logs POD_NAME -n pushpaka
kubectl get events -n pushpaka --sort-by='.lastTimestamp'

Check pod status, logs, and events

Persistent Volume Issues

kubectl get pv
kubectl get pvc -n pushpaka
kubectl describe pvc -n pushpaka

Verify PVC and PV provisioning

Reset/Reinstall

# Uninstall
helm uninstall pushpaka -n pushpaka

# Delete namespace (with data)
kubectl delete namespace pushpaka

# Reinstall
helm install pushpaka pushpaka/pushpaka -n pushpaka --create-namespace -f values.yaml

Clean reinstall (removes all data)

📚 Full Values Reference

View the complete values configuration:

View values.yaml on GitHub

Need Help?

Get support from the community: