Skip to main content
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: