Add Secrets Manager resolution to probod-bootstrap

Introduce a Resolver that owns env lookup and typed parsing for
probod-bootstrap. Env values prefixed with aws://<secret-id> are
fetched from AWS Secrets Manager (plaintext SecretString); each
secret ID is cached per run. Builder now takes a Resolver only.

Prefix every probod-bootstrap input with PROBOD_ so bootstrap config
does not collide with unrelated process environment (for example
AWS_* used by other tooling). Secrets Manager authentication uses
the standard AWS SDK default chain (AWS_REGION, IAM role, profile);
PROBOD_AWS_* vars configure S3 in the generated config only.

Update Helm deployment env names, GNUmakefile dev-config, Lima
provision, e2e testutil, compose.prod.yaml, and docs.

Deployments must rename bootstrap env vars to PROBOD_* (e.g.
AUTH_COOKIE_SECRET → PROBOD_AUTH_COOKIE_SECRET).

BREAKING CHANGE: all env vars are now prefixed by `PROBOD_`.

Signed-off-by: Ludovic Vielle <ludovic@probo.com>
This commit is contained in:
Ludovic Vielle
2026-06-24 11:06:49 +02:00
parent 612e9cbc22
commit 2b8f6f5b3b
18 changed files with 1152 additions and 732 deletions

View File

@@ -322,6 +322,41 @@ spec:
key: probo/db-password
```
### Native AWS Secrets Manager (probod-bootstrap)
Alternatively, `probod-bootstrap` can fetch secrets directly from AWS Secrets
Manager without External Secrets Operator. Point env vars at individual secrets
with the `aws://<secret-id>` prefix (e.g.
`PROBOD_ENCRYPTION_KEY=aws://probo/sandbox/probod/encryption_key`). The path
after `aws://` is the secret name or ARN; the plaintext `SecretString` is used
directly. Each env var can reference a different secret. Plain env values are
also supported for non-sensitive config.
Grant the caller `secretsmanager:GetSecretValue` on each secret (EKS IRSA
example):
```yaml
env:
- name: AWS_REGION
value: "us-east-1"
- name: PROBOD_BASE_URL
value: "https://app.example.com"
- name: PROBOD_ENCRYPTION_KEY
value: "aws://probo/sandbox/probod/encryption_key"
- name: PROBOD_AUTH_COOKIE_SECRET
value: "aws://probo/sandbox/probod/cookie_secret"
- name: PROBOD_AUTH_PASSWORD_PEPPER
value: "aws://probo/sandbox/probod/password_pepper"
- name: PROBOD_OAUTH2_SERVER_SIGNING_KEY
value: "aws://probo/sandbox/probod/oauth2_signing_key"
```
Each secret in AWS Secrets Manager stores a single plaintext value (for
example a base64 key, password, or PEM).
When `PROBOD_ENCRYPTION_KEY` or another bootstrap env var is set (including
`aws://` references), the container entrypoint runs `probod-bootstrap`.
## Full Values
| Key | Type | Default | Description |

View File

@@ -43,19 +43,19 @@ spec:
- name: CONFIG_FILE
value: "/data/probod/config.yml"
# Observability - Metrics
- name: METRICS_ADDR
- name: PROBOD_METRICS_ADDR
value: "0.0.0.0:{{ .Values.probo.metrics.port }}"
{{- if .Values.probo.tracing.enabled }}
# Observability - Tracing
- name: TRACING_ADDR
- name: PROBOD_TRACING_ADDR
value: {{ .Values.probo.tracing.addr | quote }}
- name: TRACING_MAX_BATCH_SIZE
- name: PROBOD_TRACING_MAX_BATCH_SIZE
value: {{ .Values.probo.tracing.maxBatchSize | quote }}
- name: TRACING_BATCH_TIMEOUT
- name: PROBOD_TRACING_BATCH_TIMEOUT
value: {{ .Values.probo.tracing.batchTimeout | quote }}
- name: TRACING_EXPORT_TIMEOUT
- name: PROBOD_TRACING_EXPORT_TIMEOUT
value: {{ .Values.probo.tracing.exportTimeout | quote }}
- name: TRACING_MAX_QUEUE_SIZE
- name: PROBOD_TRACING_MAX_QUEUE_SIZE
value: {{ .Values.probo.tracing.maxQueueSize | quote }}
{{- end }}
# Application Configuration
@@ -66,96 +66,96 @@ spec:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: encryption-key
- name: CHROME_DP_ADDR
- name: PROBOD_CHROME_DP_ADDR
value: {{ include "probo.chrome.addr" . | quote }}
- name: BRANDING
- name: PROBOD_BRANDING
value: {{ .Values.probo.branding | quote }}
# API Configuration
- name: API_ADDR
- name: PROBOD_API_ADDR
value: ":{{ .Values.service.port }}"
- name: API_CORS_ALLOWED_ORIGINS
- name: PROBOD_API_CORS_ALLOWED_ORIGINS
value: {{ join "," .Values.probo.cors.allowedOrigins | quote }}
# PostgreSQL Database
- name: PG_ADDR
- name: PROBOD_PG_ADDR
value: {{ printf "%s:%v" (include "probo.postgresql.host" .) (include "probo.postgresql.port" .) | quote }}
- name: PG_USERNAME
- name: PROBOD_PG_USERNAME
value: {{ include "probo.postgresql.username" . | quote }}
- name: PG_PASSWORD
- name: PROBOD_PG_PASSWORD
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: db-password
- name: PG_DATABASE
- name: PROBOD_PG_DATABASE
value: {{ include "probo.postgresql.database" . | quote }}
- name: PG_POOL_SIZE
- name: PROBOD_PG_POOL_SIZE
value: {{ .Values.postgresql.poolSize | default "100" | quote }}
- name: PG_MIN_POOL_SIZE
- name: PROBOD_PG_MIN_POOL_SIZE
value: {{ .Values.postgresql.minPoolSize | default "10" | quote }}
- name: PG_MAX_CONN_IDLE_TIME_SECONDS
- name: PROBOD_PG_MAX_CONN_IDLE_TIME_SECONDS
value: {{ .Values.postgresql.maxConnIdleTimeSeconds | default "1800" | quote }}
- name: PG_MAX_CONN_LIFETIME_SECONDS
- name: PROBOD_PG_MAX_CONN_LIFETIME_SECONDS
value: {{ .Values.postgresql.maxConnLifetimeSeconds | default "3600" | quote }}
- name: PG_MAX_CONN_LIFETIME_JITTER_SECONDS
- name: PROBOD_PG_MAX_CONN_LIFETIME_JITTER_SECONDS
value: {{ .Values.postgresql.maxConnLifetimeJitterSeconds | default "300" | quote }}
- name: PG_HEALTH_CHECK_PERIOD_SECONDS
- name: PROBOD_PG_HEALTH_CHECK_PERIOD_SECONDS
value: {{ .Values.postgresql.healthCheckPeriodSeconds | default "60" | quote }}
{{- if .Values.postgresql.caBundle }}
- name: PG_CA_BUNDLE
- name: PROBOD_PG_CA_BUNDLE
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: pg-ca-bundle
{{- else if .Values.postgresql.caBundlePath }}
- name: PG_CA_BUNDLE_PATH
- name: PROBOD_PG_CA_BUNDLE_PATH
value: {{ .Values.postgresql.caBundlePath | quote }}
{{- end }}
# Authentication
- name: AUTH_DISABLE_SIGNUP
- name: PROBOD_AUTH_DISABLE_SIGNUP
value: {{ .Values.probo.auth.disableSignup | quote }}
- name: AUTH_INVITATION_TOKEN_VALIDITY
- name: PROBOD_AUTH_INVITATION_TOKEN_VALIDITY
value: {{ .Values.probo.auth.invitationTokenValidity | quote }}
- name: AUTH_COOKIE_NAME
- name: PROBOD_AUTH_COOKIE_NAME
value: {{ .Values.probo.auth.cookieName | quote }}
- name: AUTH_COOKIE_DOMAIN
- name: PROBOD_AUTH_COOKIE_DOMAIN
value: {{ .Values.probo.auth.cookieDomain | quote }}
- name: AUTH_COOKIE_SECRET
- name: PROBOD_AUTH_COOKIE_SECRET
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: cookie-secret
- name: AUTH_COOKIE_DURATION
- name: PROBOD_AUTH_COOKIE_DURATION
value: {{ .Values.probo.auth.cookieDuration | quote }}
- name: AUTH_PASSWORD_PEPPER
- name: PROBOD_AUTH_PASSWORD_PEPPER
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: password-pepper
- name: OAUTH2_SERVER_SIGNING_KEY
- name: PROBOD_OAUTH2_SERVER_SIGNING_KEY
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: oauth2-signing-key
{{- if .Values.probo.oauth2.cimdAllowedClientIds }}
- name: OAUTH2_SERVER_CIMD_ALLOWED_CLIENT_IDS
- name: PROBOD_OAUTH2_SERVER_CIMD_ALLOWED_CLIENT_IDS
value: {{ join "," .Values.probo.oauth2.cimdAllowedClientIds | quote }}
{{- end }}
- name: AUTH_PASSWORD_ITERATIONS
- name: PROBOD_AUTH_PASSWORD_ITERATIONS
value: {{ .Values.probo.auth.passwordIterations | quote }}
{{- if .Values.probo.saml.enabled }}
# SAML Authentication
- name: SAML_SESSION_DURATION
- name: PROBOD_SAML_SESSION_DURATION
value: {{ .Values.probo.saml.sessionDuration | quote }}
- name: SAML_CLEANUP_INTERVAL_SECONDS
- name: PROBOD_SAML_CLEANUP_INTERVAL_SECONDS
value: {{ .Values.probo.saml.cleanupIntervalSeconds | quote }}
{{- if .Values.probo.saml.certificate }}
- name: SAML_CERTIFICATE
- name: PROBOD_SAML_CERTIFICATE
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: saml-certificate
{{- end }}
{{- if .Values.probo.saml.privateKey }}
- name: SAML_PRIVATE_KEY
- name: PROBOD_SAML_PRIVATE_KEY
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
@@ -163,93 +163,93 @@ spec:
{{- end }}
{{- end }}
# Trust Center Authentication
- name: TRUST_AUTH_COOKIE_NAME
- name: PROBOD_TRUST_AUTH_COOKIE_NAME
value: {{ .Values.probo.trustAuth.cookieName | quote }}
- name: TRUST_AUTH_COOKIE_DOMAIN
- name: PROBOD_TRUST_AUTH_COOKIE_DOMAIN
value: {{ .Values.probo.trustAuth.cookieDomain | quote }}
- name: TRUST_AUTH_COOKIE_DURATION
- name: PROBOD_TRUST_AUTH_COOKIE_DURATION
value: {{ .Values.probo.trustAuth.cookieDuration | quote }}
- name: TRUST_AUTH_TOKEN_DURATION
- name: PROBOD_TRUST_AUTH_TOKEN_DURATION
value: {{ .Values.probo.trustAuth.tokenDuration | quote }}
- name: TRUST_AUTH_REPORT_URL_DURATION
- name: PROBOD_TRUST_AUTH_REPORT_URL_DURATION
value: {{ .Values.probo.trustAuth.reportUrlDuration | quote }}
- name: TRUST_AUTH_TOKEN_SECRET
- name: PROBOD_TRUST_AUTH_TOKEN_SECRET
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: trust-token-secret
- name: TRUST_AUTH_SCOPE
- name: PROBOD_TRUST_AUTH_SCOPE
value: {{ .Values.probo.trustAuth.scope | quote }}
- name: TRUST_AUTH_TOKEN_TYPE
- name: PROBOD_TRUST_AUTH_TOKEN_TYPE
value: {{ .Values.probo.trustAuth.tokenType | quote }}
# AWS / S3 Storage
- name: AWS_REGION
- name: PROBOD_AWS_REGION
value: {{ .Values.s3.region | quote }}
- name: AWS_BUCKET
- name: PROBOD_AWS_BUCKET
value: {{ .Values.s3.bucket | quote }}
- name: AWS_ACCESS_KEY_ID
- name: PROBOD_AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: s3-access-key
- name: AWS_SECRET_ACCESS_KEY
- name: PROBOD_AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: s3-secret-key
{{- $s3Endpoint := include "probo.s3.endpoint" . }}
{{- if $s3Endpoint }}
- name: AWS_ENDPOINT
- name: PROBOD_AWS_ENDPOINT
value: {{ $s3Endpoint | quote }}
{{- end }}
{{- if .Values.s3.usePathStyle }}
- name: AWS_USE_PATH_STYLE
- name: PROBOD_AWS_USE_PATH_STYLE
value: "true"
{{- end }}
# Email (SMTP)
- name: MAILER_SENDER_NAME
- name: PROBOD_MAILER_SENDER_NAME
value: {{ .Values.probo.mailer.senderName | quote }}
- name: MAILER_SENDER_EMAIL
- name: PROBOD_MAILER_SENDER_EMAIL
value: {{ .Values.probo.mailer.senderEmail | quote }}
- name: SMTP_ADDR
- name: PROBOD_SMTP_ADDR
value: {{ .Values.probo.mailer.smtp.addr | quote }}
{{- if .Values.probo.mailer.smtp.user }}
- name: SMTP_USER
- name: PROBOD_SMTP_USER
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: smtp-user
{{- end }}
{{- if .Values.probo.mailer.smtp.password }}
- name: SMTP_PASSWORD
- name: PROBOD_SMTP_PASSWORD
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: smtp-password
{{- end }}
- name: SMTP_TLS_REQUIRED
- name: PROBOD_SMTP_TLS_REQUIRED
value: {{ .Values.probo.mailer.smtp.tlsRequired | quote }}
{{- if .Values.probo.mailer.smtp.helloName }}
- name: SMTP_HELLO_NAME
- name: PROBOD_SMTP_HELLO_NAME
value: {{ .Values.probo.mailer.smtp.helloName | quote }}
{{- end }}
# OpenAI Integration
{{- if .Values.probo.openai.apiKey }}
- name: OPENAI_API_KEY
- name: PROBOD_OPENAI_API_KEY
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
key: openai-api-key
- name: OPENAI_TEMPERATURE
- name: PROBOD_OPENAI_TEMPERATURE
value: {{ .Values.probo.openai.temperature | quote }}
- name: OPENAI_MODEL_NAME
- name: PROBOD_OPENAI_MODEL_NAME
value: {{ .Values.probo.openai.modelName | quote }}
- name: OPENAI_MAX_TOKENS
- name: PROBOD_OPENAI_MAX_TOKENS
value: {{ .Values.probo.openai.maxTokens | quote }}
{{- end }}
# Agent Tools
{{- if .Values.probo.agentTools.firecrawlApiKey }}
- name: FIRECRAWL_API_KEY
- name: PROBOD_FIRECRAWL_API_KEY
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
@@ -257,193 +257,193 @@ spec:
{{- end }}
# Third-Party Vetter Agent
{{- if .Values.probo.thirdPartyVetter.provider }}
- name: AGENT_THIRD_PARTY_VETTER_PROVIDER
- name: PROBOD_AGENT_THIRD_PARTY_VETTER_PROVIDER
value: {{ .Values.probo.thirdPartyVetter.provider | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyVetter.modelName }}
- name: AGENT_THIRD_PARTY_VETTER_MODEL_NAME
- name: PROBOD_AGENT_THIRD_PARTY_VETTER_MODEL_NAME
value: {{ .Values.probo.thirdPartyVetter.modelName | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyVetter.temperature }}
- name: AGENT_THIRD_PARTY_VETTER_TEMPERATURE
- name: PROBOD_AGENT_THIRD_PARTY_VETTER_TEMPERATURE
value: {{ .Values.probo.thirdPartyVetter.temperature | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyVetter.maxTokens }}
- name: AGENT_THIRD_PARTY_VETTER_MAX_TOKENS
- name: PROBOD_AGENT_THIRD_PARTY_VETTER_MAX_TOKENS
value: {{ .Values.probo.thirdPartyVetter.maxTokens | quote }}
{{- end }}
# Third-Party Vetting Worker
{{- if .Values.probo.thirdPartyVettingWorker.interval }}
- name: THIRD_PARTY_VETTING_INTERVAL
- name: PROBOD_THIRD_PARTY_VETTING_INTERVAL
value: {{ .Values.probo.thirdPartyVettingWorker.interval | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyVettingWorker.maxConcurrency }}
- name: THIRD_PARTY_VETTING_MAX_CONCURRENCY
- name: PROBOD_THIRD_PARTY_VETTING_MAX_CONCURRENCY
value: {{ .Values.probo.thirdPartyVettingWorker.maxConcurrency | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyVettingWorker.staleAfter }}
- name: THIRD_PARTY_VETTING_STALE_AFTER
- name: PROBOD_THIRD_PARTY_VETTING_STALE_AFTER
value: {{ .Values.probo.thirdPartyVettingWorker.staleAfter | quote }}
{{- end }}
# Third-party Disambiguation Agent
{{- if .Values.probo.thirdPartyDisambiguation.provider }}
- name: AGENT_THIRD_PARTY_DISAMBIGUATION_PROVIDER
- name: PROBOD_AGENT_THIRD_PARTY_DISAMBIGUATION_PROVIDER
value: {{ .Values.probo.thirdPartyDisambiguation.provider | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyDisambiguation.modelName }}
- name: AGENT_THIRD_PARTY_DISAMBIGUATION_MODEL_NAME
- name: PROBOD_AGENT_THIRD_PARTY_DISAMBIGUATION_MODEL_NAME
value: {{ .Values.probo.thirdPartyDisambiguation.modelName | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyDisambiguation.temperature }}
- name: AGENT_THIRD_PARTY_DISAMBIGUATION_TEMPERATURE
- name: PROBOD_AGENT_THIRD_PARTY_DISAMBIGUATION_TEMPERATURE
value: {{ .Values.probo.thirdPartyDisambiguation.temperature | quote }}
{{- end }}
{{- if .Values.probo.thirdPartyDisambiguation.maxTokens }}
- name: AGENT_THIRD_PARTY_DISAMBIGUATION_MAX_TOKENS
- name: PROBOD_AGENT_THIRD_PARTY_DISAMBIGUATION_MAX_TOKENS
value: {{ .Values.probo.thirdPartyDisambiguation.maxTokens | quote }}
{{- end }}
# Tracker Mapping Agent
{{- if .Values.probo.trackerMapping.provider }}
- name: AGENT_TRACKER_MAPPING_PROVIDER
- name: PROBOD_AGENT_TRACKER_MAPPING_PROVIDER
value: {{ .Values.probo.trackerMapping.provider | quote }}
{{- end }}
{{- if .Values.probo.trackerMapping.modelName }}
- name: AGENT_TRACKER_MAPPING_MODEL_NAME
- name: PROBOD_AGENT_TRACKER_MAPPING_MODEL_NAME
value: {{ .Values.probo.trackerMapping.modelName | quote }}
{{- end }}
{{- if .Values.probo.trackerMapping.temperature }}
- name: AGENT_TRACKER_MAPPING_TEMPERATURE
- name: PROBOD_AGENT_TRACKER_MAPPING_TEMPERATURE
value: {{ .Values.probo.trackerMapping.temperature | quote }}
{{- end }}
{{- if .Values.probo.trackerMapping.maxTokens }}
- name: AGENT_TRACKER_MAPPING_MAX_TOKENS
- name: PROBOD_AGENT_TRACKER_MAPPING_MAX_TOKENS
value: {{ .Values.probo.trackerMapping.maxTokens | quote }}
{{- end }}
# Tracker Enrichment Agent
{{- if .Values.probo.trackerEnrichment.provider }}
- name: AGENT_TRACKER_ENRICHMENT_PROVIDER
- name: PROBOD_AGENT_TRACKER_ENRICHMENT_PROVIDER
value: {{ .Values.probo.trackerEnrichment.provider | quote }}
{{- end }}
{{- if .Values.probo.trackerEnrichment.modelName }}
- name: AGENT_TRACKER_ENRICHMENT_MODEL_NAME
- name: PROBOD_AGENT_TRACKER_ENRICHMENT_MODEL_NAME
value: {{ .Values.probo.trackerEnrichment.modelName | quote }}
{{- end }}
{{- if .Values.probo.trackerEnrichment.temperature }}
- name: AGENT_TRACKER_ENRICHMENT_TEMPERATURE
- name: PROBOD_AGENT_TRACKER_ENRICHMENT_TEMPERATURE
value: {{ .Values.probo.trackerEnrichment.temperature | quote }}
{{- end }}
{{- if .Values.probo.trackerEnrichment.maxTokens }}
- name: AGENT_TRACKER_ENRICHMENT_MAX_TOKENS
- name: PROBOD_AGENT_TRACKER_ENRICHMENT_MAX_TOKENS
value: {{ .Values.probo.trackerEnrichment.maxTokens | quote }}
{{- end }}
# Tracker Mapping Worker
{{- if .Values.probo.trackerMappingWorker.interval }}
- name: TRACKER_MAPPING_INTERVAL
- name: PROBOD_TRACKER_MAPPING_INTERVAL
value: {{ .Values.probo.trackerMappingWorker.interval | quote }}
{{- end }}
{{- if .Values.probo.trackerMappingWorker.maxConcurrency }}
- name: TRACKER_MAPPING_MAX_CONCURRENCY
- name: PROBOD_TRACKER_MAPPING_MAX_CONCURRENCY
value: {{ .Values.probo.trackerMappingWorker.maxConcurrency | quote }}
{{- end }}
{{- if .Values.probo.trackerMappingWorker.staleAfter }}
- name: TRACKER_MAPPING_STALE_AFTER
- name: PROBOD_TRACKER_MAPPING_STALE_AFTER
value: {{ .Values.probo.trackerMappingWorker.staleAfter | quote }}
{{- end }}
{{- if .Values.probo.trackerMappingWorker.agentTimeout }}
- name: TRACKER_MAPPING_AGENT_TIMEOUT
- name: PROBOD_TRACKER_MAPPING_AGENT_TIMEOUT
value: {{ .Values.probo.trackerMappingWorker.agentTimeout | quote }}
{{- end }}
{{- if .Values.probo.trackerMappingWorker.agentMaxTurns }}
- name: TRACKER_MAPPING_AGENT_MAX_TURNS
- name: PROBOD_TRACKER_MAPPING_AGENT_MAX_TURNS
value: {{ .Values.probo.trackerMappingWorker.agentMaxTurns | quote }}
{{- end }}
{{- if .Values.probo.trackerMappingWorker.disambiguationAgentTimeout }}
- name: TRACKER_MAPPING_DISAMBIGUATION_AGENT_TIMEOUT
- name: PROBOD_TRACKER_MAPPING_DISAMBIGUATION_AGENT_TIMEOUT
value: {{ .Values.probo.trackerMappingWorker.disambiguationAgentTimeout | quote }}
{{- end }}
# Common Pattern Enrichment Worker
{{- if .Values.probo.commonPatternEnrichmentWorker.interval }}
- name: COMMON_PATTERN_ENRICHMENT_INTERVAL
- name: PROBOD_COMMON_PATTERN_ENRICHMENT_INTERVAL
value: {{ .Values.probo.commonPatternEnrichmentWorker.interval | quote }}
{{- end }}
{{- if .Values.probo.commonPatternEnrichmentWorker.maxConcurrency }}
- name: COMMON_PATTERN_ENRICHMENT_MAX_CONCURRENCY
- name: PROBOD_COMMON_PATTERN_ENRICHMENT_MAX_CONCURRENCY
value: {{ .Values.probo.commonPatternEnrichmentWorker.maxConcurrency | quote }}
{{- end }}
{{- if .Values.probo.commonPatternEnrichmentWorker.staleAfter }}
- name: COMMON_PATTERN_ENRICHMENT_STALE_AFTER
- name: PROBOD_COMMON_PATTERN_ENRICHMENT_STALE_AFTER
value: {{ .Values.probo.commonPatternEnrichmentWorker.staleAfter | quote }}
{{- end }}
{{- if .Values.probo.commonPatternEnrichmentWorker.agentTimeout }}
- name: COMMON_PATTERN_ENRICHMENT_AGENT_TIMEOUT
- name: PROBOD_COMMON_PATTERN_ENRICHMENT_AGENT_TIMEOUT
value: {{ .Values.probo.commonPatternEnrichmentWorker.agentTimeout | quote }}
{{- end }}
{{- if .Values.probo.commonPatternEnrichmentWorker.agentMaxTurns }}
- name: COMMON_PATTERN_ENRICHMENT_AGENT_MAX_TURNS
- name: PROBOD_COMMON_PATTERN_ENRICHMENT_AGENT_MAX_TURNS
value: {{ .Values.probo.commonPatternEnrichmentWorker.agentMaxTurns | quote }}
{{- end }}
# Common Third Party Enrichment Agent
{{- if .Values.probo.commonThirdPartyEnrichment.provider }}
- name: AGENT_COMMON_THIRD_PARTY_ENRICHMENT_PROVIDER
- name: PROBOD_AGENT_COMMON_THIRD_PARTY_ENRICHMENT_PROVIDER
value: {{ .Values.probo.commonThirdPartyEnrichment.provider | quote }}
{{- end }}
{{- if .Values.probo.commonThirdPartyEnrichment.modelName }}
- name: AGENT_COMMON_THIRD_PARTY_ENRICHMENT_MODEL_NAME
- name: PROBOD_AGENT_COMMON_THIRD_PARTY_ENRICHMENT_MODEL_NAME
value: {{ .Values.probo.commonThirdPartyEnrichment.modelName | quote }}
{{- end }}
{{- if .Values.probo.commonThirdPartyEnrichment.temperature }}
- name: AGENT_COMMON_THIRD_PARTY_ENRICHMENT_TEMPERATURE
- name: PROBOD_AGENT_COMMON_THIRD_PARTY_ENRICHMENT_TEMPERATURE
value: {{ .Values.probo.commonThirdPartyEnrichment.temperature | quote }}
{{- end }}
{{- if .Values.probo.commonThirdPartyEnrichment.maxTokens }}
- name: AGENT_COMMON_THIRD_PARTY_ENRICHMENT_MAX_TOKENS
- name: PROBOD_AGENT_COMMON_THIRD_PARTY_ENRICHMENT_MAX_TOKENS
value: {{ .Values.probo.commonThirdPartyEnrichment.maxTokens | quote }}
{{- end }}
# Common Third Party Enrichment Worker
{{- if .Values.probo.commonThirdPartyEnrichmentWorker.interval }}
- name: COMMON_THIRD_PARTY_ENRICHMENT_INTERVAL
- name: PROBOD_COMMON_THIRD_PARTY_ENRICHMENT_INTERVAL
value: {{ .Values.probo.commonThirdPartyEnrichmentWorker.interval | quote }}
{{- end }}
{{- if .Values.probo.commonThirdPartyEnrichmentWorker.maxConcurrency }}
- name: COMMON_THIRD_PARTY_ENRICHMENT_MAX_CONCURRENCY
- name: PROBOD_COMMON_THIRD_PARTY_ENRICHMENT_MAX_CONCURRENCY
value: {{ .Values.probo.commonThirdPartyEnrichmentWorker.maxConcurrency | quote }}
{{- end }}
{{- if .Values.probo.commonThirdPartyEnrichmentWorker.staleAfter }}
- name: COMMON_THIRD_PARTY_ENRICHMENT_STALE_AFTER
- name: PROBOD_COMMON_THIRD_PARTY_ENRICHMENT_STALE_AFTER
value: {{ .Values.probo.commonThirdPartyEnrichmentWorker.staleAfter | quote }}
{{- end }}
{{- if .Values.probo.commonThirdPartyEnrichmentWorker.agentTimeout }}
- name: COMMON_THIRD_PARTY_ENRICHMENT_AGENT_TIMEOUT
- name: PROBOD_COMMON_THIRD_PARTY_ENRICHMENT_AGENT_TIMEOUT
value: {{ .Values.probo.commonThirdPartyEnrichmentWorker.agentTimeout | quote }}
{{- end }}
{{- if .Values.probo.commonThirdPartyEnrichmentWorker.agentMaxTurns }}
- name: COMMON_THIRD_PARTY_ENRICHMENT_AGENT_MAX_TURNS
- name: PROBOD_COMMON_THIRD_PARTY_ENRICHMENT_AGENT_MAX_TURNS
value: {{ .Values.probo.commonThirdPartyEnrichmentWorker.agentMaxTurns | quote }}
{{- end }}
{{- if ne .Values.probo.commonThirdPartyEnrichmentWorker.confidenceThreshold nil }}
- name: COMMON_THIRD_PARTY_ENRICHMENT_CONFIDENCE_THRESHOLD
- name: PROBOD_COMMON_THIRD_PARTY_ENRICHMENT_CONFIDENCE_THRESHOLD
value: {{ .Values.probo.commonThirdPartyEnrichmentWorker.confidenceThreshold | quote }}
{{- end }}
{{- if .Values.probo.commonThirdPartyEnrichmentWorker.maxAttempts }}
- name: COMMON_THIRD_PARTY_ENRICHMENT_MAX_ATTEMPTS
- name: PROBOD_COMMON_THIRD_PARTY_ENRICHMENT_MAX_ATTEMPTS
value: {{ .Values.probo.commonThirdPartyEnrichmentWorker.maxAttempts | quote }}
{{- end }}
# Custom Domains
{{- if .Values.probo.customDomains.enabled }}
- name: CUSTOM_DOMAINS_RENEWAL_INTERVAL
- name: PROBOD_CUSTOM_DOMAINS_RENEWAL_INTERVAL
value: {{ .Values.probo.customDomains.renewalInterval | quote }}
- name: CUSTOM_DOMAINS_PROVISION_INTERVAL
- name: PROBOD_CUSTOM_DOMAINS_PROVISION_INTERVAL
value: {{ .Values.probo.customDomains.provisionInterval | quote }}
- name: CUSTOM_DOMAINS_CNAME_TARGET
- name: PROBOD_CUSTOM_DOMAINS_CNAME_TARGET
value: {{ .Values.probo.customDomains.cnameTarget | quote }}
- name: ACME_DIRECTORY
- name: PROBOD_ACME_DIRECTORY
value: {{ .Values.probo.customDomains.acme.directory | quote }}
- name: ACME_EMAIL
- name: PROBOD_ACME_EMAIL
value: {{ .Values.probo.customDomains.acme.email | quote }}
- name: ACME_KEY_TYPE
- name: PROBOD_ACME_KEY_TYPE
value: {{ .Values.probo.customDomains.acme.keyType | quote }}
{{- if .Values.probo.customDomains.acme.accountKey }}
- name: ACME_ACCOUNT_KEY
- name: PROBOD_ACME_ACCOUNT_KEY
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" . }}
@@ -453,30 +453,30 @@ spec:
# Connectors (Slack OAuth2)
{{- range .Values.probo.connectors }}
{{- if eq .name "slack" }}
- name: CONNECTOR_SLACK_CLIENT_ID
- name: PROBOD_CONNECTOR_SLACK_CLIENT_ID
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" $ }}
key: connector-slack-client-id
- name: CONNECTOR_SLACK_CLIENT_SECRET
- name: PROBOD_CONNECTOR_SLACK_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" $ }}
key: connector-slack-client-secret
{{- if .config.redirectUri }}
- name: CONNECTOR_SLACK_REDIRECT_URI
- name: PROBOD_CONNECTOR_SLACK_REDIRECT_URI
value: {{ .config.redirectUri | quote }}
{{- end }}
{{- if .config.authUrl }}
- name: CONNECTOR_SLACK_AUTH_URL
- name: PROBOD_CONNECTOR_SLACK_AUTH_URL
value: {{ .config.authUrl | quote }}
{{- end }}
{{- if .config.tokenUrl }}
- name: CONNECTOR_SLACK_TOKEN_URL
- name: PROBOD_CONNECTOR_SLACK_TOKEN_URL
value: {{ .config.tokenUrl | quote }}
{{- end }}
{{- if .config.signingSecret }}
- name: CONNECTOR_SLACK_SIGNING_SECRET
- name: PROBOD_CONNECTOR_SLACK_SIGNING_SECRET
valueFrom:
secretKeyRef:
name: {{ include "probo.fullname" $ }}