Install KubeDB Community Edition

KubeDB Community edition is available under AppsCode-Community-1.0.0 license and free to use for both commercial and non-commercial purposes. It comes with the cluster provisioning functionalities. However, it lacks some advanced features such as database backup/recovery, upgrading version, horizontal and vertical scaling, TLS/SSL support via cert-manager, updating configuration post provisioning, connection pooling, etc. compared to the Enterprise edition. A full features comparison between the KubeDB Community edition and Enterprise edition can be found here.

To use KubeDB Community edition, you can grab 1 year free license from here. After that you can issue another license for one more year. Typically we release a new version of the operator at least quarterly. So, you can just grab a new license every time you upgrade the operator.

Get a License

In this section, we are going to show you how you can get a 1 year free license for KubeDB Community edition. You can get a license for your Kubernetes cluster by going through the following steps:

  • At first, go to AppsCode License Server and fill up the form. It will ask for your Name, Email, the product you want to install, and your cluster ID (UID of the kube-system namespace).
  • Provide your name and email address. You can provide your personal or work email address.
  • Then, select KubeDB Community Edition in the product field.
  • Now, provide your cluster ID. You can get your cluster ID easily by running the following command:
kubectl get ns kube-system -o=jsonpath='{.metadata.uid}'
  • Then, you have to agree with the terms and conditions. We recommend reading it before checking the box.
  • Now, you can submit the form. After you submit the form, the AppsCode License server will send an email to the provided email address with a link to your license file.
  • Navigate to the provided link and save the license into a file. Here, we save the license to a license.txt file.

Here is a screenshot of the license form.

KubeDB Backend Overview
Fig: KubeDB License Form

You can create licenses for as many clusters as you want. You can upgrade your license any time without re-installing KubeDB by following the upgrading guide from here.

KubeDB licensing process has been designed to work with CI/CD workflow. You can automatically obtain a license from your CI/CD pipeline by following the guide from here.

Install

KubeDB operator can be installed as a Helm chart or simply as Kubernetes manifests.

Using Helm 3

KubeDB can be installed via Helm using the chart from AppsCode Charts Repository. To install, follow the steps below:

$ helm repo add appscode https://charts.appscode.com/stable/
$ helm repo update
$ helm search repo appscode/kubedb --version v0.15.1
NAME                        CHART VERSION APP VERSION   DESCRIPTION
appscode/kubedb             v0.15.1  v0.15.1  KubeDB by AppsCode - Production ready databases on Kubernetes
appscode/kubedb-catalog     v0.15.1  v0.15.1  KubeDB Catalog by AppsCode - Catalog for database versions

# Step 1: Install KubeDB Community operator chart
$ helm install kubedb-community appscode/kubedb \
  --version v0.15.1      \
  --namespace kube-system                       \
  --set-file license=/path/to/the/license.txt

# Step 2: wait until crds are registered
$ kubectl get crds -l app=kubedb -w
NAME                               AGE
elasticsearches.kubedb.com         12s
elasticsearchversions.kubedb.com   8s
etcds.kubedb.com                   8s
etcdversions.kubedb.com            8s
memcacheds.kubedb.com              6s
memcachedversions.kubedb.com       6s
mongodbs.kubedb.com                7s
mongodbversions.kubedb.com         6s
mysqls.kubedb.com                  7s
mysqlversions.kubedb.com           7s
postgreses.kubedb.com              8s
postgresversions.kubedb.com        7s
redises.kubedb.com                 6s
redisversions.kubedb.com           6s

# Step 3(a): Install KubeDB catalog of database versions
$ helm install kubedb-catalog appscode/kubedb-catalog   \
  --version v0.15.1              \
  --namespace kube-system

# Step 3(b): Or, if previously installed, upgrade KubeDB catalog of database versions
$ helm upgrade kubedb-catalog appscode/kubedb-catalog   \
  --version v0.15.1              \
  --namespace kube-system

To see the detailed configuration options, visit here.

Using Helm 2

KubeDB can be installed via Helm using the chart from AppsCode Charts Repository. To install, follow the steps below:

$ helm repo add appscode https://charts.appscode.com/stable/
$ helm repo update
$ helm search appscode/kubedb --version v0.15.1
NAME                        CHART VERSION APP VERSION   DESCRIPTION
appscode/kubedb             v0.15.1  v0.15.1  KubeDB by AppsCode - Production ready databases on Kubernetes
appscode/kubedb-catalog     v0.15.1  v0.15.1  KubeDB Catalog by AppsCode - Catalog for database versions

# Step 1: Install KubeDB Community operator chart
$ helm install appscode/kubedb --name kubedb-community \
  --version v0.15.1     \
  --namespace kube-system                      \
  --set-file license=/path/to/the/license.txt

# Step 2: wait until crds are registered
$ kubectl get crds -l app=kubedb -w
NAME                               AGE
elasticsearches.kubedb.com         12s
elasticsearchversions.kubedb.com   8s
etcds.kubedb.com                   8s
etcdversions.kubedb.com            8s
memcacheds.kubedb.com              6s
memcachedversions.kubedb.com       6s
mongodbs.kubedb.com                7s
mongodbversions.kubedb.com         6s
mysqls.kubedb.com                  7s
mysqlversions.kubedb.com           7s
postgreses.kubedb.com              8s
postgresversions.kubedb.com        7s
redises.kubedb.com                 6s
redisversions.kubedb.com           6s

# Step 3(a): Install KubeDB catalog of database versions
$ helm install appscode/kubedb-catalog --name kubedb-catalog   \
  --version v0.15.1                     \
  --namespace kube-system

# Step 3(b): Or, if previously installed, upgrade KubeDB catalog of database versions
$ helm upgrade kubedb-catalog appscode/kubedb-catalog          \
  --version v0.15.1                     \
  --namespace kube-system

To see the detailed configuration options, visit here.

Using YAML

If you prefer to not use Helm, you can generate YAMLs from KubeDB chart and deploy using kubectl. Here we are going to show the prodecure using Helm 3.

$ helm repo add appscode https://charts.appscode.com/stable/
$ helm repo update
$ helm search repo appscode/kubedb --version v0.15.1
NAME                        CHART VERSION APP VERSION   DESCRIPTION
appscode/kubedb             v0.15.1  v0.15.1  KubeDB by AppsCode - Production ready databases on Kubernetes
appscode/kubedb-catalog     v0.15.1  v0.15.1  KubeDB Catalog by AppsCode - Catalog for database versions

# Step 1: Install KubeDB Community operator chart
$ helm template kubedb-community appscode/kubedb \
  --version v0.15.1       \
  --namespace kube-system                        \
  --set-file license=/path/to/the/license.txt    \
  --no-hooks | kubectl apply -f -

# Step 2: wait until crds are registered
$ kubectl get crds -l app=kubedb -w
NAME                               AGE
elasticsearches.kubedb.com         12s
elasticsearchversions.kubedb.com   8s
memcacheds.kubedb.com              6s
memcachedversions.kubedb.com       6s
mongodbs.kubedb.com                7s
mongodbversions.kubedb.com         6s
mysqls.kubedb.com                  7s
mysqlversions.kubedb.com           7s
postgreses.kubedb.com              8s
postgresversions.kubedb.com        7s
redises.kubedb.com                 6s
redisversions.kubedb.com           6s

# Step: Install/Upgrade KubeDB catalog of database versions
$ helm template kubedb-catalog appscode/kubedb-catalog   \
  --version v0.15.1               \
  --namespace kube-system                                \
  --no-hooks | kubectl apply -f -

To see the detailed configuration options, visit here.

Verify installation

To check if KubeDB operator pods have started, run the following command:

$ kubectl get pods --all-namespaces -l app.kubernetes.io/name=kubedb --watch

NAMESPACE     NAME                     READY     STATUS    RESTARTS   AGE
kube-system   kubedb-859d6bdb56-m9br5  1/1       Running   2          5s

Once the operator pod is running, you can cancel the above command by typing Ctrl+C.

Now, to confirm CRD groups have been registered by the operator, run the following command:

$ kubectl get crd -l app.kubernetes.io/name=kubedb

Now, you are ready to create your first database using KubeDB.