From 52240af510f99431c6b087a10da0307b07db8fc7 Mon Sep 17 00:00:00 2001
From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com>
Date: Mon, 29 Sep 2025 20:55:04 +0000
Subject: [PATCH 1/2] Update getting-started/deployment/kubernetes-helm.mdx
---
.../deployment/kubernetes-helm.mdx | 279 ++++++++++++++++++
1 file changed, 279 insertions(+)
create mode 100644 getting-started/deployment/kubernetes-helm.mdx
diff --git a/getting-started/deployment/kubernetes-helm.mdx b/getting-started/deployment/kubernetes-helm.mdx
new file mode 100644
index 0000000..4186829
--- /dev/null
+++ b/getting-started/deployment/kubernetes-helm.mdx
@@ -0,0 +1,279 @@
+---
+title: 'Kubernetes with Helm'
+description: 'Deploy OpenOps on Kubernetes using Helm charts'
+icon: 'dharmachakra'
+---
+
+import UpdateCredentials from '/snippets/env-update-credentials.mdx';
+
+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](/getting-started/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:
+
+```bash
+git clone https://github.com/openops-cloud/openops.git
+cd openops
+```
+
+### Step 2: Create Values Override File
+
+Create a custom values file to override the default configuration. Start by copying the example:
+
+```bash
+cp deploy/helm/openops/values.overrides-example.yaml values.overrides.yaml
+```
+
+Edit `values.overrides.yaml` and customize the following required values:
+
+```yaml
+openopsEnv:
+ # Replace with your actual domain or IP
+ OPS_PUBLIC_URL: "http://your-domain.com"
+
+ # Admin credentials - change these!
+ OPS_OPENOPS_ADMIN_EMAIL: admin@your-domain.com
+ OPS_OPENOPS_ADMIN_PASSWORD: your-secure-password
+
+ # Security keys - generate new ones!
+ OPS_ENCRYPTION_KEY: your-32-character-encryption-key
+ OPS_JWT_SECRET: your-jwt-secret
+ OPS_POSTGRES_PASSWORD: your-postgres-password
+ OPS_ANALYTICS_ADMIN_PASSWORD: your-analytics-password
+ ANALYTICS_POWERUSER_PASSWORD: your-poweruser-password
+```
+
+
+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:
+
+```bash
+helm install openops ./deploy/helm/openops \
+ -n openops \
+ --create-namespace \
+ -f values.overrides.yaml
+```
+
+### Step 4: Wait for Deployment
+
+Monitor the deployment status:
+
+```bash
+kubectl get pods -n openops -w
+```
+
+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:
+
+```bash
+kubectl get services/nginx -n openops
+```
+
+If you're using a LoadBalancer service type, wait for the `EXTERNAL-IP` to be assigned. You can then access OpenOps at:
+
+```
+http://
+```
+
+If you're using NodePort or need to access via port-forward:
+
+```bash
+kubectl port-forward service/nginx 8080:80 -n openops
+```
+
+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:
+
+```yaml
+postgres:
+ storage:
+ storageClass: "your-storage-class"
+ size: 50Gi
+
+redis:
+ storage:
+ storageClass: "your-storage-class"
+ size: 10Gi
+
+tables:
+ storage:
+ storageClass: "your-storage-class"
+ size: 20Gi
+```
+
+### Resource Limits
+
+Configure resource limits for better resource management:
+
+```yaml
+app:
+ resources:
+ limits:
+ cpu: 2000m
+ memory: 4Gi
+ requests:
+ cpu: 500m
+ memory: 1Gi
+
+engine:
+ resources:
+ limits:
+ cpu: 2000m
+ memory: 2Gi
+ requests:
+ cpu: 500m
+ memory: 512Mi
+```
+
+### Ingress Configuration
+
+To use an Ingress controller instead of LoadBalancer:
+
+```yaml
+nginx:
+ service:
+ type: ClusterIP
+
+ingress:
+ enabled: true
+ className: "nginx"
+ annotations:
+ cert-manager.io/cluster-issuer: "letsencrypt-prod"
+ hosts:
+ - host: openops.your-domain.com
+ paths:
+ - path: /
+ pathType: Prefix
+ tls:
+ - secretName: openops-tls
+ hosts:
+ - openops.your-domain.com
+```
+
+## Upgrading
+
+To upgrade your OpenOps installation:
+
+```bash
+# Update the repository
+git pull origin main
+
+# Upgrade the release
+helm upgrade openops ./deploy/helm/openops \
+ -n openops \
+ -f values.overrides.yaml
+```
+
+## Uninstalling
+
+To completely remove OpenOps:
+
+```bash
+# Delete the Helm release
+helm uninstall openops -n openops
+
+# Delete persistent volumes (optional - this will delete all data)
+kubectl delete pvc -n openops --all
+
+# Delete the namespace
+kubectl delete namespace 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:
+
+```bash
+# Main application logs
+kubectl logs -f deployment/openops-app -n openops
+
+# Engine logs
+kubectl logs -f deployment/openops-engine -n openops
+
+# Database logs
+kubectl logs -f deployment/postgres -n openops
+```
+
+### Debugging
+
+Access a pod for debugging:
+
+```bash
+kubectl exec -it deployment/openops-app -n openops -- /bin/bash
+```
+
+## Support
+
+For additional help:
+- Join our [Slack community](https://slack.openops.com)
+- Check the [GitHub repository](https://github.com/openops-cloud/openops) for issues
+- Review Kubernetes and Helm documentation for cluster-specific issues
\ No newline at end of file
From 1c9988cc73f6fa00e5af4c8367607ab7c97b2ae1 Mon Sep 17 00:00:00 2001
From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com>
Date: Mon, 29 Sep 2025 20:55:23 +0000
Subject: [PATCH 2/2] Update docs.json
---
docs.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs.json b/docs.json
index e15b8b8..92eb0c1 100644
--- a/docs.json
+++ b/docs.json
@@ -31,6 +31,7 @@
"group": "Deploying OpenOps",
"pages": [
"getting-started/deployment/local",
+ "getting-started/deployment/kubernetes-helm",
"getting-started/deployment/aws-ec2",
"getting-started/deployment/azure-vm",
"getting-started/deployment/gcp-vm"