registry:
# Shared fallback registry used when controlPlane/dataPlane/dataPlaneInit image registry is empty.
default: 684117700585.dkr.ecr.us-east-2.amazonaws.com
# Global image defaults.
image:
# Used when a component-specific image.tag is unset/empty.
tag: latest
controlPlane:
# Note: control plane is not yet designed for multi-replica operation
# and should be deployed with replicaCount: 1 for now.
replicaCount: 1
image:
registry: ""
repository: cake-agents/web
tag: latest
pullPolicy: Always
imagePullSecrets: []
# Public host used by Istio ingress resources and default ALLOWED_HOSTS.
host: ""
# Additional entries appended to ALLOWED_HOSTS (Vite-style: leading `.` = suffix).
extraHosts: []
# Web UI sign-out redirect (e.g. oauth2-proxy: /oauth2/sign_out?rd=/).
# Resolved against the public origin. Empty keeps the default sign-out behavior.
signOutUrl: ""
deployment:
# Set to override data plane image entirely (e.g. CI tag)
dataPlaneImage: ""
# Set to override data plane init image entirely (e.g. CI tag)
dataPlaneInitImage: ""
resources:
requests:
cpu: 100m
memory: 128Mi
livenessProbe:
path: /api/health
periodSeconds: 30
failureThreshold: 3
readinessProbe:
path: /api/health
periodSeconds: 10
failureThreshold: 3
startupProbe:
path: /api/health
periodSeconds: 10
failureThreshold: 30
extraEnv: []
serviceAccount:
create: true
automount: true
annotations: {}
name: ""
podAnnotations: {}
podLabels: {}
nodeSelector: {}
tolerations: []
affinity: {}
nameOverride: ""
fullnameOverride: ""
# Base path for the control plane.
pathPrefix: /
# K8s namespace for session data plane workloads.
sessionNamespace:
# Namespace to use for session workloads (empty = release namespace).
name: ""
# Create `sessionNamespace.name` when it differs from the release namespace.
create: false
# Existing secret containing a full DATABASE_URL. If unset, this chart uses
# the embedded Bitnami PostgreSQL secret + env var composition in the web pod.
externalDatabase:
existingSecret: ""
existingSecretKey: DATABASE_URL
# Optional map of secret key -> env var name (e.g. PGHOST, PGPORT, PGDATABASE, PGUSER, PGPASSWORD).
# When set, these env vars are injected from existingSecret and existingSecretKey is ignored.
existingSecretEnv: {}
# Embedded PostgreSQL (recommended for development only).
# For production, prefer an externally managed database and set externalDatabase.existingSecret.
postgresql:
enabled: true
auth:
username: postgres
# Leave empty to let the subchart generate and persist a random admin password.
password: ""
# Optional existing secret used by the Bitnami subchart for auth credentials.
# Must contain key `postgres-password` (and usually `password`).
existingSecret: ""
database: postgres
primary:
persistence:
enabled: true
size: 1Gi
# Optional External Secrets integrations.
externalSecrets:
# Generate embedded PostgreSQL credentials using ESO and write them to
# `postgresql.auth.existingSecret`.
enabled: false
# Recommended for previews: create once and do not rotate while PVC exists.
refreshPolicy: CreatedOnce
refreshInterval: 0s
generator:
length: 32
digits: 8
symbols: 8
noUpper: false
allowRepeat: true
sessionVolume:
# EBS volumes cannot be smaller than 1 GiB.
initialSize: 1Gi
# Empty = use cluster default StorageClass
storageClassName: ""
# Automatic session volume expansion. See the session volume autoscaling page.
diskAutoscale:
# Requires EKS kubelet fine-grained authorization.
enabled: true
cronExpression: "* * * * *"
highWatermarkRatio: 0.9
scaleFactor: 1.5
minIncrement: 1Gi
maxVolumeSize: 128Gi
rbac:
# Permissions for session workload management in sessionNamespace.
enabled: true
# Data plane configuration
dataPlane:
# Resources assigned to each newly created session's data-plane container.
resources:
requests:
memory: 640Mi
image:
registry: ""
repository: cake-agents/data-plane
tag: main
dataPlaneInit:
image:
registry: ""
repository: cake-agents/data-plane-init
tag: main
# Cake Agents uses Better Auth for user account management and auth.
# The chart by default creates a random secret used for signing session
# cookies. You can also provide your own secret or integrate with an
# external secret manager.
betterAuth:
secret:
# When externalSecrets.enabled=true, the chart renders an ExternalSecret that
# generates this Secret once (refreshPolicy defaults to CreatedOnce).
# When externalSecrets.enabled=false, the chart creates a v1 Secret with a
# generated value (stable across Helm upgrades via lookup).
create: true
# Secret name in the release namespace.
name: better-auth
# Annotations applied to the Secret (or ExternalSecret target Secret) when create=true.
annotations: {}
# Map of logical keys -> Secret data keys.
keys:
# Secret data key used for BETTER_AUTH_SECRET.
secret: secret
# Session authentication uses a dedicated HMAC key for data-plane credentials.
# This Secret is mounted only into the control-plane deployment.
sessionAuth:
secret:
# When externalSecrets.enabled=true, the chart renders an ExternalSecret that
# generates this Secret once (refreshPolicy defaults to CreatedOnce).
# When externalSecrets.enabled=false, the chart creates a v1 Secret with a
# generated value (stable across Helm upgrades via lookup).
create: true
# Secret name in the release namespace.
name: session-auth
# Annotations applied to the Secret (or ExternalSecret target Secret) when create=true.
annotations: {}
# Map of logical keys -> Secret data keys.
keys:
# Secret data key used for SESSION_AUTH_HMAC_KEY.
hmacKey: hmacKey
# Cake Agents supports OIDC authentication with any compliant provider. When
# enabled, users are redirected to the OIDC provider for login.
#
# Required OIDC scopes include: openid email profile.
oidc:
enabled: false
# Cake Agents internal provider ID. In the future, Cake may support
# multiple providers and this ID will be used to distinguish them
providerId: ""
# Restricts login to users with an email address in the specified
# domain (e.g. `example.com`).
domain: ""
# Issuer URL for OIDC discovery. Must support the well-known OIDC config endpoint.
issuer: ""
# Client ID from the OIDC provider. Required for both confidential and public clients.
clientId: ""
# For public OIDC clients (PKCE), set to true and omit client secret.
publicClient: false
pkce: true
# Client secret from the OIDC provider. Required for confidential clients, must be omitted for public clients.
clientSecret:
# Create an empty Secret scaffold in the release namespace.
# Set to false to reference an existing Secret.
create: false
name: sso-oidc
annotations: {}
key: clientSecret
# Alternatively, Cake supports delegating auth to an authenticating proxy
# via trusted header. When headerAuth.enabled=true, Cake Agents reads user
# identity from an OIDC ID Token (jwt.header) or directly from headers
# (email.header, user.header) set by the proxy. If using OIDC, the user's
# full name and email address must be present in the token claimed.
# Recommended OIDC scopes: openid email profile
headerAuth:
enabled: false
email:
header: ""
claim: email
jwt:
header: ""
user:
header: ""
claim: name
# Optional S3 object storage bootstrap. Disabled by default.
# Credentials use the AWS SDK default provider chain (IRSA, env vars, etc.).
s3:
enabled: false
# Target bucket name.
bucket: ""
# AWS region. Falls back to AWS_REGION when unset.
region: ""
# Optional custom endpoint for S3-compatible providers (MinIO, R2, etc.).
# Falls back to AWS_ENDPOINT_URL_S3 when unset.
endpoint: ""
# Optional key prefix applied to all objects.
prefix: ""
# If using Istio, the chart can optionally configure an Istio Gateway and VirtualService to route traffic to the control plane. You can also export the gateway credential for use in external DNS and TLS configuration.
istio:
enabled: false
inject: true
gateway:
# Use a shared cluster gateway (namespace/name) or leave empty and set create: true for a chart-owned Gateway.
name: ""
create: false
credentialName: istio-gateway-certificate-tls
authorizationPolicy:
# Create ingressgateway ALLOW and oauth2-proxy CUSTOM AuthorizationPolicies
# for the control plane host/path. Enabled by default so the chart manages
# ingress auth even when it doesn't own the Istio Gateway.
create: true