mysql-operator

module
v0.2.7 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2019 License: Apache-2.0

README

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 efortless 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

More documentation can be found in docs

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

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.

Directories

Path Synopsis
cmd
pkg
apis
Package apis contains Kubernetes API groups.
Package apis contains Kubernetes API groups.
apis/mysql
Package mysql contains mysql API versions
Package mysql contains mysql API versions
apis/mysql/v1alpha1
Package v1alpha1 contains API Schema definitions for the mysql v1alpha1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/presslabs/mysql-operator/pkg/apis/mysql +k8s:defaulter-gen=TypeMeta +groupName=mysql.presslabs.org
Package v1alpha1 contains API Schema definitions for the mysql v1alpha1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/presslabs/mysql-operator/pkg/apis/mysql +k8s:defaulter-gen=TypeMeta +groupName=mysql.presslabs.org
controller/internal/testutil
nolint: golint, errcheck
nolint: golint, errcheck
orchestrator
Package orchestrator note NOTE that this code is copied from: https://github.com/github/orchestrator/blob/master/go/inst/instance.go We need just the types that's why is copied instead of imported.
Package orchestrator note NOTE that this code is copied from: https://github.com/github/orchestrator/blob/master/go/inst/instance.go We need just the types that's why is copied instead of imported.
test
e2e
e2e/framework/ginkgowrapper
Package ginkgowrapper wraps Ginkgo Fail and Skip functions to panic with structured data instead of a constant string.
Package ginkgowrapper wraps Ginkgo Fail and Skip functions to panic with structured data instead of a constant string.

Jump to

Keyboard shortcuts

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