ce696bad8b
- added memcached container (currently develop branch needed) - put all zammad services in one kubernetes pod to be able to use empty dir volume for tmp - switched to kubernetes deployments - switched to ReadWriteOnce kubernetes volume claims - added init container to elasticsearch & zammad kubernetes deployments - added IMAGE_REPO var for docker compose to .env file - run nginx from zammad container (preparation for stateless updates) - removed docker-compose-build.yml - use private docker repos in compose & kubernetes - change compose volume names
1.7 KiB
1.7 KiB
Zammad kubernetes example deployment
This is a proof of concept of a Kubernetes deployment, which should be considered beta and not ready for production.
Prerequisites
- Change the ingress to your needs
Deploy Zammad
Install on Minikube
- Install kubectl
- Install Minkube
- minikube start --memory=4096 --cpus=2
- minikube addons enable ingress
- echo "$(minikube ip) zammad.example.com" | sudo tee -a /etc/hosts
- kubectl apply -f .
- minikube dashboard
- switch to namespace "zammad"
- open "Overview" and wait until all pods are green
- access zammad on:
Install on Google Kubernetes Engine
- connect to cluster via gcloud command
- kubectl apply -f .
If you want to help to improve the Kuberntes deployments here are some todos:
- fix the nfs mount from entrypoint, which is currently used because of:
- https://github.com/kubernetes/kubernetes/issues/8735
- otherwise you have to manually:
- kubectl apply -f 00_namespace.yaml -f 80_svc.yaml
- kubectl --namespace=zammad describe services zammad-nfs
- use the NFS server IP to update
- 40_deployment_zammad.yaml
- 41_deployment_nginx.yaml
- use the NFS server IP to update
- kubectl apply -f 10_pvc.yaml -f 40_deployment_zammad.yaml -f 41_deployment_nginx.yaml -f 42_deployment_memcached.yaml -f 43_deployment_postgesql.yaml -f 44_deployment_elasticsearch.yaml -f 45_deployment_nfs.yaml -f 90_ingress.yaml
- create config map for nginx
- create a zammad helm chart
- document steps to use existing helm charts for elasticsearch, postgresql and so on
- add cpu & mem limits
- add rolling upgrade strategy to deployments