Deploy Pushpaka on Kubernetes with Helm - Enterprise-ready charts
kubectl cluster up and running
Helm CLI installed and configured
Access to your Kubernetes cluster
For PostgreSQL and Redis persistence
Per node for production deployments
helm repo add pushpaka https://pushpaka.vikshro.in/helm helm repo update
kubectl create namespace pushpaka
# 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" helm install pushpaka pushpaka/pushpaka \ -n pushpaka \ -f values.yaml
global:
domain: "pushpaka.example.com"
tls:
enabled: true
certManager:
enabled: true
issuer: letsencrypt-prod Automatic SSL/TLS with Let's Encrypt
api: replicaCount: 2 dashboard: replicaCount: 2 worker: replicaCount: 3
High availability with multiple replicas
api:
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 5
targetCPUUtilizationPercentage: 80
targetMemoryUtilizationPercentage: 80 Automatically scale based on resource usage
api:
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "1Gi"
cpu: "1000m" Set resource requests and limits
postgresql:
enabled: true
auth:
username: pushpaka
password: "changeme"
database: pushpaka
primary:
persistence:
size: 20Gi PostgreSQL with persistent storage
postgresql:
primary:
persistence:
storageClassName: "fast-ssd"
redis:
primary:
persistence:
storageClassName: "fast-ssd" # Use LoadBalancer instead of NodePort
traefik:
service:
type: LoadBalancer
spec:
loadBalancerSourceRanges:
- "0.0.0.0/0" monitoring:
enabled: true
prometheus:
enabled: true
retention: 15d
grafana:
enabled: true
adminPassword: "your-password" networkPolicy:
enabled: true
policyTypes:
- Ingress
- Egress
podDisruptionBudget:
enabled: true
minAvailable: 1 helm status pushpaka -n pushpaka helm get values pushpaka -n pushpaka
kubectl get pods -n pushpaka kubectl wait --for=condition=ready pod -l app.kubernetes.io/instance=pushpaka -n pushpaka --timeout=300s
kubectl get svc -n pushpaka kubectl get ingress -n pushpaka
kubectl logs -f deployment/pushpaka-api -n pushpaka kubectl logs -f deployment/pushpaka-dashboard -n pushpaka
helm repo update pushpaka
# 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
# List release history helm history pushpaka -n pushpaka # Rollback to previous version helm rollback pushpaka -n pushpaka
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
kubectl get pv kubectl get pvc -n pushpaka kubectl describe pvc -n pushpaka
Verify PVC and PV provisioning
# 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)
View the complete values configuration:
View values.yaml on GitHubAI-style product guidance for GitHub Pages