Bitpoke MySQL operator

Asynchronous MySQL Replication on Kubernetes using Percona Server and Openark’s Orchestrator.

MySQL Operator

The Bitpoke MySQL Operator enables bulletproof MySQL on Kubernetes. It manages all the necessary resources for deploying and managing a highly available MySQL cluster. It also provides effortless backups.

MySQL Operator is maintained and developed by Bitpoke , as a step towards the path to democratizing WordPress hosting. The project code and issue tracker can be found on Github: https://github.com/bitpoke/mysql-operator/ .

Goals and status

The main goals of this operator are:

  1. Easily deploy MySQL clusters in Kubernetes (cluster-per-service model)
  2. Friendly to devops (monitoring, availability, scalability and backup stories solved)
  3. Out-of-the-box backups (scheduled and on demand) and point-in-time recovery
  4. Support for cloning in cluster and across clusters.

Contributing and sponsoring

We welcome all contributions in the form of new issues for feature requests, bugs or even pull requests. We are open to discuss ideas on how to improve the operator and would also love to find out where and how it’s used. The discussion related to this project should happen on the Kubernetes Community Slack . The current maintainers of this project can be reached via email , too.

We also do gladly accept sponsoring of the project via Github so that we can allocate more resources in improving the MySQL operator: https://github.com/sponsors/bitpoke . Thank you!

Documentation

  • Getting started provides an overview over deploying and using the MySQL operator
  • Deploy a MySQL cluster describes in detail how a cluster can be installed and configured
  • Configure backups shows how to configure and take backups of a cluster
  • Recurrent backups describes how to setup recurrent backups for the cluster
  • Restore a cluster explains how to restore a cluster from a backup
  • How to integrate the operator with your deployment setup. This presents a simple way of using the MySQL operator and helm to deploy your application
  • Orchestrator shows you how to access the orchestrator for more details.

Controller deploy

To deploy this controller, use the provided helm chart by running:

helm repo add bitpoke https://helm-charts.bitpoke.io
helm install bitpoke/mysql-operator --name mysql-operator

For more information about chart values see chart README . This chart will deploy the controller together with an orchestrator cluster.

NOTE: To upgrade, check the upgrade notes for the required steps.

Controller upgrade

Maybe upgrading the MySQL operator to a newer version requires additional steps. Those steps can be found in the operator’s documentation at upgrades section.

Deploying a cluster

kubectl apply -f https://raw.githubusercontent.com/bitpoke/mysql-operator/master/examples/example-cluster-secret.yaml
kubectl apply -f https://raw.githubusercontent.com/bitpoke/mysql-operator/master/examples/example-cluster.yaml

Roadmap to v1.0

  • Integration with Google Cloud Marketplace, OperatorHub.io, AWS Marketplace
  • CRD Validation and webhooks
  • SSL support
  • Default integrated with MySQL 8.0
  • Proxy SQL integration
  • Backup policies
  • Physical backups
  • HA Orchestrator integration
  • Prometheus metrics exporter
  • Lag mitigation
  • Query limits

Tech considerations

This project uses Percona Server for MySQL 5.7 and 8.0 because of backup improvements (eg. backup locks), monitoring improvements and some serviceability improvements (eg. utility user). Although we could have used MariaDB, our primary focus being WordPress, we wanted a drop-in rather than a fork. In the future we might support MariaDB if that can be implemented in a compatible way.

License

This project is licensed under Apache 2.0 license. Read the LICENSE file in the top distribution directory for the full license text.

Getting started

The MySQL Kubernetes Operator manages all the necessary resources for deploying and managing a highly available MySQL cluster.

Read more

Integrate in Helm charts

How to integrate the Bitpoke operator for MySQL with your application.

Read more

MySQL Cluster Setup

How to setup a cluster with the Bitpoke MySQL operator.

Read more

Accessing orchestrator

The Openark orchestrator part in MySQL cluster management

Read more

Operator Upgrades

The steps to make in order to migrate the operator to a newer version of the MySQL operator.

Read more

Cluster Backups and Recovery

MySQL operator provides effortless backups while keeping the cluster highly-available.

Read more

Recurrent Backups

MySQL operator provides effortless recurrent backups while keeping the cluster highly available.

Read more