Building a Kubernetes Operator in Quarkus

Building a Kubernetes Operator in Quarkus

D E M 3 5 - S Building a Kubernetes Operator in Quarkus Fabian Lange VP of Engineering Instana © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. What is… Kubernetes? Container orchestration system An Operator? Kubernetes software extension to manage applications and its components Quarkus? Java framework designed for Kubernetes © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Getting Started mvn \ io.quarkus:quarkus-maven-plugin:0.19.1:create \ -DprojectGroupId=com.instana \ -DprojectArtifactId=operator-example \ -DclassName="com.instana.operator.HelloResource" \ -Dpath="/hello" mvn \ quarkus:add-extension \ -Dextensions=quarkus-kubernetes-client Creating a Kubernetes Client package com.instana.operator; public class ClientProducer { @Produces @Singleton KubernetesClient makeDefaultK8sClient(@Named("namespace") String namespace) { return new DefaultKubernetesClient().inNamespace(namespace); } @Produces @Singleton @Named("namespace") String findMyNamespace() throws IOException { return new String(Files.readAllBytes( Paths.get("/var/run/secrets/kubernetes.io/serviceaccount/namespace"))); } } Listing and Watching Pods package com.instana.operator; public class PodLister { @Inject KubernetesClient defaultClient; void onStartup(@Observes StartupEvent e) { defaultClient.pods().list().getItems().stream() .map(PodPrinter::toString) .forEach(System.out::println); defaultClient.pods().watch(new Watcher<Pod>() { public void eventReceived(Action action, Pod pod) { System.out.println(action + " on " + PodPrinter.toString(pod)); } }); } } Building and Running mvn \ clean package -DskipTests && \ docker build -f src/main/docker/Dockerfile.jvm -t instana/demo-operator:1 . && \ kind load docker-image instana/demo-operator:1 kubectl run --image=nginx --restart=Never nginx1 kubectl apply -f operator.yaml kubectl run --image=nginx --restart=Never nginx2 NAME READY STATUS RESTARTS AGE nginx1 1/1 Running 0 23s operator-example-6fb74d98c5-5zzj9 1/1 Running 0 19s nginx2 1/1 Running 0 14s Operator Output exec java -Dquarkus.http.host=0.0.0.0 - Djava.util.logging.manager=org.jboss.logmanager.LogManager -javaagent:/opt/agent-bond/agent- bond.jar=jmx_exporter{{9779:/opt/agent-bond/jmx_exporter_config.yml}} -XX:+UseParallelGC - XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MinHeapFreeRatio=20 - XX:MaxHeapFreeRatio=40 -XX:+ExitOnOutOfMemoryError -cp . -jar /deployments/app.jar Pod nginx1 version 3143 Pod operator-example-6989bcf5f8-j4d2d version 3457 2019-10-14 14:35:02,320 INFO [io.quarkus] (main) Quarkus 0.19.1 started in 1.866s. Listening on: http://[::]:8080 2019-10-14 14:35:02,322 INFO [io.quarkus] (main) Installed features: [cdi, kubernetes- client, resteasy] ADDED on Pod nginx2 version 4512 MODIFIED on Pod nginx2 version 4513 MODIFIED on Pod nginx2 version 4514 MODIFIED on Pod nginx2 version 4526 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. Thank you! © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved. © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved..

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    13 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us