Skip to content

Commit 1e3ddb2

Browse files
Sample Memcached added. (#7)
* modified versions of fabric 8 and quarkus-sdk * added sample for memcached * removed DS store files * modified sample to testdata
1 parent 35475e9 commit 1e3ddb2

File tree

15 files changed

+758
-0
lines changed

15 files changed

+758
-0
lines changed

samples/NewSample

Whitespace-only changes.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
# Binaries for programs and plugins
3+
*.exe
4+
*.exe~
5+
*.dll
6+
*.so
7+
*.dylib
8+
bin
9+
target
10+
11+
# editor and IDE paraphernalia
12+
.idea
13+
*.swp
14+
*.swo
15+
*~
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
domain: lucky.com
2+
layout:
3+
- quarkus.javaoperatorsdk.io/v1
4+
projectName: java-op
5+
resources:
6+
- api:
7+
crdVersion: v1
8+
namespaced: true
9+
domain: lucky.com
10+
group: cache
11+
kind: Memcached
12+
version: v1
13+
version: "3"
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
<img src="https://raw.githubusercontent.com/operator-framework/operator-sdk/master/website/static/operator_logo_sdk_color.svg" height="125px"></img>
2+
3+
# Java Operator SDK
4+
5+
## License
6+
7+
Operator SDK is under Apache 2.0 license. See the [LICENSE][license_file] file for details.
8+
9+
[license_file]:./LICENSE
10+
[of-home]: https://github.com/operator-framework
11+
[of-blog]: https://coreos.com/blog/introducing-operator-framework
12+
[operator-link]: https://coreos.com/operators/
13+
14+
# Enable kubebuilder-plugin for operator-sdk
15+
16+
17+
To use kubebuilder-plugin for java operators we need to clone the operator-sdk repo.
18+
19+
### Updates in Operator-SDK go.mod
20+
21+
- Add the kubebuilder plugin to `go.mod`
22+
23+
```
24+
github.com/operator-framework/java-operator-plugins v0.0.0-20210225171707-e42ea87455e3
25+
```
26+
27+
- Replace the kubebuilder-plugin path in go-mod pointing to the local dir of your kube-builder repo. Example.
28+
29+
```
30+
github.com/operator-framework/java-operator-plugins => /Users/sushah/go/src/github.com/sujil02/kubebuilder-plugin
31+
```
32+
33+
### Updates in Operator-SDK `internal/cmd/operator-sdk/cli/cli.go`
34+
35+
- Add the java-operator-sdk import
36+
37+
```
38+
javav1 "github.com/operator-framework/java-operator-plugins/pkg/quarkus/v1"
39+
```
40+
41+
- Introduce the java bundle in `GetPluginsCLIAndRoot()` method.
42+
```
43+
javaBundle, _ := plugin.NewBundle("quarkus"+plugins.DefaultNameQualifier, plugin.Version{Number: 1},
44+
&javav1.Plugin{},
45+
)
46+
```
47+
48+
- Add the created javaBundle to the `cli.New`
49+
50+
```
51+
cli.WithPlugins(
52+
ansibleBundle,
53+
gov2Bundle,
54+
gov3Bundle,
55+
helmBundle,
56+
javaBundle,
57+
),
58+
```
59+
60+
61+
### Build and Install the Operator-SDK
62+
```
63+
go mod tidy
64+
make install
65+
```
66+
67+
Now that the plugin is integrated with the `operator-sdk` you can run the `init` command to generate the sample java operator
68+
69+
- Use the quarkus plugin flag
70+
- Pick the domain and project name as preferred.
71+
72+
```
73+
operator-sdk init --plugins quarkus --domain xyz.com --project-name java-op
74+
```
75+
76+
Once the operator is scaffolded check for the following files
77+
78+
```
79+
├── PROJECT
80+
├── pom.xml
81+
└── src
82+
└── main
83+
├── java
84+
│   └── com
85+
│   └── xyz
86+
│   └── JavaOpOperator.java
87+
└── resources
88+
└── application.properties
89+
90+
```
91+
92+
you can run the `crete api` command to generate the api's for java operator
93+
94+
```
95+
operator-sdk create api --plugins quarkus --group cache --version v1 --kind Memcached
96+
```
97+
98+
Once the api's added to the operator check for the following files
99+
100+
```
101+
.
102+
├── PROJECT
103+
├── pom.xml
104+
└── src
105+
└── main
106+
├── java
107+
│   └── com
108+
│   └── lucky
109+
│   ├── JavaOpOperator.java
110+
│   ├── Memcached.java
111+
│   ├── MemcachedController.java
112+
│   ├── MemcachedSpec.java
113+
│   └── MemcachedStatus.java
114+
└── resources
115+
└── application.properties
116+
```
117+
118+
Now, create kind or minikube cluster. Then, create CRD's and CR as follows from the k8s folder.
119+
120+
```
121+
kubectl apply -f crd.yaml
122+
```
123+
124+
```
125+
kubectl apply -f memcached-sample.yaml
126+
```
127+
128+
Change the Memcached file as follows for group and version as it is aligned with Deployment.
129+
130+
```
131+
@Version("v1alpha1")
132+
@Group("cache.example.com")
133+
```
134+
135+
At the end, change the MemcachedController file as show in the ```Memcached Quarkus Operator```.
136+
137+
138+
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
3+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
4+
<output url="file://$MODULE_DIR$/target/classes" />
5+
<output-test url="file://$MODULE_DIR$/target/test-classes" />
6+
<content url="file://$MODULE_DIR$">
7+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
8+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
9+
<excludeFolder url="file://$MODULE_DIR$/target" />
10+
</content>
11+
<orderEntry type="inheritedJdk" />
12+
<orderEntry type="sourceFolder" forTests="false" />
13+
<orderEntry type="library" name="Maven: io.quarkiverse.operatorsdk:quarkus-operator-sdk:1.8.2" level="project" />
14+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-arc:1.12.2.Final" level="project" />
15+
<orderEntry type="library" name="Maven: org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.0.1" level="project" />
16+
<orderEntry type="library" name="Maven: io.javaoperatorsdk:operator-framework-core:1.8.2" level="project" />
17+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-core:1.12.2.Final" level="project" />
18+
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
19+
<orderEntry type="library" name="Maven: jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2" level="project" />
20+
<orderEntry type="library" name="Maven: jakarta.el:jakarta.el-api:3.0.3" level="project" />
21+
<orderEntry type="library" name="Maven: jakarta.interceptor:jakarta.interceptor-api:1.2.5" level="project" />
22+
<orderEntry type="library" name="Maven: jakarta.inject:jakarta.inject-api:1.0" level="project" />
23+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-ide-launcher:1.12.2.Final" level="project" />
24+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-development-mode-spi:1.12.2.Final" level="project" />
25+
<orderEntry type="library" name="Maven: io.smallrye.config:smallrye-config:1.10.2" level="project" />
26+
<orderEntry type="library" name="Maven: io.smallrye.common:smallrye-common-annotation:1.5.0" level="project" />
27+
<orderEntry type="library" name="Maven: io.smallrye.config:smallrye-config-common:1.10.2" level="project" />
28+
<orderEntry type="library" name="Maven: org.eclipse.microprofile.config:microprofile-config-api:1.4" level="project" />
29+
<orderEntry type="library" name="Maven: io.smallrye.common:smallrye-common-expression:1.5.0" level="project" />
30+
<orderEntry type="library" name="Maven: io.smallrye.common:smallrye-common-function:1.5.0" level="project" />
31+
<orderEntry type="library" name="Maven: io.smallrye.common:smallrye-common-constraint:1.5.0" level="project" />
32+
<orderEntry type="library" name="Maven: io.smallrye.common:smallrye-common-classloader:1.5.0" level="project" />
33+
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />
34+
<orderEntry type="library" name="Maven: org.jboss.logmanager:jboss-logmanager-embedded:1.0.6" level="project" />
35+
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging-annotations:2.2.0.Final" level="project" />
36+
<orderEntry type="library" name="Maven: org.jboss.threads:jboss-threads:3.2.0.Final" level="project" />
37+
<orderEntry type="library" name="Maven: org.jboss.slf4j:slf4j-jboss-logmanager:1.1.0.Final" level="project" />
38+
<orderEntry type="library" name="Maven: org.graalvm.sdk:graal-sdk:21.0.0" level="project" />
39+
<orderEntry type="library" name="Maven: org.wildfly.common:wildfly-common:1.5.4.Final-format-001" level="project" />
40+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-bootstrap-runner:1.12.2.Final" level="project" />
41+
<orderEntry type="library" name="Maven: io.smallrye.common:smallrye-common-io:1.5.0" level="project" />
42+
<orderEntry type="library" name="Maven: io.quarkus.arc:arc:1.12.2.Final" level="project" />
43+
<orderEntry type="library" name="Maven: jakarta.transaction:jakarta.transaction-api:1.3.3" level="project" />
44+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-openshift-client:1.12.2.Final" level="project" />
45+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-kubernetes-client:1.12.2.Final" level="project" />
46+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-jackson:1.12.2.Final" level="project" />
47+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.1" level="project" />
48+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.12.1" level="project" />
49+
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.20" level="project" />
50+
<orderEntry type="library" name="Maven: org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final" level="project" />
51+
<orderEntry type="library" name="Maven: io.smallrye.config:smallrye-config-source-yaml:1.10.2" level="project" />
52+
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.27" level="project" />
53+
<orderEntry type="library" name="Maven: io.fabric8:openshift-client:5.3.0" level="project" />
54+
<orderEntry type="library" name="Maven: io.fabric8:openshift-model:5.3.0" level="project" />
55+
<orderEntry type="library" name="Maven: io.fabric8:openshift-model-operator:5.3.0" level="project" />
56+
<orderEntry type="library" name="Maven: io.fabric8:openshift-model-operatorhub:5.3.0" level="project" />
57+
<orderEntry type="library" name="Maven: io.fabric8:openshift-model-monitoring:5.3.0" level="project" />
58+
<orderEntry type="library" name="Maven: io.fabric8:openshift-model-console:5.3.0" level="project" />
59+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-kubernetes:1.12.2.Final" level="project" />
60+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-kubernetes-client-internal:1.12.2.Final" level="project" />
61+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-smallrye-health:1.12.2.Final" level="project" />
62+
<orderEntry type="library" name="Maven: io.smallrye:smallrye-health:2.2.6" level="project" />
63+
<orderEntry type="library" name="Maven: org.eclipse.microprofile.health:microprofile-health-api:2.2" level="project" />
64+
<orderEntry type="library" name="Maven: io.smallrye:smallrye-health-api:2.2.6" level="project" />
65+
<orderEntry type="library" name="Maven: io.smallrye.reactive:mutiny:0.13.0" level="project" />
66+
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
67+
<orderEntry type="library" name="Maven: io.smallrye:smallrye-health-provided-checks:2.2.6" level="project" />
68+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-vertx-http:1.12.2.Final" level="project" />
69+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-security-runtime-spi:1.12.2.Final" level="project" />
70+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:1.12.2.Final" level="project" />
71+
<orderEntry type="library" name="Maven: io.quarkus.security:quarkus-security:1.1.3.Final" level="project" />
72+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-vertx-core:1.12.2.Final" level="project" />
73+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-netty:1.12.2.Final" level="project" />
74+
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.49.Final" level="project" />
75+
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.49.Final" level="project" />
76+
<orderEntry type="library" name="Maven: io.vertx:vertx-core:3.9.5" level="project" />
77+
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.49.Final" level="project" />
78+
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.49.Final" level="project" />
79+
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.49.Final" level="project" />
80+
<orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.49.Final" level="project" />
81+
<orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.49.Final" level="project" />
82+
<orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.49.Final" level="project" />
83+
<orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.49.Final" level="project" />
84+
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.49.Final" level="project" />
85+
<orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.49.Final" level="project" />
86+
<orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.49.Final" level="project" />
87+
<orderEntry type="library" name="Maven: io.vertx:vertx-web:3.9.5" level="project" />
88+
<orderEntry type="library" name="Maven: io.vertx:vertx-web-common:3.9.5" level="project" />
89+
<orderEntry type="library" name="Maven: io.vertx:vertx-auth-common:3.9.5" level="project" />
90+
<orderEntry type="library" name="Maven: io.vertx:vertx-bridge-common:3.9.5" level="project" />
91+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-jsonp:1.12.2.Final" level="project" />
92+
<orderEntry type="library" name="Maven: org.glassfish:jakarta.json:1.1.6" level="project" />
93+
<orderEntry type="library" name="Maven: io.fabric8:crd-generator-apt:5.3.0" level="project" />
94+
<orderEntry type="library" name="Maven: io.fabric8:crd-generator-api:5.3.0" level="project" />
95+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-client:5.3.0" level="project" />
96+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-core:5.3.0" level="project" />
97+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-rbac:5.3.0" level="project" />
98+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-admissionregistration:5.3.0" level="project" />
99+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-apps:5.3.0" level="project" />
100+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-autoscaling:5.3.0" level="project" />
101+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-apiextensions:5.3.0" level="project" />
102+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-batch:5.3.0" level="project" />
103+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-certificates:5.3.0" level="project" />
104+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-coordination:5.3.0" level="project" />
105+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-discovery:5.3.0" level="project" />
106+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-events:5.3.0" level="project" />
107+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-extensions:5.3.0" level="project" />
108+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-networking:5.3.0" level="project" />
109+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-metrics:5.3.0" level="project" />
110+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-policy:5.3.0" level="project" />
111+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-scheduling:5.3.0" level="project" />
112+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-storageclass:5.3.0" level="project" />
113+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-node:5.3.0" level="project" />
114+
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.14.9" level="project" />
115+
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.17.2" level="project" />
116+
<orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.14.9" level="project" />
117+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.1" level="project" />
118+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.1" level="project" />
119+
<orderEntry type="library" name="Maven: io.fabric8:zjsonpatch:0.3.0" level="project" />
120+
<orderEntry type="library" name="Maven: com.github.mifmif:generex:1.0.2" level="project" />
121+
<orderEntry type="library" name="Maven: dk.brics.automaton:automaton:1.11-8" level="project" />
122+
<orderEntry type="library" name="Maven: io.sundr:sundr-codegen:0.30.0" level="project" />
123+
<orderEntry type="library" name="Maven: io.sundr:builder-annotations:0.30.0" level="project" />
124+
<orderEntry type="library" name="Maven: io.sundr:sundr-core:0.30.0" level="project" />
125+
<orderEntry type="library" name="Maven: io.sundr:resourcecify-annotations:0.30.0" level="project" />
126+
<orderEntry type="library" name="Maven: io.fabric8:kubernetes-model-common:5.3.0" level="project" />
127+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.12.1" level="project" />
128+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.12.1" level="project" />
129+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.12.1" level="project" />
130+
<orderEntry type="library" name="Maven: io.javaoperatorsdk:operator-framework:1.8.2" level="project" />
131+
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.11" level="project" />
132+
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
133+
<orderEntry type="library" name="Maven: com.google.auto.service:auto-service:1.0-rc7" level="project" />
134+
<orderEntry type="library" name="Maven: com.google.auto.service:auto-service-annotations:1.0-rc7" level="project" />
135+
<orderEntry type="library" name="Maven: com.google.auto:auto-common:0.10" level="project" />
136+
<orderEntry type="library" name="Maven: com.google.guava:guava:30.1-jre" level="project" />
137+
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
138+
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
139+
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
140+
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:2.5.2" level="project" />
141+
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.2.0" level="project" />
142+
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
143+
<orderEntry type="library" name="Maven: com.squareup:javapoet:1.13.0" level="project" />
144+
<orderEntry type="library" name="Maven: io.quarkus:quarkus-container-image-jib:1.12.2.Final" level="project" />
145+
</component>
146+
</module>

0 commit comments

Comments
 (0)