Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
234 lines
6.2 KiB
Markdown
234 lines
6.2 KiB
Markdown
# Temporal Worker Helm Chart
|
|
|
|
This Helm chart deploys the Temporal Worker component for the Alga PSA application.
|
|
|
|
## Overview
|
|
|
|
The Temporal Worker is responsible for executing workflows and activities in the Alga PSA system. It connects to a Temporal server and processes tasks from specified task queues.
|
|
|
|
## Prerequisites
|
|
|
|
- Kubernetes 1.19+
|
|
- Helm 3.0+
|
|
- Temporal server deployed and accessible
|
|
- PostgreSQL database
|
|
- (Optional) HashiCorp Vault for secret management
|
|
|
|
## Installation
|
|
|
|
### Standalone Installation
|
|
|
|
To install the chart with the release name `temporal-worker`:
|
|
|
|
```bash
|
|
helm install temporal-worker ee/helm/temporal-worker/
|
|
```
|
|
|
|
### As a Subchart
|
|
|
|
The temporal worker is included as an optional dependency in the main Alga PSA helm chart. To enable it:
|
|
|
|
```bash
|
|
helm install alga-psa helm/ --set temporal-worker.enabled=true
|
|
```
|
|
|
|
## Configuration
|
|
|
|
The following table lists the configurable parameters and their default values.
|
|
|
|
### Basic Configuration
|
|
|
|
| Parameter | Description | Default |
|
|
|-----------|-------------|---------|
|
|
| `enabled` | Enable/disable the temporal worker deployment | `true` |
|
|
| `replicaCount` | Number of worker replicas | `2` |
|
|
| `image.repository` | Container image repository | `harbor.nineminds.com/nineminds/temporal-worker` |
|
|
| `image.tag` | Container image tag | `latest` |
|
|
| `image.pullPolicy` | Image pull policy | `Always` |
|
|
| `logLevel` | Logging level (debug, info, warn, error) | `info` |
|
|
|
|
### Temporal Configuration
|
|
|
|
| Parameter | Description | Default |
|
|
|-----------|-------------|---------|
|
|
| `temporal.address` | Temporal frontend service address | `temporal-frontend.temporal.svc.cluster.local:7233` |
|
|
| `temporal.namespace` | Temporal namespace | `default` |
|
|
| `temporal.taskQueue` | Task queue name (comma-separated for multiple queues) | `tenant-workflows,portal-domain-workflows,email-domain-workflows` |
|
|
| `temporal.maxConcurrentActivityExecutions` | Max concurrent activities | `10` |
|
|
| `temporal.maxConcurrentWorkflowTaskExecutions` | Max concurrent workflow tasks | `10` |
|
|
|
|
### Database Configuration
|
|
|
|
| Parameter | Description | Default |
|
|
|-----------|-------------|---------|
|
|
| `db.host` | PostgreSQL host | `postgresql.default.svc.cluster.local` |
|
|
| `db.port` | PostgreSQL port | `5432` |
|
|
| `db.serverDatabase` | Database name | `msp_server` |
|
|
| `db.user` | Database user | `msp_server` |
|
|
| `db.serverPasswordSecret.name` | Secret name for DB password | `db-secrets` |
|
|
| `db.serverPasswordSecret.key` | Secret key for DB password | `server-password` |
|
|
|
|
### Secret Management
|
|
|
|
| Parameter | Description | Default |
|
|
|-----------|-------------|---------|
|
|
| `vault.enabled` | Enable Vault integration | `false` |
|
|
| `vault.role` | Vault role | `temporal-worker` |
|
|
| `vault.secretPath` | Vault secret path | `secret/data/alga-psa/temporal-worker` |
|
|
| `secrets.internalApiSharedSecret` | Shared secret for internal API (when Vault disabled) | `change-me-in-production` |
|
|
| `secrets.algaAuthKey` | Auth key (when Vault disabled) | `change-me-in-production` |
|
|
|
|
### Resources
|
|
|
|
| Parameter | Description | Default |
|
|
|-----------|-------------|---------|
|
|
| `resources.limits.cpu` | CPU limit | `1000m` |
|
|
| `resources.limits.memory` | Memory limit | `1Gi` |
|
|
| `resources.requests.cpu` | CPU request | `200m` |
|
|
| `resources.requests.memory` | Memory request | `512Mi` |
|
|
|
|
### Autoscaling
|
|
|
|
| Parameter | Description | Default |
|
|
|-----------|-------------|---------|
|
|
| `autoscaling.enabled` | Enable horizontal pod autoscaler | `true` |
|
|
| `autoscaling.minReplicas` | Minimum replicas | `2` |
|
|
| `autoscaling.maxReplicas` | Maximum replicas | `10` |
|
|
| `autoscaling.targetCPUUtilizationPercentage` | Target CPU utilization | `70` |
|
|
| `autoscaling.targetMemoryUtilizationPercentage` | Target memory utilization | `80` |
|
|
|
|
## Examples
|
|
|
|
### Basic Installation with Custom Values
|
|
|
|
```bash
|
|
cat <<EOF > my-values.yaml
|
|
replicaCount: 3
|
|
|
|
temporal:
|
|
address: my-temporal.example.com:7233
|
|
taskQueue: my-task-queue
|
|
|
|
db:
|
|
host: my-postgres.example.com
|
|
serverPasswordSecret:
|
|
name: my-db-secrets
|
|
key: password
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 500m
|
|
memory: 1Gi
|
|
EOF
|
|
|
|
helm install temporal-worker ee/helm/temporal-worker/ -f my-values.yaml
|
|
```
|
|
|
|
### Production Configuration with Vault
|
|
|
|
```bash
|
|
cat <<EOF > prod-values.yaml
|
|
replicaCount: 5
|
|
|
|
vault:
|
|
enabled: true
|
|
role: temporal-worker-prod
|
|
secretPath: secret/data/prod/temporal-worker
|
|
|
|
resources:
|
|
limits:
|
|
cpu: 2000m
|
|
memory: 4Gi
|
|
requests:
|
|
cpu: 1000m
|
|
memory: 2Gi
|
|
|
|
autoscaling:
|
|
enabled: true
|
|
minReplicas: 5
|
|
maxReplicas: 20
|
|
targetCPUUtilizationPercentage: 60
|
|
|
|
podDisruptionBudget:
|
|
enabled: true
|
|
minAvailable: 2
|
|
EOF
|
|
|
|
helm install temporal-worker ee/helm/temporal-worker/ -f prod-values.yaml
|
|
```
|
|
|
|
### Integration with Main Chart
|
|
|
|
```bash
|
|
cat <<EOF > alga-values.yaml
|
|
temporal-worker:
|
|
enabled: true
|
|
replicaCount: 3
|
|
db:
|
|
host: postgresql.default.svc.cluster.local
|
|
serverPasswordSecret:
|
|
name: alga-psa-db-secrets
|
|
key: server-password
|
|
applicationUrl: https://app.algapsa.com
|
|
EOF
|
|
|
|
helm install alga-psa helm/ -f alga-values.yaml
|
|
```
|
|
|
|
## Upgrading
|
|
|
|
To upgrade an existing release:
|
|
|
|
```bash
|
|
helm upgrade temporal-worker ee/helm/temporal-worker/
|
|
```
|
|
|
|
## Uninstalling
|
|
|
|
To uninstall/delete the release:
|
|
|
|
```bash
|
|
helm uninstall temporal-worker
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Check Worker Status
|
|
|
|
```bash
|
|
kubectl get pods -l app.kubernetes.io/name=temporal-worker
|
|
kubectl logs -l app.kubernetes.io/name=temporal-worker
|
|
```
|
|
|
|
### Verify Configuration
|
|
|
|
```bash
|
|
kubectl describe configmap <release-name>-temporal-worker
|
|
```
|
|
|
|
### Common Issues
|
|
|
|
1. **Worker not connecting to Temporal**: Check the `temporal.address` configuration and ensure the Temporal frontend is accessible.
|
|
|
|
2. **Database connection errors**: Verify database credentials and connectivity. Check that the secrets are properly created.
|
|
|
|
3. **High memory usage**: Adjust `temporal.maxConcurrentActivityExecutions` and resource limits based on workload.
|
|
|
|
## Development
|
|
|
|
For local development and testing:
|
|
|
|
```bash
|
|
# Render templates locally
|
|
helm template temporal-worker ee/helm/temporal-worker/
|
|
|
|
# Dry run installation
|
|
helm install temporal-worker ee/helm/temporal-worker/ --dry-run --debug
|
|
|
|
# Lint the chart
|
|
helm lint ee/helm/temporal-worker/
|
|
```
|
|
|
|
## Support
|
|
|
|
For issues and questions, please refer to the main Alga PSA documentation or create an issue in the project repository. |