DEPLOY DI UNA SPRING BOOT APP SU MINIKUBE

L'obiettivo di questo articolo è quello, come si evince dal titolo, di deployare un'applicazione Spring Boot su Kubernetes. Il punto di partenza è, manco a dirlo, il nostro amato Spring Initializr.

L'unico modulo da aggiungere è quello web, in quanto ci limiteremo semplicemente ad esporre un endpoint REST che restituisce in response una stringa "Hello from Pierpaolo Di Dato".

Una volta generato il progetto ed importato all'interno del nostro IDE, procediamo alla creazione di un controller REST del tipo:

@RestController
public class FooController {

   @RequestMapping(value="/check", method=RequestMethod.GET)
   public String foo() {
      return "Hello from Pierpaolo Di Dato!";
   }

}

Fatto ciò, provvediamo alla compilazione del fat jar attraverso il comando Maven:

mvn clean install

Ora arriva la parte più divertente, quella della dockerizzazione della nostra applicazione. Nella root del progetto, creiamo il Dockerfile:

FROM openjdk:17
VOLUME /tmp
EXPOSE 8080
ARG JAR_FILE=target/spring-demo-0.0.1-SNAPSHOT.jar 
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
Buildiamo l'immagine con il comando
docker build
Siamo arrivati al punto cruciale del progetto. Per la gestione dell'immagine creata, non ci avvaliamo di Kubernetes ma di Minikube. Esso fornisce in modo semplice un setup di un ambiente Kubernetes per il nostro sviluppo locale o per esigenze di testing. Per i dettagli sull'installazione, si rimanda alla documentazione ufficiale.
E' possibile monitorare lo stato del cluster con il comando
minikube status
Mentre per accedere alla dashboard, è necessario lanciare il seguente comando
minikube dashboard
Una volta startato Minikube, è importante che esso legga l'installazione locale di Docker e quindi le immagini sulla nostra macchina. Per far ciò eseguire il comando:
eval $(minikube docker-env)
Siamo a questo punti pronti per il deploy. Due solo le opzioni possibili: creare un file yaml con il design del pod ed eseguire il comando apply o invece avvalersi del comando kubectl. Poichè di natura siamo lazy, percorriamo la seconda strada:
kubectl run app1 --image=spring-app --restart=Never --port=8080
Per verificare che tutto abbia funzionato correttamente, è possibile eseguire i seguenti due comandi:
kubectl get pods 
kubectl logs {nome pod}
Con il primo verifichiamo se il pod è in stato Running, mentre con il secondo possiamo effettivamente monitorarne i logs che dovrebbero mostrare il classico output di un'applicazione Spring Boot.

Comments

Popular posts from this blog

AGGIORNAMENTO INVESTIMENTI 2° TRIMESTRE 2024

AGGIORNAMENTO INVESTIMENTI 1° TRIMESTRE 2024

HO COMPRATO UNO XIOAMI 14 ULTRA