You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 09fed87
Browse filesBrowse the repository at this point in the historyBrowse files
feat(helm): dedicated worker Deployment for process-role split (#197)
* feat(helm): dedicated worker Deployment for process-role split
Close the P1-1 chart follow-up: worker.enabled (default false) renders a
delivery-loop Deployment with AGENTFLOW_PROCESS_ROLE=worker, pins the API
Deployment to role=api, and narrows the Service selector to component=api so
workers do not take request traffic. Requires controlPlane.store=postgres;
worker data volume is always emptyDir (no RWO multi-attach on the API PVC).
Shared container env extracted to templates/_env.tpl. Unit contract: 23/23.
* style: ruff format helm worker contract tests
* fix(helm): newline before extraEnv in shared container env
---------
Co-authored-by: JuliaEdom <uedomskikh@gmail.com>
name: {{ required "controlPlane.postgres.existingSecret is required when controlPlane.store=postgres (it must hold the PostgreSQL DSN; the chart ships no PG service)"$root.Values.controlPlane.postgres.existingSecret| quote }}
{{- if ne .Values.controlPlane.store "postgres" }}
3
+
{{- fail "worker.enabled requires controlPlane.store=postgres (AGENTFLOW_PROCESS_ROLE=api/worker needs a shared control plane; the embedded profile is single-process)." }}
{{- fail "Multi-replica requires BOTH an external serving engine (serving.backend=clickhouse, ADR 0006/0007) AND an external control-plane store (controlPlane.store=postgres, ADR 0009/0010): the embedded per-pod store forks webhook/alert/outbox/usage state across replicas (duplicate deliveries, split alert history). The app-side postgres adapter shipped with ADR 0010 slice 5; until the chart profile for it lands (rollout slice 6), keep replicaCount=1 and autoscaling.maxReplicas=1." }}
6
6
{{- end }}
7
+
{{- if and .Values.worker.enabled (ne .Values.controlPlane.store "postgres") }}
8
+
{{- fail "worker.enabled requires controlPlane.store=postgres (AGENTFLOW_PROCESS_ROLE=api/worker needs a shared control plane; the embedded profile is single-process)." }}
# Control-plane store (ADR 0010). Set explicitly (mirrors
95
-
# SERVING_BACKEND) so the rendered manifest is self-documenting; the
96
-
# app treats an unset value as 'embedded'. The postgres profile also
97
-
# sources its DSN from an operator-provided secret — the chart ships
98
-
# no PostgreSQL service, exactly as it ships no ClickHouse.
99
-
- name: AGENTFLOW_CONTROLPLANE_STORE
100
-
value: {{ .Values.controlPlane.store | quote }}
101
-
{{- if eq .Values.controlPlane.store "postgres" }}
102
-
- name: AGENTFLOW_CONTROLPLANE_PG_DSN
103
-
valueFrom:
104
-
secretKeyRef:
105
-
name: {{ required "controlPlane.postgres.existingSecret is required when controlPlane.store=postgres (it must hold the PostgreSQL DSN; the chart ships no PG service)" .Values.controlPlane.postgres.existingSecret | quote }}
0 commit comments