
Java Operator Plugin
Overview
This project is a component of the Operator Framework, an
open source toolkit to manage Kubernetes native applications, called
Operators, in an effective, automated, and scalable way. Read more in
the introduction blog post.
Operators make it easy to manage complex stateful
applications on top of Kubernetes. However writing an operator today can
be difficult because of challenges such as using low level APIs, writing
boilerplate, and a lack of modularity which leads to duplication.
License
Operator SDK is under Apache 2.0 license. See the LICENSE file for details.
Enable java-operator-plugins for operator-sdk
To use java-operator-plugins for java operators we need to clone the operator-sdk repo.
Updates in Operator-SDK go.mod
- Add the kubebuilder plugin to
go.mod
github.com/operator-framework/java-operator-plugins v0.0.0-20210225171707-e42ea87455e3
- Replace the java-operator-plugins path in go-mod pointing to the local dir of your kube-builder repo. Example.
github.com/operator-framework/java-operator-plugins => /Users/sushah/go/src/github.com/sujil02/java-operator-plugins
Updates in Operator-SDK internal/cmd/operator-sdk/cli/cli.go
- Add the java-operator-sdk import
quarkusv1 "github.com/operator-framework/java-operator-plugins/pkg/quarkus/v1alpha"
- Introduce the java bundle in
GetPluginsCLIAndRoot()
method.
quarkusBundle, _ := plugin.NewBundle("quarkus"+plugins.DefaultNameQualifier, plugin.Version{Number: 1},
&quarkusv1.Plugin{},
)
- Add the created quarkusBundle to the
cli.New
cli.WithPlugins(
ansibleBundle,
gov2Bundle,
gov3Bundle,
helmBundle,
quarkusBundle,
),
Build and Install the Operator-SDK
go mod tidy
make install
Now that the plugin is integrated with the operator-sdk
you can run the init
command to generate the sample java operator
- Use the quarkus plugin flag
- Pick the domain and project name as prefered.
operator-sdk init --plugins quarkus --domain xyz.com --project-name java-op
Once the operator is scaffolded check for the following files
├── PROJECT
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── xyz
│ └── JavaOpOperator.java
└── resources
└── application.properties