This document is intended to be the canonical source of truth for things like supported toolchain versions for building KubeDB. If you find a requirement that this doc does not capture, please submit an issue on github.
This document is intended to be relative to the branch in which it is found. It is guaranteed that requirements will change over time for the development branch, but release branches of KubeDB should not change.
Some of the KubeDB development helper scripts rely on a fairly up-to-date GNU tools environment, so most recent Linux distros should work just fine out-of-the-box.
KubeDB is written in Google’s GO programming language. Currently, KubeDB is developed and tested on go 1.8.3. If you haven’t set up a GO development environment, please follow these instructions to install GO.
KubeDB codebase is across various repositories under github.com/kubedb organization. There are 5 categories of git repositories:
|https://github.com/kubedb/apimachinery||Contains api types, clientset and KubeDB framework interfaces.|
|https://github.com/kubedb/xdb||This repository contains operator for |
|https://github.com/kubedb/db_exporter||This repository contains Prometheus exporter for |
|https://github.com/kubedb/operator||This repository contains the combined operator for all databases supported by KubeDB.|
|https://github.com/kubedb/cli||This repository contains CLI for KubeDB.|
For each of these repositories, you can get source code and build code using the following steps:
$ go get github.com/kubedb/operator $ cd $(go env GOPATH)/src/github.com/kubedb/operator
To install various dev tools for KubeDB, run the following command:
For KubeDB original repositories, we use Glide to manage dependencies. Dependencies are already checked in the
vendor folder. If you want to update/add dependencies, run:
$ glide slow
For unified operator or db specific operators, we support building Docker images. To build and push your custom Docker image, follow the steps below. To release a new version of KubeDB, please follow the release guide.
# Build Docker image $ ./hack/docker/operator/setup.sh; ./hack/docker/operator/setup.sh push # Add docker tag for your repository $ docker tag kubedb/operator:<tag> <image>:<tag> # Push Image $ docker push <image>:<tag> # Example: $ docker tag kubedb/operator:default aerokite/operator:default $ docker push aerokite/operator:default
# clone kubedb-operator project $ git clone https://github.com/kubedb/operator # cd to operator project $ cd $GOPATH/src/github.com/kubedb/operator # deploy KubeDB resources and run KubeDB operator in localhost $ ./hack/deploy/setup.sh --minikube --run # deploy Kubedb Catalog, *KubeDB operator will run in a message loop, you should not stop it immediately, To install Kubedb Catalog you can just start another terminal.* $ ./hack/deploy/install-catalog.sh
After deploy KubeDB successfully, you can debug it using any IDE you like, You should start your KubeDB operator using the same param in ./hack/deploy/setup.sh.
$ cd ~/go/src/github.com/kubedb/cli $ ./hack/gendocs/make.sh