Helm: Configuring settings
The Helm chart passes Zulip’s configuration to the container through environment
variables defined under zulip.environment in your values file. These use the
same SETTING_*, CONFIG_*, and SECRET_* prefixes as the Docker Compose
deployment; see Docker Zulip environment variables for the full reference.
Required settings
The following settings are always required:
SETTING_EXTERNAL_HOST: The hostname your users will use to connect to your Zulip server.SETTING_ZULIP_ADMINISTRATOR: The email address to receive error and support emails generated by the Zulip server and its users.SECRETS_secret_key: The secret key used by Django for cryptographic signing.
Providing settings in a values file
Create a
values-local.yamlfile with your settings underzulip.environment:zulip: environment: SETTING_EXTERNAL_HOST: zulip.example.com SETTING_ZULIP_ADMINISTRATOR: "admin@example.com" SECRETS_secret_key: "replace-with-a-secure-secret-key" SETTING_EMAIL_HOST: "smtp.example.com" SETTING_EMAIL_HOST_USER: "noreply@example.com" SETTING_EMAIL_PORT: "587" SETTING_EMAIL_USE_TLS: "True"
Install or upgrade with your values file:
helm install zulip oci://ghcr.io/zulip/helm-charts/zulip -f values-local.yaml # or, to update an existing release: helm upgrade zulip oci://ghcr.io/zulip/helm-charts/zulip -f values-local.yaml
Referencing Kubernetes Secrets with valueFrom
Instead of placing sensitive values directly in your values file, you can
reference Kubernetes Secrets using valueFrom. This is the recommended approach
for production deployments.
Create a Kubernetes Secret with your sensitive values:
kubectl create secret generic zulip-secrets \ --from-literal=secret-key='your-secret-key'
Reference the secret in your values file:
zulip: environment: SECRETS_secret_key: valueFrom: secretKeyRef: name: zulip-secrets key: secret-key
Post-setup scripts
The Docker entrypoint runs scripts from /data/post-setup.d/ after the
application’s setup phase completes (controlled by
ZULIP_RUN_POST_SETUP_SCRIPTS). You can add scripts using
postSetup.scripts in your values file:
postSetup:
scripts:
custom-branding.sh: |
#!/bin/bash
echo "Running post-setup customization..."
These scripts are mounted into the container via a ConfigMap and execute on every container startup after the setup phase.