Sign inSign up

bitpoke/mysql-operator

By bitpoke

•Updated over 3 years ago

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

Image
1

100K+

bitpoke/mysql-operator repository overview

⁠MySQL Operator

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

MySQL Operator is maintained and developed by Bitpoke⁠, a self managed WordPress hosting app running cloud-native.

⁠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

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.

⁠Documentation

⁠Controller deploy

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

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

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

NOTE: MySQL operator 0.2.x requires at least Kubernetes 1.11.x (or 1.10.x with alpha features) while version 0.1.x is known to work with Kubernetes up 1.9.x. To upgrade, check the 0.2.x upgrade notes⁠ as some additional steps are required.

⁠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 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.

Tag summary

Content type

Image

Digest

sha256:149f5708f…

Size

18.6 MB

Last updated

over 3 years ago

docker pull bitpoke/mysql-operator:0.7.0-amd64