Skip to content

Commit 7f2728b

Browse files
authored
Merge pull request #46687 from sheriff-rh/osdocs-2933.1
OSDOCS-2933 - Java Operator structure
2 parents 7e9daf3 + 7915e05 commit 7f2728b

File tree

10 files changed

+176
-0
lines changed

10 files changed

+176
-0
lines changed

_topic_maps/_topic_map.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,6 +1477,15 @@ Topics:
14771477
File: osdk-helm-support
14781478
- Name: Hybrid Helm Operator
14791479
File: osdk-hybrid-helm
1480+
- Name: Java-based Operators
1481+
Dir: java
1482+
Topics:
1483+
- Name: Getting started
1484+
File: osdk-java-quickstart
1485+
- Name: Tutorial
1486+
File: osdk-java-tutorial
1487+
- Name: Project layout
1488+
File: osdk-java-project-layout
14801489
- Name: Defining cluster service versions (CSVs)
14811490
File: osdk-generating-csvs
14821491
- Name: Working with bundle images

modules/osdk-common-prereqs.adoc

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,27 @@
88
// * operators/operator_sdk/helm/osdk-helm-tutorial.adoc
99
// * operators/operator_sdk/helm/osdk-hybrid-helm.adoc
1010
// * operators/operator_sdk/osdk-working-bundle-images.adoc
11+
// * operators/operator_sdk/java/osdk-java-quickstart.adoc
12+
// * operators/operator_sdk/java/osdk-java-tutorial.adoc
1113

1214
ifeval::["{context}" == "osdk-ansible-quickstart"]
1315
:ansible:
1416
endif::[]
1517
ifeval::["{context}" == "osdk-ansible-tutorial"]
1618
:ansible:
1719
endif::[]
20+
ifeval::["{context}" == "osdk-golang-quickstart"]
21+
:golang:
22+
endif::[]
23+
ifeval::["{context}" == "osdk-golang-tutorial"]
24+
:golang:
25+
endif::[]
26+
ifeval::["{context}" == "osdk-java-quickstart"]
27+
:java:
28+
endif::[]
29+
ifeval::["{context}" == "osdk-java-tutorial"]
30+
:java:
31+
endif::[]
1832

1933
[id="osdk-common-prereqs_{context}"]
2034
= Prerequisites
@@ -31,6 +45,10 @@ ifdef::ansible[]
3145
- link:https://github.com/ansible/ansible-runner-http[Ansible Runner HTTP Event Emitter plug-in] v1.0.0+
3246
- link:https://pypi.org/project/openshift/[OpenShift Python client] v0.11.2+
3347
endif::[]
48+
ifdef::java[]
49+
- link:https://java.com/en/download/help/download_options.html[Java] v11+
50+
- link:https://maven.apache.org/install.html[Maven] v3.6.3+
51+
endif::[]
3452
- Logged into an {product-title} {product-version} cluster with `oc` with an account that has `cluster-admin` permissions
3553
- To allow the cluster to pull the image, the repository where you push your image must be set as public, or you must configure an image pull secret
3654

@@ -40,3 +58,15 @@ endif::[]
4058
ifeval::["{context}" == "osdk-ansible-tutorial"]
4159
:!ansible:
4260
endif::[]
61+
ifeval::["{context}" == "osdk-golang-quickstart"]
62+
:!golang:
63+
endif::[]
64+
ifeval::["{context}" == "osdk-golang-tutorial"]
65+
:!golang:
66+
endif::[]
67+
ifeval::["{context}" == "osdk-java-quickstart"]
68+
:!java:
69+
endif::[]
70+
ifeval::["{context}" == "osdk-java-tutorial"]
71+
:!java:
72+
endif::[]

modules/osdk-quickstart.adoc

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ ifeval::["{context}" == "osdk-helm-quickstart"]
2525
:app: nginx
2626
:group: demo
2727
endif::[]
28+
ifeval::["{context}" == "osdk-java-quickstart"]
29+
:java:
30+
:type: Java
31+
:app-proper: Memcached
32+
:app: memcached
33+
:group: cache
34+
endif::[]
2835

2936
:_content-type: PROCEDURE
3037
[id="osdk-quickstart_{context}"]
@@ -57,6 +64,9 @@ endif::[]
5764
ifdef::helm[]
5865
with the `helm` plug-in
5966
endif::[]
67+
ifdef::java[]
68+
with the `quarkus` plug-in
69+
endif::[]
6070
to initialize the project:
6171
+
6272
[source,terminal,subs="attributes+"]
@@ -82,6 +92,13 @@ $ operator-sdk init \
8292
--plugins=helm
8393
----
8494
endif::[]
95+
ifdef::java[]
96+
----
97+
$ operator-sdk init \
98+
--plugins=quarkus \
99+
--domain=example.com
100+
----
101+
endif::[]
85102

86103
. *Create an API.*
87104
+
@@ -118,6 +135,15 @@ $ operator-sdk create api \
118135
+
119136
This API uses the built-in Helm chart boilerplate from the `helm create` command.
120137
endif::[]
138+
ifdef::java[]
139+
----
140+
$ operator-sdk create api \
141+
--plugins quarkus \
142+
--group {group} \
143+
--version v1 \
144+
--kind {app-proper}
145+
----
146+
endif::[]
121147

122148
. *Build and push the Operator image.*
123149
+
@@ -215,3 +241,9 @@ ifeval::["{context}" == "osdk-helm-quickstart"]
215241
:!app-proper:
216242
:!app:
217243
endif::[]
244+
ifeval::["{context}" == "osdk-java-quickstart"]
245+
:!java:
246+
:!type:
247+
:!app-proper:
248+
:!app:
249+
endif::[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../_attributes/

operators/operator_sdk/java/images

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../images/

operators/operator_sdk/java/modules

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../modules/
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
:_content-type: ASSEMBLY
2+
[id="osdk-java-project-layout"]
3+
= Project layout for Java-based Operators
4+
include::_attributes/common-attributes.adoc[]
5+
:context: osdk-java-project-layout
6+
:FeatureName: Java-based Operator SDK
7+
include::snippets/technology-preview.adoc[]
8+
9+
toc::[]
10+
11+
The `operator-sdk` CLI can generate, or _scaffold_, a number of packages and files for each Operator project.
12+
13+
// need to create the module ../osdk-java-project-layout.adoc[leveloffset=+1]
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
:_content-type: ASSEMBLY
2+
[id="osdk-java-quickstart"]
3+
= Getting started with Operator SDK for Java-based Operators
4+
include::_attributes/common-attributes.adoc[]
5+
:context: osdk-java-quickstart
6+
:FeatureName: Java-based Operator SDK
7+
include::snippets/technology-preview.adoc[]
8+
9+
toc::[]
10+
11+
To demonstrate the basics of setting up and running a Java-based Operator using tools and libraries provided by the Operator SDK, Operator developers can build an example Java-based Operator for Memcached, a distributed key-value store, and deploy it to a cluster.
12+
13+
include::modules/osdk-common-prereqs.adoc[leveloffset=+1]
14+
include::modules/osdk-quickstart.adoc[leveloffset=+1]
15+
16+
[id="next-steps_osdk-java-quickstart"]
17+
== Next steps
18+
19+
* See xref:../../../operators/operator_sdk/java/osdk-java-tutorial.adoc#osdk-java-tutorial[Operator SDK tutorial for Java-based Operators] for a more in-depth walkthrough on building a Java-based Operator.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
:_content-type: ASSEMBLY
2+
[id="osdk-java-tutorial"]
3+
= Operator SDK tutorial for Java-based Operators
4+
include::_attributes/common-attributes.adoc[]
5+
:context: osdk-java-tutorial
6+
:FeatureName: Java-based Operator SDK
7+
include::snippets/technology-preview.adoc[]
8+
9+
toc::[]
10+
11+
Operator developers can take advantage of Java programming language support in the Operator SDK to build an example Java-based Operator for Memcached, a distributed key-value store, and manage its lifecycle.
12+
13+
This process is accomplished using two centerpieces of the Operator Framework:
14+
15+
Operator SDK:: The `operator-sdk` CLI tool and `controller-runtime` library API
16+
17+
Operator Lifecycle Manager (OLM):: Installation, upgrade, and role-based access control (RBAC) of Operators on a cluster
18+
19+
[NOTE]
20+
====
21+
This tutorial goes into greater detail than xref:../../../operators/operator_sdk/java/osdk-java-quickstart.adoc#osdk-java-quickstart[Getting started with Operator SDK for Java-based Operators].
22+
====
23+
24+
include::modules/osdk-common-prereqs.adoc[leveloffset=+1]
25+
26+
// needs ifevals:
27+
// include::modules/osdk-create-project.adoc[leveloffset=+1]
28+
// include::modules/osdk-project-file.adoc[leveloffset=+2]
29+
30+
// individual java modules go here
31+
//
32+
// include::modules/osdk-golang-manager.adoc[leveloffset=+2]
33+
// include::modules/osdk-golang-multi-group-apis.adoc[leveloffset=+2]
34+
//
35+
// include::modules/osdk-golang-create-api-controller.adoc[leveloffset=+1]
36+
// include::modules/osdk-golang-define-api.adoc[leveloffset=+2]
37+
// include::modules/osdk-golang-generate-crd.adoc[leveloffset=+2]
38+
// include::modules/osdk-about-openapi-validation.adoc[leveloffset=+3]
39+
//
40+
// include::modules/osdk-golang-implement-controller.adoc[leveloffset=+1]
41+
//
42+
// The next subsections explain how the controller in the example implementation watches resources and how the reconcile loop is triggered. You can skip these subsections to go directly to xref:../../../operators/operator_sdk/golang/osdk-golang-tutorial.adoc#osdk-run-operator_osdk-golang-tutorial[Running the Operator].
43+
//
44+
// include::modules/osdk-golang-controller-resources.adoc[leveloffset=+2]
45+
// include::modules/osdk-golang-controller-configs.adoc[leveloffset=+2]
46+
// include::modules/osdk-golang-controller-reconcile-loop.adoc[leveloffset=+2]
47+
// include::modules/osdk-golang-controller-rbac-markers.adoc[leveloffset=+2]
48+
49+
// needs ifevals:
50+
// include::modules/osdk-run-proxy.adoc[leveloffset=+1]
51+
// include::modules/osdk-run-operator.adoc[leveloffset=+1]
52+
// include::modules/osdk-run-locally.adoc[leveloffset=+2]
53+
// include::modules/osdk-run-deployment.adoc[leveloffset=+2]
54+
55+
[id="osdk-bundle-deploy-olm_{context}"]
56+
=== Bundling an Operator and deploying with Operator Lifecycle Manager
57+
58+
// need ifevals:
59+
// include::modules/osdk-bundle-operator.adoc[leveloffset=+3]
60+
// include::modules/osdk-deploy-olm.adoc[leveloffset=+3]
61+
//
62+
// include::modules/osdk-create-cr.adoc[leveloffset=+1]
63+
64+
[role="_additional-resources"]
65+
[id="additional-resources_osdk-java-tutorial"]
66+
== Additional resources
67+
68+
- See xref:../../../operators/operator_sdk/java/osdk-java-project-layout.adoc#osdk-java-project-layout[Project layout for Java-based Operators] to learn about the directory structures created by the Operator SDK.
69+
- If a xref:../../../networking/enable-cluster-wide-proxy.adoc#enable-cluster-wide-proxy[cluster-wide egress proxy is configured], cluster administrators can xref:../../../operators/admin/olm-configuring-proxy-support.adoc#olm-configuring-proxy-support[override the proxy settings or inject a custom CA certificate] for specific Operators running on Operator Lifecycle Manager (OLM).

operators/operator_sdk/java/snippets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../snippets/

0 commit comments

Comments
 (0)