Kubernetes Universal Declarative Operator (KUDO) provides a declarative approach to building production-grade Kubernetes Operators covering the entire application lifecycle.
See the Documentation with Examples.
Before you get started:
- Install Go
1.11
or later - Latest version of
dep
- Kubernetes Cluster
1.12
or later (e.g. Minikube) - Configure kubectl
- Get KUDO repo:
go get github.com/kudobuilder/kudo/
cd $GOPATH/src/github.com/kudobuilder/kudo
make install
to deploy universal CRDsmake run
to run the Operator with local go environment
- 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: Kudo-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)
Create a Framework
object for Zookeeper
$ kubectl apply -f config/samples/zookeeper-framework.yaml
framework.kudo.k8s.io/zookeeper created
Create a FrameworkVersion
for the Zookeeper Framework
$ kubectl apply -f config/samples/zookeeper-frameworkversion.yaml
frameworkversion.kudo.k8s.io/zookeeper-1.0 created
Create an Instance of the Zookeeper
$ kubectl apply -f config/samples/zookeeper-instance.yaml
instance.kudo.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
Learn how to engage with the Kubernetes community on the community page.
You can reach the maintainers of this project at:
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.