Prije 25 godina Java je započela svoje široko putovanje prema programerima i na kraju postala jedna od osnovnih tehnologija oko kojih se grade aplikacijski setovi. Međutim, danas mnogi ljudi i organizacije, koji su dugo godina bili vjerni Javi, prebacuju se ili razmišljaju o prelasku na platformu ili njenih derivata, poput ili .

Nažalost, Kubernetes ima strmu krivulju učenja i uvodi još jednu operativnu razinu u poznati proces razvoja za Java programere. Danas ćemo pokazati kako koristiti , kako bismo pojednostavili ove dodatne operacije vezane uz Kubernetes i kontejnere, kao i omogućili bezbolnu migraciju na oblačnu platformu uz zadržavanje poznate Java ekosustava. Štoviše, pokazat ćemo kako implementirati Java aplikacije na OpenShift platformi pomoću OpenShift Maven plugina.
Tradicionalni proces Java razvoja
Tradicionalni proces razvoja (Slika 1) podrazumijeva da programer piše kod, zatim stvara jedinice implementacije u obliku JAR ili WAR datoteka, a potom ih implementira i pokreće na web serveru ili aplikacijskom serveru. Uglavnom se za to koristi Maven iz naredbene linije ili se koristi IDE, poput IntelliJ ili Eclipse, za kodiranje i pakiranje aplikacija. Programeri su navikli unositi promjene u kod i pažljivo testirati sve prije nego što fiksiraju kod i pošalju ga u sustav za upravljanje verzijama.

Slika 1. Tradicionalni proces Java razvoja.
Proces Java razvoja za oblak
Kada se prelazi na oblačne aplikacije, Kubernetes i se dodaju u gore opisanu shemu. Stoga programer sada treba pakirati Java aplikacije u i stvoriti Kubernetes manifeste koji opisuju te slike. Zatim se ti manifesti primjenjuju na produkcijski poslužitelj na kojem radi Kubernetes. S druge strane, Kubernetes uzima te slike iz registra i implementira aplikacije prema konfiguracijama koje smo definirali u manifestima, koji obično predstavljaju YAML datoteke.
Metamorfoza tradicionalnog procesa Java razvoja prilikom prelaska na oblak prikazana je na Slika 2.

Slika 2. Proces Java razvoja za oblak.
Eclipse JKube
Prijelaz na Kubernetes dodaje još jedan operativni nivo u proces razvoja, a mnoge programere to nervira jer se žele fokusirati na svoj osnovni posao – logiku aplikacija, a ne na to kako ih implementirati. I ovdje na scenu stupa , koji omogućuje programerima da koriste svoje biblioteke i upravljačke dodatke ( zajedno s ili ), kako bi bez dodatnog napora izvršavali operacije povezane s kontejnerima i Kubernetesom, slijedeći shemu na Sl. 2.
U preostalom dijelu ovog članka pokazat ćemo kako pojednostaviti proces Java razvoja u Kubernetes okruženju koristeći Eclipse JKube s Kubernetes Maven Pluginom.
Razvojni proces za oblak koristeći Eclipse JKube
Razmotrimo malo modificiranu shemu Java razvoja za oblak sa Sl. 2, uvodeći u nju Eclipse JKube i Kubernetes Maven Plugin, kao što je prikazano na Sl. 3.

Sl. 3. Proces Java razvoja za oblak koristeći Eclipse JKube.
Kao što vidimo, sve operacije interakcije s Kubernetesom i kontejnerima (na shemi označeno crvenom) zamjenjuju se ciljnim zadacima Eclipse JKube prema zadanim postavkama, koji su navedeni u Tab. 1.
Tab. 1. Zadaci Eclipse JKube prema zadanim postavkama.
Zadatak
Faza
Opis
PRE_INTEGRATION_TEST
Izrada docker slika
INSTALL
Slanje docker slika u registar
PROCESS_RESOURCES
Generiranje K8s manifestacija
COMPILE
Primjena generiranih manifestacija na K8s
UNDEPLOY
Brisanje K8s resursa koji su implementirani putem k8s:apply i k8s:deploy
Napomena: Ako ne želite da zadaci koriste ove tvrde zadane postavke (opinionated defaults), možete ručno konfigurirati Eclipse JKube prema svojim potrebama, budući da podržava konfiguraciju putem i .
Sada razmotrite primjere korištenja Eclipse JKube i Kubernetes Maven Plugina u radu s aplikacijama.
Implementacija Java aplikacije u Kubernetes s Eclipse JKube
U ovom primjeru implementirat ćemo jednostavnu Java aplikaciju u klasteru uz pomoć Eclipse JKube. Koristeći Kubernetes Maven Plugin, možemo postaviti parametre implementacije bez potrebe za pisanjem ikakve konfiguracije.
Kao primjer aplikacije koristimo , koji daje JSON output na endpointu /random:
~\/work\/repos\/eclipse-jkube-demo-project : $ curl localhost:8080\/random | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 45 0 45 0 0 818 0 --:--:-- --:--:-- --:--:-- 818
{\n \
Korak 1. Preuzimamo Kubernetes Maven Plugin
Kubernetes Maven Plugin se nalazi u repozitoriju . Za korištenje 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 umjesto čistog Kubernetesa koristimo OpenShift, pom.xml treba modificirati na sljedeć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 sastaviti naredbom mvn package, a zatim možemo koristiti goal-zadatak mvn k8s:build za izgradnju docker-slike te aplikacije. Imajte na umu da smo preimenovali zadanu sliku pomoću ove osobine:
<jkube.generator.name>docker.io\/rohankanojia\/random-generator:${project.version}<\/jkube.generator.name>
Prije nego što sastavimo sliku, potrebno je osigurati da je docker demon ispravno izložen. To se može učiniti sljedećom naredbom:
$ eval $(minikube docker-env)
Zatim unosimo naredbu mvn k8s:build, a evo što ćemo vidjeti na ekranu prilikom izgradnje docker-slike pomoću build-zadatka Eclipse JKube:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:build
[INFO] Skeniranje projekata...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Izrađivanje random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] k8s: Pokreće se u Kubernetes modu
[INFO] k8s: Izrađivanje Docker slike u Kubernetes modu
[INFO] k8s: Pokreće se 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: [docker.io\/rohankanojia\/random-generator:0.0.1] "spring-boot": Stvorena 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] IZGRADNJA USPJEŠNA
[INFO] ------------------------------------------------------------------------
[INFO] Ukupno vrijeme: 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 registar
Nakon što smo sastavili docker-sliku pri postavljenom push registru (u našem slučaju to je docker.io), možemo poslati tu sliku u registar. Evo što ćemo vidjeti 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] Skener za projekte...
[INFO]
[INFO] ---------------------------------------------
[INFO] Gradimo random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:push (default-cli) @ random-generator ---
[INFO] k8s: Rad u Kubernetes modu
[INFO] k8s: Gradimo Docker sliku u Kubernetes modu
[INFO] k8s: Pokrećemo generator spring-boot
[INFO] k8s: spring-boot: Koristeći Docker sliku quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 kao osnovu \/ graditelj
[INFO] k8s: Push se odnosi na repozitorij [docker.io\/rohankanojia\/random-generator]
5dcd9556710f: Sloj već postoji
b7139ad07aa8: Sloj već postoji
b6f081e4b2b6: Sloj već postoji
d8e1f35641ac: Sloj već postoji
[INFO] k8s: 0.0.1: digest: sha256:9f9eda2a13b8cab1d2c9e474248500145fc09e2922fe3735692f9bda4c76002d veličina: 1162
[INFO] k8s: Poslano docker.io\/rohankanojia\/random-generator:0.0.1 u 7 sekundi
[INFO] ------------------------------------------------------------------------
[INFO] MONTAŽA USPJEŠNA
[INFO] ------------------------------------------------------------------------
[INFO] Ukupno vrijeme: 11.222 s
[INFO] Završeno u: 2020-08-10T11:35:37+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $
Nakon slanja slike, potrebno je provjeriti je li stigla u registar. U našem slučaju, možemo je jednostavno vidjeti na Docker Hub-u, kao što je prikazano na Slici 4.

Slika 4. Poslana slika u registar pojavila se na Docker Hub-u.
Korak 4. Generiramo manifest k8s resursa za aplikaciju
Dakle, sliku aplikacije smo izgradili, sada treba napisati Kubernetes manifeste. Za to, Eclipse JKube ima zadatak koji generira statičke manifestacije resursa, oslanjajući se na korišteni Java okvir (, , Vert.x ili neki drugi). Također možete konfigurirati manifest koristeći XML datoteku za konfiguraciju i stavljajući raw fragmente (fragmente potrebnog manifesta resursa) u mapu aplikacije src\/main\/jkube. U tom slučaju vaša konfiguracija bit će uključena u generirane manifeste.
U našem primjeru ostavljamo sve kako jest, te Eclipse JKube generira manifest za zadano implementiranje i za servis s tipom ClusterIP. Nakon toga, modificiramo manifest servisa kako bismo promijenili tip servisa u NodePort. Zadano ponašanje možete prepisati pomoću sljedeće postavke:
NodePort
Evo kako izgleda izlaz na ekranu nakon što zatražimo od Eclipse JKube-a da izvrši resource zadatak mvn k8s:resource.
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:resource
[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:resource (default-cli) @ random-generator ---
[INFO] k8s: Pokrećem generator spring-boot
[INFO] k8s: spring-boot: Koristim Docker sliku quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 kao osnovu \/ builder
[INFO] k8s: jkube-controller: Dodajem zadani Deployment
[INFO] k8s: jkube-service: Dodajem zadanu uslugu 'random-generator' s portovima [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: Dodajem probu spremnosti na portu 8080, putanja='\/actuator\/health', shema='HTTP', s početnom odgodom od 10 sekundi
[INFO] k8s: jkube-healthcheck-spring-boot: Dodajem probu živosti na portu 8080, putanja='\/actuator\/health', shema='HTTP', s početnom odgodom od 180 sekundi
[INFO] k8s: jkube-revision-history: Dodajem ograničenje povijesti revizije na 2
[INFO] ------------------------------------------------------------------------
[INFO] GRADNJA 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. Postavljamo aplikaciju u Kubernetes klaster
Dakle, sve je spremno za implementaciju aplikacije: generirali smo njen image i potom automatski generirali manifestacije resursa. Sada samo trebamo primijeniti sve to na Kubernetes klaster. Za implementaciju aplikacije, naravno, možemo koristiti naredbu kubectl apply -f, ali to može učiniti i dodatak. Ovo će biti na ekranu nakon što zatražimo od Eclipse JKube da izvrši zadatak primjene mvn k8s:apply:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:apply
[INFO] Tražim projekte...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Gradim random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] k8s: Koristim Kubernetes na https:\/\/192.168.39.145:8443\/ u namespace default s manifestom \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/classes\/META-INF\/jkube\/kubernetes.yml
[INFO] k8s: Koristim namespace: default
[INFO] k8s: Kreiram uslugu iz kubernetes.yml namespace default naziv random-generator
[INFO] k8s: Kreirana usluga: target\/jkube\/applyJson\/default\/service-random-generator.json
[INFO] k8s: Kreiram implementaciju iz kubernetes.yml namespace default naziv random-generator
[INFO] k8s: Kreirana implementacija: target\/jkube\/applyJson\/default\/deployment-random-generator.json
[INFO] k8s: SAVJET: Koristite naredbu `kubectl get pods -w` za praćenje pokretanja vaših podova
[INFO] ------------------------------------------------------------------------
[INFO] IZGRADNJA USPJEŠNA
[INFO] ------------------------------------------------------------------------
[INFO] Ukupno vrijeme: 7.306 s
[INFO] Završeno u: 2020-08-10T11:40:57+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get pods -w
IME SPREADY STATUS PONOVLJENI STARO
random-generator-58b7847d7f-9m9df 0\/1 U pogonu 0 7s
random-generator-58b7847d7f-9m9df 1\/1 U pogonu 0 17s
^C~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get svc
IME TIP CLUSTER-IP EKSTERNI-IP PORT(S) STARO
io-openliberty-sample-getting-started NodePort 10.110.4.104 <none> 9080:30570\/TCP 44h
kubernetes ClusterIP 10.96.0.1 <none> 443\/TCP 18d
random-generator NodePort 10.97.172.147 <none> 8080:32186\/TCP 22s
~\/work\/repos\/eclipse-jkube-demo-project : $ curl `minikube ip`:32186\/random | jq .
% Ukupno % Primljeno % Preneseno Prosječna brzina Vrijeme Vrijeme Vrijeme Trenutno
Dload Upload Ukupno Potrošeno Ostalo Brzina
100 45 0 45 0 0 1800 0 --:--:-- --:--:-- --:--:-- 1875
{
"id": "42e5571f-a20f-44b3-8184-370356581d10"
}
Korak 6. Uklanjamo aplikaciju iz Kubernetes klastera
Za to se koristi zadatak undeploy, koji jednostavno uklanja sve resurse koji su primijenjeni u prethodnom koraku, dakle prilikom izvođenja zadatka apply. Evo što ćemo vidjeti na ekranu nakon što zatražimo Eclipse JKube da izvrši zadatak undeploy 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 : $
Što još možete učiniti s Eclipse JKube
Dakle, pregledali smo osnovne ciljeve Eclipse JKube i Kubernetes Maven Plugin-a koji olakšavaju razvoj Java aplikacija za Kubernetes platformu. Ako ne želite stalno upisivati te ciljeve s tipkovnice, možete ih navesti u konfiguraciji plugina, primjerice ovako:
org.eclipse.jkube
kubernetes-maven-plugin
${project.version}
build
resource
apply
Moram reći da u ovom članku nismo obradili sve ciljeve koji postoje u Eclipse JKube i Kubernetes Maven Plugin-u, stoga donosimo u Tablici 2 popis dodatnih ciljeva koji bi vam također mogli biti korisni.
Tablica 2. Dodatni ciljevi Eclipse JKube.
Zadatak
Faza
Opis
VALIDATE
Dobivanje logova iz aplikacije koja radi na Kubernetesu.
PACKAGE
Otvorite greška port za izvođenje debagiranja aplikacije koja se pokreće na Kubernetesu izravno iz IDE-a.
INSTALL
Izrada fork-a za zadatak Instaliraj i primjena generiranih manifestacija na Kubernetes klaster na isti način kao kod apply zadatka.
PACKAGE
Automatsko vruće postavljanje aplikacije praćenjem njenog imenskog prostora.
Postavljanje Java aplikacija na Red Hat OpenShift pomoću OpenShift Maven Plugin-a
Za postavljanje aplikacije iz našeg primjera na Red Hat OpenShift platformu primjenjujemo plugin . Jedina razlika bit će ta da će se prefiks zadataka promijeniti s k8s na oc. Prema zadanim postavkama, Kubernetes Maven plugin radi -buildove, dok OpenShift Maven plugin radi buildove . Ne unosimo nikakve promjene u naš projekt osim uklanjanja svojstva jkube.generator.name, jer nije potrebno prilikom slanja u registar (tijekom izgradnje OpenShift postavlja sliku u svom internom registru). I ovo će se pojaviti na ekranu kada pokrenemo naš primjer, u kojem, usput, izvršavamo goal zadatke ne jedan po jedan, već sve odjednom:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn oc:build oc:resource oc:apply
[INFO] Traženje projekata...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Izgradnja random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] oc: Koristi OpenShift izgradnju sa strategijom S2I
[INFO] oc: Pokreće se u OpenShift modu
[INFO] oc: Pokreće generator spring-boot
[INFO] oc: spring-boot: Koristi Docker sliku quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 kao osnovu \/ builder
[INFO] oc: [random-generator:0.0.1] "spring-boot": Kreirana docker izvorna taratura \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/docker\/random-generator\/0.0.1\/tmp\/docker-build.tar
[INFO] oc: Dodavanje u Tajnu pullsecret-jkube
[INFO] oc: Koristi Tajnu pullsecret-jkube
[INFO] oc: Kreiranje BuildServiceConfig random-generator-s2i za Izvor nu
[INFO] oc: Kreiranje ImageStream random-generator
[INFO] oc: Pokretanje Izgradnje random-generator-s2i
[INFO] oc: Čekanje da izgradnja random-generator-s2i-1 završi...
[INFO] oc: Keširanje blobova pod "\/var\/cache\/blobs".
[INFO] oc: Dohvaćanje izvora slika potpisuje
[INFO] oc: Kopiranje blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopiranje blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopiranje blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopiranje konfiguracije sha256:52d6788fcfdd39595264d34a3959464a5dabc1d4ef0ae188802b20fc2d6a857b
[INFO] oc: Pisanje manifesta u odredište slike
[INFO] oc: Pohranjivanje potpisa
[INFO] oc: Generiranje dockerfile sa builder slikom quay.io\/jkube\/jkube-java-binary-s2i:0.0.7
[INFO] oc: KORAK 1: FROM quay.io\/jkube\/jkube-java-binary-s2i:0.0.7
[INFO] oc: KORAK 2: LABEL "io.openshift.build.source-location"="\/tmp\/build\/inputs" "io.openshift.build.image"="quay.io\/jkube\/jkube-java-binary-s2i:0.0.7"
[INFO] oc: KORAK 3: ENV JAVA_APP_DIR="\/deployments" OPENSHIFT_BUILD_NAME="random-generator-s2i-1" OPENSHIFT_BUILD_NAMESPACE="default"
[INFO] oc: KORAK 4: KORISNIK root
[INFO] oc: KORAK 5: COPY upload\/src \/tmp\/src
[INFO] oc: KORAK 6: RUN chown -R 1000:0 \/tmp\/src
[INFO] oc: KORAK 7: KORISNIK 1000
[INFO] oc: KORAK 8: RUN \/usr\/local\/s2i\/assemble
[INFO] oc: INFO Otkrivena izvorna S2I izgradnja sa običnim binarnim datotekama
[INFO] oc: INFO Otkrivena binarna S2I izgradnja iz fabric8-maven-plugin
[INFO] oc: INFO Kopiranje binarnih datoteka iz \/tmp\/src\/deployments u \/deployments ...
[INFO] oc: random-generator-0.0.1.jar
[INFO] oc: INFO Kopiranje izdanja iz deployments u \/deployments...
[INFO] oc: '\/tmp\/src\/deployments\/random-generator-0.0.1.jar' -> '\/deployments\/random-generator-0.0.1.jar'
[INFO] oc: KORAK 9: CMD \/usr\/local\/s2i\/run
[INFO] oc: KORAK 10: KOMIT temp.builder.openshift.io\/default\/random-generator-s2i-1:48795e41
[INFO] oc: vrijeme="2020-08-10T06:37:49Z" razina=info msg="Neusklađenost operativnog sustava slike: slika koristi "", očekivanje "linux""
[INFO] oc: vrijeme="2020-08-10T06:37:49Z" razina=info msg="Neusklađenost arhitekture slike: slika koristi "", očekivanje "amd64""
[INFO] oc: Dohvaćanje izvora slika potpisuje
[INFO] oc: Kopiranje blob sha256:d8e1f35641acb80b562f70cf49911341dfbe8c86f4d522b18efbf3732aa74223
[INFO] oc: Kopiranje blob sha256:b6f081e4b2b6de8be4b1dec132043d14c121e968384dd624fb69c2c07b482edb
[INFO] oc: Kopiranje blob sha256:b7139ad07aa8ce4ed5a132f7c5cc9f1de0f5099b5e155027a23d57f7fbe78b16
[INFO] oc: Kopiranje blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopiranje konfiguracije sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Pisanje manifesta u odredište slike
[INFO] oc: Pohranjivanje potpisa
[INFO] oc: --> 27aaadaf28e
[INFO] oc: 27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Dohvaćanje izvora slika potpisuje
[INFO] oc:
[INFO] oc: Slanje slike image-registry.openshift-image-registry.svc:5000\/default\/random-generator:0.0.1 ...
[INFO] oc: Kopiranje blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopiranje blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopiranje blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopiranje blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopiranje konfiguracije sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Pisanje manifesta u odredište slike
[INFO] oc: Pohranjivanje potpisa
[INFO] oc: Uspješno poslano image-registry.openshift-image-registry.svc:5000\/default\/random-generator@sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: Slanje uspješno
[INFO] oc: Izgradnja random-generator-s2i-1 u statusu Kompletno
[INFO] oc: Pronađen tag na ImageStream random-generator tag: sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: ImageStream random-generator zapisan u \/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: Koristi naziv docker slike za naziv prostora: default
[INFO] oc: Pokreće generator spring-boot
[INFO] oc: spring-boot: Koristi Docker sliku quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 kao osnovu \/ builder
[INFO] oc: jkube-controller: Dodavanje default DeploymentConfig
[INFO] oc: jkube-service: Dodavanje default servisa 'random-generator' sa portovima [8080]
[INFO] oc: jkube-healthcheck-spring-boot: Dodavanje readiness probe na portu 8080, putanja='\/actuator\/health', shema='HTTP', s početnom kašnjenju 10 sekundi
[INFO] oc: jkube-healthcheck-spring-boot: Dodavanje liveness probe na portu 8080, putanja='\/actuator\/health', shema='HTTP', s početnom kašnjenju 180 sekundi
[INFO] oc: jkube-revision-history: Dodavanje ograničenja revizije na 2
[INFO]
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] oc: Koristi OpenShift na https:\/\/api.crc.testing:6443\/ u imeniku default sa manifestom \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/classes\/META-INF\/jkube\/openshift.yml
[INFO] oc: Otkrivena platforma OpenShift
[INFO] oc: Koristi projekt: default
[INFO] oc: Kreira servis iz openshift.yml u prostoru default naziva random-generator
[INFO] oc: Kreiran Servis: target\/jkube\/applyJson\/default\/service-random-generator.json
[INFO] oc: Kreira DeploymentConfig iz openshift.yml prostora default naziva random-generator
[INFO] oc: Kreiran DeploymentConfig: target\/jkube\/applyJson\/default\/deploymentconfig-random-generator.json
[INFO] oc: Kreira Putanju default:random-generator domaćin: null
[INFO] oc: SAVJET: Koristite naredbu `oc get pods -w` da gledate vaše podove kako se pokreću
[INFO] ------------------------------------------------------------------------
[INFO] IZGRADNJA USPJEŠNA
[INFO] ------------------------------------------------------------------------
[INFO] Ukupno vreme: 01:07 min
[INFO] Završen: 2020-08-10T12:08:00+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ oc get pods -w
IME SPREMNO STATUS PONOVNI STARTOVI STARO
random-generator-1-deploy 1\/1 Radi 0 14s
random-generator-1-vnrm9 0\/1 Radi 0 11s
random-generator-s2i-1-build 0\/1 Završeno 0 1m
random-generator-1-vnrm9 1\/1 Radi 0 24s
random-generator-1-deploy 0\/1 Završeno 0 28s
~\/work\/repos\/eclipse-jkube-demo-project : $ oc get routes
IME DOMAĆIN\/PORT PUTANJA SERVISI PORT TERMINACIJA WILDCARD
random-generator random-generator-default.apps-crc.testing random-generator 8080 Nema
~\/work\/repos\/eclipse-jkube-demo-project : $ curl random-generator-default.apps-crc.testing\/random
% Ukupno % Primljeno % Preneseno Prosječna Brzina Vreme Vreme Vreme Trenutno
Dload Upload Ukupno Potrošeno Ostalo Brzina
100 45 0 45 0 0 1666 0 --:--:-- --:--:-- --:--:-- 1730
{
"id": "d80052d9-2f92-43cb-b9eb-d7cffb879798"
}
~\/work\/repos\/eclipse-jkube-demo-project : $
Video tutorial
Da biste saznali više o pojednostavljenju Kubernetes razvojnog procesa pomoću Eclipse JKube, pogledajte video-lekciju o brzom implementiranju jednostavne Spring Boot aplikacije na Minikube:

Zaključak
U ovom članku pokazali smo kako Eclipse JKube olakšava život Java programeru prilikom rada s Kubernetesom. Dodatne informacije o Eclipse JKube možete pronaći na i na .
Izvor: habr.com
