PSA/ee/docs/plans/2025-07-28-temporal-helm-chart-extraction.md
Hermes 284313f908
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
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

140 lines
5.5 KiB
Markdown

# Temporal Worker Helm Chart Extraction Plan
## Intro / Rationale
This plan outlines the extraction of temporal worker components from the main Alga PSA helm chart (`helm/`) into a separate, dedicated helm chart (`ee/helm/temporal-worker/`). This separation will:
- Improve modularity and maintainability by isolating temporal-specific deployments
- Enable independent versioning and deployment of temporal workers
- Simplify the main helm chart by removing optional enterprise components
- Allow for easier testing and development of temporal worker features
**Success Criteria:**
- Temporal worker components are fully extracted into a separate helm chart
- Main chart can optionally depend on the temporal chart via subchart mechanism
- Both charts deploy successfully with existing configurations
- No breaking changes to existing deployments
## Phased Implementation Checklist
### Phase 1: Create New Chart Structure
- [x] Create directory structure at `ee/helm/temporal-worker/`
- [x] Create `Chart.yaml` with appropriate metadata
- [x] Set chart name to `temporal-worker`
- [x] Set version to `0.1.0`
- [x] Add description and maintainer information
- [x] Create initial `values.yaml` with temporal-specific values
- [x] Create `templates/` directory
- [x] Add `.helmignore` file
### Phase 2: Extract Temporal Components
- [x] Copy all files from `helm/templates/temporal-worker/` to `ee/helm/temporal-worker/templates/`
- [x] `configmap.yaml`
- [x] `deployment.yaml`
- [x] `hpa.yaml`
- [x] `pdb.yaml`
- [x] `secrets.yaml`
- [x] `service.yaml`
- [x] `serviceaccount.yaml`
- [x] Update template references to use local chart context
- [x] Replace `.Values.temporalWorker` with `.Values` in all templates
- [x] Update any global value references
- [x] Extract temporal-specific helpers to `ee/helm/temporal-worker/templates/_helpers.tpl`
### Phase 3: Update Values Structure
- [x] Extract `temporalWorker` section from main `helm/values.yaml`
- [x] Create comprehensive `ee/helm/temporal-worker/values.yaml`
- [x] Remove the `temporalWorker` parent key
- [x] Ensure all nested values are at root level
- [x] Add any missing default values
- [x] Document all configurable values with comments
### Phase 4: Clean Up Main Chart
- [x] Remove `helm/templates/temporal-worker/` directory
- [x] Remove `temporalWorker` section from `helm/values.yaml`
- [x] Add optional dependency in `helm/Chart.yaml`:
```yaml
dependencies:
- name: temporal-worker
version: "0.1.0"
repository: "file://../ee/helm/temporal-worker"
condition: temporal-worker.enabled
```
- [x] Update any documentation references
### Phase 5: Integration Testing
- [x] Test standalone temporal chart deployment:
```bash
helm install temporal-test ee/helm/temporal-worker/ -f test-values.yaml
```
- [x] Test main chart with temporal subchart disabled
- [x] Test main chart with temporal subchart enabled
- [x] Verify all resources are created correctly
- [x] Check service connectivity and configuration
### Phase 6: Documentation and Finalization
- [ ] Create `ee/helm/temporal-worker/README.md` with:
- [ ] Installation instructions
- [ ] Configuration options
- [ ] Example values files
- [ ] Update main helm chart README if needed
- [ ] Create example values files for common scenarios
- [ ] Add upgrade notes for existing deployments
## Background Details / Investigation / Implementation Advice
### Current Structure
The temporal worker components are currently embedded in the main helm chart under `helm/templates/temporal-worker/`. The configuration uses a conditional flag `.Values.temporalWorker.enabled` to control deployment.
### Key Considerations
1. **Namespace Handling**: The temporal worker may need to communicate with services in different namespaces. Ensure service discovery works correctly.
2. **Value References**: When extracting, be careful with references to global values or other chart components. These will need to be passed explicitly or configured separately.
3. **Secret Management**: The temporal worker uses both Vault and local secrets. Ensure the secret provider configuration is properly isolated.
4. **Image Registry**: The worker uses a private Harbor registry. Ensure image pull secrets are correctly configured in the new chart.
5. **Resource Naming**: Consider prefixing resources with the release name to avoid conflicts when both charts are deployed in the same namespace.
### Testing Approach
1. Create a test values file that mirrors production configuration
2. Deploy in a test namespace first
3. Verify all pods start successfully
4. Check logs for configuration errors
5. Test actual workflow execution if possible
### Rollback Strategy
If issues arise during migration:
1. The original chart remains unchanged until Phase 4
2. Can quickly revert by not using the subchart dependency
3. Keep backup of original temporal-worker templates until fully validated
## Implementer's Scratch Pad
### Notes and Observations
<!-- Track findings during implementation -->
### Issues Encountered and Resolutions
<!-- Document any problems and their solutions -->
### Deviations from Plan
<!-- Note any changes to the original approach -->
### Test Results
<!-- Record deployment test outcomes -->
### Questions for Review
<!-- Capture items needing clarification -->
### Commands Used
<!-- Keep track of useful helm/kubectl commands -->
```bash
# Example commands for reference
# helm dep update helm/
# helm template temporal-worker ee/helm/temporal-worker/
# kubectl get all -l app.kubernetes.io/name=temporal-worker
```