|
1 | 1 | # OpenOps Helm Chart |
2 | 2 |
|
3 | | -A Helm chart for deploying OpenOps agent to Kubernetes |
| 3 | +A Helm chart for deploying the complete OpenOps platform to Kubernetes |
4 | 4 |
|
5 | 5 | ## Version History |
6 | 6 |
|
7 | 7 | - 0.1.0: Initial release with core functionality |
8 | | - - Deployment configuration |
| 8 | + - Deployment configuration for single OpenOps component |
9 | 9 | - Service exposure |
10 | 10 | - Secret management |
11 | 11 | - Persistent volume integration |
| 12 | +- 0.2.0: Enhanced multi-component architecture |
| 13 | + - Full deployment of all OpenOps components (app, engine, tables, analytics) |
| 14 | + - Integration with Postgres and Redis dependencies |
| 15 | + - NGINX gateway for unified access |
| 16 | + - Comprehensive configuration options for each component |
12 | 17 |
|
13 | 18 | ## Prerequisites |
14 | 19 |
|
15 | 20 | - Kubernetes 1.19+ |
16 | 21 | - Helm 3.2.0+ |
17 | | -- PV provisioner support in the underlying infrastructure (if persistence is enabled) |
| 22 | +- PV provisioner support in the underlying infrastructure (for persistence) |
18 | 23 |
|
19 | 24 | ## Installing the Chart |
20 | 25 |
|
21 | 26 | ```bash |
22 | 27 | helm install my-openops openops/openops |
23 | 28 | ``` |
24 | 29 |
|
25 | | -## Parameters |
26 | | - |
27 | | -### Global parameters |
28 | | - |
29 | | -| Name | Description | Value | |
30 | | -|--------------------|------------------------------------------------|--------| |
31 | | -| `replicaCount` | Number of OpenOps replicas to deploy | `1` | |
32 | | -| `image.repository` | OpenOps image repository | `public.ecr.aws/openops/agent` | |
33 | | -| `image.tag` | OpenOps image tag | `latest` | |
34 | | -| `image.pullPolicy` | OpenOps image pull policy | `IfNotPresent` | |
| 30 | +## Architecture |
35 | 31 |
|
36 | | -### Service parameters |
| 32 | +This Helm chart deploys the complete OpenOps platform with the following components: |
37 | 33 |
|
38 | | -| Name | Description | Value | |
39 | | -|--------------------|------------------------------------------------|--------| |
40 | | -| `service.type` | OpenOps service type | `ClusterIP` | |
41 | | -| `service.port` | OpenOps service port | `80` | |
| 34 | +- **OpenOps App**: The main application component |
| 35 | +- **OpenOps Engine**: The execution engine for automation workflows |
| 36 | +- **OpenOps Tables**: Data storage and management component |
| 37 | +- **OpenOps Analytics**: Analytics and reporting dashboard |
| 38 | +- **Postgres**: Database for persistent storage |
| 39 | +- **Redis**: In-memory cache and message broker |
| 40 | +- **NGINX**: Gateway that routes traffic to the appropriate components |
42 | 41 |
|
43 | | -### Persistence parameters |
44 | | - |
45 | | -| Name | Description | Value | |
46 | | -|----------------------------|------------------------------------------|--------| |
47 | | -| `persistence.enabled` | Enable persistence | `true` | |
48 | | -| `persistence.size` | Storage size | `50Gi` | |
49 | | -| `persistence.storageClass` | Storage class (leave empty for default) | `""` | |
| 42 | +## Parameters |
50 | 43 |
|
51 | | -### Credentials and Environment Variables |
| 44 | +### Global parameters |
52 | 45 |
|
53 | | -| Name | Description | Value | |
54 | | -|----------------------------|-------------------------------------------|--------| |
55 | | -| `env.OPS_OPENOPS_ADMIN_EMAIL` | Admin email | `admin@example.com` | |
56 | | -| `secrets.enabled` | Enable secret creation | `true` | |
57 | | -| `secrets.adminPassword` | Admin password | `changeMe` | |
| 46 | +| Name | Description | Value | |
| 47 | +|-----------------------|----------------------------------------------------|--------| |
| 48 | +| `nameOverride` | Override the name of the chart | `""` | |
| 49 | +| `fullnameOverride` | Override the full name of the chart | `""` | |
| 50 | +| `global.storageClass` | Global storage class for persistent volumes | `""` | |
| 51 | + |
| 52 | +### OpenOps App parameters |
| 53 | + |
| 54 | +| Name | Description | Value | |
| 55 | +|----------------------------|------------------------------------------------|--------| |
| 56 | +| `app.enabled` | Enable OpenOps App component | `true` | |
| 57 | +| `app.replicaCount` | Number of OpenOps App replicas | `1` | |
| 58 | +| `app.image.repository` | OpenOps App image repository | `public.ecr.aws/openops/openops-app` | |
| 59 | +| `app.image.tag` | OpenOps App image tag | `0.2.7` | |
| 60 | +| `app.image.pullPolicy` | OpenOps App image pull policy | `IfNotPresent` | |
| 61 | +| `app.service.type` | OpenOps App service type | `ClusterIP` | |
| 62 | +| `app.service.port` | OpenOps App service port | `80` | |
| 63 | +| `app.resources.requests.cpu` | CPU request for OpenOps App | `1` | |
| 64 | +| `app.resources.requests.memory` | Memory request for OpenOps App | `2Gi` | |
| 65 | +| `app.resources.limits.cpu` | CPU limit for OpenOps App | `2` | |
| 66 | +| `app.resources.limits.memory` | Memory limit for OpenOps App | `4Gi` | |
| 67 | + |
| 68 | +### OpenOps Engine parameters |
| 69 | + |
| 70 | +| Name | Description | Value | |
| 71 | +|----------------------------|------------------------------------------------|--------| |
| 72 | +| `engine.enabled` | Enable OpenOps Engine component | `true` | |
| 73 | +| `engine.replicaCount` | Number of OpenOps Engine replicas | `1` | |
| 74 | +| `engine.image.repository` | OpenOps Engine image repository | `public.ecr.aws/openops/openops-engine` | |
| 75 | +| `engine.image.tag` | OpenOps Engine image tag | `0.2.7` | |
| 76 | +| `engine.image.pullPolicy` | OpenOps Engine image pull policy | `IfNotPresent` | |
| 77 | +| `engine.volumes.azure.enabled` | Enable Azure CLI volume | `true` | |
| 78 | +| `engine.volumes.azure.size` | Azure CLI volume size | `1Gi` | |
| 79 | +| `engine.volumes.gcloud.enabled` | Enable Google Cloud SDK volume | `true` | |
| 80 | +| `engine.volumes.gcloud.size` | Google Cloud SDK volume size | `1Gi` | |
| 81 | + |
| 82 | +### OpenOps Tables parameters |
| 83 | + |
| 84 | +| Name | Description | Value | |
| 85 | +|----------------------------|------------------------------------------------|--------| |
| 86 | +| `tables.enabled` | Enable OpenOps Tables component | `true` | |
| 87 | +| `tables.replicaCount` | Number of OpenOps Tables replicas | `1` | |
| 88 | +| `tables.image.repository` | OpenOps Tables image repository | `public.ecr.aws/openops/openops-tables` | |
| 89 | +| `tables.image.tag` | OpenOps Tables image tag | `0.1.8` | |
| 90 | +| `tables.image.pullPolicy` | OpenOps Tables image pull policy | `IfNotPresent` | |
| 91 | +| `tables.service.type` | OpenOps Tables service type | `ClusterIP` | |
| 92 | +| `tables.service.port` | OpenOps Tables service port | `80` | |
| 93 | +| `tables.persistence.enabled` | Enable persistence for Tables | `true` | |
| 94 | +| `tables.persistence.size` | Storage size for Tables | `10Gi` | |
| 95 | + |
| 96 | +### OpenOps Analytics parameters |
| 97 | + |
| 98 | +| Name | Description | Value | |
| 99 | +|----------------------------|------------------------------------------------|--------| |
| 100 | +| `analytics.enabled` | Enable OpenOps Analytics component | `true` | |
| 101 | +| `analytics.replicaCount` | Number of OpenOps Analytics replicas | `1` | |
| 102 | +| `analytics.image.repository` | OpenOps Analytics image repository | `public.ecr.aws/openops/openops-analytics` | |
| 103 | +| `analytics.image.tag` | OpenOps Analytics image tag | `0.12.16` | |
| 104 | +| `analytics.image.pullPolicy` | OpenOps Analytics image pull policy | `IfNotPresent` | |
| 105 | +| `analytics.service.type` | OpenOps Analytics service type | `ClusterIP` | |
| 106 | +| `analytics.service.port` | OpenOps Analytics service port | `80` | |
| 107 | + |
| 108 | +### Postgres parameters |
| 109 | + |
| 110 | +| Name | Description | Value | |
| 111 | +|----------------------------|------------------------------------------------|--------| |
| 112 | +| `postgres.enabled` | Enable Postgres | `true` | |
| 113 | +| `postgres.image.repository` | Postgres image repository | `postgres` | |
| 114 | +| `postgres.image.tag` | Postgres image tag | `14.4` | |
| 115 | +| `postgres.service.port` | Postgres service port | `5432` | |
| 116 | +| `postgres.persistence.enabled` | Enable persistence for Postgres | `true` | |
| 117 | +| `postgres.persistence.size` | Storage size for Postgres | `20Gi` | |
| 118 | +| `postgres.maxConnections` | Maximum number of database connections | `300` | |
| 119 | + |
| 120 | +### Redis parameters |
| 121 | + |
| 122 | +| Name | Description | Value | |
| 123 | +|----------------------------|------------------------------------------------|--------| |
| 124 | +| `redis.enabled` | Enable Redis | `true` | |
| 125 | +| `redis.image.repository` | Redis image repository | `redis` | |
| 126 | +| `redis.image.tag` | Redis image tag | `7.4.0` | |
| 127 | +| `redis.service.port` | Redis service port | `6379` | |
| 128 | +| `redis.persistence.enabled` | Enable persistence for Redis | `true` | |
| 129 | +| `redis.persistence.size` | Storage size for Redis | `5Gi` | |
| 130 | + |
| 131 | +### NGINX Gateway parameters |
| 132 | + |
| 133 | +| Name | Description | Value | |
| 134 | +|----------------------------|------------------------------------------------|--------| |
| 135 | +| `nginx.enabled` | Enable NGINX Gateway | `true` | |
| 136 | +| `nginx.image.repository` | NGINX image repository | `nginx` | |
| 137 | +| `nginx.image.tag` | NGINX image tag | `1.27.4` | |
| 138 | +| `nginx.service.type` | NGINX service type | `ClusterIP` | |
| 139 | +| `nginx.service.port` | NGINX service port | `80` | |
| 140 | +| `nginx.configMap.enabled` | Enable NGINX configuration | `true` | |
| 141 | + |
| 142 | +### Ingress parameters |
| 143 | + |
| 144 | +| Name | Description | Value | |
| 145 | +|---------------------------|-------------------------------------------------|--------| |
| 146 | +| `ingress.enabled` | Enable ingress for OpenOps | `false` | |
| 147 | +| `ingress.className` | Ingress class name | `""` | |
| 148 | +| `ingress.annotations` | Ingress annotations | `{}` | |
| 149 | +| `ingress.hosts[0].host` | Hostname for OpenOps | `openops.local` | |
| 150 | +| `ingress.hosts[0].paths[0].path` | Path for the host | `/` | |
| 151 | +| `ingress.hosts[0].paths[0].pathType` | Path type | `ImplementationSpecific` | |
| 152 | +| `ingress.tls` | TLS configuration | `[]` | |
| 153 | + |
| 154 | +### Environment and Secret parameters |
| 155 | + |
| 156 | +| Name | Description | Value | |
| 157 | +|------------------------------|----------------------------------------------|--------| |
| 158 | +| `env.OPS_OPENOPS_ADMIN_EMAIL` | Admin email address | `admin@example.com` | |
| 159 | +| `secrets.enabled` | Enable secret creation | `true` | |
| 160 | +| `secrets.OPS_OPENOPS_ADMIN_PASSWORD` | Admin password | `changeMe` | |
| 161 | +| `secrets.OPS_POSTGRES_USERNAME` | Postgres username | `postgres` | |
| 162 | +| `secrets.OPS_POSTGRES_PASSWORD` | Postgres password | `postgres` | |
| 163 | +| `secrets.OPS_ENCRYPTION_KEY` | Encryption key | `changeMe` | |
| 164 | +| `secrets.OPS_JWT_SECRET` | JWT signing key | `changeMe` | |
0 commit comments