Maestro provides a declarative approach to building production-grade Kubernetes Operators covering the entire application lifecycle.
Clone or download
runyontr and gerred Added example MYSQL framework with backup and restore tasks (#79)
* Added example MYSQL framework with backup and restore tasks

* Solves #81 for checking deployment health
Latest commit db3201e Jan 23, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Add kubebuilder bits, add dynamic CRD Nov 21, 2018
cmd/manager rename kubebuilder-maestro to maestro in all instances (#61) Dec 10, 2018
config Added example MYSQL framework with backup and restore tasks (#79) Jan 23, 2019
docs Added example MYSQL framework with backup and restore tasks (#79) Jan 23, 2019
hack Add kubebuilder bits, add dynamic CRD Nov 21, 2018
pkg Added example MYSQL framework with backup and restore tasks (#79) Jan 23, 2019
vendor added validation (#19) Nov 29, 2018
.gitignore Add gitignore, update template files Nov 20, 2018
CONTRIBUTING.md Fixed repo references. (#63) Dec 11, 2018
Dockerfile rename kubebuilder-maestro to maestro in all instances (#61) Dec 10, 2018
Gopkg.lock re-add kustomize to new PR (#23) Dec 3, 2018
Gopkg.toml Switches to Go modules, and adds the Kustomize module (#20) Nov 29, 2018
LICENSE Initial commit Jun 25, 2016
Makefile Docker build (#60) Jan 10, 2019
OWNERS Add gitignore, update template files Nov 20, 2018
OWNERS_ALIASES Add gitignore, update template files Nov 20, 2018
PROJECT rename kubebuilder-maestro to maestro in all instances (#61) Dec 10, 2018
README.md fixed broken docs link (#83) Jan 16, 2019
RELEASE.md Add gitignore, update template files Nov 20, 2018
SECURITY_CONTACTS Add gitignore, update template files Nov 20, 2018
code-of-conduct.md Revert "Update COC link" Oct 15, 2018
cover.out Add kubebuilder bits, add dynamic CRD Nov 21, 2018

README.md

Maestro

Maestro provides a declarative approach to building production-grade Kubernetes Operators covering the entire application lifecycle.

Getting Started

See the Documentation with Examples.

Quick Start

Pre-requisites

Before you get started:

Installation Instructions

  • Get maestro repo: go get github.com/maestrosdk/maestro/
  • cd $GOPATH/src/github.com/maestrosdk/maestro
  • make install to deploy universal CRDs
  • make run to run the Operator with local go environment

Concepts

  • Framework: High-level description of a deployable application (e.g., Apache Kafka)
  • FrameworkVersion: Specific version of a deployable application, including lifecycle hooks for deployments, upgrades, and rollbacks (e.g., Kafka version 2.4.1)
  • Instance: Resource created to manage an instance of specific FrameworkVersion. Instances are pets and have the same name throughout its entire lifecycle. (e.g., Kafka 2.4.1 cluster with 3 brokers)
  • PlanExecution: Maestro-managed resource defining the inputs and status of an instance’s executable plans (e.g., upgrade kafka from version 2.4.1 -> 2.4.2)

Deploy your first Application

Create a Framework object for Zookeeper

$ kubectl apply -f config/samples/zookeeper-framework.yaml
framework.maestro.k8s.io/zookeeper created

Create a FrameworkVersion for the Zookeeper Framework

$ kubectl apply -f config/samples/zookeeper-frameworkversion.yaml
frameworkversion.maestro.k8s.io/zookeeper-1.0 created

Create an Instance of the Zookeeper

$ kubectl apply -f config/samples/zookeeper-instance.yaml
instance.maestro.k8s.io/zk created

When an instance is created, the default deploy plan is executed

$ kubectl get planexecutions
NAME                  AGE
zk-deploy-317743000   53s

The statefulset defined in the FrameworkVersion comes up with 3 pods:

kubectl get statefulset zk-zk
NAME    DESIRED   CURRENT   AGE
zk-zk   3         3         1m20s
 kubectl get pods
NAME                    READY   STATUS             RESTARTS   AGE
zk-zk-0                 1/1     Running            0          23s
zk-zk-1                 1/1     Running            0          23s
zk-zk-2                 1/1     Running            0          23s

Community, discussion, contribution, and support

Learn how to engage with the Kubernetes community on the community page.

You can reach the maintainers of this project at:

Code of conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.