Skip to main content

Kubernetes Deployment

Deploy AlertifyPro on Kubernetes using the official Helm chart for production-grade, highly-available deployments.

Prerequisites

  • Kubernetes 1.27+
  • Helm 3.12+
  • kubectl configured for your cluster
  • PostgreSQL 15+ (external or via Helm)
  • Redis 7+ (external or via Helm)

Quick start

# Add the AlertifyPro Helm repository
helm repo add alertifypro https://charts.alertifypro.com
helm repo update

# Install with default values
helm install alertifypro alertifypro/alertifypro \
--namespace alertifypro \
--create-namespace \
--set config.appUrl=https://alertifypro.yourcompany.com \
--set config.secretKeyBase=$(openssl rand -hex 64) \
--set postgresql.auth.password=your-db-password

Full values.yaml

# values.yaml

image:
repository: ghcr.io/crayon-alertifypro/alertifypro
tag: "2.1.0"
pullPolicy: IfNotPresent

replicaCount:
app: 2
worker: 3
scheduler: 1

config:
appUrl: "https://alertifypro.yourcompany.com"
secretKeyBase: "" # Set via --set or external secret

# External PostgreSQL (recommended for production)
postgresql:
enabled: true # Set false to use external DB
auth:
database: alertifypro
username: alertifypro
password: "" # Set via --set or external secret

# External Redis
redis:
enabled: true # Set false to use external Redis

ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: alertifypro.yourcompany.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: alertifypro-tls
hosts:
- alertifypro.yourcompany.com

resources:
app:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 1000m
memory: 1Gi
worker:
requests:
cpu: 250m
memory: 256Mi

autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 70

# Store secrets in K8s Secret instead of values.yaml
existingSecret: "" # Secret name with DATABASE_URL, REDIS_URL, SECRET_KEY_BASE

Instead of putting secrets in values.yaml, use Kubernetes Secrets:

kubectl create secret generic alertifypro-secrets \
--namespace alertifypro \
--from-literal=DATABASE_URL="postgres://user:pass@db-host:5432/alertifypro" \
--from-literal=REDIS_URL="redis://redis-host:6379/0" \
--from-literal=SECRET_KEY_BASE="$(openssl rand -hex 64)"

Then in values.yaml:

existingSecret: "alertifypro-secrets"

Verify the deployment

# Check pods are running
kubectl get pods -n alertifypro

# Check logs
kubectl logs -n alertifypro deploy/alertifypro-app

# Port-forward for local testing
kubectl port-forward -n alertifypro svc/alertifypro 8080:80

Upgrading

helm repo update
helm upgrade alertifypro alertifypro/alertifypro \
--namespace alertifypro \
--values values.yaml

Migrations run automatically as a pre-upgrade Job.


High availability

For HA deployments, ensure:

  • replicaCount.app: 2+ — multiple app replicas
  • replicaCount.worker: 3+ — multiple workers for job processing
  • External PostgreSQL with a replica (e.g. AWS RDS Multi-AZ)
  • External Redis Sentinel or Redis Cluster
  • Pod Disruption Budgets (automatically applied by the chart)