<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Davide Poletti</title>
    <description>The latest articles on DEV Community by Davide Poletti (@panciz).</description>
    <link>https://dev.to/panciz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F273401%2Faf733ecc-c763-4a86-be55-ab4f0c9a9a19.jpg</url>
      <title>DEV Community: Davide Poletti</title>
      <link>https://dev.to/panciz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/panciz"/>
    <language>en</language>
    <item>
      <title>Quarkus Development mode with Kubernetes and Skaffold</title>
      <dc:creator>Davide Poletti</dc:creator>
      <pubDate>Tue, 10 Dec 2019 22:21:20 +0000</pubDate>
      <link>https://dev.to/panciz/quarkus-development-mode-with-kubernetes-and-skaffold-1jgh</link>
      <guid>https://dev.to/panciz/quarkus-development-mode-with-kubernetes-and-skaffold-1jgh</guid>
      <description>&lt;p&gt;&lt;strong&gt;How to create a workflow to automatically apply changes to a Quarkus services running on container inside Kubernetes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the announce of the &lt;a href="https://quarkus.io/blog/quarkus-1-0-0-Final-bits-are-here/"&gt;First Release&lt;/a&gt; the Red Hat’s Quarkus framework becomes available for production .&lt;/p&gt;

&lt;p&gt;What is Quarkus ?!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quarkus is a Kubernetes-native Java stack for cloud-native and serverless application development. Quarkus promises faster startup times and lower memory consumption than traditional Java-based microservices frameworks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;see &lt;a href="https://quarkus.io/guides/getting-started#development-mode"&gt;Quarkus Getting Start Development mode&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We can say that the &lt;em&gt;Development mode&lt;/em&gt; allows to build and deploy in-container java code as fast as you can do using using javascript and npm in the &lt;em&gt;Node.js&lt;/em&gt; framework.&lt;br&gt;
In order demonstrate how can be powerfull the &lt;em&gt;Quarkus&lt;/em&gt; framework I went a bit further the quarkus getting start tutorial . I created a development workflow that allows to apply immediately the code changes into the container running in the Kubernetes cluster. Leveraging on Skaffold the workflow can re-build and deploy the java based containers in Kubeternets automatically.&lt;br&gt;
Below I report in writing my experiment in the form of a I simple tutorial.&lt;/p&gt;

&lt;p&gt;As first step set up the environment following the instruction in the &lt;a href="https://quarkus.io/guides/getting-started#prerequisites"&gt;prerequisites section&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then create the the getting start project using the maven archetype:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mvn io.quarkus:quarkus-maven-plugin:1.0.0.CR1:create \
    -DprojectGroupId=org.acme \
    -DprojectArtifactId=getting-started \
    -DclassName="org.acme.quickstart.GreetingResource" \
    -Dpath="/hello"
cd getting-started
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Just check everything is ok by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./mvnw compile quarkus:dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;As second step we need a Docker image to run the code in the container. Actually the framework already produces a Docker image in&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/src/main/docker/Dockerfile.jvm
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;just by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./mvnw package
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Unfortunately that is just the production image and it does not run the code in the development mode. &lt;strong&gt;In order to run the service in &lt;em&gt;Quarkus&lt;/em&gt; development mode we need an image that includes maven and run the application with the &lt;code&gt;compile:dev&lt;/code&gt; task.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the image Dockerfile.dev we are going to use. ( it’s based on an &lt;a href="https://github.com/quarkusio/quarkus/compare/master...vorburger:issue-1390_dev-container#diff-c4838d06cf92241aa52bc00c4678b7ad"&gt;old commit&lt;/a&gt; made by &lt;a href="https://github.com/vorburger"&gt;Michael Vorburger&lt;/a&gt; I founded in GITHUB.)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; centos:latest&lt;/span&gt;
&lt;span class="k"&gt;ENV&lt;/span&gt;&lt;span class="s"&gt; MAVEN_VERSION=3.6.2&lt;/span&gt;
&lt;span class="k"&gt;ENV&lt;/span&gt;&lt;span class="s"&gt; MAVEN_URL=https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;yum &lt;span class="nt"&gt;-y&lt;/span&gt; update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;    yum &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;--setopt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;skip_missing_names_on_install&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;False &lt;span class="se"&gt;\ &lt;/span&gt;
    rsync java-11-openjdk-devel &amp;amp;&amp;amp; \
    yum clean all -y &amp;amp;&amp;amp; \
mkdir -p /usr/share/maven &amp;amp;&amp;amp; \
curl -fsSL ${MAVEN_URL} | tar -xzC /usr/share/maven --strip-components=1 &amp;amp;&amp;amp; \
ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
&lt;span class="k"&gt;ENV&lt;/span&gt;&lt;span class="s"&gt; MAVEN_HOME /usr/share/maven&lt;/span&gt;
&lt;span class="k"&gt;ENV&lt;/span&gt;&lt;span class="s"&gt; JAVA_HOME /etc/alternatives/java_sdk&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;adduser &lt;span class="nt"&gt;-u&lt;/span&gt; 9999 &lt;span class="nt"&gt;-g&lt;/span&gt; 0 quarkus
&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="s"&gt; 9999&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; /home/quarkus/dev/
&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /home/quarkus/dev/&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; pom.xml /home/quarkus/dev/&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; src /home/quarkus/dev/src&lt;/span&gt;
&lt;span class="c"&gt;# Run quarkus just one to populate .m2&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /home/quarkus/dev/ &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
mvn clean compile dependency:go-offline dependency:resolve-plugins &amp;amp;&amp;amp; \ mvn quarkus:dev &amp;amp; \ until $(curl --output /dev/null --silent --head --fail http://localhost:8080); do printf '.'; sleep 1; done &amp;amp;&amp;amp; \ kill %1
&lt;span class="c"&gt;# a simple script that runs mvn quarkus:dev&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; mvn-run-dev.sh /home/quarkus/&lt;/span&gt;
&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="s"&gt; root&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nb"&gt;mv&lt;/span&gt; /home/quarkus/mvn-run-dev.sh /usr/local/bin
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;a+x /usr/local/bin/mvn-run-dev.sh
&lt;span class="k"&gt;RUN &lt;/span&gt;&lt;span class="nb"&gt;chgrp&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; 0 /home/quarkus &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; &lt;span class="nv"&gt;g&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;u /home/quarkus &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; a+rwx /home/quarkus
&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="s"&gt; 9999&lt;/span&gt;
&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["bash", "-c", "/usr/local/bin/mvn-run-dev.sh"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now it’s possible to run the image sharing the src directory with the host machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -f src/main/docker/Dockerfile.dev -t quarkus-simplerest .
docker run -i -d --rm -p 8080:8080 -v $(pwd)/src/:/home/quarkus/dev/src --name simplerest quarkus-simplerest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;With this settings we are now able to modify the source code and the application running in the container will be recompiled automatically.&lt;br&gt;
For example you can add a method to the &lt;code&gt;Greetings.java&lt;/code&gt; class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@GET&lt;/span&gt;
&lt;span class="nd"&gt;@Produces&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;MediaType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;TEXT_PLAIN&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nd"&gt;@Path&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"{name}"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;helloName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;@PathParam&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"hello hello "&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;and try to call the new rest method at &lt;a href="http://localhost:8080/hello/bob"&gt;http://localhost:8080/hello/bob&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;Now that we have a docker image suitable for the development mode we can use it inside &lt;em&gt;Kubernetes&lt;/em&gt; and exploit &lt;em&gt;Skaffold&lt;/em&gt; in order to iterate on the application source code locally then deploy to local or remote &lt;em&gt;Kubernetes&lt;/em&gt; clusters.&lt;/p&gt;

&lt;p&gt;First we need to create the configuration to set up a simple &lt;em&gt;Kubernetes&lt;/em&gt; cluster. I do not post the entire configuration you can find it in this &lt;a href="https://github.com/Panciz/quarkus-k8s-skaffold-example"&gt;github repository&lt;/a&gt; containing the complete example.&lt;/p&gt;

&lt;p&gt;The cluster contains this three objects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one Deployment object that manage the pod that runs the instance of the &lt;em&gt;Quarkus&lt;/em&gt; docker image we created before.&lt;/li&gt;
&lt;li&gt;one &lt;em&gt;Cluster-IP&lt;/em&gt; service to exposes the Pod on a cluster-internal IP&lt;/li&gt;
&lt;li&gt;an &lt;em&gt;Ingress Service&lt;/em&gt; to grant external HTTP access to the service.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To run the cluster locally we can use minikube. Just remember to set up correctly the minikube docker environment by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;switch on to the minikube docker environment using minikube docker-env&lt;/li&gt;
&lt;li&gt;Install the docker image
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -f src/main/docker/Dockerfile.dev -t quarkus-simplerest .
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;make sure to enable the minikube &lt;em&gt;ingress controller&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;minikube addons enable ingress
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You can find all the kuberneted configuration in the &lt;a href="https://github.com/Panciz/quarkus-k8s-skaffold-example"&gt;github repository&lt;/a&gt; inside the &lt;code&gt;k8s&lt;/code&gt; dir. It’s possible to test the Kubernetes configurations using.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f k8s/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The service should be available at the address&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://$(minikube ip)/hello
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now the &lt;em&gt;Quarkus&lt;/em&gt; java service it runs inside &lt;em&gt;Kubernetes&lt;/em&gt; in &lt;em&gt;development mode&lt;/em&gt;. In order update the code live inside the pod we now have to use &lt;em&gt;Skaffold&lt;/em&gt;.&lt;br&gt;
This is the &lt;em&gt;Skaffold&lt;/em&gt; configuration we can use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;skaffold/v1beta2&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Config&lt;/span&gt;
&lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
   &lt;span class="na"&gt;local&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
     &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;false&lt;/span&gt;
&lt;span class="na"&gt;artifacts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="s"&gt;-image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;quarkus-simplerest&lt;/span&gt;
     &lt;span class="s"&gt;context&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
     &lt;span class="s"&gt;docker&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;dockerfile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;src/main/docker/Dockerfile.dev&lt;/span&gt;
     &lt;span class="na"&gt;sync&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;**/*.java'&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
&lt;span class="na"&gt;deploy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
   &lt;span class="na"&gt;kubectl&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
     &lt;span class="na"&gt;manifests&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
       &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;k8s/quarkus-simplerest-deployment.yaml&lt;/span&gt;
       &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;k8s/quarkus-simplerest-ip-service.yaml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;As you notice this configuration indicates to &lt;em&gt;Skaffold&lt;/em&gt; to synchronize all the java files in the subdirectories in the pods created with our &lt;code&gt;Dockerfile.dev&lt;/code&gt; .&lt;br&gt;
Running &lt;em&gt;Skaffold&lt;/em&gt; with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;skaffold dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;the tools will recreate the docker image and redeploy it in the Kubernetes cluster. &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;That’s it, now we are finally ready to made some modification to our code and *Skaffold&amp;amp; will update them to the container containing the quarkus application running in *development mode&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;That’s means that we are able to modify the code in the project and see the result live!!!&lt;/p&gt;

&lt;p&gt;For example we can add the method&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@GET&lt;/span&gt;
&lt;span class="nd"&gt;@Produces&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;MediaType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;TEXT_PLAIN&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nd"&gt;@Path&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"{name}/{surname}"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;helloName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;@PathParam&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                   &lt;span class="nd"&gt;@PathParam&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"surname"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;surname&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"hello mr "&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="s"&gt;" "&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;surname&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;and see the result after few seconds at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://$(minikube ip)/hello/davide/poletti
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;As I already said all the code can be found in &lt;a href="https://github.com/Panciz/quarkus-k8s-skaffold-example"&gt;this repo&lt;/a&gt;!!&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>quarkus</category>
      <category>skaffold</category>
    </item>
  </channel>
</rss>
