Razvoj Java-aplikacij za Kubernetes z uporabo Eclipse JKube

Pred 25 leti je Java postala široko dostopna programerjem, da bi se na koncu razvila v enega od stebrov, okoli katerih se gradi aplikacijski sklad. Vendar danes mnogi ljudje in organizacije, ki so dolga leta ostajale zvesti Javi, prehajajo ali razmišljajo o prehodu na platformo Kubernetes ali njene različice, kot so Red Hat OpenShift ili Amazon EKS.

Razvoj Java-aplikacij za Kubernetes z uporabo Eclipse JKube

Žal je Kubernetes znan po strmi učni krivulji in uvaja še en operativni nivo v poznan proces razvoja za programerje Jave. Danes bomo govorili o tem, kako uporabiti Eclipse JKube, da poenostavimo te dodatne operacije, povezane s Kubernetesom in kontejnerji, ter omogočimo brezskrbno migracijo na oblačno platformo ob ohranjanju znanega ekosistema Jave. Poleg tega bomo pokazali, kako distribuirati Java aplikacije na platformi OpenShift s pomočjo OpenShift Maven vtičnika.

Tradicionalni proces razvoja Jave

Tradicionalni proces razvoja Java (Sl. 1) predvideva, da programer piše kodo, nato ustvari razporeditvene enote v obliki JAR ali WAR datotek in nato te datoteke razporedi in zažene na spletnem strežniku ali strežniku aplikacij. Za to najpogosteje uporabljajo Maven iz ukazne vrstice ali IDE, kot sta IntelliJ ali Eclipse, za kodiranje in pakiranje aplikacij. Programerji so navajeni, da vnašajo spremembe v kodo in skrbno vse testirajo, preden zaklenejo kodo in jo pošljejo v sistem za upravljanje različic.

Razvoj Java-aplikacij za Kubernetes z uporabo Eclipse JKube

Sl. 1. Tradicionalni proces razvoja Jave.

Proces razvoja Jave za oblak

Ob prehodu na oblačne aplikacije se zgoraj opisani shemi dodata Kubernetes in containers (kontejnery). Zato mora programer zdaj zapakirati Java aplikacije v kontejnerske slike in ustvariti Kubernetes manifeste, ki opisujejo te slike. Ti manifesti se nato uporabijo na produkcijskem strežniku, kjer deluje Kubernetes. Kubernetes pa pobere te slike iz registra in razporedi aplikacije v skladu s tistimi konfiguracijami, ki smo jih navedli v manifestih, ki so običajno v obliki YAML datotek.

Metamorfoza tradicionalnega procesa razvoja Jave ob prehodu na oblak je prikazana na Sl. 2.

Razvoj Java-aplikacij za Kubernetes z uporabo Eclipse JKube

Sl. 2. Proces razvoja Jave za oblak.

Eclipse JKube

Prehod na Kubernetes dodaja še eno operativno raven v postopek razvoja, kar mnogim razvijalcem povzroča skrbi, saj želijo delati na svojem bistvenem delu - logiki aplikacij - in ne na načinu njihovega uvajanja. In tukaj v igro stopa Eclipse JKube, kar razvijalcem omogoča uporabo njihovih knjižnic in pluginov (JKube Kit v kombinaciji z Kubernetes Maven Plugin ili OpenShift Maven Plugin), da brez večjih naporov izvajajo operacije, povezane s kontejnerji in Kubernetesom, v skladu s shemo na Sl. 2.

V preostalem delu tega članka bomo pokazali, kako poenostaviti postopek razvoja Java aplikacij v okolju Kubernetes, ob uporabi Eclipse JKube s Kubernetes Maven Plugin.

Postopek razvoja za oblak z uporabo Eclipse JKube

Poglejmo rahlo spremenjeno shemo razvoja Java aplikacij za oblak na Sl. 2, v katero bomo vpeljali Eclipse JKube in Kubernetes Maven Plugin, kot je prikazano na Sl. 3.

Razvoj Java-aplikacij za Kubernetes z uporabo Eclipse JKube

Sl. 3. Postopek razvoja Java aplikacij za oblak z uporabo Eclipse JKube.

Kot vidimo, so vse operacije interakcij z Kubernetesom in kontejnerji (na shemi označene z rdečo) nadomeščene z nalogami Eclipse JKube po privzetku, ki so navedene v Tabl. 1.

Tabl. 1. Privzete naloge Eclipse JKube.

Naloga
Stopnja
Opis

k8s:build
PRE_INTEGRATION_TEST
Gradnja docker slik

k8s:push
INSTALL
Pošiljanje docker slik v register

k8s:resource
PROCESS_RESOURCES
Generiranje K8s manifestov

k8s:apply
COMPILE
Prijava generiranih manifestov v K8s

k8s:undeploy
UNDEPLOY
Odstranjevanje K8s virov, ki so bili uvedeni z k8s:apply in k8s:deploy

Opomba: Če nočete, da bi naloge uporabljale te stroge privzete nastavitve (opinionated defaults), lahko ročno nastavite Eclipse JKube po svoji meri, saj podpira konfiguracijo preko XML in virov.

Sedaj si poglejmo primere uporabe Eclipse JKube in Kubernetes Maven Plugin pri delu z aplikacijami.

Uvajamo Java aplikacijo v Kubernetes z uporabo Eclipse JKube

V tem primeru bomo uvedli preprosto Java aplikacijo v klaster Minikube z uporabo Eclipse JKube. S Kubernetes Maven Plugin lahko nastavimo parametre uvedbe, ne da bi morali določati kakršno koli konfiguracijo.

Kot primer aplikacije uporabljamo preprost generator naključnih števil, ki vrne JSON-izhod na endpointu /random:

~ /work/repos/eclipse-jkube-demo-project : $ curl localhost:8080/random | jq .
  % Skupaj    % Prejeto % Preneseno  Povprečna hitrost   Čas    Čas     Čas  Trenutno
                                 Prevzem  Naložitev   Skupaj   Porabljeno   Ostalo  Hitrost
100    45    0    45    0     0    818      0 --:--:-- --:--:-- --:--:--   818
{
  "id": "e80a4d10-c79b-4b9a-aaac-7c286cb37f3c"
}

Korak 1. Preuzimamo Kubernetes Maven Plugin

Kubernetes Maven Plugin se nalazi u repozitoriju Maven Central Repository. Da bi se koristio Eclipse JKube, potrebno je dodati Kubernetes Maven Plugin u svoj pom.xml kao zavisnost:

<plugin>
     <groupId>org.eclipse.jkube<\/groupId>
     <artifactId>kubernetes-maven-plugin<\/artifactId>
     <version>${jkube.version}<\/version>
 <\/plugin>

Ako se umesto čistog Kubernetes-a koristi OpenShift, pom.xml se modifikuje na sledeći način:

<plugin>
     <groupId>org.eclipse.jkube<\/groupId>
     <artifactId>openshift-maven-plugin<\/artifactId>
     <version>${jkube.version}<\/version>
 <\/plugin>

Korak 2. Gradimo docker-sliku

JAR datoteku aplikacije možemo skupiti pomoću komande mvn package, a zatim možemo koristiti ciljnu zadatak mvn k8s:build za izgradnju docker-slike ove aplikacije. Obratite pažnju da smo promenili podrazumevano ime slike pomoću ove osobine:

<jkube.generator.name>docker.io\/rohankanojia\/random-generator:${project.version}<\/jkube.generator.name>

Pre nego što prikupimo sliku, treba osigurati da je docker demon ispravno izložen. To možemo uraditi sledećom komandom:

$ eval $(minikube docker-env)

Zatim unosimo komandu mvn k8s:build, i evo šta ćemo videti na ekranu u toku izgradnje docker-slike pomoću gradnje Eclipse JKube:

~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:build
[INFO] Skeniranje projekata...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Gradimo random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] k8s: Rad u Kubernetes režimu
[INFO] k8s: Izgradnja Docker slike u Kubernetes režimu
[INFO] k8s: Pokretanje generatora spring-boot
[INFO] k8s: spring-boot: Koristi Docker sliku quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 kao osnovu \/ builder
[INFO] k8s: [docker.io\/rohankanojia\/random-generator:0.0.1] "spring-boot": Kreirana docker-build.tar za 251 milisekundu
[INFO] k8s: [docker.io\/rohankanojia\/random-generator:0.0.1] "spring-boot": Izgrađena slika sha256:a20e5
[INFO] ------------------------------------------------------------------------
[INFO] GRADNJA USPEŠNA
[INFO] ------------------------------------------------------------------------
[INFO] Ukupno vreme:  5.053 s
[INFO] Završeno u: 2020-08-10T11:28:23+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $

Korak 3. Šaljemo sliku u docker registru

Nakon što smo izgradili docker-sliku uz podešeni push-registar (u našem slučaju to je docker.io), možemo poslati ovu sliku u registar. Evo šta će se prikazati na ekranu nakon što zatražimo od Eclipse JKube da izvrši push-zadatak mvn k8s:push:

~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:push
[INFO] Scanning for projects...
[INFO] 
[INFO] ---------------------------------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:push (default-cli) @ random-generator ---
[INFO] k8s: Running in Kubernetes mode
[INFO] k8s: Building Docker image in Kubernetes mode
[INFO] k8s: Running generator spring-boot
[INFO] k8s: spring-boot: Using Docker image quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 as base \/ builder
[INFO] k8s: The push refers to repository [docker.io\/rohankanojia\/random-generator]
5dcd9556710f: Layer already exists 
b7139ad07aa8: Layer already exists 
b6f081e4b2b6: Layer already exists 
d8e1f35641ac: Layer already exists 
[INFO] k8s: 0.0.1: digest: sha256:9f9eda2a13b8cab1d2c9e474248500145fc09e2922fe3735692f9bda4c76002d size: 1162
[INFO] k8s: Pushed docker.io\/rohankanojia\/random-generator:0.0.1 in 7 seconds 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  11.222 s
[INFO] Finished at: 2020-08-10T11:35:37+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ 

Po pošiljanju slike, preverite, ali je prišla v register. V našem primeru jo preprosto vidimo na Docker Hubu, kot je prikazano na Sl. 4.

Razvoj Java-aplikacij za Kubernetes z uporabo Eclipse JKube

Sl. 4. Slika, poslana v register, se je pojavila na Docker Hubu.

Korak 4. Generiramo manifeste resursov Kubernetes za aplikacijo

Torej, sliko aplikacije smo zgradili, zdaj pa moramo napisati manifeste Kubernetes. V Eclipse JKube je naloga, ki generira fiksne manifeste resursov, temelječe na spodnjem Java ogrodju (Spring Boot, Quarkus, Vert.x ali kakšnem drugem). Manifest lahko tudi prilagodite z uporabo konfiguracijske XML datoteke in s postavitvijo surovih delov (delov potrebnega manifesta resursov) v mapo aplikacije src\/main\/jkube. V tem primeru se vaša konfiguracija prenese v generirane manifeste.

V našem primeru pustimo vse, kot je, zato Eclipse JKube generira manifest za privzeto postavitev in za storitev tipa ClusterIP. Nato pa spremenimo manifest storitve, da spremenimo tip storitve na NodePort. Privzeto obnašanje lahko spremenite s pomočjo naslednje lastnosti:

NodePort

Tako izgleda izhod na ekranu po tem, ko prosimo Eclipse JKube, da izvede nalogo za resurs mvn k8s:resource.

~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:resource
[INFO] Skeniramo projekte...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Gradimo random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:resource (default-cli) @ random-generator ---
[INFO] k8s: Pokrećemo generator spring-boot
[INFO] k8s: spring-boot: Koristi Docker sliku quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 kao osnovu \/ builder
[INFO] k8s: jkube-controller: Dodavanje default Deployment-a
[INFO] k8s: jkube-service: Dodavanje default servisa 'random-generator' sa portovima [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: Dodavanje readiness probe na portu 8080, putanja='\/actuator\/health', šema='HTTP', sa početnom kašnjenjem od 10 sekundi
[INFO] k8s: jkube-healthcheck-spring-boot: Dodavanje liveness probe na portu 8080, putanja='\/actuator\/health', šema='HTTP', sa početnom kašnjenjem od 180 sekundi
[INFO] k8s: jkube-revision-history: Dodavanje ograničenja revision history na 2
[INFO] ------------------------------------------------------------------------
[INFO] IZGRADNJA USPJEŠNA
[INFO] ------------------------------------------------------------------------
[INFO] Ukupno vrijeme:  3.344 s
[INFO] Završeno u: 2020-08-10T11:38:11+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ ls target\/classes\/META-INF\/jkube\/kubernetes
random-generator-deployment.yml  random-generator-service.yml
~\/work\/repos\/eclipse-jkube-demo-project : $ cat target\/classes\/META-INF\/jkube\/kubernetes\/random-generator-deployment.yml | head -n10
---
apiVersion: apps\/v1
kind: Deployment
metadata:
  annotations:
    jkube.io\/git-url: git@github.com:rohanKanojia\/eclipse-jkube-demo-project.git
    jkube.io\/git-commit: 1ef9ef2ef7a6fcbf8eb64c293f26f9c42d026512
    jkube.io\/git-branch: master
    jkube.io\/scm-url: https:\/\/github.com\/spring-projects\/spring-boot\/spring-boot-starter-parent\/random-generator
    jkube.io\/scm-tag: HEAD
~\/work\/repos\/eclipse-jkube-demo-project : $

Korak 5. Razvijamo aplikaciju u Kubernetes klasteru

Dakle, sve smo spremili za implementaciju aplikacije: generirali smo njenu sliku, a zatim automatski kreirali manifestacije resursa. Sada preostaje samo primijeniti sve to u Kubernetes klasteru. Za implementaciju aplikacije, naravno, možete koristiti komandu kubectl apply -f, ali to može učiniti i dodatak umjesto nas. Evo šta će se prikazati na ekranu nakon što zamolimo Eclipse JKube da izvrši zadatak primjene mvn k8s:apply:

~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:apply
[INFO] Skanning etter prosjekter...
[INFO] 
[INFO] ---------------------------------------------
[INFO] Bygger random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] k8s: Bruker Kubernetes på https:\/\/192.168.39.145:8443\/ i namespace default med manifest \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/classes\/META-INF\/jkube\/kubernetes.yml 
[INFO] k8s: Bruker namespace: default
[INFO] k8s: Oppretter en tjeneste fra kubernetes.yml namespace default navn random-generator
[INFO] k8s: Opprettet tjeneste: target\/jkube\/applyJson\/default\/service-random-generator.json
[INFO] k8s: Oppretter en distribusjon fra kubernetes.yml namespace default navn random-generator
[INFO] k8s: Opprettet distribusjon: target\/jkube\/applyJson\/default\/deployment-random-generator.json
[INFO] k8s: HINT: Bruk kommandoen `kubectl get pods -w` for å se podene dine starte opp
[INFO] ------------------------------------------------------------------------
[INFO] BYGG SUKSESS
[INFO] ------------------------------------------------------------------------
[INFO] Total tid:  7.306 s
[INFO] Ferdig på: 2020-08-10T11:40:57+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get pods -w
NAVN                                                     KLAR   STATUS             OPPSTARTINGER   ALDER
random-generator-58b7847d7f-9m9df                        0\/1     Kjørende            0          7s
random-generator-58b7847d7f-9m9df                        1\/1     Kjørende            0          17s
^C~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get svc
NAVN                                    TYPE        KLUSTER-IP      EKSTERN-IP   PORT(S)           ALDER
io-openliberty-sample-getting-started   NodePort    10.110.4.104            9080:30570\/TCP    44t
kubernetes                              ClusterIP   10.96.0.1               443\/TCP           18d
random-generator                        NodePort    10.97.172.147           8080:32186\/TCP    22s
~\/work\/repos\/eclipse-jkube-demo-project : $ curl `minikube ip`:32186\/random | jq .
  % Total    % Mottatt % Xferd  Gjennomsnittlig hastighet   Tid    Tid     Tid  Nåværende
                                 Dload  Last opp   Totalt   Brukt  Venstre  Hastighet
100    45    0    45    0     0   1800      0 --:--:-- --:--:-- --:--:--  1875
{
  "id": "42e5571f-a20f-44b3-8184-370356581d10"
}

Trinn 6. Utfør undeploy av applikasjonen fra Kubernetes-klyngen

Dette gjøres ved hjelp av oppgaven undeploy, som enkelt fjerner alle ressursene som ble brukt i forrige trinn, det vil si under utførelsen av oppgaven apply. Dette er hva vi vil se på skjermen etter å ha bedt Eclipse JKube om å utføre undeploy-oppgaven mvn k8s:undeploy:

~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get all
NAME                                    READY   STATUS    RESTARTS   AGE
pod\/random-generator-58b7847d7f-9m9df   1\/1     Running   0          5m21s

NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service\/kubernetes         ClusterIP   10.96.0.1               443\/TCP          18d
service\/random-generator   NodePort    10.97.172.147           8080:32186\/TCP   5m21s

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps\/random-generator   1\/1     1            1           5m21s

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps\/random-generator-58b7847d7f   1         1         1       5m21s
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:undeploy
[INFO] Scanning for projects...
[INFO] 
[INFO] ---------------------------------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:undeploy (default-cli) @ random-generator ---
[INFO] k8s: Using Kubernetes at https:\/\/192.168.39.145:8443\/ in namespace default with manifest \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/classes\/META-INF\/jkube\/kubernetes.yml 
[INFO] k8s: Using namespace: default
[INFO] k8s: Deleting resource Deployment default\/random-generator
[INFO] k8s: Deleting resource Service default\/random-generator
[INFO] k8s: HINT: Use the command `kubectl get pods -w` to watch your pods start up
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.412 s
[INFO] Finished at: 2020-08-10T11:46:22+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get pods -w
^C~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service\/kubernetes   ClusterIP   10.96.0.1            443\/TCP   18d
~\/work\/repos\/eclipse-jkube-demo-project : $

Kaj še lahko storimo z Eclipse JKube

Torej, obravnavali smo osnovne cilje Eclipse JKube in Kubernetes Maven Plugin, ki olajšajo razvoj Java aplikacij za platformo Kubernetes. Če ne želite nenehno vnašati teh nalog na tipkovnici, jih lahko zapišete v konfiguracijo vtičnika, na primer tako:

org.eclipse.jkube
     kubernetes-maven-plugin
     ${project.version}
     
         
             
                  build
                  resource
                  apply

Treba povedati, da v tem članku nismo obravnavali vseh ciljev, ki jih ima Eclipse JKube in Kubernetes Maven Plugin, zato prikažemo v Tabeli 2 seznam dodatnih nalog, ki vam lahko prav tako koristijo.

Tabela 2. Dodatni cilji Eclipse JKube.

Naloga
Stopnja
Opis

k8s:log
VALIDATE
Pridobitev dnevnikov iz aplikacije, ki deluje na Kubernetes.

k8s:debug
PACKAGE
Odprtje odprtine za odpravljanje napak, da bi aplikacijo, ki deluje na Kubernetesu, odpravili neposredno iz IDE.

k8s:deploy
INSTALL
Ustvarjanje forka za nalogo Install in uporaba generiranih manifestov v klasterju Kubernetes na enak način kot pri nalogi apply.

k8s:watch
PACKAGE
Samodejna topla namestitev aplikacije z spremljanjem njenega imenskega prostora.

Namestitev Java aplikacij na Red Hat OpenShift s pomočjo OpenShift Maven Plugin

Za namestitev aplikacije iz našega primera na platformi Red Hat OpenShift uporabimo plugin OpenShift Maven. Edina razlika bo, da se bo predpona nalog spremenila z k8s na oc. Privzeto plugin Kubernetes Maven izvaja docker-gradnje, medtem ko plugin OpenShift Maven izvaja gradnje S2I. V naš projekt ne vnašamo nobenih sprememb, razen odstranitve lastnosti jkube.generator.name, saj ni potrebna pri nalaganju v register (med gradnjo OpenShift v notranji register naloži sliko). In tukaj je, kar se bo prikazalo na zaslonu, ko bomo zagnali naš primer, kjer, mimogrede, izvedemo naloge goal ne eno po eno, ampak vse naenkrat:

~\/work\/repos\/eclipse-jkube-demo-project : $ mvn oc:build oc:resource oc:apply
[INFO] Skanning etter prosjekter...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Bygger random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] oc: Bruker OpenShift bygningsstrategi S2I
[INFO] oc: Kjører i OpenShift-modus
[INFO] oc: Kjører generator spring-boot
[INFO] oc: spring-boot: Bruker Docker-bilde quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 som base \/ builder
[INFO] oc: [random-generator:0.0.1] "spring-boot": Opprettet docker kilde tar \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/docker\/random-generator\/0.0.1\/tmp\/docker-build.tar
[INFO] oc: Legger til i Hemmelighet pullsecret-jkube
[INFO] oc: Bruker Hemmelighet pullsecret-jkube
[INFO] oc: Oppretter BuildServiceConfig random-generator-s2i for kildebygging
[INFO] oc: Oppretter ImageStream random-generator
[INFO] oc: Starter bygg random-generator-s2i
[INFO] oc: Venter på at bygg random-generator-s2i-1 skal bli fullført...
[INFO] oc: Cacher blobber under "\/var\/cache\/blobs".
[INFO] oc: Henter bildedesignaturer
[INFO] oc: Kopierer blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopierer blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopierer blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopierer konfigurasjon sha256:52d6788fcfdd39595264d34a3959464a5dabc1d4ef0ae188802b20fc2d6a857b
[INFO] oc: Skriver manifest til bildets destinasjon
[INFO] oc: Lagrer signaturer
[INFO] oc: Genererer dockerfile med builder-bilde quay.io\/jkube\/jkube-java-binary-s2i:0.0.7
[INFO] oc: TRINN 1: FRA quay.io\/jkube\/jkube-java-binary-s2i:0.0.7
[INFO] oc: TRINN 2: MERK "io.openshift.build.source-location"="\/tmp\/build\/inputs"       "io.openshift.build.image"="quay.io\/jkube\/jkube-java-binary-s2i:0.0.7"
[INFO] oc: TRINN 3: ENV JAVA_APP_DIR="\/deployments"     OPENSHIFT_BUILD_NAME="random-generator-s2i-1"     OPENSHIFT_BUILD_NAMESPACE="default"
[INFO] oc: TRINN 4: BRUKER root
[INFO] oc: TRINN 5: KOPIER upload\/src \/tmp\/src
[INFO] oc: TRINN 6: KJØR chown -R 1000:0 \/tmp\/src
[INFO] oc: TRINN 7: BRUKER 1000
[INFO] oc: TRINN 8: KJØR \/usr\/local\/s2i\/assemble
[INFO] oc: INFO S2I kildebygging med vanlige binærdata oppdaget
[INFO] oc: INFO S2I binærbygging fra fabric8-maven-plugin oppdaget
[INFO] oc: INFO Kopierer binærdata fra \/tmp\/src\/deployments til \/deployments ...
[INFO] oc: random-generator-0.0.1.jar
[INFO] oc: INFO Kopierer distribusjoner fra deployments til \/deployments...
[INFO] oc: '\/tmp\/src\/deployments\/random-generator-0.0.1.jar' -> '\/deployments\/random-generator-0.0.1.jar'
[INFO] oc: TRINN 9: CMD \/usr\/local\/s2i\/run
[INFO] oc: TRINN 10: FORPLIKT temp.builder.openshift.io\/default\/random-generator-s2i-1:48795e41
[INFO] oc: tid="2020-08-10T06:37:49Z" level=info msg="Bilde operativsystem mismatch: bilde bruker "", forventer "linux""
[INFO] oc: tid="2020-08-10T06:37:49Z" level=info msg="Bilde arkitektur mismatch: bilde bruker "", forventer "amd64""
[INFO] oc: Henter bildedesignaturer
[INFO] oc: Kopierer blob sha256:d8e1f35641acb80b562f70cf49911341dfbe8c86f4d522b18efbf3732aa74223
[INFO] oc: Kopierer blob sha256:b6f081e4b2b6de8be4b1dec132043d14c121e968384dd624fb69c2c07b482edb
[INFO] oc: Kopierer blob sha256:b7139ad07aa8ce4ed5a132f7c5cc9f1de0f5099b5e155027a23d57f7fbe78b16
[INFO] oc: Kopierer blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopierer konfigurasjon sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Skriver manifest til bildets destinasjon
[INFO] oc: Lagrer signaturer
[INFO] oc: --> 27aaadaf28e
[INFO] oc: 27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Henter bildedesignaturer
[INFO] oc: 
[INFO] oc: Laster opp bilde image-registry.openshift-image-registry.svc:5000\/default\/random-generator:0.0.1 ...
[INFO] oc: Kopierer blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopierer blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopierer blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopierer blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopierer konfigurasjon sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Skriver manifest til bildets destinasjon
[INFO] oc: Lagrer signaturer
[INFO] oc: Bilde-registry.openshift-image-registry.svc:5000\/default\/random-generator@sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d ble lastet opp vellykket
[INFO] oc: Lasting vellykket
[INFO] oc: Bygg random-generator-s2i-1 i status Fullført
[INFO] oc: Fant etikett på ImageStream random-generator etikett: sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: ImageStream random-generator skrevet til \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/random-generator-is.yml
[INFO] 
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:resource (default-cli) @ random-generator ---
[INFO] oc: Bruker docker bilde navn av namespace: default
[INFO] oc: Kjører generator spring-boot
[INFO] oc: spring-boot: Bruker Docker-bilde quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 som base \/ builder
[INFO] oc: jkube-controller: Legger til en standard DeploymentConfig
[INFO] oc: jkube-service: Legger til en standard tjeneste 'random-generator' med porter [8080]
[INFO] oc: jkube-healthcheck-spring-boot: Legger til beredskapssjekk på port 8080, sti='\/actuator\/health', skjema='HTTP', med innledende forsinkelse på 10 sekunder
[INFO] oc: jkube-healthcheck-spring-boot: Legger til livssjekk på port 8080, sti='\/actuator\/health', skjema='HTTP', med innledende forsinkelse på 180 sekunder
[INFO] oc: jkube-revision-history: Legger til revisjonshistorikkgrense til 2
[INFO] 
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] oc: Bruker OpenShift på https:\/\/api.crc.testing:6443\/ i namespace default med manifest \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/classes\/META-INF\/jkube\/openshift.yml 
[INFO] oc: OpenShift-plattform oppdaget
[INFO] oc: Bruker prosjekt: default
[INFO] oc: Oppretter en Tjeneste fra openshift.yml namespace default navn random-generator
[INFO] oc: Opprettet Tjeneste: target\/jkube\/applyJson\/default\/service-random-generator.json
[INFO] oc: Oppretter en DeploymentConfig fra openshift.yml namespace default navn random-generator
[INFO] oc: Opprettet DeploymentConfig: target\/jkube\/applyJson\/default\/deploymentconfig-random-generator.json
[INFO] oc: Oppretter Rute default:random-generator vert: null
[INFO] oc: TIPS: Bruk kommandoen `oc get pods -w` for å se på podene dine starte opp
[INFO] ------------------------------------------------------------------------
[INFO] BYGG SUKSESS
[INFO] ------------------------------------------------------------------------
[INFO] Total tid:  01:07 min
[INFO] Fullført ved: 2020-08-10T12:08:00+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ oc get pods -w
NAVN                           KLAR     STATUS      OMBSTARTINGER   ALDER
random-generator-1-deploy      1\/1       Kjørende     0          14s
random-generator-1-vnrm9       0\/1       Kjørende     0          11s
random-generator-s2i-1-build   0\/1       Fullført   0          1m
random-generator-1-vnrm9   1\/1       Kjørende   0         24s
random-generator-1-deploy   0\/1       Fullført   0         28s
~\/work\/repos\/eclipse-jkube-demo-project : $ oc get routes
NAVN                VERT\/PORT                                    STI      TJENESTER            PORT      TERMINERING   WILDCARD
random-generator    random-generator-default.apps-crc.testing              random-generator    8080                    Ingen
~\/work\/repos\/eclipse-jkube-demo-project : $ curl random-generator-default.apps-crc.testing\/random 
  % Total    % Mottatt % Xferd  Gjennomsnittlig Hastighet   Tid    Tid     Tid  Nåværende
                                 Dload  Opplasting   Total   Brukt   Venstre  Hastighet
100    45    0    45    0     0   1666      0 --:--:-- --:--:-- --:--:--  1730
{
  "id": "d80052d9-2f92-43cb-b9eb-d7cffb879798"
}
~\/work\/repos\/eclipse-jkube-demo-project : $

Video posnetek

Če želite izvedeti več o poenostavitvi Kubernetes razvoja s pomočjo Eclipse JKube, si oglejte video posnetek o hitrem uvajanju preproste aplikacije Spring Boot na Minikube:

Predvajaj video

Zaključek

V tem članku smo prikazali, kako Eclipse JKube olajša življenje Java razvijalcem pri delu s Kubernetes. Dodatne informacije o Eclipse JKube lahko najdete na na spletni strani projekta in GitHub.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster