/zookeeper-k8s-openshift

Zookeeper deployments on kubernetes and Openshift

Primary LanguageShellApache License 2.0Apache-2.0

Zookeeper Docker Image

Build status License status Docker Pulls Docker Layering Docker image version OSS

This project aims to provide zookeeper docker images and prepare them to be deployed as 'statefulsets' on kubernetes.

These scripts are used to build/run the docker image/container:

  • zk_env.sh: Export needed env variable for other scripts.
  • zk_download.sh: is used to download the suitable release of zookeeper (version ZOO_VERSION).
  • zk_setup.sh: Configure zookeeper dynamically, based on utils-docker project.
  • zk_status.sh: health checks.

Build and push the docker image

Set env variables DOCKER_ORG (defaults to engapa), DOCKER_IMAGE (defaults to zookeeper) and ZOO_VERSION (the real zookeeper version that will be downloaded into the docker image) to tag docker image as you wish and then build, test and push:

$ make docker-build docker-test docker-push

Run a container

By default the container entrypoint is ./zk_env.sh and the command directive is zk_setup.sh && ./zkServer.sh start-foreground.

Let's run a zookeeper container with default environment variables:

$ docker run -it --name zk engapa/zookeeper:${ZOO_VERSION}

Setting up

Users may configure parameters in config files just adding environment variables with specific name patterns.

This table collects the patterns of variable names which will are written in the suitable file:

PREFIX FILE (${ZOO_HOME}/config) Example
ZK_ zoo.cfg ZK_maxClientCnxns=0 --> maxClientCnxns=0
LOG4J_ log4j.properties LOG4J_zookeeper_root_logger=INFO, CONSOLE--> zookeeper.root.logger=INFO, CONSOLE
JAVA_ZK_ java.env JAVA_ZK_JVMFLAG="-Xmx1G -Xms1G" --> JVMFLAG="-Xmx1G -Xms1G"

So we can configure our zookeeper server by adding environments variables:

$ docker run -it -d --name zk -e "SETUP_DEBUG=true" -e "LOG4J_zookeeper_root_logger=DEBUG, CONSOLE" engapa/zookeeper:${ZOO_VERSION}

NOTE: We've passed a SETUP_DEBUG environment variable with value 'true' to view the setup process of config files. . Show logs by command docker logs ZK

Also you may use --env-file option to load these variables from a file.

And, of course, you could provide your own properties files directly through volumes by option -v and without using the zk_setup.sh script.

k8s

In k8s directory there are some resources for Kubernetes.

Thanks to kubernetes team for the contrib.

Openshift

In openshift directory you can find some Openshift templates.

License

License status

Author

Enrique Garcia engapa@gmail.com