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 ali njene različice, kot so ili .

Ž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 , 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 (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.

Sl. 1. Tradicionalni proces razvoja Jave.
Proces razvoja Jave za oblak
Ob prehodu na oblačne aplikacije se zgoraj opisani shemi dodata Kubernetes in . Zato mora programer zdaj zapakirati Java aplikacije v 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.

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 , kar razvijalcem omogoča uporabo njihovih knjižnic in pluginov ( v kombinaciji z ili ), 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.

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
PRE_INTEGRATION_TEST
Gradnja docker slik
INSTALL
Pošiljanje docker slik v register
PROCESS_RESOURCES
Generiranje K8s manifestov
COMPILE
Prijava generiranih manifestov v K8s
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 in .
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 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 , 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 . 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.

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 (, , 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
VALIDATE
Pridobitev dnevnikov iz aplikacije, ki deluje na Kubernetes.
PACKAGE
Odprtje odprtine za odpravljanje napak, da bi aplikacijo, ki deluje na Kubernetesu, odpravili neposredno iz IDE.
INSTALL
Ustvarjanje forka za nalogo Install in uporaba generiranih manifestov v klasterju Kubernetes na enak način kot pri nalogi apply.
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 . Edina razlika bo, da se bo predpona nalog spremenila z k8s na oc. Privzeto plugin Kubernetes Maven izvaja -gradnje, medtem ko plugin OpenShift Maven izvaja gradnje . 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:

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 in .
Izvor: habr.com
