This guide explains how to deploy OpenOps on a Kubernetes cluster using the official Helm chart. The Helm chart provides a complete OpenOps stack with all necessary components.
Before following the instructions, make sure that your Kubernetes cluster meets the system requirements for OpenOps.
The Helm chart is currently a work in progress and may not be production-ready. Use with caution in production environments.
Prerequisites
- Kubernetes cluster (version 1.19+)
- Helm 3.x installed
kubectl configured to access your cluster
- At least 8GB of available memory and 4 CPU cores
- Persistent storage support (for databases and file storage)
Architecture Overview
The Helm chart deploys the following components:
- nginx: Reverse proxy and load balancer (exposed via LoadBalancer)
- openops-app: Main application server
- openops-engine: Task execution engine
- openops-tables: Data tables service (Baserow)
- openops-analytics: Analytics dashboard (Superset)
- postgres: PostgreSQL database
- redis: Redis cache
Installation
Step 1: Clone the Repository
First, clone the OpenOps repository to access the Helm chart:
Step 2: Create Values Override File
Create a custom values file to override the default configuration. Start by copying the example:
Edit values.overrides.yaml and customize the following required values:
Make sure to generate strong, unique passwords and secrets. Never use the example values in production.
Step 3: Install the Helm Chart
Install OpenOps using Helm:
Step 4: Wait for Deployment
Monitor the deployment status:
Wait until all pods are in the Running state. This may take several minutes as images are pulled and databases are initialized.
Step 5: Access the Application
Get the external IP address of the nginx service:
If you’re using a LoadBalancer service type, wait for the EXTERNAL-IP to be assigned. You can then access OpenOps at:
If you’re using NodePort or need to access via port-forward:
Then access OpenOps at http://localhost:8080.
Configuration
Storage Configuration
The chart creates PersistentVolumeClaims for:
- PostgreSQL data (20Gi)
- Redis data (5Gi)
- Tables data (10Gi)
To use a specific storage class, update your values file:
Resource Limits
Configure resource limits for better resource management:
Ingress Configuration
To use an Ingress controller instead of LoadBalancer:
Upgrading
To upgrade your OpenOps installation:
Uninstalling
To completely remove OpenOps:
Deleting persistent volume claims will permanently delete all your data including workflows, connections, and analytics dashboards.
Troubleshooting
Common Issues
Pods stuck in Pending state:
- Check if your cluster has sufficient resources
- Verify storage classes are available
- Check node selectors and taints
Database connection errors:
- Ensure PostgreSQL pod is running and ready
- Check database credentials in your values file
- Verify network policies allow communication
External access issues:
- Confirm LoadBalancer service has an external IP
- Check firewall rules and security groups
- Verify DNS configuration if using custom domains
Viewing Logs
Check application logs:
Debugging
Access a pod for debugging:
Support
For additional help: