With Helidon you can create Java microservices easily. In this blog, we are creating/exposing a REST service that gets a JSON document stored in an Oracle database and retrieves it to the requestor. For retrieving the JSON document from the database we are using ORDS and SODA but you can use JDBC as well, we’ll show it shortly in another post.
First, let’s create the project with the available archetype:
mvn archetype:generate -DinteractiveMode=false -DarchetypeGroupId=io.helidon.archetypes -DarchetypeArtifactId=helidon-quickstart-se -DarchetypeVersion=0.10.5 -DgroupId=io.helidon.examples -DartifactId=quickstart-se -Dpackage=io.helidon.examples.quickstart.se
Modify the GreetService class for calling a backend service and the MainTest class removing the tests, you can find how it looks like here on GitHub.
Package the app:
mvn clean package
Now, start the app
java -jar target/quickstart-se.jar
And test the app locally, the app starts listening in 0.0.0.0:8080:
http://localhost:8080/greet
Now, let’s containerize the app with the Dockerfile included in the project:
docker build -t quickstart-se target
Run the container and test again:
docker run --rm -p 8080:8080 quickstart-se:latest http://localhost:8080/greet
Now let’s deploy to Kubernetes:
First, we tag the container and then push it to the registry:
docker tag quickstart-se javiermugueta/quickstart-se docker push javiermugueta/quickstart-se
Now let’s modify the deployment yaml to create a LoadBalancer and for pulling the image previously pushed in the registry:
... labels: app: ${project.artifactId} spec: type: LoadBalancer selector: ... spec: containers: - name: ${proje ct.artifactId} image: javiermugueta/quickstart-se imagePullPolicy: IfNotPresent ports: ...
kubectl create -f target/app.yaml
kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE quickstart-se LoadBalancer 10.96.56.43 1xy.x1.x5.x24 8080:32243/TCP 2m

One Comment