A Kubernetes operator for databases.

DB8 [dɪˈbeɪt]

A Kubernetes operator and a collection of Helm charts for databases.

Motivation

Since the deprecation of the official Helm chart repository, many users started using the Bitnami Helm charts. The Bitnami Helm charts are of high quality, but have some shortcomings that make them difficult to use from the perspective of an open source enthusiast:

  • Limited compatibility with library containers
    Some Helm charts are compatible with the library containers, but additional friction exists due to the usage of non-standard default configuration options. An example for this is the mariadb helm chart, which uses the /bitnami/mariadb path to store its data rather than the default /var/lib/mysql.

  • Limited support for ARM
    As highlighted in this issue, the Bitnami charts lack support for arm64v8.

  • Proprietary build process
    The Helm charts heavily rely on Bitnami's container images, which are built in a proprietary process. This limits the ability of open source contributors to help fixing the aforementioned issues. From a software lifecycle perspective this creates similar constraint as other proprietary software and solutions.

I am a major advocate for free and open source software, where everything is — well — free and open source. Are we paying or otherwise supporting open source contributors enough? Heck no! Is this fair towards the contributors? Of course not! Turning open source software into non-free or proprietary software, like it happened with Inlets or KubeDB is in my humble opinion not the solution, although I acknowledge the following issues:

  • Exploitation of open source software
    Major software companies — not to name them specifically but you may know whom I am talking about — are exploiting open source software by providing very profitable services built on top of free software without contributing back either financially or intellectually. MongoDB, Inlets and KubeDB fell victim to this and were thereby forced to take action by either adjusting their license or their business model to prevent this.

  • Lack of a well-defined business model
    Although the exploitation of these projects is a major issue. The lack of an appropriate business model for open source companies or individuals is also a reason why this happens. Some companies are better at commercializing open source, such as Rancher, while others do not succeed.

Nice rant, Nicklas, so what can we as an open source community do?

  • Sponsor the contributors monthly
    Use GitHub sponsors to contribute financially to the projects you are using. If you are a company and you use open source projects, it should be a no-brainer to allocate funding in your budget. It's about ethics, but if you want a more commercial argument, it is about sustainability. Your software supply chain needs maintenance and maintenance is not free. You simply cannot believe that exploitation is sustainable. For the colonialization in the past we all paying the price today. We now have to deal with fascism, racism, child mortality, discrimination, polical instability, war, resource shortages and depressing knowledge that most if not all of the injustice and pain in the world is caused by exploitation. And also today we are experiencing the same things all over again with our environment — exploitation for which we will eventually pay the price.

  • Allocate time to contribute
    If you don't like the idea of supporting the coffee addictions of our valued open source heros, allocate a fixed, non-negotiable amount of time for contributions to open source projects. This does not only entail the development of features, which will benefit you, but can also be things like process improvements to make release pipelines more efficient or by triaging issues. This time is not for you but to take something of our open source heros' plates.

If you feel bad now, I get it. The truth hurts. Use this energy to do either of the outlined options above.

Architecture

This repository contains a collection of Helm charts, where each Helm chart must be compatible with the library container images provided by the Docker Hub. These Helm charts are then used by the Operator to install the databases. As this could also be done by using a Helm chart operator, the following features are provided by this operator:

  • Credential-injection via annotations
    You can create annotations on Deployments, DaemonSets or StatefulSets to automatically generate credentials and inject them into the container

  • Quotas
    Manage access to databases via per-instance quotas that define which application can use which instance.

  • Automated backup and recovery via annotations
    Automatically back up databases and recover to previous snapshots.

License

This project is licensed under the terms of the MIT license.

Owner
Optrin
A non-profit organization commited to open-source infrastructure.
Optrin
Similar Resources

Minecraft-operator - A Kubernetes operator for Minecraft Java Edition servers

Minecraft Operator A Kubernetes operator for dedicated servers of the video game

Dec 15, 2022

K8s-network-config-operator - Kubernetes network config operator to push network config to switches

Kubernetes Network operator Will add more to the readme later :D Operations The

May 16, 2022

Pulumi-k8s-operator-example - OpenGitOps Compliant Pulumi Kubernetes Operator Example

Pulumi GitOps Example OpenGitOps Compliant Pulumi Kubernetes Operator Example Pr

May 6, 2022

Kubernetes Operator Samples using Go, the Operator SDK and OLM

Kubernetes Operator Samples using Go, the Operator SDK and OLM

Kubernetes Operator Patterns and Best Practises This project contains Kubernetes operator samples that demonstrate best practices how to develop opera

Nov 24, 2022

Test Operator using operator-sdk 1.15

test-operator Test Operator using operator-sdk 1.15 operator-sdk init --domain rbt.com --repo github.com/ravitri/test-operator Writing kustomize manif

Dec 28, 2021

a k8s operator 、operator-sdk

helloworld-operator a k8s operator 、operator-sdk Operator 参考 https://jicki.cn/kubernetes-operator/ https://learnku.com/articles/60683 https://opensour

Jan 27, 2022

Operator Permissions Advisor is a CLI tool that will take a catalog image and statically parse it to determine what permissions an Operator will request of OLM during an install

Operator Permissions Advisor is a CLI tool that will take a catalog image and statically parse it to determine what permissions an Operator will request of OLM during an install. The permissions are aggregated from the following sources:

Apr 22, 2022

The OCI Service Operator for Kubernetes (OSOK) makes it easy to connect and manage OCI services from a cloud native application running in a Kubernetes environment.

OCI Service Operator for Kubernetes Introduction The OCI Service Operator for Kubernetes (OSOK) makes it easy to create, manage, and connect to Oracle

Sep 27, 2022

PolarDB-X Operator is a Kubernetes extension that aims to create and manage PolarDB-X cluster on Kubernetes.

GalaxyKube -- PolarDB-X Operator PolarDB-X Operator is a Kubernetes extension that aims to create and manage PolarDB-X cluster on Kubernetes. It follo

Dec 19, 2022

Kubernetes Operator to sync secrets between different secret backends and Kubernetes

Vals-Operator Here at Digitalis we love vals, it's a tool we use daily to keep secrets stored securely. We also use secrets-manager on the Kubernetes

Nov 13, 2022

The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes.

The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes.

The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes. Apache NiFI is a free, open-source solution that support powerful and scalable directed graphs of data routing, transformation, and system mediation logic.

Dec 26, 2022

Certificate authority and access plane for SSH, Kubernetes, web applications, and databases

Teleport is an identity-aware, multi-protocol access proxy which understands SSH, HTTPS, Kubernetes API, MySQL and PostgreSQL wire protocols.

Jan 9, 2023

Manage SQL databases, users and grant using kubernetes manifests

SqlOperator Operate sql databases, users and grants. This is a WIP project and should not at all be used in production at this time. Feel free to vali

Nov 28, 2021

Kubernetes Operator for a Cloud-Native OpenVPN Deployment.

Meerkat is a Kubernetes Operator that facilitates the deployment of OpenVPN in a Kubernetes cluster. By leveraging Hashicorp Vault, Meerkat securely manages the underlying PKI.

Jan 4, 2023

Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)

Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)

flagger Flagger is a progressive delivery tool that automates the release process for applications running on Kubernetes. It reduces the risk of intro

Jan 5, 2023

A Kubernetes Operator used for pre-scaling applications in anticipation of load

Pre-Scaling Kubernetes Operator Built out of necessity, the Operator helps pre-scale applications in anticipation of load. At its core, it manages a c

Oct 14, 2021

Kubernetes operator to autoscale Google's Cloud Bigtable clusters

Kubernetes operator to autoscale Google's Cloud Bigtable clusters

Bigtable Autoscaler Operator Bigtable Autoscaler Operator is a Kubernetes Operator to autoscale the number of nodes of a Google Cloud Bigtable instanc

Nov 5, 2021

Nebula Operator manages NebulaGraph clusters on Kubernetes and automates tasks related to operating a NebulaGraph cluster

Nebula Operator manages NebulaGraph clusters on Kubernetes and automates tasks related to operating a NebulaGraph cluster. It evolved from NebulaGraph Cloud Service, makes NebulaGraph a truly cloud-native database.

Dec 31, 2022
Comments
  • Publish to OperatorHub

    Publish to OperatorHub

    The operator should be discoverable via the OperatorHub.

    • [ ] Set up OLM integration as described in the link above
    • [ ] Register operator
    • [ ] Publish to OperatorHub via CI
  • Set up container build

    Set up container build

    The following things should be automated via GitHub actions.

    • [ ] Build and push container images to GitHub container registry
    • [ ] Create a main release channel which is updated after each successful container build
Related tags
Kivik provides a common interface to CouchDB or CouchDB-like databases for Go and GopherJS.

Kivik Package kivik provides a common interface to CouchDB or CouchDB-like databases. The kivik package must be used in conjunction with a database dr

Dec 29, 2022
Multiple databases, read-write splitting FOR GORM

DBResolver DBResolver adds multiple databases support to GORM, the following features are supported: Multiple sources, replicas Read/Write Splitting A

Jan 6, 2023
A simple golang api generator that stores struct fields in key/value based databases

Backgen A simple golang API generator that uses key/value based databases. It does not provide the database itself, only uses a interface to access se

Feb 4, 2022
An operator which complements grafana-operator for custom features which are not feasible to be merged into core operator

Grafana Complementary Operator A grafana which complements grafana-operator for custom features which are not feasible to be merged into core operator

Aug 16, 2022
Modular Kubernetes operator to manage the lifecycle of databases

Ensemble Ensemble is a simple and modular Kubernetes Operator to manage the lifecycle of a wide range of databases. Infrastructure as code with Kubern

Aug 12, 2022
Kubegres is a Kubernetes operator allowing to create a cluster of PostgreSql instances and manage databases replication, failover and backup.

Kubegres is a Kubernetes operator allowing to deploy a cluster of PostgreSql pods with data replication enabled out-of-the box. It brings simplicity w

Dec 30, 2022
The Oracle Database Operator for Kubernetes (a.k.a. OraOperator) helps developers, DBAs, DevOps and GitOps teams reduce the time and complexity of deploying and managing Oracle Databases

The Oracle Database Operator for Kubernetes (a.k.a. OraOperator) helps developers, DBAs, DevOps and GitOps teams reduce the time and complexity of deploying and managing Oracle Databases. It eliminates the dependency on a human operator or administrator for the majority of database operations.

Dec 14, 2022
A Kubernetes operator for databases.

DB8 [dɪˈbeɪt] A Kubernetes operator and a collection of Helm charts for databases. Motivation Since the deprecation of the official Helm chart reposit

Jan 1, 2022
The Elastalert Operator is an implementation of a Kubernetes Operator, to easily integrate elastalert with gitops.

Elastalert Operator for Kubernetes The Elastalert Operator is an implementation of a Kubernetes Operator. Getting started Firstly, learn How to use el

Jun 28, 2022