:_content-type: ASSEMBLY [id="osdk-java-tutorial"] = Operator SDK tutorial for Java-based Operators include::_attributes/common-attributes.adoc[] :context: osdk-java-tutorial :FeatureName: Java-based Operator SDK include::snippets/technology-preview.adoc[] toc::[] 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. This process is accomplished using two centerpieces of the Operator Framework: Operator SDK:: The `operator-sdk` CLI tool and `controller-runtime` library API Operator Lifecycle Manager (OLM):: Installation, upgrade, and role-based access control (RBAC) of Operators on a cluster [NOTE] ==== 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]. ==== include::modules/osdk-common-prereqs.adoc[leveloffset=+1] // needs ifevals: // include::modules/osdk-create-project.adoc[leveloffset=+1] // include::modules/osdk-project-file.adoc[leveloffset=+2] // individual java modules go here // // include::modules/osdk-golang-manager.adoc[leveloffset=+2] // include::modules/osdk-golang-multi-group-apis.adoc[leveloffset=+2] // // include::modules/osdk-golang-create-api-controller.adoc[leveloffset=+1] // include::modules/osdk-golang-define-api.adoc[leveloffset=+2] // include::modules/osdk-golang-generate-crd.adoc[leveloffset=+2] // include::modules/osdk-about-openapi-validation.adoc[leveloffset=+3] // // include::modules/osdk-golang-implement-controller.adoc[leveloffset=+1] // // 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]. // // include::modules/osdk-golang-controller-resources.adoc[leveloffset=+2] // include::modules/osdk-golang-controller-configs.adoc[leveloffset=+2] // include::modules/osdk-golang-controller-reconcile-loop.adoc[leveloffset=+2] // include::modules/osdk-golang-controller-rbac-markers.adoc[leveloffset=+2] // needs ifevals: // include::modules/osdk-run-proxy.adoc[leveloffset=+1] // include::modules/osdk-run-operator.adoc[leveloffset=+1] // include::modules/osdk-run-locally.adoc[leveloffset=+2] // include::modules/osdk-run-deployment.adoc[leveloffset=+2] [id="osdk-bundle-deploy-olm_{context}"] === Bundling an Operator and deploying with Operator Lifecycle Manager // need ifevals: // include::modules/osdk-bundle-operator.adoc[leveloffset=+3] // include::modules/osdk-deploy-olm.adoc[leveloffset=+3] // // include::modules/osdk-create-cr.adoc[leveloffset=+1] [role="_additional-resources"] [id="additional-resources_osdk-java-tutorial"] == Additional resources - 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. - 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).