You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
9.9 KiB

# Zammad Helm Chart
This directory contains a Kubernetes chart to deploy [Zammad](https://zammad.org/) ticket system.
## Prerequisites Details
- Kubernetes 1.8+
- Cluster with at least 4GB of free RAM
## Chart Details
This chart will do the following:
- Install Zammad statefulset
- Install Elasticsearch, Memcached & PostgreSQL as requirements
## Installing the Chart
To install the chart use the following:
```console
helm repo add zammad https://zammad.github.io
helm upgrade --install zammad zammad/zammad --namespace zammad
```
## Configuration
The following table lists the configurable parameters of the zammad chart and their default values.
| Parameter | Description | Default |
| -------------------------------------------------- | ------------------------------------------------ | ------------------------------- |
| `image.repository` | Container image to use | `zammad/zammad-docker-compose` |
| `image.tag` | Container image tag to deploy | `3.4.0-4` |
| `image.pullPolicy` | Container pull policy | `IfNotPresent` |
| `service.type` | Service type | `ClusterIP` |
| `service.port` | Service port | `8080` |
| `ingress.enabled` | Enable Ingress | `false` |
| `ingress.annotations` | Additional ingress annotations | `""` |
| `ingress.path` | Ingress path | `""` |
| `ingress.hosts` | Ingress hosts | `""` |
| `ingress.tls` | Ingress TLS | `[]` |
| `envConfig.elasticsearch.schema` | Elasticsearch schema | `http` |
| `envConfig.elasticsearch.host` | Elasticsearch host | `zammad-master` |
| `envConfig.elasticsearch.port` | Elasticsearch port | `9200` |
| `envConfig.elasticsearch.user` | Elasticsearch user | `""` |
| `envConfig.elasticsearch.pass` | Elasticsearch pass | `""` |
| `envConfig.memcached.host` | Memcached host | `zammad-memcached` |
| `envConfig.memcached.port` | Memcached port | `11211` |
| `envConfig.postgresql.host` | PostgreSql host | `zammad-postgresql` |
| `envConfig.postgresql.port` | PostgreSql port | `5432` |
| `envConfig.postgresql.pass` | PostgreSql pass | `""` |
| `envConfig.postgresql.user` | PostgreSql user | `zammad` |
| `envConfig.postgresql.db` | PostgreSql database | `zammad_production` |
| `envConfig.zammad.rails.trustedProxies` | PostgreSql database | `"['127.0.0.1', '::1']"` |
| `autoWizard.enabled` | enable autowizard | `false` |
| `autoWizard.config` | autowizard json config | `""` |
| `persistence.enabled` | Enable persistence | `true` |
| `persistence.accessModes` | Access modes | `["ReadWriteOnce"]` |
| `persistence.size` | Volume size | `15Gi` |
| `persistence.storageClass` | storage class | `""` |
| `persistence.annotations` | annotations | `{}` |
| `resources.nginx` | Resource usage of Zammad's nginx container | `{}` |
| `resources.railsserver` | Resource usage of Zammad's railsserver container | `{}` |
| `resources.scheduler` | Resource usage of Zammad's scheduler container | `{}` |
| `resources.websocket` | Resource usage of Zammad's websocket container | `{}` |
| `nodeSelector` | Node Selector | `{}` |
| `tolerations` | Tolerations | `[]` |
| `affinity` | Affinity | `{}` |
| `elasticsearch.enabled` | Use Elasticsearch dependency | `true` |
| `elasticsearch.image` | Elasticsearch docker image | `zammad/zammad-docker-compose` |
| `elasticsearch.imageTag` | Elasticsearch docker image tag | `zammad-elasticsearch-3.4.0-4` |
| `elasticsearch.clusterName` | Elasticsearch cluster name | `zammad` |
| `elasticsearch.replicas` | Elasticsearch replicas | `1` |
| `elasticsearch.clusterHealthCheckParams` | Workaround to get ES test work in GitHubCI | `"timeout=1s"` |
| `memcached.enabled` | Use Memcached dependency | `true` |
| `memcached.replicaCount` | Memcached replicas | `1` |
| `postgresql.enabled` | Use PostgreSQL dependency | `true` |
| `postgresql.postgresqlUsername` | PostgreSQL user | `zammad` |
| `postgresql.postgresqlPassword` | PostgreSQL password | `zammad` |
| `postgresql.postgresqlDatabase` | PostgreSQL DB | `zammad_production` |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
### Important note for NFS filesystems
For persistent volumes, NFS filesystems should work correctly for **Elasticsearch** and **PostgreSQL**; however, errors will occur if Zammad itself uses an NFS-based persistent volume. Websockets will break completely. This is particularly bad news for receiving notifications from the application and using the Chat module.
Don't use an NFS-based storage class for Zammad's persistent volume.
This is relevant to **EFS** for AWS users, as well.
## Using zammad
Once the zammad pod is ready, it can be accessed using the ingress or port forwarding.
To use port forwarding:
```console
kubectl -n zammad port-forward service/zammad 8080
```
Open your browser on <http://localhost:8080>
## Upgrading
### From chart version 1.x
This has changed:
- requirement chart condition variable name was changed
- the lables have changed
- the persistent volume claim was changed to persistent volume claim template
- import your filebackup here
- all requirement charts has been updated to the latest versions
- Elasticsearch
- docker image was changed to elastic/elasticsearch
- version was raised from 5.6 to 7.6
- reindexing will be done automatically
- Postgres
- bitnami/postgresql chart is used instead of stable/postgresql
- version was raised from 10.6.0 to 11.7.0
- there is no automated upgrade path
- you have to import a backup manually
- Memcached
- bitnami/memcached chart is used instead of stable/memcached
- version was raised from 1.5.6 to 1.5.22
- nothing to do here
**Before the update backup Zammad files and make a PostgreSQL backup, as you will need these backups later!**
- If your helm release was named "zammad" and also installed in the namespace "zammad" like:
```bash
helm upgrade --install zammad zammad/zammad --namespace=zammad --version=1.2.1
```
- Do the upgrade like this:
```bash
helm delete --purge zammad
kubectl -n zammad delete pvc data-zammad-postgresql-0 data-zammad-elasticsearch-data-0 data-zammad-elasticsearch-master-0
helm upgrade --install zammad zammad/zammad --namespace=zammad --version=2.0.3
```
- Import your file and SQL backups inside the Zammad & Postgresql containers