Skip to content

Latest commit

 

History

History
115 lines (78 loc) · 5.18 KB

README.md

File metadata and controls

115 lines (78 loc) · 5.18 KB

NuoDB Control Plane

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.

nuodb-control-plane-overview

Documentation

The NuoDB Control Plane documentation is available at documentation. The REST API non-interactive documentation is available at API documentation.

Get Started

Installation

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

Helm charts

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.

Dependencies

The NuoDB Control Plane depends on Kubernetes version 1.19 or later.

Additional dependencies are listed below.

Ingress controller

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

Cert-manager

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

Usage

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:

  1. 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"}'
  1. 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 database demo within the project messaging within the organization acme.