This project implements a simple Hello World REST service using Helidon SE.
- Maven 3.5 or newer
- Java SE 8 or newer
- Docker 17 or newer to build and run docker images
- Kubernetes minikube v0.24 or newer to deploy to Kubernetes (or access to a K8s 1.7.4 or newer cluster)
- Kubectl 1.7.4 or newer to deploy to Kubernetes
Verify prerequisites
java -version
mvn --version
docker --version
minikube version
kubectl version --short
mvn package
java -jar target/Helidon_HelloWorld.jar
curl -X GET http://localhost:8080/greet
{"message":"Hello World!"}
curl -X GET http://localhost:8080/greet/Joe
{"message":"Hello Joe!"}
curl -X PUT -H "Content-Type: application/json" -d '{"greeting" : "Hola"}' http://localhost:8080/greet/greeting
curl -X GET http://localhost:8080/greet/Jose
{"message":"Hola Jose!"}
curl -s -X GET http://localhost:8080/health
{"outcome":"UP",...
. . .
# Prometheus Format
curl -s -X GET http://localhost:8080/metrics
# TYPE base:gc_g1_young_generation_count gauge
. . .
# JSON Format
curl -H 'Accept: application/json' -X GET http://localhost:8080/metrics
{"base":...
. . .
docker build -t Helidon_HelloWorld .
docker run --rm -p 8080:8080 Helidon_HelloWorld:latest
Exercise the application as described above
kubectl cluster-info # Verify which cluster
kubectl get pods # Verify connectivity to cluster
kubectl create -f app.yaml # Deply application
kubectl get service Helidon_HelloWorld # Get service info
GraalVM allows you to compile your programs ahead-of-time into a native executable. See https://www.graalvm.org/docs/reference-manual/aot-compilation/ for more information.
You can build a native executable in 2 different ways:
- With a local installation of GraalVM
- Using Docker
Download Graal VM at https://github.com/oracle/graal/releases, the version
currently supported for Helidon is 19.0.0
.
# Setup the environment
export GRAALVM_HOME=/path
# build the native executable
mvn package -Pnative-image
You can also put the Graal VM bin
directory in your PATH, or pass
-DgraalVMHome=/path
to the Maven command.
See https://github.com/oracle/helidon-build-tools/tree/master/helidon-maven-plugin for more information.
Start the application:
./target/Helidon_HelloWorld
Build the "native" Docker Image
docker build -t Helidon_HelloWorld-native -f Dockerfile.native .
Start the application:
docker run --rm -p 8080:8080 Helidon_HelloWorld-native:latest