Top 10 Kubernetes Native Java Quarkus Features
- 1. J4K 2020 One K8s ◆ One Java ◆ All Clouds
www.j4k.io
Quarkus -
Top 10 Kubernetes Features
John Clingan
Sr Principal Product Manager, Red Hat
MicroProfile Co-Founder and Committer
All around nice guy
@jclingan
- 7. www.j4k.io
1) One-step Kubernetes Deployment
● Deploys application to Kubernetes (and OpenShift )
● Generates deployment YAML for target Kubernetes environment
○ Customizes deployment YAML
■ Creates Service, ServiceAccount, RoleBinding
○ Add quarkus-kubernetes dependency
■ Add quarkus-kubernetes-minikube dependency for minikube customizations
■ Add quarkus-kubernetes-openshift dependency for openshift customizations
○ Add image-builder dependency
■ Add quarkus-container image docker
● Customize generated YAML (and JSON) using properties
● Deploy
mvn clean install -Dquarkus.kubernetes.deploy=true
- 8. www.j4k.io
2) Live Coding in Kubernetes
● Add quarkus-kubernetes extension dependency
● Configure remote development
quarkus.package.type=mutable-jar
quarkus.live-reload.password=abc123
quarkus.kubernetes.env.vars.QUARKUS_LAUNCH_DEVMODE=true
● Deploy to Kubernetes
mvn clean install -Dquarkus.kubernetes.deploy=true
● Start quarkus in remote-dev mode
mvn quarkus:remote-dev -Dquarkus.live-reload.url=<url>
- 9. www.j4k.io
3) Direct ConfigMap and Secrets Access
● Reads properties from a Kubernetes ConfigMap
● Overrides values in application.properties
● Usage:
○ Add quarkus-kubernetes-config extension to
dependencies
○ quarkus.kubernetes-config.enabled=true
○ quarkus.kubernetes-config.config-maps=map1,map2,...
○ quarkus.kubernetes-config.secrets.enabled=true
○ quarkus.kubernetes-config.secrets=secret1,secret2
Kubernetes Cluster
Master Node
Etcd API Server
Worker Node
app.jar
- 10. www.j4k.io
4) Health Endpoints
● Expose application availability and status
● Create custom application health checks
● Built-in health status for "client" extensions
○ Amazon services, Kafka, JMS, JDBC datasources,
○ Reactive SQL clients, Mongodb, Neo4j, Vault, gRPC
○ Elasticsearch, Redis, Cassandra
● Most built-in health checks are enabled by default
● Usage: Add quarkus-smallrye-health extension
- 11. www.j4k.io
5) Kubernetes Client
● Interact with Kubernetes API server / cluster using Fabric8 Kubernetes client
● CRUD Kubernetes objects
● Useful to create Kubernetes Operators in Java instead of Go
● Usage:
○ Add quarkus-kubernetes-client dependency
- 12. www.j4k.io
6) OpenMetrics Support
● Expose application metrics for external collection and monitoring
● Supports MicroProfile Metrics
○ Application Metrics, vendor metrics, JVM/system metrics
● New! Micrometer metrics extension
● Many Quarkus extensions provide their own metrics
○ Most disabled by default for performance; see extension guide for property enable
● Quarkus Grafana dashboard generator: http://quarkusdemos.net/
● Usage: Add quarkus-smallrye-metrics (or micrometer metrics) extension
- 13. www.j4k.io
7) OpenTracing Support
● Trace flow across service boundaries
● Supports MicroProfile OpenTracing
○ JAX-RS and MicroProfile Rest Client support
● No code
○ Optional: @Traced annotation to enable/disable class/method tracing
● Usage: Add quarkus-smallrye-opentracing extension
○ quarkus.jaeger.service-name=j4k
○ quarkus.jaeger.sampler-type=const
○ quarkus.jaeger.sampler-param=1
○ quarkus.kubernetes.annotations."sidecar.jaegertracing.io/inject"=true
- 14. www.j4k.io
8) One-step Knative Deployment
● Kubernetes extensions to deploy and manage serverless workloads
○ Knative Serving - autoscaling, scaling to zero
○ Knative Eventing - Universal delivery and management of events
● Usage
○ Add quarkus-kubernetes extension
○ quarkus.kubernetes.deployment-target=knative
- 15. www.j4k.io
9) Functions as a Service (Funqy)
● Portable Java API to write functions deployable to various FaaS environments
○ AWS Lambda
○ Azure Functions
○ Google Cloud Functions
○ Knative, CloudEvents
○ Standalone
● Usage
○ Add @Funq annotation to a method
○ Add quarkus-funqy-[binding] extension
○ quarkus.kubernetes.deployment-target=knative
- 19. J4K 2020 One K8s ◆ One Java ◆ All Clouds
www.j4k.io
@j4kio
FOLLOW US ON
www.linkedin.com/ company / j4k /
www.facebook.com / j4kio /
The End