# Default image used by all components image: repository: twentycrm/twenty tag: "" # defaults to Chart.yaml appVersion pullPolicy: IfNotPresent nameOverride: "" fullnameOverride: "" # Global security context (uid/gid for all pods) securityContext: runAsUser: 1000 fsGroup: 1000 # Storage backend: local or s3 storage: type: local s3: bucket: "" region: "" endpoint: "" # Option A: direct values accessKeyId: "" secretAccessKey: "" # Option B: reference a Secret # secretName: my-s3-creds # accessKeyIdKey: accessKeyId # secretAccessKeyKey: secretAccessKey # Auth tokens (random if not provided) secrets: tokens: create: true name: tokens accessToken: "" # Server deployment server: enabled: true replicaCount: 1 image: {} # override repository/tag/pullPolicy per component resources: requests: cpu: 250m memory: 256Mi limits: cpu: 1000m memory: 1024Mi env: SIGN_IN_PREFILLED: "false" ACCESS_TOKEN_EXPIRES_IN: "7d" LOGIN_TOKEN_EXPIRES_IN: "1h" extraEnv: [] # - name: EMAIL_DRIVER # value: smtp # - name: SMTP_PASSWORD # valueFrom: # secretKeyRef: # name: smtp-creds # key: password service: type: ClusterIP port: 3000 ingress: enabled: true className: nginx acme: true # add cert-manager annotation for Let's Encrypt annotations: {} hosts: - host: crm.example.com paths: - path: / pathType: Prefix tls: - secretName: twenty-tls hosts: - crm.example.com persistence: enabled: true size: 10Gi storageClass: "" existingClaim: "" accessModes: - ReadWriteOnce dockerDataPersistence: enabled: true size: 100Mi storageClass: "" existingClaim: "" accessModes: - ReadWriteOnce extraVolumeMounts: [] # Pod scheduling and DNS nodeSelector: {} tolerations: [] affinity: {} dnsPolicy: ~ dnsConfig: {} # Health probes for the server container. Set any probe to null to disable it. # startupProbe gates the slow initial boot (up to periodSeconds x failureThreshold), # so liveness/readiness intentionally carry no initialDelaySeconds. startupProbe: httpGet: path: /healthz port: http-tcp periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 30 livenessProbe: httpGet: path: /healthz port: http-tcp periodSeconds: 30 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: httpGet: path: /healthz port: http-tcp periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 # Worker deployment worker: enabled: true replicaCount: 1 image: {} command: ["yarn", "worker:prod"] resources: requests: cpu: 250m memory: 1024Mi limits: cpu: 1000m memory: 2048Mi extraEnv: [] # Pod scheduling and DNS nodeSelector: {} tolerations: [] affinity: {} dnsPolicy: ~ dnsConfig: {} # PostgreSQL db: enabled: true internal: database: twenty appUser: twenty_app_user appPassword: "" # random if empty image: repository: twentycrm/twenty-postgres-spilo tag: 3.3-p2 resources: requests: cpu: 250m memory: 256Mi limits: cpu: 1000m memory: 1024Mi persistence: enabled: true size: 10Gi storageClass: "" existingClaim: "" accessModes: - ReadWriteOnce env: PGUSER_SUPERUSER: postgres PGPASSWORD_SUPERUSER: postgres SPILO_PROVIDER: local ALLOW_NOSSL: "true" external: host: "" port: 5432 user: twenty_app_user password: "" database: twenty ssl: false secretName: "" passwordKey: "" # Redis redisInternal: enabled: true image: repository: redis/redis-stack-server tag: 7.2.0-v10 pullPolicy: IfNotPresent resources: requests: cpu: 250m memory: 1024Mi limits: cpu: 500m memory: 2048Mi service: port: 6379 persistence: enabled: false size: 1Gi storageClass: "" existingClaim: "" accessModes: - ReadWriteOnce # External Redis (when redisInternal.enabled=false) redis: external: host: "" port: 6379 password: "" secretName: "" passwordKey: ""