kubernetes-dbaas

command module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 17, 2021 License: Apache-2.0 Imports: 2 Imported by: 0

README

Kubernetes DbaaS

License

Bedag

A Kubernetes Database as a Service (DBaaS) Operator for non-Kubernetes managed database management systems.

logo

Abstract

This project aims at creating a Kubernetes Operator able to trigger a stored procedure in an external DBMS which in turn provisions a new database instance. Users are able to create new database instances by writing the API Object configuration using Kubernetes Custom Resources. The Operator watches for new API Objects and tells the target DBMS to trigger a certain stored procedure based on the custom resource specs.

Motivation

There are cases where an organization cannot or doesn't want to host their precious data in cloud environments and searches for a way to bridge the gap between their Kubernetes clusters and on-premise DBMS solutions. Imagine an organization composed by developers, system administrators and database administrators. Developers want their database instance ready ASAP, system administrators want to integrate everything under Kubernetes, and database administrators have to keep control over the provisioning process while still automating repetitive tasks.

One of the Operator's strongest points is the separation of concerns between users, system administrators and database administrators. DBAs can retain full control on the lifecycle of database instances by creating stored procedures for each operation. This decouples the configuration from the implementation and ensures a well-defined boundary between the Kubernetes and Database worlds. Companies with strict compliance requirements can configure an opaque provisioning system for databases where data and business logic is kept as close as possible to their location without having to resort to any third-party tool; the only requirement is a defined contract between the system and database infrastructures.

Main technologies

  • Go 1.16 or newer
  • operator-sdk v1.7.2 or newer
  • Kubernetes v1.21.0 or newer
  • Helm v3

Main features

Create database

k8s_dbaas_bedag_create

Delete database

k8s_dbaas_bedag_delete

  • Level-based logging
  • Event logging, metrics
  • Credential rotation
  • Helm deployment
  • Rate-limited requests
  • Modern tech-stack
  • Flexible configuration

Supported DBMS

  • SQLServer
  • PostgreSQL
  • MySQL/MariaDB

Encrypted DBMS connections are not supported.

Manuals

In order of precedence:

Known issues

Contributing

Please read the contributing guidelines.

Credits

License

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
apis
config/v1
Package v1 contains API Schema definitions for the config v1 API group +kubebuilder:object:generate=true +groupName=config.dbaas.bedag.ch
Package v1 contains API Schema definitions for the config v1 API group +kubebuilder:object:generate=true +groupName=config.dbaas.bedag.ch
database/v1
Package v1 contains API Schema definitions for the database v1 API group +kubebuilder:object:generate=true +groupName=database.dbaas.bedag.ch
Package v1 contains API Schema definitions for the database v1 API group +kubebuilder:object:generate=true +groupName=database.dbaas.bedag.ch
databaseclass/v1
Package v1 contains API Schema definitions for the databaseclass v1 API group +kubebuilder:object:generate=true +groupName=databaseclass.dbaas.bedag.ch
Package v1 contains API Schema definitions for the databaseclass v1 API group +kubebuilder:object:generate=true +groupName=databaseclass.dbaas.bedag.ch
controllers
internal
pkg
pool
This package opens and retains a pool of distinct DBMS connections.
This package opens and retains a pool of distinct DBMS connections.
test
Package test provides common utilities to be used in tests throughout the project
Package test provides common utilities to be used in tests throughout the project
typeutil
Package typeutil defines various enums and messages for conditions, events and logging purposes.
Package typeutil defines various enums and messages for conditions, events and logging purposes.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL