An unofficial Helm chart to deploy Appwrite
Name | Url | |
---|---|---|
Marton Schneider | https://github.com/schneidermr |
Kubernetes: >=1.26
Repository | Name | Version |
---|---|---|
https://charts.bitnami.com/bitnami | influxdb | 5.10.2 |
https://charts.bitnami.com/bitnami | mariadb | 14.1.2 |
https://charts.bitnami.com/bitnami | redis | 18.4.0 |
Key | Type | Default | Description |
---|---|---|---|
clusterDomain | string | "cluster.local" |
The domain name of the Kubernetes cluster |
components.core.affinity | object | {} |
|
components.core.args | list | ["php","-e","app/http.php","-dopcache.preload=opcache.preload=/usr/src/code/app/preload.php"] |
Startup command arguments for the app |
components.core.autoscaling | object | {"behavior":{},"enabled":false,"maxReplicas":5,"minReplicas":1,"targetCPU":"60","targetMemory":""} |
Setup autoscaling to enable HPA (HorizontalPodAutoscaler). To enable autoscaling also need to configure the resource limits |
components.core.command | list | ["/bin/sh","-c"] |
Startup command for the app |
components.core.containerSecurityContext.allowPrivilegeEscalation | bool | false |
|
components.core.containerSecurityContext.capabilities.drop[0] | string | "ALL" |
|
components.core.containerSecurityContext.seccompProfile.type | string | "RuntimeDefault" |
|
components.core.deploymentStrategy.maxUnavailable | int | 1 |
|
components.core.deploymentStrategy.type | string | "RollingUpdate" |
|
components.core.env | bool | true |
Attach previously defined environment variables to the pod |
components.core.image | object | {"pullPolicy":"IfNotPresent","registry":"docker.io","repository":"appwrite/appwrite","tag":"1.4.13"} |
Core (aka Appwrite Studio - WebUI) component's image data |
components.core.ingress.annotations | object | {} |
|
components.core.ingress.className | string | "" |
|
components.core.ingress.enabled | bool | false |
|
components.core.ingress.rules[0].host | string | "localhost" |
|
components.core.ingress.rules[0].http.paths[0].backend.service.name | string | "appwrite-app-svc" |
|
components.core.ingress.rules[0].http.paths[0].backend.service.port.number | int | 80 |
|
components.core.ingress.rules[0].http.paths[0].path | string | "/" |
|
components.core.ingress.rules[0].http.paths[0].pathType | string | "Prefix" |
|
components.core.ingress.tls | list | [] |
|
components.core.livenessProbe | object | {"failureThreshold":10,"httpGet":{"path":"/api/health","port":80},"initialDelaySeconds":30,"timeoutSeconds":30} |
Define the liveness probe |
components.core.networkPolicy.egress[0] | object | {} |
|
components.core.networkPolicy.enabled | bool | false |
|
components.core.networkPolicy.ingress[0].from[0].ipBlock.cidr | string | "0.0.0.0/0" |
|
components.core.networkPolicy.ingress[0].from[1].namespaceSelector.matchLabels.namespace | string | "default" |
|
components.core.networkPolicy.ingress[0].ports[0].port | int | 80 |
|
components.core.networkPolicy.ingress[0].ports[0].protocol | string | "TCP" |
|
components.core.networkPolicy.policyTypes[0] | string | "Ingress" |
|
components.core.nodeSelector | object | {} |
|
components.core.podAnnotations | object | {} |
The annotations that the application's pod will get. Will be extended with the common pod labels, what is defined in the global. |
components.core.podDisruption.config | string | nil |
|
components.core.podDisruption.enabled | bool | false |
|
components.core.podLabels | object | {} |
The labels that the application's pod will get. Will be extended with the common pod labels, what is defined in the global. |
components.core.podSecurityContext.fsGroup | int | 472 |
|
components.core.podSecurityContext.fsGroupChangePolicy | string | "OnRootMismatch" |
|
components.core.podSecurityContext.runAsGroup | int | 472 |
|
components.core.podSecurityContext.runAsNonRoot | bool | true |
|
components.core.podSecurityContext.runAsUser | int | 472 |
|
components.core.ports[0].containerPort | int | 80 |
|
components.core.ports[0].name | string | "http" |
|
components.core.ports[0].protocol | string | "TCP" |
|
components.core.readinessProbe | object | {"httpGet":{"path":"/api/health","port":80}} |
Define the rediness probe |
components.core.replicaCount | int | 1 |
The number of instances in which the application will run. Only effect if autoscaling false |
components.core.resources | object | {} |
Setup resource limits and requests for the app |
components.core.restartPolicy | string | "OnFailure" |
Choose the right restart condition when the app has to be restarted. Available options: Always |
components.core.service.ports[0].name | string | "http" |
|
components.core.service.ports[0].port | int | 80 |
|
components.core.service.ports[0].protocol | string | "TCP" |
|
components.core.service.ports[0].targetPort | int | 80 |
|
components.core.service.type | string | "ClusterIP" |
|
components.core.tolerations | list | [] |
|
components.executor | string | nil |
|
components.maintenance.affinity | object | {} |
|
components.maintenance.autoscaling.behavior | object | {} |
|
components.maintenance.autoscaling.enabled | bool | false |
|
components.maintenance.autoscaling.maxReplicas | int | 5 |
|
components.maintenance.autoscaling.minReplicas | int | 1 |
|
components.maintenance.autoscaling.targetCPU | string | "60" |
|
components.maintenance.autoscaling.targetMemory | string | "" |
|
components.maintenance.command[0] | string | "maintenance" |
|
components.maintenance.containerSecurityContext.allowPrivilegeEscalation | bool | false |
|
components.maintenance.containerSecurityContext.capabilities.drop[0] | string | "ALL" |
|
components.maintenance.containerSecurityContext.seccompProfile.type | string | "RuntimeDefault" |
|
components.maintenance.deploymentStrategy.maxUnavailable | int | 1 |
|
components.maintenance.deploymentStrategy.type | string | "RollingUpdate" |
|
components.maintenance.env | bool | true |
|
components.maintenance.image.pullPolicy | string | "IfNotPresent" |
|
components.maintenance.image.registry | string | "docker.io" |
|
components.maintenance.image.repository | string | "appwrite/appwrite" |
|
components.maintenance.image.tag | string | "1.4.13" |
|
components.maintenance.networkPolicy.egress[0] | object | {} |
|
components.maintenance.networkPolicy.enabled | bool | false |
|
components.maintenance.networkPolicy.policyTypes[0] | string | "Ingress" |
|
components.maintenance.networkPolicy.policyTypes[1] | string | "Egress" |
|
components.maintenance.nodeSelector | object | {} |
|
components.maintenance.podAnnotations | object | {} |
|
components.maintenance.podDisruption.config | string | nil |
|
components.maintenance.podDisruption.enabled | bool | false |
|
components.maintenance.podLabels | object | {} |
|
components.maintenance.podSecurityContext.fsGroup | int | 472 |
|
components.maintenance.podSecurityContext.fsGroupChangePolicy | string | "OnRootMismatch" |
|
components.maintenance.podSecurityContext.runAsGroup | int | 472 |
|
components.maintenance.podSecurityContext.runAsNonRoot | bool | true |
|
components.maintenance.podSecurityContext.runAsUser | int | 472 |
|
components.maintenance.ports[0].containerPort | int | 80 |
|
components.maintenance.ports[0].name | string | "http" |
|
components.maintenance.ports[0].protocol | string | "TCP" |
|
components.maintenance.replicaCount | int | 1 |
|
components.maintenance.resources | object | {} |
|
components.maintenance.restartPolicy | string | "OnFailure" |
|
components.maintenance.tolerations | list | [] |
|
components.realtime.affinity | object | {} |
|
components.realtime.autoscaling.behavior | object | {} |
|
components.realtime.autoscaling.enabled | bool | false |
|
components.realtime.autoscaling.maxReplicas | int | 5 |
|
components.realtime.autoscaling.minReplicas | int | 1 |
|
components.realtime.autoscaling.targetCPU | string | "60" |
|
components.realtime.autoscaling.targetMemory | string | "" |
|
components.realtime.command[0] | string | "realtime" |
|
components.realtime.containerSecurityContext.allowPrivilegeEscalation | bool | false |
|
components.realtime.containerSecurityContext.capabilities.drop[0] | string | "ALL" |
|
components.realtime.containerSecurityContext.seccompProfile.type | string | "RuntimeDefault" |
|
components.realtime.deploymentStrategy.maxUnavailable | int | 1 |
|
components.realtime.deploymentStrategy.type | string | "RollingUpdate" |
|
components.realtime.env | bool | true |
|
components.realtime.image.pullPolicy | string | "IfNotPresent" |
|
components.realtime.image.registry | string | "docker.io" |
|
components.realtime.image.repository | string | "appwrite/appwrite" |
|
components.realtime.image.tag | string | "1.4.13" |
|
components.realtime.ingress.annotations | object | {} |
|
components.realtime.ingress.className | string | "" |
|
components.realtime.ingress.enabled | bool | false |
|
components.realtime.ingress.rules[0].host | string | "localhost" |
|
components.realtime.ingress.rules[0].http.paths[0].backend.service.name | string | "appwrite-app-svc" |
|
components.realtime.ingress.rules[0].http.paths[0].backend.service.port.number | int | 80 |
|
components.realtime.ingress.rules[0].http.paths[0].path | string | "/v1/realtime" |
|
components.realtime.ingress.rules[0].http.paths[0].pathType | string | "Prefix" |
|
components.realtime.ingress.tls | list | [] |
|
components.realtime.livenessProbe.failureThreshold | int | 10 |
|
components.realtime.livenessProbe.httpGet.path | string | "/api/health" |
|
components.realtime.livenessProbe.httpGet.port | int | 80 |
|
components.realtime.livenessProbe.initialDelaySeconds | int | 30 |
|
components.realtime.livenessProbe.timeoutSeconds | int | 30 |
|
components.realtime.networkPolicy.egress | object | {} |
|
components.realtime.networkPolicy.enabled | bool | false |
|
components.realtime.networkPolicy.ingress[0].from[0].ipBlock.cidr | string | "0.0.0.0/0" |
|
components.realtime.networkPolicy.ingress[0].from[1].namespaceSelector.matchLabels.namespace | string | "default" |
|
components.realtime.networkPolicy.ingress[0].ports[0].port | int | 80 |
|
components.realtime.networkPolicy.ingress[0].ports[0].protocol | string | "TCP" |
|
components.realtime.networkPolicy.policyTypes[0] | string | "Ingress" |
|
components.realtime.nodeSelector | object | {} |
|
components.realtime.podAnnotations | object | {} |
|
components.realtime.podDisruption.config | string | nil |
|
components.realtime.podDisruption.enabled | bool | false |
|
components.realtime.podLabels | object | {} |
|
components.realtime.podSecurityContext.fsGroup | int | 472 |
|
components.realtime.podSecurityContext.fsGroupChangePolicy | string | "OnRootMismatch" |
|
components.realtime.podSecurityContext.runAsGroup | int | 472 |
|
components.realtime.podSecurityContext.runAsNonRoot | bool | true |
|
components.realtime.podSecurityContext.runAsUser | int | 472 |
|
components.realtime.ports[0].containerPort | int | 80 |
|
components.realtime.ports[0].name | string | "http" |
|
components.realtime.ports[0].protocol | string | "TCP" |
|
components.realtime.readinessProbe.httpGet.path | string | "/api/health" |
|
components.realtime.readinessProbe.httpGet.port | int | 80 |
|
components.realtime.replicaCount | int | 1 |
|
components.realtime.resources | object | {} |
|
components.realtime.restartPolicy | string | "OnFailure" |
|
components.realtime.service.ports[0].name | string | "http" |
|
components.realtime.service.ports[0].port | int | 80 |
|
components.realtime.service.ports[0].protocol | string | "TCP" |
|
components.realtime.service.ports[0].targetPort | int | 80 |
|
components.realtime.service.type | string | "ClusterIP" |
|
components.realtime.tolerations | list | [] |
|
components.schedule.affinity | object | {} |
|
components.schedule.autoscaling.behavior | object | {} |
|
components.schedule.autoscaling.enabled | bool | false |
|
components.schedule.autoscaling.maxReplicas | int | 5 |
|
components.schedule.autoscaling.minReplicas | int | 1 |
|
components.schedule.autoscaling.targetCPU | string | "60" |
|
components.schedule.autoscaling.targetMemory | string | "" |
|
components.schedule.command[0] | string | "schedule" |
|
components.schedule.containerSecurityContext.allowPrivilegeEscalation | bool | false |
|
components.schedule.containerSecurityContext.capabilities.drop[0] | string | "ALL" |
|
components.schedule.containerSecurityContext.seccompProfile.type | string | "RuntimeDefault" |
|
components.schedule.deploymentStrategy.maxUnavailable | int | 1 |
|
components.schedule.deploymentStrategy.type | string | "RollingUpdate" |
|
components.schedule.env | bool | true |
|
components.schedule.image.pullPolicy | string | "IfNotPresent" |
|
components.schedule.image.registry | string | "docker.io" |
|
components.schedule.image.repository | string | "appwrite/appwrite" |
|
components.schedule.image.tag | string | "1.4.13" |
|
components.schedule.networkPolicy.egress[0] | object | {} |
|
components.schedule.networkPolicy.enabled | bool | false |
|
components.schedule.networkPolicy.policyTypes[0] | string | "Ingress" |
|
components.schedule.networkPolicy.policyTypes[1] | string | "Egress" |
|
components.schedule.nodeSelector | object | {} |
|
components.schedule.podAnnotations | object | {} |
|
components.schedule.podDisruption.config | string | nil |
|
components.schedule.podDisruption.enabled | bool | false |
|
components.schedule.podLabels | object | {} |
|
components.schedule.podSecurityContext.fsGroup | int | 472 |
|
components.schedule.podSecurityContext.fsGroupChangePolicy | string | "OnRootMismatch" |
|
components.schedule.podSecurityContext.runAsGroup | int | 472 |
|
components.schedule.podSecurityContext.runAsNonRoot | bool | true |
|
components.schedule.podSecurityContext.runAsUser | int | 472 |
|
components.schedule.replicaCount | int | 1 |
|
components.schedule.resources | object | {} |
|
components.schedule.restartPolicy | string | "OnFailure" |
|
components.schedule.tolerations | list | [] |
|
components.telegraf.affinity | object | {} |
|
components.telegraf.autoscaling.behavior | object | {} |
|
components.telegraf.autoscaling.enabled | bool | false |
|
components.telegraf.autoscaling.maxReplicas | int | 5 |
|
components.telegraf.autoscaling.minReplicas | int | 1 |
|
components.telegraf.autoscaling.targetCPU | string | "60" |
|
components.telegraf.autoscaling.targetMemory | string | "" |
|
components.telegraf.containerSecurityContext.allowPrivilegeEscalation | bool | false |
|
components.telegraf.containerSecurityContext.capabilities.drop[0] | string | "ALL" |
|
components.telegraf.containerSecurityContext.seccompProfile.type | string | "RuntimeDefault" |
|
components.telegraf.deploymentStrategy.maxUnavailable | int | 1 |
|
components.telegraf.deploymentStrategy.type | string | "RollingUpdate" |
|
components.telegraf.env | bool | true |
|
components.telegraf.image.pullPolicy | string | "IfNotPresent" |
|
components.telegraf.image.registry | string | "docker.io" |
|
components.telegraf.image.repository | string | "appwrite/telegraf" |
|
components.telegraf.image.tag | string | "1.4.0" |
|
components.telegraf.networkPolicy.egress[0] | object | {} |
|
components.telegraf.networkPolicy.enabled | bool | false |
|
components.telegraf.networkPolicy.policyTypes[0] | string | "Ingress" |
|
components.telegraf.networkPolicy.policyTypes[1] | string | "Egress" |
|
components.telegraf.nodeSelector | object | {} |
|
components.telegraf.podAnnotations | object | {} |
|
components.telegraf.podDisruption.config | string | nil |
|
components.telegraf.podDisruption.enabled | bool | false |
|
components.telegraf.podLabels | object | {} |
|
components.telegraf.podSecurityContext.fsGroup | int | 472 |
|
components.telegraf.podSecurityContext.fsGroupChangePolicy | string | "OnRootMismatch" |
|
components.telegraf.podSecurityContext.runAsGroup | int | 472 |
|
components.telegraf.podSecurityContext.runAsNonRoot | bool | true |
|
components.telegraf.podSecurityContext.runAsUser | int | 472 |
|
components.telegraf.replicaCount | int | 1 |
|
components.telegraf.resources | object | {} |
|
components.telegraf.restartPolicy | string | "OnFailure" |
|
components.telegraf.tolerations | list | [] |
|
components.usage.affinity | object | {} |
|
components.usage.autoscaling.behavior | object | {} |
|
components.usage.autoscaling.enabled | bool | false |
|
components.usage.autoscaling.maxReplicas | int | 5 |
|
components.usage.autoscaling.minReplicas | int | 1 |
|
components.usage.autoscaling.targetCPU | string | "60" |
|
components.usage.autoscaling.targetMemory | string | "" |
|
components.usage.command[0] | string | "usage" |
|
components.usage.containerSecurityContext.allowPrivilegeEscalation | bool | false |
|
components.usage.containerSecurityContext.capabilities.drop[0] | string | "ALL" |
|
components.usage.containerSecurityContext.seccompProfile.type | string | "RuntimeDefault" |
|
components.usage.deploymentStrategy.maxUnavailable | int | 1 |
|
components.usage.deploymentStrategy.type | string | "RollingUpdate" |
|
components.usage.env | bool | true |
|
components.usage.image.pullPolicy | string | "IfNotPresent" |
|
components.usage.image.registry | string | "docker.io" |
|
components.usage.image.repository | string | "appwrite/appwrite" |
|
components.usage.image.tag | string | "1.4.13" |
|
components.usage.networkPolicy.egress[0] | object | {} |
|
components.usage.networkPolicy.enabled | bool | false |
|
components.usage.networkPolicy.policyTypes[0] | string | "Ingress" |
|
components.usage.networkPolicy.policyTypes[1] | string | "Egress" |
|
components.usage.nodeSelector | object | {} |
|
components.usage.podAnnotations | object | {} |
|
components.usage.podDisruption.config | string | nil |
|
components.usage.podDisruption.enabled | bool | false |
|
components.usage.podLabels | object | {} |
|
components.usage.podSecurityContext.fsGroup | int | 472 |
|
components.usage.podSecurityContext.fsGroupChangePolicy | string | "OnRootMismatch" |
|
components.usage.podSecurityContext.runAsGroup | int | 472 |
|
components.usage.podSecurityContext.runAsNonRoot | bool | true |
|
components.usage.podSecurityContext.runAsUser | int | 472 |
|
components.usage.replicaCount | int | 1 |
|
components.usage.resources | object | {} |
|
components.usage.restartPolicy | string | "OnFailure" |
|
components.usage.tolerations | list | [] |
|
environments | object | {"assistant":{"openAi":{"apiKey":""}},"console":{"whitelist":{"emails":"","ips":"","root":""}},"database":{"host":"","password":"your-secret-password","port":3306,"rootPassword":"root-secret-root-password","schema":"appwrite","username":"user"},"dockerHub":{"password":"","username":""},"domain":{"app":"localhost","functions":"functions.localhost","target":"localhost"},"env":"production","executor":{"host":"","secret":""},"functions":{"buildTimeout":900,"cpus":"","inactiveThreshold":600,"maintenanceInterval":600,"memory":"","runtimes":["php-8.0","node-18.0","python-3.9","ruby-3.1"],"sizeLimit":30000000,"timeout":900},"graphql":{"maxBatchSize":10,"maxComplexity":250,"maxDepth":3},"influxdb":{"host":"","port":8086},"locale":"en","logging":{"config":"","provider":""},"maintenance":{"interval":86400,"retention":{"abuse":86400,"audit":1209600,"cache":2592000,"execution":1209600,"schedules":86400,"usageHourly":8640000}},"migrations":{"firebase":{"clientId":"","clientSecret":""}},"openssl":{"keyV1":""},"options":{"abuse":"disabled","forceHttps":"disabled","functions":{"forceHttps":"disabled"},"routerProtection":"disabled"},"redis":{"host":"","password":"","port":6379,"username":""},"sms":{"from":"","provider":""},"smtp":{"host":"","password":"","port":"","secure":"","username":""},"statsd":{"host":"","port":8125},"storage":{"antivirus":{"enabled":"disabled","host":"clamav","port":3310},"backblaze":{"accessKey":"","bucket":"","region":"us-west-004","secret":""},"device":"Local","doSpaces":{"accessKey":"","bucket":"","region":"us-east-1","secret":""},"limit":30000000,"linode":{"accessKey":"","bucket":"","region":"eu-central-1","secret":""},"previewLimit":20000000,"s3":{"accessKey":"","bucket":"","endpointUrl":"","region":"us-east-1","secret":""},"wasabi":{"accessKey":"","bucket":"","region":"eu-central-1","secret":""}},"system":{"email":{"address":"[email protected]","name":"Appwrite"},"response":{"format":""},"security":{"emailAddress":"[email protected]"}},"usage":{"aggregationInterval":5,"stats":"enabled"},"vcs":{"github":{"appId":"","appName":"","clientId":"","clientSecret":"","privateKey":"disabled","webhookSecret":""}},"worker":{"perCore":6}} |
Environment variables for Appwrite ref: [https://appwrite.io/docs/advanced/self-hosting/environment-variables] (https://appwrite.io/docs/advanced/self-hosting/environment-variables) |
global | object | {"imagePullSecrets":[],"storageClass":""} |
These global values also affect the sub-charts |
global.imagePullSecrets | list | [] |
Global Docker registry secret names E.g. imagePullSecrets: - myRegistryKeySecretName |
global.storageClass | string | "" |
Global StorageClass for Persistent Volume(s) |
influxdb.auth.enabled | bool | false |
|
influxdb.enabled | bool | false |
|
mariadb.enabled | bool | false |
|
podAnnotations | object | {} |
Common annotations shared across pods |
podLabels | object | {} |
Common label shared across pods |
redis.auth.enabled | bool | false |
|
redis.auth.sentinel | bool | false |
|
redis.enabled | bool | false |
Autogenerated from chart metadata using helm-docs v1.11.3