Files
Helm-Charts/README.md
2025-12-22 11:41:59 +00:00

193 lines
4.9 KiB
Markdown

# Flow Helm Chart
A Helm chart for deploying the Flow workflow automation platform to Kubernetes.
## Overview
Flow is a distributed workflow automation platform consisting of:
- **Core Services**: Workflow Engine, Activity Registry, Definition Store, Workflow Logging, Connection Store, Tenant Registry
- **Frontend**: Blazor WebAssembly web application
- **Activity Services**: 23+ activity implementations for various integrations (HTTP, SQL, Azure, AWS, etc.)
- **Infrastructure**: RabbitMQ for messaging, PostgreSQL for persistence, Redis for caching (optional)
## Prerequisites
- Kubernetes 1.25+
- Helm 3.8+
- PV provisioner (if using built-in PostgreSQL/RabbitMQ)
## Quick Start
### Add the Helm Repository
```bash
# Add the Entit Helm repository
helm repo add entit https://git.kn.entit.eu/EntitAB/Helm-Charts/raw/branch/main
# Update repository cache
helm repo update
# Search for available versions
helm search repo entit/flow --versions
```
### Install the Chart
```bash
# Install with default values
helm install flow entit/flow \
--namespace flow \
--create-namespace
# Install with custom values file
helm install flow entit/flow \
--namespace flow \
--create-namespace \
-f values.yaml
```
### Using Example Values Files
Example values files are available in the `examples/` directory:
```bash
# Download example values for production
curl -O https://git.kn.entit.eu/EntitAB/Helm-Charts/raw/branch/main/examples/values-prod.yaml
# Download example values for development
curl -O https://git.kn.entit.eu/EntitAB/Helm-Charts/raw/branch/main/examples/values-dev.yaml
# Install with production values
helm install flow entit/flow \
--namespace flow \
--create-namespace \
-f values-prod.yaml \
--set global.azureAd.tenantId=YOUR_TENANT_ID \
--set global.azureAd.clientId=YOUR_CLIENT_ID
```
## Configuration
### Global Configuration
| Parameter | Description | Default |
|-----------|-------------|---------|
| `global.imageRegistry` | Container registry for all images | `cr.kn.entit.eu` |
| `global.imagePullSecrets` | Image pull secrets | `[]` |
| `global.azureAd.enabled` | Enable Azure AD authentication | `true` |
| `global.azureAd.tenantId` | Azure AD tenant ID | `""` |
| `global.azureAd.clientId` | Azure AD application client ID | `""` |
| `global.database.provider` | Database provider (Postgres/SqlServer) | `Postgres` |
### Service URLs
All internal services communicate using full Kubernetes FQDN format:
```
http://<service-name>.<namespace>.svc.cluster.local:<port>
```
This ensures reliable cross-namespace communication when services run in separate pods.
### Core Services
Each core service supports the following configuration:
| Parameter | Description | Default |
|-----------|-------------|---------|
| `<service>.enabled` | Enable the service | `true` |
| `<service>.replicaCount` | Number of replicas | `1` |
| `<service>.image.repository` | Image repository | varies |
| `<service>.image.tag` | Image tag | `""` (uses appVersion) |
| `<service>.resources` | CPU/Memory resources | varies |
| `<service>.autoscaling.enabled` | Enable HPA | `false` |
| `<service>.ingress.enabled` | Enable ingress | `false` |
### Activity Services
Activity services can be enabled/disabled individually:
```yaml
httpRequestActivity:
enabled: true
replicaCount: 2
sqlActivity:
enabled: true
# Disable activities not needed
awsS3Activity:
enabled: false
```
## External Managed Services
For production deployments, use external managed services instead of the built-in infrastructure.
### External PostgreSQL
Supports Azure Database for PostgreSQL, AWS RDS, Google Cloud SQL, and other managed PostgreSQL services.
```yaml
global:
database:
provider: "Postgres"
postgres:
external: true
host: "myserver.postgres.database.azure.com"
port: 5432
database: "flow_prod"
username: "flow@myserver" # Azure format: user@server
existingSecret: "flow-db-secret"
existingSecretKey: "postgres-password"
sslMode: "require"
pooling:
minSize: 10
maxSize: 200
postgresql:
enabled: false # Disable built-in PostgreSQL
```
### External RabbitMQ
Supports CloudAMQP, Amazon MQ, and self-hosted clusters.
```yaml
global:
rabbitmq:
external: true
host: "xyz.rmq.cloudamqp.com"
port: 5672
username: "flow"
existingSecret: "flow-rabbitmq-secret"
existingSecretKey: "rabbitmq-password"
vhost: "/"
tls:
enabled: true
rabbitmq:
enabled: false # Disable built-in RabbitMQ
```
### External Redis
Supports Azure Cache for Redis, Amazon ElastiCache, Redis Cloud, and self-hosted Redis.
#### Standalone Mode
```yaml
global:
redis:
enabled: true
external: true
mode: "standalone"
host: "myredis.redis.cache.windows.net"
port: 6380
existingSecret: "flow-redis-secret"
existingSecretKey: "redis-password"
tls:
enabled: true
redis:
enabled: false # Disable built-in Redis