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
6.0 KiB
6.0 KiB
Temporal Worker - Remaining Deployment Tasks
This document outlines the remaining tasks needed to complete the temporal worker deployment to production.
Phase 1: Infrastructure Preparation and Secret Setup (Partial)
Vault Secrets Creation
These secrets need to be created in Vault before deployment:
-
INTERNAL_API_SHARED_SECRET
# Generate a secure 32+ character secret openssl rand -base64 32 # Store in Vault vault kv put secret/alga-psa/temporal-worker \ internal_api_shared_secret="<generated-secret>" -
ALGA_AUTH_KEY
# Verify this exists in shared secrets vault kv get secret/alga-psa/shared # If not present, generate and store openssl rand -base64 32 vault kv put secret/alga-psa/shared \ alga_auth_key="<generated-secret>"
Vault Policy Creation
Create the temporal-worker policy:
# temporal-worker-policy.hcl
path "secret/data/alga-psa/temporal-worker" {
capabilities = ["read"]
}
path "secret/data/alga-psa/shared" {
capabilities = ["read"]
}
# Apply the policy
vault policy write temporal-worker temporal-worker-policy.hcl
Kubernetes Service Account Configuration
# The service account is created by Helm, but needs Vault annotation
kubectl annotate serviceaccount alga-psa-temporal-worker \
-n msp \
vault.hashicorp.com/role=temporal-worker
Phase 3: Build and Registry Setup (Final Step)
Initial Image Build
Before first deployment, build and push the temporal worker image:
# Submit the build workflow
kubectl create -n argo -f - <<EOF
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: temporal-worker-initial-build-
spec:
workflowTemplateRef:
name: temporal-worker-build
arguments:
parameters:
- name: repo-url
value: "https://github.com/Nine-Minds/alga-psa.git"
- name: commit-sha
value: "$(git rev-parse HEAD)"
- name: set-latest
value: "true"
EOF
# Monitor the build
kubectl logs -n argo -l workflows.argoproj.io/workflow=temporal-worker-initial-build-xxxxx -f
# Verify image in Harbor
# Check harbor.nineminds.com/nineminds/temporal-worker:latest exists
Phase 5: Database and Network Configuration
Verify Connectivity
These checks should be performed from a test pod in the msp namespace:
# Create a test pod
kubectl run -n msp test-connectivity --image=busybox --rm -it -- sh
# Inside the pod:
# Test database connectivity
nc -zv pgvector.stackgres-pgvector.svc.cluster.local 5432
# Test Temporal connectivity
nc -zv temporal-frontend.temporal.svc.cluster.local 7233
# Test Redis (if needed)
nc -zv redis.msp.svc.cluster.local 6379
Phase 6: Deployment and Validation
Staging Deployment
- First deploy to a staging namespace if available
- Run the composite workflow with staging parameters
- Verify all components are working
Production Deployment Checklist
- All Vault secrets are created and accessible
- Initial Docker image is built and pushed
- Database connectivity is verified
- Temporal server is accessible
- Harbor credentials are configured
Deployment Command
# Deploy using the composite workflow
kubectl create -n argo -f - <<EOF
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: alga-psa-deploy-with-temporal-
spec:
workflowTemplateRef:
name: alga-psa-build-migrate-deploy-with-temporal
arguments:
parameters:
- name: repo-url
value: "https://github.com/Nine-Minds/alga-psa.git"
- name: commit-sha
value: "main"
- name: environment
value: "hosted"
- name: helm-values-file
value: "hosted.values.yaml"
- name: namespace
value: "msp"
- name: build-temporal-worker
value: "true" # Force temporal worker deployment
EOF
Phase 7: Monitoring and Observability
Prometheus Scraping Configuration
Add temporal worker metrics to Prometheus:
# prometheus-config.yaml
- job_name: 'temporal-worker'
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- msp
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component]
action: keep
regex: temporal-worker
- source_labels: [__meta_kubernetes_pod_name]
target_label: instance
- target_label: __address__
replacement: ${1}:8080
source_labels: [__meta_kubernetes_pod_ip]
Grafana Dashboard
Import or create a dashboard with:
- Worker pod count and status
- CPU and memory usage
- Workflow execution rate
- Activity execution duration
- Error rates
Alerting Rules
# temporal-worker-alerts.yaml
groups:
- name: temporal-worker
rules:
- alert: TemporalWorkerDown
expr: up{job="temporal-worker"} == 0
for: 5m
annotations:
summary: "Temporal worker is down"
- alert: TemporalWorkerHighErrorRate
expr: rate(temporal_workflow_failed_total[5m]) > 0.05
for: 10m
annotations:
summary: "High temporal workflow error rate"
- alert: TemporalWorkerMemoryHigh
expr: container_memory_usage_bytes{pod=~"alga-psa-temporal-worker.*"} / container_spec_memory_limit_bytes > 0.8
for: 5m
annotations:
summary: "Temporal worker memory usage is high"
Post-Deployment Verification
After successful deployment:
-
Check Logs
kubectl logs -n msp -l app.kubernetes.io/component=temporal-worker --tail=100 -
Verify Workflows
- Test tenant provisioning workflow
- Test email sending
- Test checkout session handling
-
Monitor Metrics
- CPU and memory usage should stabilize
- No error logs should appear
- Health checks should pass consistently
Rollback Plan
If issues occur:
-
Automatic Rollback: The deployment workflow includes automatic rollback on health check failure
-
Manual Rollback:
helm rollback alga-psa -n msp -
Disable Temporal Worker:
helm upgrade alga-psa ./helm \ -n msp \ -f hosted.values.yaml \ --set temporalWorker.enabled=false