Files
clawmates/deploy/helm/teamclaw/templates/configmap.yaml
T
Omar SobhandClaude Fable 5 70ec39f696 P6: S3 blob store, Helm chart, air-gapped installer verify loop
- S3BlobStore (object_store, path-style) behind the same BlobStore trait,
  tested against a REAL MinIO container (round trip, overwrite, NotFound
  on get and delete, nested keys); [storage] backend=local|s3 config with
  validation + server-side selection (S3 creds via env overlay)
- Helm chart: server pod with the secret broker as a SIDECAR sharing a
  private emptyDir unix socket (no network hop carries credentials),
  frontend, optional local PVC vs S3, OIDC/oauth values, unbuffered-SSE
  ingress annotations, NetworkPolicies (frontend->server only), hardened
  securityContexts; ci/check-helm.sh lints AND asserts the rendered
  topology properties
- deploy/airgapped/install.sh: offline signature+checksum verification via
  the bundled teamclaw-bundler BEFORE any docker load; --verify-only mode;
  ci/test-install.sh rehearses clean/tampered/wrong-key paths with the
  real binary
- CI: helm gate + installer rehearsal wired in

149 Rust tests; helm lint + rendered assertions green; installer
verify-path rehearsal green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-10 08:19:43 -05:00

47 lines
1.4 KiB
YAML

apiVersion: v1
kind: ConfigMap
metadata:
name: teamclaw-config
labels: {{- include "teamclaw.labels" . | nindent 4 }}
data:
teamclaw.toml: |
deploy_target = "cloud"
listen_addr = "0.0.0.0:8080"
[database]
# Overlaid by TEAMCLAW_DATABASE__URL from the Secret.
url = "postgres://overridden-by-env"
[llm]
provider = "{{ .Values.llm.provider }}"
model = "{{ .Values.llm.model }}"
{{- if .Values.llm.baseUrl }}
base_url = "{{ .Values.llm.baseUrl }}"
{{- end }}
[auth]
mode = "{{ .Values.auth.mode }}"
{{- if eq .Values.auth.mode "oidc" }}
issuer_url = "{{ required "auth.issuerUrl is required for oidc" .Values.auth.issuerUrl }}"
client_id = "{{ .Values.auth.clientId }}"
{{- end }}
[storage]
data_dir = "{{ .Values.storage.dataDir }}"
backend = "{{ .Values.storage.backend }}"
{{- if eq .Values.storage.backend "s3" }}
s3_endpoint = "{{ required "storage.s3.endpoint required" .Values.storage.s3.endpoint }}"
s3_bucket = "{{ required "storage.s3.bucket required" .Values.storage.s3.bucket }}"
{{- end }}
[broker]
socket_path = "/run/teamclaw/broker.sock"
{{- if .Values.oauth.issuerUrl }}
[oauth]
issuer_url = "{{ .Values.oauth.issuerUrl }}"
client_id = "{{ .Values.oauth.clientId }}"
redirect_base = "{{ .Values.oauth.redirectBase }}"
{{- end }}