Skip to content

Latest commit

 

History

History
167 lines (139 loc) · 7.07 KB

README.md

File metadata and controls

167 lines (139 loc) · 7.07 KB

Zulip

Version: 0.9.40 Type: application AppVersion: 9.4-0

Zulip is an open source threaded team chat that helps teams stay productive and focused.

Helm chart based on https://github.com/zulip/docker-zulip

Installation

Copy values-local.yaml.example, modify it as instructed in the comments, then install with the following commands:

helm dependency update                      # Get helm dependency charts
helm install -f ./values-local.yaml zulip . # Install Zulip

This will show a message on how to reach your Zulip installation and how to create your first realm. Wait for all your pods to be ready before you continue. You can run kubectl get pods to their current state. Once all pods are ready, you can run the commands to create a Realm, and you can reach Zulip following the instructions as well.

Installing on Minikube

You need to do a few things to make minikube serve Zulip with a TLS certificate. Without it, Zulip will not work.

If you haven't already, you need to set up cert-manager inside your minikube.

First, enable the "ingress" minikube addon (more info available here)

minikube addons enable ingress

Second, install cert-manager into your minikube cluster:

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.0/cert-manager.yaml

Now you'll need to add an issuer that issues self-signed certificates. Copy this into a file, self-signed-issuer.yaml

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: selfsigned
  namespace: cert-manager
spec:
  selfSigned: {}

Now apply the issuer: kubectl apply -f self-signed-issuer.yaml

We'll host Zulip on zulip.local. Add that to your /etc/hosts file and point it to the IP address you get with the command minikube ip.

Now you're ready to follow the installation instructions above.

Values

Key Type Default Description
affinity object {}
fullnameOverride string ""
image.pullPolicy string "IfNotPresent"
image.repository string "zulip/docker-zulip"
image.tag string "9.4-0"
imagePullSecrets list []
ingress.annotations object {}
ingress.enabled bool false
ingress.hosts[0].host string "zulip.example.com"
ingress.hosts[0].paths[0].path string "/"
ingress.tls list []
livenessProbe.enabled bool true
livenessProbe.failureThreshold int 3
livenessProbe.initialDelaySeconds int 10
livenessProbe.periodSeconds int 10
livenessProbe.successThreshold int 1
livenessProbe.timeoutSeconds int 5
memcached.memcachedUsername string "zulip@localhost"
nameOverride string ""
nodeSelector object {}
podAnnotations object {}
podLabels object {}
podSecurityContext object {}
postSetup.scripts object {}
postgresql.auth.database string "zulip"
postgresql.auth.username string "zulip"
postgresql.image.repository string "zulip/zulip-postgresql"
postgresql.image.tag int 14
postgresql.primary.containerSecurityContext.runAsUser int 0
rabbitmq.auth.username string "zulip"
rabbitmq.persistence.enabled bool false
redis.architecture string "standalone"
redis.master.persistence.enabled bool false
resources object {}
securityContext object {}
service.port int 80
service.type string "ClusterIP"
serviceAccount.annotations object {}
serviceAccount.create bool true
serviceAccount.name string ""
sidecars list []
startupProbe.enabled bool true
startupProbe.failureThreshold int 30
startupProbe.initialDelaySeconds int 10
startupProbe.periodSeconds int 10
startupProbe.successThreshold int 1
startupProbe.timeoutSeconds int 5
statefulSetAnnotations object {}
statefulSetLabels object {}
tolerations list []
zulip.environment.DISABLE_HTTPS bool true
zulip.environment.SECRETS_email_password string "123456789"
zulip.environment.SETTING_EMAIL_HOST string ""
zulip.environment.SETTING_EMAIL_HOST_USER string "[email protected]"
zulip.environment.SETTING_EMAIL_PORT string "587"
zulip.environment.SETTING_EMAIL_USE_SSL string "False"
zulip.environment.SETTING_EMAIL_USE_TLS string "True"
zulip.environment.SETTING_EXTERNAL_HOST string "zulip.example.com"
zulip.environment.SETTING_ZULIP_ADMINISTRATOR string "[email protected]"
zulip.environment.SSL_CERTIFICATE_GENERATION string "self-signed"
zulip.environment.ZULIP_AUTH_BACKENDS string "EmailAuthBackend"
zulip.persistence.accessMode string "ReadWriteOnce"
zulip.persistence.enabled bool true
zulip.persistence.size string "10Gi"
zulip.persistence.storageClass string nil

About this helm chart

This helm chart sets up a StatefulSet that runs a Zulip pod, that in turn runs the docker-zulip Dockerized Zulip version. Configuration of Zulip happens through environment variables that are defined in the values.yaml under zulip.environment. These environment variables are forwarded to the Docker container, you can read more about configuring Zulip through environment variables here.

Dependencies

The chart uses Memcached, RabbitMQ and Redis helm charts defined in the Bitnami Helm repository. Most of these are configured following their default settings, but you can check https://github.com/bitnami/charts/tree/master/bitnami/ for more configuration options of the subcharts.

For PostgreSQL the chart also uses the Bitnami chart to install it on the Kubernetes cluster. However, in this case we use Zulip's zulip-postgresql docker image, because it contains the Postgresql plugins that are needed to run Zulip.

Requirements

Repository Name Version
oci://registry-1.docker.io/bitnamicharts memcached 7.4.16
oci://registry-1.docker.io/bitnamicharts postgresql 15.5.32
oci://registry-1.docker.io/bitnamicharts rabbitmq 14.7.0
oci://registry-1.docker.io/bitnamicharts redis 20.1.4