This repository is for releases and documentation for the NuoDB Control Plane, which enables automatic management of NuoDB databases in Kubernetes.
NuoDB Control Plane allows users to provision NuoDB databases on-demand remotely using REST services by exposing various predefined configuration options. NuoDB domain and database are modeled as Kubernetes Custom Resources (CRs). Their Custom Resource Definitions (CRDs) act as contracts between NuoDB Operator and the other modules.
The NuoDB Control Plane documentation is available at documentation. The REST API non-interactive documentation is available at API documentation.
To install the NuoDB Control Plane into your Kubernetes cluster, first add the Helm repository for the NuoDB Control Plane Helm charts.
helm repo add nuodb-cp https://nuodb.github.io/nuodb-cp-releases/charts
You can verify that the repo has been added by executing helm search repo
to list the available Helm charts:
$ helm repo add nuodb-cp https://nuodb.github.io/nuodb-cp-releases/charts
"nuodb-cp" has been added to your repositories
$ helm search repo nuodb-cp
NAME CHART VERSION APP VERSION DESCRIPTION
nuodb-cp/nuodb-cp-crd 2.1.1 2.1.1 NuoDB Control Plane custom resource definitions...
nuodb-cp/nuodb-cp-doc 2.1.1 2.1.1 Interactive documentation for the NuoDB Control...
nuodb-cp/nuodb-cp-operator 2.1.1 2.1.1 NuoDB Control Plane Operator
nuodb-cp/nuodb-cp-rest 2.1.1 2.1.1 NuoDB Control Plane REST service
The NuoDB Control Plane can now be installed as follows:
helm install nuodb-cp-crd nuodb-cp/nuodb-cp-crd
helm install nuodb-cp-operator nuodb-cp/nuodb-cp-operator
helm install nuodb-cp-rest nuodb-cp/nuodb-cp-rest
There are several Helm charts for installing the various components of the NuoDB Control Plane.
nuodb-cp-crd
contains custom resource definitions used by the NuoDB Control Plane to manage NuoDB domains and databases. This must always be installed.nuodb-cp-operator
contains the Kubernetes operator for managing NuoDB domains and databases. This must always be installed.nuodb-cp-rest
contains a REST service that exposes access to the NuoDB Control Plane in a Database as a Service (DBaaS) model. This allows users without access to Kubernetes APIs to manage NuoDB domains and databases.nuodb-cp-doc
exposes an endpoint for interactive documentation of the NuoDB Control Plane REST service. See api-doc for non-interactive documentation of the REST service.
The NuoDB Control Plane depends on Kubernetes version 1.19 or later.
Additional dependencies are listed below.
An Ingress controller can be used to enable external connectivity to the NuoDB Control Plane REST API and to the databases created by it. The HAProxy Ingress Controller can be installed as follows:
helm repo add haproxytech https://haproxytech.github.io/helm-charts
helm install haproxy-ingress haproxytech/kubernetes-ingress
To enable admission webhooks that perform synchronous validation of NuoDB custom resource definitions, cert-manager should be installed to automatically generate certificates for the webhook server.
This can be done as follows:
helm repo add jetstack https://charts.jetstack.io
helm install cert-manager jetstack/cert-manager
To enable multi-tenancy, NuoDB databases managed by the NuoDB Control Plane are grouped into projects, which are themselves grouped into organizations.
Create a NuoDB database as follows:
- Create a project using the
PUT projects
REST endpoint:
curl -X PUT -H 'Content-Type: application/json' \
$BASE_URL/projects/acme/messaging -d '{"sla": "dev", "tier": "n0.small"}'
- Create a database using the
PUT databases
REST endpoint:
curl -X PUT -H 'Content-Type: application/json' \
$BASE_URL/databases/acme/messaging/demo -d '{"dbaPassword": "dba"}'
Note Projects and databases are identified by resource path segments
<organization>/<project>
and<organization>/<project>/<database>
, respectively. The example above creates the databasedemo
within the projectmessaging
within the organizationacme
.