All Projects → presslabs → Mysql Operator

presslabs / Mysql Operator

Licence: apache-2.0
Bulletproof MySQL on Kubernetes using Percona Server

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Mysql Operator

Operators
Collection of Kubernetes Operators built with KUDO.
Stars: ✭ 175 (-66.79%)
Mutual labels:  mysql, kubernetes-operator, kubernetes-controller
Kudo
Kubernetes Universal Declarative Operator (KUDO)
Stars: ✭ 849 (+61.1%)
Mutual labels:  mysql, kubernetes-operator, kubernetes-controller
Mysql Operator
Create, operate and scale self-healing MySQL clusters in Kubernetes
Stars: ✭ 855 (+62.24%)
Mutual labels:  mysql, kubernetes-operator
Moco
A MySQL operator for binlog-based semi-sync replication
Stars: ✭ 37 (-92.98%)
Mutual labels:  mysql, kubernetes-operator
mysql-operator
Asynchronous MySQL Replication on Kubernetes using Percona Server and Openark's Orchestrator.
Stars: ✭ 810 (+53.7%)
Mutual labels:  kubernetes-operator, kubernetes-controller
Rbacsync
Automatically sync groups into Kubernetes RBAC
Stars: ✭ 197 (-62.62%)
Mutual labels:  kubernetes-operator, kubernetes-controller
Strimzi Kafka Operator
Apache Kafka running on Kubernetes
Stars: ✭ 2,833 (+437.57%)
Mutual labels:  kubernetes-operator, kubernetes-controller
kotary
Managing Kubernetes Quota with confidence
Stars: ✭ 85 (-83.87%)
Mutual labels:  kubernetes-operator, kubernetes-controller
Wordpress Operator
WordPress operator for Kubernetes
Stars: ✭ 127 (-75.9%)
Mutual labels:  kubernetes-operator, kubernetes-controller
wordpress-operator
Bitpoke Kubernetes operator for WordPress
Stars: ✭ 159 (-69.83%)
Mutual labels:  kubernetes-operator, kubernetes-controller
cdap-operator
CDAP Kubernetes Operator
Stars: ✭ 17 (-96.77%)
Mutual labels:  kubernetes-operator, kubernetes-controller
aws-iam-operator
AWS IAM Operator for Kubernetes
Stars: ✭ 23 (-95.64%)
Mutual labels:  kubernetes-operator, kubernetes-controller
Bonny
The Elixir based Kubernetes Development Framework
Stars: ✭ 190 (-63.95%)
Mutual labels:  kubernetes-operator, kubernetes-controller
Cronjobber
Cronjobber is a cronjob controller for Kubernetes with support for time zones
Stars: ✭ 169 (-67.93%)
Mutual labels:  kubernetes-operator, kubernetes-controller
Captain
A Helm 3 Controller
Stars: ✭ 129 (-75.52%)
Mutual labels:  kubernetes-operator, kubernetes-controller
Operator Kit
A library for creating a Kubernetes Operator
Stars: ✭ 275 (-47.82%)
Mutual labels:  kubernetes-operator, kubernetes-controller
Spark On K8s Operator
Kubernetes operator for managing the lifecycle of Apache Spark applications on Kubernetes.
Stars: ✭ 1,780 (+237.76%)
Mutual labels:  kubernetes-operator, kubernetes-controller
K8gb
A cloud native Kubernetes Global Balancer
Stars: ✭ 113 (-78.56%)
Mutual labels:  kubernetes-operator, kubernetes-controller
kubereplay
Seamless integration of goReplay and Kubernetes
Stars: ✭ 30 (-94.31%)
Mutual labels:  kubernetes-operator, kubernetes-controller
port-map-operator
LoadBalancer Service type implementation for home Kubernetes clusters via Port Control Protocol.
Stars: ✭ 25 (-95.26%)
Mutual labels:  kubernetes-operator, kubernetes-controller

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 was developed by the awesome engineering team at Presslabs, a Smart Managed WordPress Hosting platform.

For more open-source projects, check Presslabs Code.

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.

The operator is to be considered alpha and not suitable for critical production workloads. We, Presslabs, sucessfully use it at the moment for some non-critical production workloads.

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

  • 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 presslabs https://presslabs.github.io/charts
helm install presslabs/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: 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/presslabs/mysql-operator/master/examples/example-cluster-secret.yaml
kubectl apply -f https://raw.githubusercontent.com/presslabs/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
  • [x] Physical backups
  • [x] HA Orchestrator integration
  • [x] Prometheus metrics exporter
  • [x] Lag mitigation
  • [x] 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].