mirror of
https://github.com/suitenumerique/docs.git
synced 2026-09-23 01:55:07 +02:00
We want to be able to configure both server and worker, the idea is to be able to deploy separately the server and the worker and to scale them.
1226 lines
53 KiB
YAML
1226 lines
53 KiB
YAML
# Default values for impress.
|
|
# This is a YAML-formatted file.
|
|
# Declare variables to be passed into your templates.
|
|
|
|
## @section General configuration
|
|
|
|
## @param image.repository Repository to use to pull impress's container image
|
|
## @param image.tag impress's container tag
|
|
## @param image.pullPolicy Container image pull policy
|
|
## @extra image.credentials.username Username for container registry authentication
|
|
## @extra image.credentials.password Password for container registry authentication
|
|
## @extra image.credentials.registry Registry url for which the credentials are specified
|
|
## @extra image.credentials.name Name of the generated secret for imagePullSecrets
|
|
image:
|
|
repository: lasuite/impress-backend
|
|
pullPolicy: IfNotPresent
|
|
tag: "latest"
|
|
|
|
## @param nameOverride Override the chart name
|
|
## @param fullnameOverride Override the full application name
|
|
nameOverride: ""
|
|
fullnameOverride: ""
|
|
|
|
## @skip commonEnvVars
|
|
commonEnvVars: &commonEnvVars
|
|
<<: []
|
|
|
|
## @param ingress.enabled whether to enable the Ingress or not
|
|
## @param ingress.className IngressClass to use for the Ingress
|
|
## @param ingress.host Host for the Ingress
|
|
## @param ingress.path Path to use for the Ingress
|
|
ingress:
|
|
enabled: false
|
|
className: null
|
|
host: impress.example.com
|
|
path: /
|
|
## @param ingress.hosts Additional host to configure for the Ingress
|
|
hosts: []
|
|
# - chart-example.local
|
|
## @param ingress.tls.enabled Whether to enable TLS for the Ingress
|
|
## @param ingress.tls.secretName Secret name for TLS config
|
|
## @skip ingress.tls.additional
|
|
## @extra ingress.tls.additional[].secretName Secret name for additional TLS config
|
|
## @extra ingress.tls.additional[].hosts[] Hosts for additional TLS config
|
|
tls:
|
|
enabled: true
|
|
secretName: null
|
|
additional: []
|
|
|
|
## @param ingress.customBackends Add custom backends to ingress
|
|
customBackends: []
|
|
|
|
## @param ingressCollaborationWS.enabled whether to enable the Ingress or not
|
|
## @param ingressCollaborationWS.className IngressClass to use for the Ingress
|
|
## @param ingressCollaborationWS.host Host for the Ingress
|
|
## @param ingressCollaborationWS.path Path to use for the Ingress
|
|
ingressCollaborationWS:
|
|
enabled: false
|
|
className: null
|
|
host: impress.example.com
|
|
path: /collaboration/ws/
|
|
## @param ingressCollaborationWS.hosts Additional host to configure for the Ingress
|
|
hosts: []
|
|
# - chart-example.local
|
|
## @param ingressCollaborationWS.tls.enabled Whether to enable TLS for the Ingress
|
|
## @param ingressCollaborationWS.tls.secretName Secret name for TLS config
|
|
## @skip ingressCollaborationWS.tls.additional
|
|
## @extra ingressCollaborationWS.tls.additional[].secretName Secret name for additional TLS config
|
|
## @extra ingressCollaborationWS.tls.additional[].hosts[] Hosts for additional TLS config
|
|
tls:
|
|
enabled: true
|
|
secretName: null
|
|
additional: []
|
|
|
|
## @param ingressCollaborationWS.customBackends Add custom backends to ingress
|
|
customBackends: []
|
|
|
|
## @param ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/enable-websocket
|
|
## @param ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/proxy-read-timeout
|
|
## @param ingressCollaborationWS.annotations.nginx.ingress.kubernetes.io/proxy-send-timeout
|
|
##
|
|
## No upstream-hash-by: yhub passes updates between its replicas through
|
|
## redis, so two clients editing the same document may land on different
|
|
## pods — where the y-provider it replaces needed a room to stay on one.
|
|
annotations:
|
|
nginx.ingress.kubernetes.io/enable-websocket: "true"
|
|
nginx.ingress.kubernetes.io/proxy-read-timeout: "86400"
|
|
nginx.ingress.kubernetes.io/proxy-send-timeout: "86400"
|
|
|
|
## @param ingressRedirects.enabled whether to enable the Ingress Redirects or not
|
|
## @param ingressRedirects.className IngressClass to use for the Ingress Redirects
|
|
## @param ingressRedirects.host Host for the Ingress Redirects
|
|
ingressRedirects:
|
|
enabled: false
|
|
className: null
|
|
host: impress.example.com
|
|
## @param ingressRedirects.tls.enabled Whether to enable TLS for the Ingress Redirects
|
|
## @param ingressRedirects.tls.secretName Secret name for TLS config
|
|
## @skip ingressRedirects.tls.additional
|
|
## @extra ingressRedirects.tls.additional[].secretName Secret name for additional TLS config
|
|
## @extra ingressRedirects.tls.additional[].hosts[] Hosts for additional TLS config
|
|
tls:
|
|
enabled: true
|
|
secretName: null
|
|
additional: []
|
|
## @param ingressRedirects.rules Rules for the Ingress Redirects
|
|
rules: []
|
|
|
|
## @param ingressCollaborationApi.enabled whether to enable the Ingress or not
|
|
## @param ingressCollaborationApi.className IngressClass to use for the Ingress
|
|
## @param ingressCollaborationApi.host Host for the Ingress
|
|
## @param ingressCollaborationApi.path Path to use for the Ingress
|
|
ingressCollaborationApi:
|
|
enabled: false
|
|
className: null
|
|
host: impress.example.com
|
|
## Only used when `paths` below is empty
|
|
path: /collaboration/api/
|
|
## @param ingressCollaborationApi.paths Paths to route to the collaboration server, one rule each
|
|
##
|
|
## The routes yhub serves to browsers, guarded by the same document
|
|
## authorization as the websocket. Everything it serves that is not listed
|
|
## here stays in-cluster — `create-ydoc`, `reset-connections`, `migrate`,
|
|
## `restore-ydoc` and `reset-ydoc` are called by the backend only, and
|
|
## publishing them would put document deletion and the legacy migration one
|
|
## request away from the internet.
|
|
##
|
|
## `jwks` is public on purpose: it carries the public halves of the keys
|
|
## yhub signs with, and nothing else.
|
|
paths:
|
|
- /collaboration/ydoc/
|
|
- /collaboration/jwks/
|
|
## @param ingressCollaborationApi.hosts Additional host to configure for the Ingress
|
|
hosts: []
|
|
# - chart-example.local
|
|
## @param ingressCollaborationApi.tls.enabled Whether to enable TLS for the Ingress
|
|
## @param ingressCollaborationApi.tls.secretName Secret name for TLS config
|
|
## @skip ingressCollaborationApi.tls.additional
|
|
## @extra ingressCollaborationApi.tls.additional[].secretName Secret name for additional TLS config
|
|
## @extra ingressCollaborationApi.tls.additional[].hosts[] Hosts for additional TLS config
|
|
tls:
|
|
enabled: true
|
|
secretName: null
|
|
additional: []
|
|
|
|
## @param ingressCollaborationApi.customBackends Add custom backends to ingress
|
|
customBackends: []
|
|
|
|
## @skip ingressCollaborationApi.annotations
|
|
## Same as ingressCollaborationWS: no upstream-hash-by, any yhub replica
|
|
## answers for any document.
|
|
annotations: {}
|
|
|
|
## @param ingressAdmin.enabled whether to enable the Ingress or not
|
|
## @param ingressAdmin.className IngressClass to use for the Ingress
|
|
## @param ingressAdmin.host Host for the Ingress
|
|
## @param ingressAdmin.path Path to use for the Ingress
|
|
ingressAdmin:
|
|
enabled: false
|
|
className: null
|
|
host: impress.example.com
|
|
path: /admin
|
|
## @param ingressAdmin.hosts Additional host to configure for the Ingress
|
|
hosts: []
|
|
# - chart-example.local
|
|
## @param ingressAdmin.tls.enabled Whether to enable TLS for the Ingress
|
|
## @param ingressAdmin.tls.secretName Secret name for TLS config
|
|
## @skip ingressAdmin.tls.additional
|
|
## @extra ingressAdmin.tls.additional[].secretName Secret name for additional TLS config
|
|
## @extra ingressAdmin.tls.additional[].hosts[] Hosts for additional TLS config
|
|
tls:
|
|
enabled: true
|
|
secretName: null
|
|
additional: []
|
|
|
|
## @param ingressMedia.enabled whether to enable the Ingress or not
|
|
## @param ingressMedia.className IngressClass to use for the Ingress
|
|
## @param ingressMedia.host Host for the Ingress
|
|
## @param ingressMedia.path Path to use for the Ingress
|
|
ingressMedia:
|
|
enabled: false
|
|
className: null
|
|
host: impress.example.com
|
|
path: /media/(.*)
|
|
## @param ingressMedia.hosts Additional host to configure for the Ingress
|
|
hosts: []
|
|
# - chart-example.local
|
|
## @param ingressMedia.tls.enabled Whether to enable TLS for the Ingress
|
|
## @param ingressMedia.tls.secretName Secret name for TLS config
|
|
## @skip ingressMedia.tls.additional
|
|
## @extra ingressMedia.tls.additional[].secretName Secret name for additional TLS config
|
|
## @extra ingressMedia.tls.additional[].hosts[] Hosts for additional TLS config
|
|
tls:
|
|
enabled: true
|
|
secretName: null
|
|
additional: []
|
|
|
|
## @param ingressMedia.annotations.nginx.ingress.kubernetes.io/auth-url
|
|
## @param ingressMedia.annotations.nginx.ingress.kubernetes.io/auth-response-headers
|
|
## @param ingressMedia.annotations.nginx.ingress.kubernetes.io/upstream-vhost
|
|
## @param ingressMedia.annotations.nginx.ingress.kubernetes.io/configuration-snippet
|
|
annotations:
|
|
nginx.ingress.kubernetes.io/auth-url: https://impress.example.com/api/v1.0/documents/media-auth/
|
|
nginx.ingress.kubernetes.io/auth-response-headers: "Authorization, X-Amz-Date, X-Amz-Content-SHA256"
|
|
nginx.ingress.kubernetes.io/upstream-vhost: minio.impress.svc.cluster.local:9000
|
|
nginx.ingress.kubernetes.io/configuration-snippet: |
|
|
add_header Content-Security-Policy "default-src 'none'" always;
|
|
|
|
## @param serviceMedia.host Hostname of the media storage backend (S3/MinIO) used by the media ingress
|
|
## @param serviceMedia.port Port of the media storage backend
|
|
## @param serviceMedia.annotations Annotations to add to the media ExternalName Service
|
|
serviceMedia:
|
|
host: minio.impress.svc.cluster.local
|
|
port: 9000
|
|
annotations: {}
|
|
|
|
## @section backend
|
|
|
|
backend:
|
|
## @param backend.command Override the backend container command
|
|
command: []
|
|
|
|
## @param backend.args Override the backend container args
|
|
args: []
|
|
|
|
## @param backend.replicas Amount of backend replicas
|
|
replicas: 3
|
|
|
|
## @param backend.shareProcessNamespace Enable share process namespace between containers
|
|
shareProcessNamespace: false
|
|
|
|
## @param backend.sidecars Add sidecars containers to backend deployment
|
|
sidecars: []
|
|
|
|
## @param backend.migrateJobAnnotations Annotations for the migrate job
|
|
migrateJobAnnotations: {}
|
|
|
|
## @param backend.jobs.ttlSecondsAfterFinished Period to wait before remove jobs
|
|
## @param backend.jobs.backoffLimit Numbers of jobs retries
|
|
jobs:
|
|
ttlSecondsAfterFinished: 30
|
|
backoffLimit: 2
|
|
|
|
## @param backend.securityContext.allowPrivilegeEscalation Whether to allow privilege escalation for the backend container
|
|
## @param backend.securityContext.capabilities.drop List of capabilities to drop for the backend container
|
|
## @param backend.securityContext.runAsNonRoot Whether to run the backend container as a non-root user
|
|
## @param backend.securityContext.seccompProfile.type Seccomp profile type for the backend container
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- "ALL"
|
|
runAsNonRoot: true
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
|
|
## @param backend.envVars Configure backend container environment variables
|
|
## @extra backend.envVars.BY_VALUE Example environment variable by setting value directly
|
|
## @extra backend.envVars.FROM_CONFIGMAP.configMapKeyRef.name Name of a ConfigMap when configuring env vars from a ConfigMap
|
|
## @extra backend.envVars.FROM_CONFIGMAP.configMapKeyRef.key Key within a ConfigMap when configuring env vars from a ConfigMap
|
|
## @extra backend.envVars.FROM_SECRET.secretKeyRef.name Name of a Secret when configuring env vars from a Secret
|
|
## @extra backend.envVars.FROM_SECRET.secretKeyRef.key Key within a Secret when configuring env vars from a Secret
|
|
## @skip backend.envVars
|
|
envVars:
|
|
<<: *commonEnvVars
|
|
|
|
## @skip backend.envFrom List of environment variables taken from Secrets or configMaps, common to backend and celery worker
|
|
envFrom: []
|
|
# envFrom:
|
|
# - secret:
|
|
# name: super-secret-user-credentials
|
|
# - configMapRef:
|
|
# name: my-environment-variables
|
|
|
|
## @extra backend.django.envVars Backend web deployment specific environment variables (not shared with celery worker)
|
|
## @skip backend.django.envVars
|
|
## @skip backend.django.envFrom List of environment variables taken from Secrets or configMaps, specific to the backend web deployment
|
|
django:
|
|
envVars: {}
|
|
envFrom: []
|
|
|
|
## @param backend.podAnnotations Annotations to add to the backend Pod
|
|
podAnnotations: {}
|
|
|
|
## @param backend.dpAnnotations Annotations to add to the backend Deployment
|
|
dpAnnotations: {}
|
|
|
|
## @param backend.service.type backend Service type
|
|
## @param backend.service.port backend Service listening port
|
|
## @param backend.service.targetPort backend container listening port
|
|
## @param backend.service.annotations Annotations to add to the backend Service
|
|
service:
|
|
type: ClusterIP
|
|
port: 80
|
|
targetPort: 8000
|
|
annotations: {}
|
|
|
|
## @param backend.migrate.command backend migrate command
|
|
## @param backend.migrate.restartPolicy backend migrate job restart policy
|
|
migrate:
|
|
command:
|
|
- /bin/sh
|
|
- "-c"
|
|
- |
|
|
attempt=0
|
|
until output=$(python manage.py check --database default 2>&1)
|
|
do
|
|
attempt=$((attempt + 1))
|
|
echo "Database check failed (attempt $attempt), retrying in 2s:"
|
|
echo "$output"
|
|
sleep 2
|
|
done
|
|
|
|
echo "Database is ready"
|
|
|
|
python manage.py migrate --no-input
|
|
restartPolicy: Never
|
|
|
|
## @param backend.createsuperuser.command backend migrate command
|
|
## @param backend.createsuperuser.restartPolicy backend migrate job restart policy
|
|
createsuperuser:
|
|
command:
|
|
- "/bin/sh"
|
|
- "-c"
|
|
- |
|
|
attempt=0
|
|
until output=$(python manage.py check --database default 2>&1)
|
|
do
|
|
attempt=$((attempt + 1))
|
|
echo "Database check failed (attempt $attempt), retrying in 2s:"
|
|
echo "$output"
|
|
sleep 2
|
|
done
|
|
|
|
echo "Database is ready"
|
|
|
|
python manage.py createsuperuser --email $DJANGO_SUPERUSER_EMAIL --password $DJANGO_SUPERUSER_PASSWORD
|
|
restartPolicy: Never
|
|
|
|
## @extra backend.job job dedicated to run a random management command, for example after a deployment
|
|
## @param backend.job.name The name to use to describe this job
|
|
## @param backend.job.command The management command to execute
|
|
## @param backend.job.restartPolicy The restart policy for the job.
|
|
## @extra backend.job.annotations Annotations to add to the job [default: argocd.argoproj.io/hook: PostSync]
|
|
## @skip backend.job.annotations.argocd.argoproj.io/hook
|
|
job:
|
|
name: ""
|
|
command: []
|
|
restartPolicy: Never
|
|
annotations:
|
|
argocd.argoproj.io/hook: PostSync
|
|
|
|
# List of cronjob to add
|
|
# cronjobs:
|
|
# - name: reset-database
|
|
# schedule: "0 */2 * * *"
|
|
# command:
|
|
# - "/bin/sh"
|
|
# - "-c"
|
|
# - python manage.py flush --no-input
|
|
## @param backend.cronjobs Cronjob name, schedule, command
|
|
cronjobs: []
|
|
|
|
## @param backend.probes.liveness.path [nullable] Configure path for backend HTTP liveness probe
|
|
## @param backend.probes.liveness.targetPort [nullable] Configure port for backend HTTP liveness probe
|
|
## @param backend.probes.liveness.initialDelaySeconds [nullable] Configure initial delay for backend liveness probe
|
|
## @param backend.probes.liveness.timeoutSeconds [nullable] Configure timeout for backend liveness probe
|
|
## @extra backend.probes.startup.path [nullable] Configure path for backend HTTP startup probe
|
|
## @extra backend.probes.startup.targetPort [nullable] Configure port for backend HTTP startup probe
|
|
## @extra backend.probes.startup.initialDelaySeconds [nullable] Configure initial delay for backend startup probe
|
|
## @extra backend.probes.startup.timeoutSeconds [nullable] Configure timeout for backend startup probe
|
|
## @param backend.probes.readiness.path [nullable] Configure path for backend HTTP readiness probe
|
|
## @param backend.probes.readiness.targetPort [nullable] Configure port for backend HTTP readiness probe
|
|
## @param backend.probes.readiness.initialDelaySeconds [nullable] Configure initial delay for backend readiness probe
|
|
## @param backend.probes.readiness.timeoutSeconds [nullable] Configure timeout for backend readiness probe
|
|
probes:
|
|
liveness:
|
|
path: /__lbheartbeat__
|
|
initialDelaySeconds: 10
|
|
readiness:
|
|
path: /__heartbeat__
|
|
initialDelaySeconds: 10
|
|
|
|
## @param backend.resources Resource requirements for the backend container
|
|
resources: {}
|
|
|
|
## @param backend.nodeSelector Node selector for the backend Pod
|
|
nodeSelector: {}
|
|
|
|
## @param backend.tolerations Tolerations for the backend Pod
|
|
tolerations: []
|
|
|
|
## @param backend.affinity Affinity for the backend Pod
|
|
affinity: {}
|
|
|
|
## @param backend.persistence Additional volumes to create and mount on the backend. Used for debugging purposes
|
|
## @extra backend.persistence.volume-name.size Size of the additional volume
|
|
## @extra backend.persistence.volume-name.type Type of the additional volume, persistentVolumeClaim or emptyDir
|
|
## @extra backend.persistence.volume-name.mountPath Path where the volume should be mounted to
|
|
persistence: {}
|
|
|
|
## @param backend.extraVolumeMounts Additional volumes to mount on the backend.
|
|
extraVolumeMounts: []
|
|
|
|
## @param backend.extraVolumes Additional volumes to mount on the backend.
|
|
extraVolumes: []
|
|
|
|
## @param backend.pdb.enabled Enable pdb on backend
|
|
pdb:
|
|
enabled: true
|
|
|
|
## @param backend.serviceAccountName Optional service account name to use for backend pods
|
|
serviceAccountName: null
|
|
|
|
## @param backend.themeCustomization.enabled Enable theme customization
|
|
## @param backend.themeCustomization.file_content Content of the theme customization file. Must be a json object.
|
|
## @param backend.themeCustomization.mount_path Path where the customization file will be mounted in the backend deployment.
|
|
themeCustomization:
|
|
enabled: false
|
|
file_content: ""
|
|
mount_path: /app/impress/configuration/theme
|
|
|
|
## @param backend.celery.replicas Amount of celery replicas
|
|
## @param backend.celery.command Override the celery container command
|
|
## @param backend.celery.args Override the celery container args
|
|
## @param backend.celery.resources Resource requirements for the celery container
|
|
## @param backend.celery.probes.liveness.exec.command Override the celery container liveness probe command
|
|
## @param backend.celery.probes.liveness.initialDelaySeconds Initial delay for the celery container liveness probe
|
|
## @param backend.celery.probes.liveness.timeoutSeconds Timeout for the celery container liveness probe
|
|
## @param backend.celery.probes.readiness.exec.command Override the celery container readiness probe command
|
|
## @param backend.celery.probes.readiness.initialDelaySeconds Initial delay for the celery container readiness probe
|
|
## @param backend.celery.probes.readiness.timeoutSeconds Timeout for the celery container readiness probe
|
|
## @extra backend.celery.envVars Celery worker specific environment variables (not shared with the backend web deployment)
|
|
## @skip backend.celery.envVars
|
|
## @skip backend.celery.envFrom List of environment variables taken from Secrets or configMaps, specific to celery worker
|
|
celery:
|
|
replicas: 1
|
|
command: []
|
|
args:
|
|
[
|
|
"celery",
|
|
"-A",
|
|
"impress.celery_app",
|
|
"worker",
|
|
"-l",
|
|
"INFO",
|
|
"-n",
|
|
"impress@%h",
|
|
]
|
|
envVars: {}
|
|
envFrom: []
|
|
resources: {}
|
|
probes:
|
|
liveness:
|
|
exec:
|
|
command:
|
|
[
|
|
"/bin/sh",
|
|
"-c",
|
|
"celery -A impress.celery_app inspect ping -d impress@$HOSTNAME",
|
|
]
|
|
initialDelaySeconds: 60
|
|
timeoutSeconds: 5
|
|
readiness:
|
|
exec:
|
|
command:
|
|
[
|
|
"/bin/sh",
|
|
"-c",
|
|
"celery -A impress.celery_app inspect ping -d impress@$HOSTNAME",
|
|
]
|
|
initialDelaySeconds: 15
|
|
timeoutSeconds: 5
|
|
|
|
## @section frontend
|
|
|
|
frontend:
|
|
## @param frontend.image.repository Repository to use to pull impress's frontend container image
|
|
## @param frontend.image.tag impress's frontend container tag
|
|
## @param frontend.image.pullPolicy frontend container image pull policy
|
|
image:
|
|
repository: lasuite/impress-frontend
|
|
pullPolicy: IfNotPresent
|
|
tag: "latest"
|
|
|
|
## @param frontend.command Override the frontend container command
|
|
command: []
|
|
|
|
## @param frontend.args Override the frontend container args
|
|
args: []
|
|
|
|
## @param frontend.replicas Amount of frontend replicas
|
|
replicas: 3
|
|
|
|
## @param frontend.shareProcessNamespace Enable share process namespace between containers
|
|
shareProcessNamespace: false
|
|
|
|
## @param frontend.sidecars Add sidecars containers to frontend deployment
|
|
sidecars: []
|
|
|
|
## @param frontend.securityContext.allowPrivilegeEscalation Whether to allow privilege escalation for the frontend container
|
|
## @param frontend.securityContext.capabilities.drop List of capabilities to drop for the frontend container
|
|
## @param frontend.securityContext.runAsNonRoot Whether to run the frontend container as a non-root user
|
|
## @param frontend.securityContext.seccompProfile.type Seccomp profile type for the frontend container
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- "ALL"
|
|
runAsNonRoot: true
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
|
|
## @param frontend.envVars Configure frontend container environment variables
|
|
## @extra frontend.envVars.BY_VALUE Example environment variable by setting value directly
|
|
## @extra frontend.envVars.FROM_CONFIGMAP.configMapKeyRef.name Name of a ConfigMap when configuring env vars from a ConfigMap
|
|
## @extra frontend.envVars.FROM_CONFIGMAP.configMapKeyRef.key Key within a ConfigMap when configuring env vars from a ConfigMap
|
|
## @extra frontend.envVars.FROM_SECRET.secretKeyRef.name Name of a Secret when configuring env vars from a Secret
|
|
## @extra frontend.envVars.FROM_SECRET.secretKeyRef.key Key within a Secret when configuring env vars from a Secret
|
|
## @skip frontend.envVars
|
|
envVars:
|
|
<<: *commonEnvVars
|
|
|
|
## @skip frontend.envFrom List of environment variables taken from Secrets or configMaps
|
|
envFrom: []
|
|
# envFrom:
|
|
# - secret:
|
|
# name: super-secret-user-credentials
|
|
# - configMapRef:
|
|
# name: my-environment-variables
|
|
|
|
## @param frontend.podAnnotations Annotations to add to the frontend Pod
|
|
podAnnotations: {}
|
|
|
|
## @param frontend.dpAnnotations Annotations to add to the frontend Deployment
|
|
dpAnnotations: {}
|
|
|
|
## @param frontend.service.type frontend Service type
|
|
## @param frontend.service.port frontend Service listening port
|
|
## @param frontend.service.targetPort frontend container listening port
|
|
## @param frontend.service.annotations Annotations to add to the frontend Service
|
|
service:
|
|
type: ClusterIP
|
|
port: 80
|
|
targetPort: 8080
|
|
annotations: {}
|
|
|
|
## @param frontend.probes Configure probe for frontend
|
|
## @extra frontend.probes.liveness.path Configure path for frontend HTTP liveness probe
|
|
## @extra frontend.probes.liveness.targetPort Configure port for frontend HTTP liveness probe
|
|
## @extra frontend.probes.liveness.initialDelaySeconds Configure initial delay for frontend liveness probe
|
|
## @extra frontend.probes.liveness.initialDelaySeconds Configure timeout for frontend liveness probe
|
|
## @extra frontend.probes.startup.path Configure path for frontend HTTP startup probe
|
|
## @extra frontend.probes.startup.targetPort Configure port for frontend HTTP startup probe
|
|
## @extra frontend.probes.startup.initialDelaySeconds Configure initial delay for frontend startup probe
|
|
## @extra frontend.probes.startup.initialDelaySeconds Configure timeout for frontend startup probe
|
|
## @extra frontend.probes.readiness.path Configure path for frontend HTTP readiness probe
|
|
## @extra frontend.probes.readiness.targetPort Configure port for frontend HTTP readiness probe
|
|
## @extra frontend.probes.readiness.initialDelaySeconds Configure initial delay for frontend readiness probe
|
|
## @extra frontend.probes.readiness.initialDelaySeconds Configure timeout for frontend readiness probe
|
|
probes: {}
|
|
|
|
## @param frontend.resources Resource requirements for the frontend container
|
|
resources: {}
|
|
|
|
## @param frontend.nodeSelector Node selector for the frontend Pod
|
|
nodeSelector: {}
|
|
|
|
## @param frontend.tolerations Tolerations for the frontend Pod
|
|
tolerations: []
|
|
|
|
## @param frontend.affinity Affinity for the frontend Pod
|
|
affinity: {}
|
|
|
|
## @param frontend.persistence Additional volumes to create and mount on the frontend. Used for debugging purposes
|
|
## @extra frontend.persistence.volume-name.size Size of the additional volume
|
|
## @extra frontend.persistence.volume-name.type Type of the additional volume, persistentVolumeClaim or emptyDir
|
|
## @extra frontend.persistence.volume-name.mountPath Path where the volume should be mounted to
|
|
persistence: {}
|
|
|
|
## @param frontend.extraVolumeMounts Additional volumes to mount on the frontend.
|
|
extraVolumeMounts: []
|
|
|
|
## @param frontend.extraVolumes Additional volumes to mount on the frontend.
|
|
extraVolumes: []
|
|
|
|
## @param frontend.pdb.enabled Enable pdb on frontend
|
|
pdb:
|
|
enabled: true
|
|
|
|
## @param frontend.serviceAccountName Optional service account name to use for frontend pods
|
|
serviceAccountName: null
|
|
|
|
## @param frontend.robotsTxt.enabled Enable serving a custom robots.txt file from the frontend, e.g. to disallow indexing of non-production instances
|
|
## @param frontend.robotsTxt.content Content of the robots.txt file
|
|
robotsTxt:
|
|
enabled: false
|
|
content: |
|
|
User-agent: *
|
|
Allow: /
|
|
|
|
## @section posthog
|
|
|
|
posthog:
|
|
## @param posthog.ingress.enabled Enable or disable the ingress resource creation
|
|
## @param posthog.ingress.className Kubernetes ingress class name to use (e.g., nginx, traefik)
|
|
## @param posthog.ingress.host Primary hostname for the ingress resource
|
|
## @param posthog.ingress.path URL path prefix for the ingress routes (e.g., /)
|
|
## @param posthog.ingress.hosts Additional hostnames array to be included in the ingress
|
|
## @param posthog.ingress.tls.enabled Enable or disable TLS/HTTPS for the ingress
|
|
## @param posthog.ingress.tls.additional Additional TLS configurations for extra hosts/certificates
|
|
## @param posthog.ingress.customBackends Custom backend service configurations for the ingress
|
|
## @param posthog.ingress.annotations Additional Kubernetes annotations to apply to the ingress
|
|
ingress:
|
|
enabled: false
|
|
className: null
|
|
host: impress.example.com
|
|
path: /
|
|
hosts: []
|
|
tls:
|
|
enabled: true
|
|
additional: []
|
|
|
|
customBackends: []
|
|
annotations: {}
|
|
|
|
## @param posthog.ingressAssets.enabled Enable or disable the ingress resource creation
|
|
## @param posthog.ingressAssets.className Kubernetes ingress class name to use (e.g., nginx, traefik)
|
|
## @param posthog.ingressAssets.host Primary hostname for the ingress resource
|
|
## @param posthog.ingressAssets.paths URL paths prefix for the ingress routes (e.g., /static)
|
|
## @param posthog.ingressAssets.hosts Additional hostnames array to be included in the ingress
|
|
## @param posthog.ingressAssets.tls.enabled Enable or disable TLS/HTTPS for the ingress
|
|
## @param posthog.ingressAssets.tls.additional Additional TLS configurations for extra hosts/certificates
|
|
## @param posthog.ingressAssets.customBackends Custom backend service configurations for the ingress
|
|
## @param posthog.ingressAssets.annotations Additional Kubernetes annotations to apply to the ingress
|
|
ingressAssets:
|
|
enabled: false
|
|
className: null
|
|
host: impress.example.com
|
|
paths:
|
|
- /static
|
|
- /array
|
|
hosts: []
|
|
tls:
|
|
enabled: true
|
|
additional: []
|
|
|
|
customBackends: []
|
|
annotations: {}
|
|
|
|
## @param posthog.service.type Service type (e.g. ExternalName, ClusterIP, LoadBalancer)
|
|
## @param posthog.service.externalName External service hostname when type is ExternalName
|
|
## @param posthog.service.port Port number for the service
|
|
## @param posthog.service.annotations Additional annotations to apply to the service
|
|
service:
|
|
type: ExternalName
|
|
externalName: eu.i.posthog.com
|
|
port: 443
|
|
annotations: {}
|
|
|
|
## @param posthog.assetsService.type Service type (e.g. ExternalName, ClusterIP, LoadBalancer)
|
|
## @param posthog.assetsService.externalName External service hostname when type is ExternalName
|
|
## @param posthog.assetsService.port Port number for the service
|
|
## @param posthog.assetsService.annotations Additional annotations to apply to the service
|
|
assetsService:
|
|
type: ExternalName
|
|
externalName: eu-assets.i.posthog.com
|
|
port: 443
|
|
annotations: {}
|
|
|
|
## @section yProvider
|
|
##
|
|
## The conversion service, and nothing else since the collaboration moved to
|
|
## yhub: this deployment *is* the converter the backend calls on
|
|
## `Y_PROVIDER_API_BASE_URL`, so there is no separate converter release to
|
|
## enable anymore.
|
|
yProvider:
|
|
## @param yProvider.image.repository Repository to use to pull impress's yProvider container image
|
|
## @param yProvider.image.tag impress's yProvider container tag
|
|
## @param yProvider.image.pullPolicy yProvider container image pull policy
|
|
image:
|
|
repository: lasuite/impress-y-provider
|
|
pullPolicy: IfNotPresent
|
|
tag: "latest"
|
|
|
|
## @param yProvider.command Override the yProvider container command
|
|
command: []
|
|
|
|
## @param yProvider.args Override the yProvider container args
|
|
args: []
|
|
|
|
## @param yProvider.replicas Amount of yProvider replicas
|
|
replicas: 3
|
|
|
|
## @param yProvider.shareProcessNamespace Enable share process nameyProvider between containers
|
|
shareProcessNamespace: false
|
|
|
|
## @param yProvider.sidecars Add sidecars containers to yProvider deployment
|
|
sidecars: []
|
|
|
|
## @param yProvider.securityContext.allowPrivilegeEscalation Whether to allow privilege escalation for the yProvider container
|
|
## @param yProvider.securityContext.capabilities.drop List of capabilities to drop for the yProvider container
|
|
## @param yProvider.securityContext.runAsNonRoot Whether to run the yProvider container as a non-root user
|
|
## @param yProvider.securityContext.seccompProfile.type Seccomp profile type for the yProvider container
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- "ALL"
|
|
runAsNonRoot: true
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
|
|
## @param yProvider.envVars Configure yProvider container environment variables
|
|
## @extra yProvider.envVars.BY_VALUE Example environment variable by setting value directly
|
|
## @extra yProvider.envVars.FROM_CONFIGMAP.configMapKeyRef.name Name of a ConfigMap when configuring env vars from a ConfigMap
|
|
## @extra yProvider.envVars.FROM_CONFIGMAP.configMapKeyRef.key Key within a ConfigMap when configuring env vars from a ConfigMap
|
|
## @extra yProvider.envVars.FROM_SECRET.secretKeyRef.name Name of a Secret when configuring env vars from a Secret
|
|
## @extra yProvider.envVars.FROM_SECRET.secretKeyRef.key Key within a Secret when configuring env vars from a Secret
|
|
## @skip yProvider.envVars
|
|
envVars:
|
|
<<: *commonEnvVars
|
|
|
|
## @skip yProvider.envFrom List of environment variables taken from Secrets or configMaps
|
|
envFrom: []
|
|
# envFrom:
|
|
# - secret:
|
|
# name: super-secret-user-credentials
|
|
# - configMapRef:
|
|
# name: my-environment-variables
|
|
|
|
## @param yProvider.podAnnotations Annotations to add to the yProvider Pod
|
|
podAnnotations: {}
|
|
|
|
## @param yProvider.dpAnnotations Annotations to add to the yProvider Deployment
|
|
dpAnnotations: {}
|
|
|
|
## @param yProvider.service.type yProvider Service type
|
|
## @param yProvider.service.port yProvider Service listening port
|
|
## @param yProvider.service.targetPort yProvider container listening port
|
|
## @param yProvider.service.annotations Annotations to add to the yProvider Service
|
|
service:
|
|
type: ClusterIP
|
|
port: 443
|
|
targetPort: 4444
|
|
annotations: {}
|
|
|
|
## @param yProvider.probes.liveness.path Configure path for yProvider HTTP liveness probe
|
|
## @param yProvider.probes.liveness.initialDelaySeconds Configure initial delay for yProvider liveness probe
|
|
## @extra yProvider.probes.liveness.targetPort Configure port for yProvider HTTP liveness probe
|
|
## @extra yProvider.probes.liveness.timeoutSeconds Configure timeout for yProvider liveness probe
|
|
## @extra yProvider.probes.startup.path Configure path for yProvider HTTP startup probe
|
|
## @extra yProvider.probes.startup.targetPort Configure port for yProvider HTTP startup probe
|
|
## @extra yProvider.probes.startup.initialDelaySeconds Configure initial delay for yProvider startup probe
|
|
## @extra yProvider.probes.startup.timeoutSeconds Configure timeout for yProvider startup probe
|
|
## @extra yProvider.probes.readiness.path Configure path for yProvider HTTP readiness probe
|
|
## @extra yProvider.probes.readiness.targetPort Configure port for yProvider HTTP readiness probe
|
|
## @extra yProvider.probes.readiness.initialDelaySeconds Configure initial delay for yProvider readiness probe
|
|
## @extra yProvider.probes.readiness.timeoutSeconds Configure timeout for yProvider readiness probe
|
|
probes:
|
|
liveness:
|
|
path: /ping
|
|
initialDelaySeconds: 10
|
|
|
|
## @param yProvider.resources Resource requirements for the yProvider container
|
|
resources: {}
|
|
|
|
## @param yProvider.nodeSelector Node selector for the yProvider Pod
|
|
nodeSelector: {}
|
|
|
|
## @param yProvider.tolerations Tolerations for the yProvider Pod
|
|
tolerations: []
|
|
|
|
## @param yProvider.affinity Affinity for the yProvider Pod
|
|
affinity: {}
|
|
|
|
## @param yProvider.persistence Additional volumes to create and mount on the yProvider. Used for debugging purposes
|
|
## @extra yProvider.persistence.volume-name.size Size of the additional volume
|
|
## @extra yProvider.persistence.volume-name.type Type of the additional volume, persistentVolumeClaim or emptyDir
|
|
## @extra yProvider.persistence.volume-name.mountPath Path where the volume should be mounted to
|
|
persistence: {}
|
|
|
|
## @param yProvider.extraVolumeMounts Additional volumes to mount on the yProvider.
|
|
extraVolumeMounts: []
|
|
|
|
## @param yProvider.extraVolumes Additional volumes to mount on the yProvider.
|
|
extraVolumes: []
|
|
|
|
## @param yProvider.pdb.enabled Enable pdb on yProvider
|
|
pdb:
|
|
enabled: true
|
|
|
|
## @param yProvider.serviceAccountName Optional service account name to use for yProvider pods
|
|
serviceAccountName: null
|
|
|
|
## @section JWT signing keys
|
|
##
|
|
## The services do not share a secret: each signs the calls it makes to the
|
|
## others with an RSA key of its own and publishes the public half on its JWKS
|
|
## endpoint, where the others read it. Enabling this generates those keys on
|
|
## the cluster — a job creates them once in a secret every service mounts
|
|
## read-only, and leaves them alone on the next run — and points the backend
|
|
## and the collaboration server at them. No key is ever templated into a
|
|
## manifest or written in a values file, and only that job may create the
|
|
## secret: nothing in the release can read it back through the api.
|
|
##
|
|
## Leave it disabled to keep providing the keys yourself, through
|
|
## `backend.envVars.JWT_PRIVATE_KEY_FILE` and
|
|
## `yhub.envVars.YHUB_JWT_PRIVATE_KEY_FILE` and volumes of your own — both are
|
|
## left untouched when they are set by hand, enabled or not.
|
|
jwtKeys:
|
|
## @param jwtKeys.enabled Generate the JWT signing keys of the services on the cluster
|
|
enabled: false
|
|
|
|
## @param jwtKeys.existingSecret Secret already holding the keys, generated in a secret of the chart's own when empty
|
|
##
|
|
## It has to hold the two filenames below. Naming one skips the job and the
|
|
## rights it needs, the services only mount what is there.
|
|
existingSecret: null
|
|
|
|
## @param jwtKeys.mountPath Path the keys are mounted at, in every service reading them
|
|
mountPath: /data/jwt
|
|
|
|
## @param jwtKeys.backendKeyFilename Name of the key signing the tokens the backend issues
|
|
backendKeyFilename: private.pem
|
|
|
|
## @param jwtKeys.yhubKeyFilename Name of the key signing the calls the collaboration server makes to the backend
|
|
yhubKeyFilename: yhub-private.pem
|
|
|
|
## @param jwtKeys.keySize Size, in bits, of the generated RSA keys
|
|
keySize: 2048
|
|
|
|
## @param jwtKeys.rbac.create Create the service account and the role the job needs to create the secret
|
|
##
|
|
## Turning it off means providing `jwtKeys.job.serviceAccountName` with an
|
|
## account allowed to `create` secrets and to `get` the one named above.
|
|
rbac:
|
|
create: true
|
|
|
|
## @param jwtKeys.image.repository Repository to use to pull the image generating the keys
|
|
## @param jwtKeys.image.tag Tag of the image generating the keys
|
|
## @param jwtKeys.image.pullPolicy Pull policy of the image generating the keys
|
|
##
|
|
## openssl and a shell, nothing else. Its entrypoint is openssl itself, which
|
|
## the job replaces by the script generating both keys.
|
|
image:
|
|
repository: alpine/openssl
|
|
pullPolicy: IfNotPresent
|
|
tag: "3.5.7"
|
|
|
|
## @param jwtKeys.kubectlImage.repository Repository to use to pull the image handing the keys to the secret
|
|
## @param jwtKeys.kubectlImage.tag Tag of the image handing the keys to the secret
|
|
## @param jwtKeys.kubectlImage.pullPolicy Pull policy of the image handing the keys to the secret
|
|
##
|
|
## A second image because the openssl one carries no kubectl, and reaching
|
|
## the api with what it does carry (busybox wget, which cannot be told about
|
|
## the cluster ca) would mean sending the token over an unverified
|
|
## connection.
|
|
kubectlImage:
|
|
repository: dtzar/helm-kubectl
|
|
pullPolicy: IfNotPresent
|
|
tag: "3.16.2"
|
|
|
|
## @param jwtKeys.job.podSecurityContext Pod security context of the generating job
|
|
## @param jwtKeys.job.securityContext.allowPrivilegeEscalation Whether to allow privilege escalation for the job containers
|
|
## @param jwtKeys.job.securityContext.capabilities.drop List of capabilities to drop for the job containers
|
|
## @param jwtKeys.job.securityContext.runAsNonRoot Whether to run the job containers as a non-root user
|
|
## @param jwtKeys.job.securityContext.runAsUser User the job containers run as, their images declaring none
|
|
## @param jwtKeys.job.securityContext.runAsGroup Group the job containers run as
|
|
## @param jwtKeys.job.securityContext.seccompProfile.type Seccomp profile type for the job containers
|
|
## @param jwtKeys.job.restartPolicy Restart policy of the generating job
|
|
## @param jwtKeys.job.backoffLimit Numbers of generating job retries
|
|
## @param jwtKeys.job.ttlSecondsAfterFinished Period to wait before removing the generating job
|
|
## @param jwtKeys.job.generateCommand Override the command generating the keys
|
|
## @param jwtKeys.job.publishCommand Override the command creating the secret from the generated keys
|
|
## @param jwtKeys.job.annotations Annotations to add to the generating job
|
|
## @param jwtKeys.job.podAnnotations Annotations to add to the generating job Pod
|
|
## @param jwtKeys.job.resources Resource requirements for the job containers
|
|
## @param jwtKeys.job.nodeSelector Node selector for the generating job Pod
|
|
## @param jwtKeys.job.tolerations Tolerations for the generating job Pod
|
|
## @param jwtKeys.job.affinity Affinity for the generating job Pod
|
|
## @param jwtKeys.job.serviceAccountName Service account of the generating job Pod, the one created above when empty
|
|
## @skip jwtKeys.job.env
|
|
job:
|
|
podSecurityContext: {}
|
|
# neither image declares a user of its own, and kubernetes refuses to start
|
|
# a container asking for runAsNonRoot without knowing which user to run as
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- "ALL"
|
|
runAsNonRoot: true
|
|
runAsUser: 1000
|
|
runAsGroup: 1000
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
restartPolicy: Never
|
|
backoffLimit: 2
|
|
ttlSecondsAfterFinished: 30
|
|
generateCommand: []
|
|
publishCommand: []
|
|
annotations: {}
|
|
podAnnotations: {}
|
|
resources: {}
|
|
nodeSelector: {}
|
|
tolerations: []
|
|
affinity: {}
|
|
serviceAccountName: null
|
|
env: []
|
|
|
|
## @section yhub
|
|
##
|
|
## The collaboration server: it serves the whole /collaboration/ prefix, the
|
|
## websocket included, and replaces the y-provider on that role. It keeps the
|
|
## live state of a document in redis/valkey and persists it to its own
|
|
## PostgreSQL database, so it needs both — set `yhub.envVars.REDIS` and
|
|
## `yhub.envVars.POSTGRES`, there is nothing sensible to default them to.
|
|
## Disabling it sends the /collaboration/ ingresses back to the y-provider.
|
|
yhub:
|
|
## @param yhub.enabled Enable the yhub collaboration server, its service and its init-db job
|
|
enabled: true
|
|
|
|
## @param yhub.image.repository Repository to use to pull the yhub container image
|
|
## @param yhub.image.tag yhub container tag
|
|
## @param yhub.image.pullPolicy yhub container image pull policy
|
|
image:
|
|
repository: lasuite/impress-yhub
|
|
pullPolicy: IfNotPresent
|
|
tag: "latest"
|
|
|
|
## @param yhub.command Override the yhub container command
|
|
command: []
|
|
|
|
## @param yhub.args Override the yhub container args
|
|
args: []
|
|
|
|
## @param yhub.replicas Amount of yhub replicas
|
|
## Clients editing the same document need not land on the same pod: updates
|
|
## travel through redis. Each replica also runs a worker unless the worker is
|
|
## deployed apart, see below.
|
|
replicas: 3
|
|
|
|
## @param yhub.worker.enabled Deploy the worker apart from the server, each scaling on its own
|
|
## @param yhub.worker.replicas Amount of yhub worker replicas
|
|
## @param yhub.worker.resources Resource requirements for the yhub worker container, the server ones when empty
|
|
## @param yhub.worker.podAnnotations Annotations to add to the yhub worker Pod, the server ones when empty
|
|
## @param yhub.worker.dpAnnotations Annotations to add to the yhub worker Deployment, the server ones when empty
|
|
## @param yhub.worker.nodeSelector Node selector for the yhub worker Pod, the server one when empty
|
|
## @param yhub.worker.tolerations Tolerations for the yhub worker Pod, the server ones when empty
|
|
## @param yhub.worker.affinity Affinity for the yhub worker Pod, the server one when empty
|
|
## @param yhub.worker.terminationGracePeriodSeconds Grace period given to a worker pod to finish its task, the server one when empty
|
|
## @param yhub.worker.pdb.enabled Enable pdb on the yhub worker
|
|
## @skip yhub.worker.envVars Environment variables of the worker only, on top of yhub.envVars
|
|
##
|
|
## yhub is two halves sharing nothing but redis and postgres: the server
|
|
## holds the websockets and serves the routes, the worker drains the stream
|
|
## into postgres. One process runs both by default. Enabling this splits them
|
|
## into two deployments — `YHUB_ROLE=server` and `YHUB_ROLE=worker`, the only
|
|
## difference between them — so the server scales with the connected editors
|
|
## and the worker with the write throughput.
|
|
##
|
|
## The worker binds nothing: no service, no ingress, and no probes to give it
|
|
## (its liveness is its process). Everything not named here is the server's:
|
|
## same image, same envVars, same secrets, same volumes.
|
|
worker:
|
|
enabled: false
|
|
replicas: 1
|
|
envVars: {}
|
|
resources: {}
|
|
podAnnotations: {}
|
|
dpAnnotations: {}
|
|
nodeSelector: {}
|
|
tolerations: []
|
|
affinity: {}
|
|
terminationGracePeriodSeconds: null
|
|
pdb:
|
|
enabled: true
|
|
|
|
## @param yhub.shareProcessNamespace Enable share process namespace between containers
|
|
shareProcessNamespace: false
|
|
|
|
## @param yhub.sidecars Add sidecars containers to yhub deployment
|
|
sidecars: []
|
|
|
|
## @param yhub.terminationGracePeriodSeconds Grace period given to a yhub pod to drain before it is killed
|
|
terminationGracePeriodSeconds: 60
|
|
|
|
## @param yhub.securityContext.allowPrivilegeEscalation Whether to allow privilege escalation for the yhub container
|
|
## @param yhub.securityContext.capabilities.drop List of capabilities to drop for the yhub container
|
|
## @param yhub.securityContext.runAsNonRoot Whether to run the yhub container as a non-root user
|
|
## @param yhub.securityContext.runAsUser User the yhub container runs as
|
|
## @param yhub.securityContext.runAsGroup Group the yhub container runs as
|
|
## @param yhub.securityContext.seccompProfile.type Seccomp profile type for the yhub container
|
|
##
|
|
## The user is named rather than left to the image: asking for runAsNonRoot
|
|
## without it is refused outright by kubernetes ("container has runAsNonRoot
|
|
## and image will run as root") on any image that declares none — which every
|
|
## yhub image built before the un-privileged user was added to its Dockerfile
|
|
## does. 1000 is the `node` user the base image already carries.
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- "ALL"
|
|
runAsNonRoot: true
|
|
runAsUser: 1000
|
|
runAsGroup: 1000
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
|
|
## @param yhub.envVars Configure yhub container environment variables
|
|
## @extra yhub.envVars.REDIS Required, redis/valkey url holding the live document state (e.g. redis://valkey:6379/0)
|
|
## @extra yhub.envVars.POSTGRES Required, url of the yhub database, created by the init-db job (e.g. postgres://user:pass@postgres:5432/yhub)
|
|
## @extra yhub.envVars.REDIS_PREFIX Namespace of the redis keys, when the instance is shared (default: yhub)
|
|
## @extra yhub.envVars.COLLABORATION_BACKEND_BASE_URL Base url of the Docs backend, which yhub asks about users and document access rights
|
|
## @extra yhub.envVars.COLLABORATION_SERVER_ORIGIN Comma separated list of the origins allowed to open a websocket
|
|
## @extra yhub.envVars.YHUB_JWT_PRIVATE_KEY_FILE Path to the RSA private key (PEM) yhub signs its calls to the backend with, mounted from a secret
|
|
## @extra yhub.envVars.SOFT_MIGRATION Set to "true" to seed rooms from the legacy Django/S3 document store on first access
|
|
## @extra yhub.envVars.BY_VALUE Example environment variable by setting value directly
|
|
## @extra yhub.envVars.FROM_CONFIGMAP.configMapKeyRef.name Name of a ConfigMap when configuring env vars from a ConfigMap
|
|
## @extra yhub.envVars.FROM_CONFIGMAP.configMapKeyRef.key Key within a ConfigMap when configuring env vars from a ConfigMap
|
|
## @extra yhub.envVars.FROM_SECRET.secretKeyRef.name Name of a Secret when configuring env vars from a Secret
|
|
## @extra yhub.envVars.FROM_SECRET.secretKeyRef.key Key within a Secret when configuring env vars from a Secret
|
|
## @skip yhub.envVars
|
|
envVars:
|
|
<<: *commonEnvVars
|
|
|
|
## @skip yhub.envFrom List of environment variables taken from Secrets or configMaps
|
|
envFrom: []
|
|
# envFrom:
|
|
# - secret:
|
|
# name: super-secret-user-credentials
|
|
# - configMapRef:
|
|
# name: my-environment-variables
|
|
|
|
## @param yhub.podAnnotations Annotations to add to the yhub Pod
|
|
podAnnotations: {}
|
|
|
|
## @param yhub.dpAnnotations Annotations to add to the yhub Deployment
|
|
dpAnnotations: {}
|
|
|
|
## @param yhub.initDbJobAnnotations Annotations for the yhub init-db job
|
|
initDbJobAnnotations: {}
|
|
|
|
## @param yhub.jobs.ttlSecondsAfterFinished Period to wait before removing the init-db job
|
|
## @param yhub.jobs.backoffLimit Numbers of init-db job retries
|
|
jobs:
|
|
ttlSecondsAfterFinished: 30
|
|
backoffLimit: 2
|
|
|
|
## @param yhub.initDb.enabled Run the job creating and upgrading the yhub schema
|
|
## @param yhub.initDb.command Override the command creating and upgrading the yhub schema
|
|
## @param yhub.initDb.retries How many times the schema script is retried while the postgres server does not answer
|
|
## @param yhub.initDb.retryDelaySeconds Seconds between two attempts
|
|
## @param yhub.initDb.restartPolicy Restart policy of the init-db job
|
|
## @skip yhub.initDb.resources Resource requirements for the init-db container, defaults to yhub.resources
|
|
##
|
|
## The job runs in the default sync wave, next to the backend migrate job,
|
|
## and waits for its database the same way that one waits for Django's:
|
|
## nothing in this chart creates the postgres server, so it has to be given
|
|
## the time whatever does takes. The defaults below wait five minutes.
|
|
initDb:
|
|
enabled: true
|
|
command: []
|
|
retries: 60
|
|
retryDelaySeconds: 5
|
|
restartPolicy: Never
|
|
resources: {}
|
|
|
|
## @param yhub.service.type yhub Service type
|
|
## @param yhub.service.port yhub Service listening port
|
|
## @param yhub.service.targetPort yhub container listening port
|
|
## @param yhub.service.annotations Annotations to add to the yhub Service
|
|
service:
|
|
type: ClusterIP
|
|
port: 443
|
|
targetPort: 3002
|
|
annotations: {}
|
|
|
|
## @param yhub.probes.liveness.path Configure path for yhub HTTP liveness probe
|
|
## @param yhub.probes.liveness.initialDelaySeconds Configure initial delay for yhub liveness probe
|
|
## @param yhub.probes.liveness.timeoutSeconds Configure timeout for yhub liveness probe
|
|
## @param yhub.probes.readiness.path Configure path for yhub HTTP readiness probe
|
|
## @param yhub.probes.readiness.initialDelaySeconds Configure initial delay for yhub readiness probe
|
|
## @param yhub.probes.readiness.timeoutSeconds Configure timeout for yhub readiness probe
|
|
## @extra yhub.probes.liveness.targetPort Configure port for yhub HTTP liveness probe
|
|
## @extra yhub.probes.readiness.targetPort Configure port for yhub HTTP readiness probe
|
|
## @extra yhub.probes.startup.path Configure path for yhub HTTP startup probe
|
|
## @extra yhub.probes.startup.targetPort Configure port for yhub HTTP startup probe
|
|
## @extra yhub.probes.startup.initialDelaySeconds Configure initial delay for yhub startup probe
|
|
## @extra yhub.probes.startup.timeoutSeconds Configure timeout for yhub startup probe
|
|
##
|
|
## Two routes yhub serves unauthenticated, and they answer different
|
|
## questions on purpose:
|
|
##
|
|
## - `ping` returns 200 without touching anything. Being answered at all is
|
|
## the proof the http channel and the event loop are alive, which is as far
|
|
## as a liveness probe should ever go: restarting a server over a store it
|
|
## does not reach would drop the websockets it is happily serving.
|
|
## - `ready` asks postgres and redis whether they answer, and returns 503
|
|
## when either does not. That takes the pod out of the service endpoints
|
|
## and leaves its siblings serving, which is what readiness is for. Its
|
|
## timeout is above the two seconds the server itself gives each store, so
|
|
## an unreachable one is reported rather than cut off.
|
|
probes:
|
|
liveness:
|
|
path: /collaboration/ping/v1
|
|
initialDelaySeconds: 10
|
|
timeoutSeconds: 2
|
|
readiness:
|
|
path: /collaboration/ready/v1
|
|
initialDelaySeconds: 5
|
|
timeoutSeconds: 3
|
|
|
|
## @param yhub.resources Resource requirements for the yhub container
|
|
resources: {}
|
|
|
|
## @param yhub.nodeSelector Node selector for the yhub Pod
|
|
nodeSelector: {}
|
|
|
|
## @param yhub.tolerations Tolerations for the yhub Pod
|
|
tolerations: []
|
|
|
|
## @param yhub.affinity Affinity for the yhub Pod
|
|
affinity: {}
|
|
|
|
## @param yhub.persistence Additional volumes to create and mount on the yhub. Used for debugging purposes
|
|
## @extra yhub.persistence.volume-name.size Size of the additional volume
|
|
## @extra yhub.persistence.volume-name.type Type of the additional volume, persistentVolumeClaim or emptyDir
|
|
## @extra yhub.persistence.volume-name.mountPath Path where the volume should be mounted to
|
|
persistence: {}
|
|
|
|
## @param yhub.extraVolumeMounts Additional volumes to mount on the yhub. Mounted on the init-db job too
|
|
extraVolumeMounts: []
|
|
|
|
## @param yhub.extraVolumes Additional volumes to mount on the yhub. Mounted on the init-db job too
|
|
extraVolumes: []
|
|
|
|
## @param yhub.pdb.enabled Enable pdb on yhub
|
|
pdb:
|
|
enabled: true
|
|
|
|
## @param yhub.serviceAccountName Optional service account name to use for yhub pods
|
|
serviceAccountName: null
|
|
|
|
## @section docSpec
|
|
docSpec:
|
|
## @param docSpec.enabled Enable docSpec deployment
|
|
enabled: false
|
|
|
|
## @param docSpec.image.repository Repository to use to pull docSpec container image
|
|
## @param docSpec.image.tag docSpec container tag
|
|
## @param docSpec.image.pullPolicy docSpec container image pull policy
|
|
image:
|
|
repository: ghcr.io/docspec/api
|
|
pullPolicy: IfNotPresent
|
|
tag: "1.21.4"
|
|
|
|
## @param docSpec.command Override the docSpec container command
|
|
command: []
|
|
|
|
## @param docSpec.args Override the docSpec container args
|
|
args: []
|
|
|
|
## @param docSpec.replicas Amount of docSpec replicas
|
|
replicas: 1
|
|
|
|
## @param docSpec.securityContext.allowPrivilegeEscalation Whether to allow privilege escalation for the docSpec container
|
|
## @param docSpec.securityContext.capabilities.drop List of capabilities to drop for the docSpec container
|
|
## @param docSpec.securityContext.runAsNonRoot Whether to run the docSpec container as a non-root user
|
|
## @param docSpec.securityContext.seccompProfile.type Seccomp profile type for the docSpec container
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- "ALL"
|
|
runAsNonRoot: true
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
|
|
## @param docSpec.envVars Configure docSpec container environment variables
|
|
envVars: {}
|
|
|
|
## @skip docSpec.envFrom List of environment variables taken from Secrets or configMaps
|
|
envFrom: []
|
|
# envFrom:
|
|
# - secret:
|
|
# name: super-secret-user-credentials
|
|
# - configMapRef:
|
|
# name: my-environment-variables
|
|
|
|
## @param docSpec.service.type docSpec Service type
|
|
## @param docSpec.service.port docSpec Service listening port
|
|
## @param docSpec.service.targetPort docSpec container listening port
|
|
service:
|
|
type: ClusterIP
|
|
port: 4000
|
|
targetPort: 3000
|
|
|
|
## @param docSpec.probes.liveness.path Configure path for docSpec HTTP liveness probe
|
|
## @param docSpec.probes.readiness.path Configure path for docSpec HTTP readiness probe
|
|
probes:
|
|
liveness:
|
|
path: /health
|
|
readiness:
|
|
path: /health
|
|
|
|
## @param docSpec.resources docSpec resources
|
|
resources: {}
|
|
|
|
## @param docSpec.nodeSelector Node selector for the docSpec Pod
|
|
nodeSelector: {}
|
|
|
|
## @param docSpec.tolerations Tolerations for the docSpec Pod
|
|
tolerations: []
|
|
|
|
## @param docSpec.affinity Affinity for the docSpec Pod
|
|
affinity: {}
|
|
|
|
## @param docSpec.extraVolumeMounts Additional volumes to mount on docSpec
|
|
extraVolumeMounts: []
|
|
|
|
## @param docSpec.extraVolumes Additional volumes to mount on docSpec
|
|
extraVolumes: []
|