Pred 25 rokmi sa Java dostala medzi programátorov, aby sa nakoniec stala jedným z pilierov, okolo ktorých sa budujú aplikačné stacky. Dnes však mnohí jednotlivci a organizácie, ktoré roky verili Java, prechádzajú alebo zvažujú prechod na platformu alebo jej odvodené verzie, ako sú alebo .

Žiaľ, Kubernetes má strmú krivku učenia a pridáva ďalšiu operatívnu vrstvu do procesu vývoja, na ktorý sú Java programátori zvyknutí. Dnes sa pozrieme na to, ako využiť , aby sme zjednodušili tieto dodatočné operácie spojené s Kubernetes a kontajnermi, a tak zabezpečili bezproblémovú migráciu na cloudovú platformu s zachovaním známeho Java ekosystému. Navyše ukážeme, ako nasadiť Java aplikácie na platforme OpenShift pomocou pluginu OpenShift Maven.
Tradičný proces Java vývoja
Tradičný proces vývoja (Obr. 1) predpokladá, že programátor píše kód, potom vytvára jednotky nasadenia vo forme súborov JAR alebo WAR, a následne tieto súbory nasadzuje a spúšťa na webovom serveri alebo serveri aplikácií. Na tento účel sa zvyčajne používa Maven z príkazového riadku alebo IDE ako IntelliJ alebo Eclipse na kódovanie a balenie aplikácií. Vývojári sú zvyknutí vykonávať zmeny v kóde a dôkladne všetko testovať predtým, ako kód fixujú a odosielajú do systému správy verzií.

Obr. 1. Tradičný proces Java vývoja.
Proces Java vývoja pre cloud
Pri prechode na cloudové aplikácie sa do vyššie opísaného schémy pridávajú Kubernetes a . Preto teraz musí programátor zabaliť Java aplikácie do a vytvoriť Kubernetes manifesty, ktoré popisujú tieto obrazy. Tieto manifesty sa potom aplikujú na produkčný server, na ktorom beží Kubernetes. Kubernetes následne berie tieto obrazy z registry a nasadzuje aplikácie podľa tých konfigurácií, ktoré sme uviedli v manifesto, ktoré zvyčajne predstavuje súbory YAML.
Metamorfóza tradičného procesu Java vývoja pri prechode na cloud je znázornená na Obr. 2.

Obr. 2. Proces Java vývoja pre cloud.
Eclipse JKube
Prechod na Kubernetes pridáva ďalšiu prevádzkovú vrstvu do procesu vývoja, čo mnohých vývojárov znepokojuje, pretože sa chcú zamerať na svoju hlavnú prácu – logiku aplikácií – a nie na to, ako ich nasadiť. A tu prichádza do hry , ktorý vývojárom umožňuje používať svoje knižnice a pluginy ( spolu s alebo ), aby bez zbytočných ťažkostí vykonávali operácie súvisiace s kontajnermi a Kubernetes, dodržiavajúc schému na Obr. 2.
V zvyšnej časti tohto článku ukážeme, ako zjednodušiť proces vývoja Java v prostredí Kubernetes pomocou Eclipse JKube s pluginom Kubernetes Maven Plugin.
Proces vývoja pre cloud s použitím Eclipse JKube
Zvážme mierne upravenú schému vývoja Java pre cloud na Obr. 2, pričom do nej zavedieme Eclipse JKube a Kubernetes Maven Plugin, ako je znázornené na Obr. 3.

Obr. 3. Proces vývoja Java pre cloud s použitím Eclipse JKube.
Ako vidíme, všetky operácie interakcie s Kubernetes a kontajnermi (na schéme zvýraznené červenou) sú nahradené cieľovými úlohami Eclipse JKube podľa predvolených nastavení, ktoré sú uvedené v Tab. 1.
Tab. 1. Predvolené úlohy Eclipse JKube.
Úloha
Fáza
Popis
PRE_INTEGRATION_TEST
Súbor docker-imitácií
INSTALL
Odosielanie docker-imitácií do registry
PROCESS_RESOURCES
Generovanie manifestov K8s
COMPILE
Aplikovanie vygenerovaných manifestov na K8s
UNDEPLOY
Odstránenie zdrojov K8s, ktoré boli nasadené prostredníctvom k8s:apply a k8s:deploy.
Poznámka: Ak nechcete, aby úlohy používali tieto prísne predvolené hodnoty (opinionated defaults), môžete si ručne nastaviť Eclipse JKube, pričom podporuje konfiguráciu cez a .
Teraz sa pozrime na príklady použitia Eclipse JKube a Kubernetes Maven Plugin pri práci s aplikáciami.
Nasadzovanie Java aplikácie na Kubernetes s pomocou Eclipse JKube
V tomto príklade nasadíme jednoduchú Java aplikáciu v klastri s pomocou Eclipse JKube. Pomocou Kubernetes Maven Plugin môžeme zadať parametre nasadenia bez nutnosti definovať akúkoľvek konfiguráciu.
Ako príklad aplikácie použijeme , ktorý vracia JSON výstup na endpoint’e /random:
~ /work/repos/eclipse-jkube-demo-project : $ curl localhost:8080/random | jq .
% Celkom % Prijaté % Prenos Priemerná rýchlosť Čas Čas Čas Aktuálny
Dload Upload Celkom Strávený Zostáva Rýchlosť
100 45 0 45 0 0 818 0 --:--:-- --:--:-- --:--:-- 818
{
"id": "e80a4d10-c79b-4b9a-aaac-7c286cb37f3c"
}
Krok 1. Nahrávame Kubernetes Maven Plugin
Kubernetes Maven Plugin sa nachádza v repozitári . Na použitie Eclipse JKube je potrebné pridať Kubernetes Maven Plugin do svojho pom.xml ako závislosť:
org.eclipse.jkube
kubernetes-maven-plugin
${jkube.version}
Ak sa namiesto čistého Kubernetes používa OpenShift, pom.xml sa modifikuje následujúcim spôsobom:
org.eclipse.jkube
openshift-maven-plugin
${jkube.version}
Krok 2. Zbierame docker-obraz
JAR súbor aplikácie môžeme zbierať príkazom mvn package a potom môžeme použiť goal úlohu mvn k8s:build na zostavenie docker-obrazu tejto aplikácie. Upozorňujeme, že sme predefinovali predvolené meno obrazu pomocou tohto vlastnosti:
docker.io/rohankanojia/random-generator:${project.version}
Predtým, než začneme zbierať obraz, je potrebné sa uistiť, že docker démon je správne exponovaný. To môžeme urobiť nasledujúcim príkazom:
$ eval $(minikube docker-env)
Potom zadáme príkaz mvn k8s:build a toto je to, čo uvidíme na obrazovke pri zostavovaní docker-obrazu pomocou build úlohy Eclipse JKube:
~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:build
[INFO] Skenujeme projekty...
[INFO]
[INFO] ---------------------------------------------
[INFO] Zostavujeme random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] k8s: Beží v režime Kubernetes
[INFO] k8s: Zostavujeme Docker obraz v režime Kubernetes
[INFO] k8s: Beží generátor spring-boot
[INFO] k8s: spring-boot: Používajúci Docker obraz quay.io/jkube/jkube-java-binary-s2i:0.0.7 ako základ / builder
[INFO] k8s: [docker.io/rohankanojia/random-generator:0.0.1] "spring-boot": Vytvorený docker-build.tar za 251 milisekúnd
[INFO] k8s: [docker.io/rohankanojia/random-generator:0.0.1] "spring-boot": Vytvorený obraz sha256:a20e5
[INFO] ------------------------------------------------------------------------
[INFO] ÚSPORNÉ ZOSTAVENIE
[INFO] ------------------------------------------------------------------------
[INFO] Celkový čas: 5.053 s
[INFO] Dokončené: 2020-08-10T11:28:23+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $
Krok 3. Posielame obraz do docker registru
Akonáhle sme zostavili docker-obraz s nastaveným push registru (v našom prípade je to docker.io), môžeme tento obraz odoslať do registru. Toto sa zobrazí na obrazovke po tom, čo požiadame Eclipse JKube, aby vykonal push úlohu mvn k8s:push:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:push
[INFO] Skenovanie projektov...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Kompilovanie random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:push (default-cli) @ random-generator ---
[INFO] k8s: Beží v režime Kubernetes
[INFO] k8s: Skladanie Docker obrazu v režime Kubernetes
[INFO] k8s: Spúšťanie generátora spring-boot
[INFO] k8s: spring-boot: Používa Docker obraz quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 ako základ\/builder
[INFO] k8s: Push sa odkazuje na repozitár [docker.io\/rohankanojia\/random-generator]
5dcd9556710f: Vrstva už existuje
b7139ad07aa8: Vrstva už existuje
b6f081e4b2b6: Vrstva už existuje
d8e1f35641ac: Vrstva už existuje
[INFO] k8s: 0.0.1: digest: sha256:9f9eda2a13b8cab1d2c9e474248500145fc09e2922fe3735692f9bda4c76002d veľkosť: 1162
[INFO] k8s: Odošlané docker.io\/rohankanojia\/random-generator:0.0.1 za 7 sekúnd
[INFO] ------------------------------------------------------------------------
[INFO] VÝSTAVBA ÚSPEŠNÁ
[INFO] ------------------------------------------------------------------------
[INFO] Celkový čas: 11.222 s
[INFO] Dokončené dňa: 2020-08-10T11:35:37+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $
Po odoslaní obrazu musíme skontrolovať, že sa dostal do registru. V našom prípade ho jednoducho vidíme na Docker Hub, ako je znázornené na Obr. 4.

Obr. 4. Odoslaný obraz do registra sa objavil na Docker Hub.
Krok 4. Generujeme manifesty Kubernetes zdrojov pre aplikáciu
Takže, obraz aplikácie sme zostavili, teraz musíme napísať Kubernetes manifesty. Na tento účel má Eclipse JKube úlohu, ktorá generuje tvrdé manifesty zdrojov na základe podložného Java rámca (, , Vert.x alebo nejakého iného). Tiež je možné nastaviť manifest, pomocou konfiguračného XML súboru a umiestnením raw fragmentov (framenty požadovaného manifestu zdrojov) do priečinka aplikácie src\/main\/jkube. V takom prípade sa vaša konfigurácia načíta do vygenerovaných manifestov.
V našom príklade necháme všetko tak, ako je, a preto Eclipse JKube generuje manifest pre predvolené nasadenie a pre službu s typom ClusterIP. A potom už modifikujeme manifest služby, aby sme zmenili typ služby na NodePort. Predvolené správanie môžeme predefinovať pomocou nasledujúcej vlastnosti:
<jkube.enricher.jkube-service.type>NodePort<\/jkube.enricher.jkube-service.type>
Takto vyzerá výstup na obrazovke po tom, čo požiadame Eclipse JKube, aby vykonal úlohu resource mvn k8s:resource.
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:resource
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:resource (default-cli) @ random-generator ---
[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: jkube-controller: Adding a default Deployment
[INFO] k8s: jkube-service: Adding a default service 'random-generator' with ports [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: Adding readiness probe on port 8080, path='\/actuator\/health', scheme='HTTP', with initial delay 10 seconds
[INFO] k8s: jkube-healthcheck-spring-boot: Adding liveness probe on port 8080, path='\/actuator\/health', scheme='HTTP', with initial delay 180 seconds
[INFO] k8s: jkube-revision-history: Adding revision history limit to 2
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.344 s
[INFO] Finished at: 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 : $
Krok 5. Nasadenie aplikácie do klastru Kubernetes
Takže, všetko máme pripravené na nasadenie aplikácie: vygenerovali sme jej obraz a potom automaticky vytvorili manifesty zdrojov. Teraz stačí len to všetko aplikovať na klaster Kubernetes. Na nasadenie aplikácie môžeme samozrejme použiť príkaz kubectl apply -f, ale tento plugin to môže urobiť za nás. Tu je, čo sa zobrazí na obrazovke po tom, čo požiadame Eclipse JKube, aby vykonal úlohu apply príkazu mvn k8s:apply:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:apply
[INFO] Skanning projektov...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Budovanie random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] k8s: Používam Kubernetes na https://192.168.39.145:8443/ v namespace default s manifestom /home/rohaan/work/repos/eclipse-jkube-demo-project/target/classes/META-INF/jkube/kubernetes.yml
[INFO] k8s: Používam namespace: default
[INFO] k8s: Vytváram službu z kubernetes.yml namespace default s názvom random-generator
[INFO] k8s: Vytvorená služba: target/jkube/applyJson/default/service-random-generator.json
[INFO] k8s: Vytváram nasadenie z kubernetes.yml namespace default s názvom random-generator
[INFO] k8s: Vytvorené nasadenie: target/jkube/applyJson/default/deployment-random-generator.json
[INFO] k8s: TIP: Použite príkaz `kubectl get pods -w` na sledovanie štartu vašich podov
[INFO] ------------------------------------------------------------------------
[INFO] ÚSPEŠNÉ VYBUDOVANIE
[INFO] ------------------------------------------------------------------------
[INFO] Celkový čas: 7.306 s
[INFO] Skončilo: 2020-08-10T11:40:57+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get pods -w
NÁZOV PRIPRAVENÝ STAV REŠTARTY VEK
random-generator-58b7847d7f-9m9df 0\/1 Beží 0 7s
random-generator-58b7847d7f-9m9df 1\/1 Beží 0 17s
^C~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get svc
NÁZOV TYP CLUSTER-IP EXTERNAL-IP PORT(Y) VEK
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 .
% Celkom % Prijaté % Xferd Priemerná Rýchlosť Čas Čas Čas Aktuálne
Dload Upload Celkom Strávené Zostáva Rýchlosť
100 45 0 45 0 0 1800 0 --:--:-- --:--:-- --:--:-- 1875
{
"id": "42e5571f-a20f-44b3-8184-370356581d10"
}
Krok 6. Odvádzanie aplikácie z klastrov Kubernetes
Na to sa používa úloha undeploy, ktorá jednoducho odstráni všetky zdroje, ktoré boli použité v predchádzajúcom kroku, teda pri vykonávaní úlohy apply. Toto je to, čo uvidíme na obrazovke po tom, čo požiadame Eclipse JKube, aby vykonalo úlohu 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 : $
Čo ďalšie môžete robiť s Eclipse JKube
Takže sme si prešli základné úlohy Eclipse JKube a Kubernetes Maven Plugin, ktoré uľahčujú vývoj Java aplikácií pre platformu Kubernetes. Ak nechcete neustále zadávať tieto úlohy z klávesnice, môžete ich zapísať do konfigurácie pluginu, napríklad takto:
org.eclipse.jkube
kubernetes-maven-plugin
${project.version}
build
resource
apply
Musím povedať, že v tomto článku sme sa nezaoberali všetkými úlohami, ktoré sú k dispozícii v Eclipse JKube a Kubernetes Maven Plugin, preto uvádzame v Tab.2 zoznam ďalších úloh, ktoré sa vám môžu hodiť.
Tab. 2. Ďalšie úlohy pre Eclipse JKube.
Úloha
Fáza
Popis
VALIDATE
Získanie logov z aplikácie bežiacej na Kubernetes.
PACKAGE
Otvorenie ladacieho portu na vykonávanie ladenia aplikácie bežiacej na Kubernetes priamo z IDE.
INSTALL
Vytvorenie forku pre úlohu Install a uplatnenie vygenerovaných manifestov na klaster Kubernetes rovnako ako v prípade úlohy apply.
PACKAGE
Automatické horúce nasadenie aplikácie sledovaním jej menného priestoru.
Nasadenie Java aplikácií na Red Hat OpenShift pomocou OpenShift Maven Plugin.
Na nasadenie aplikácie z nášho príkladu na platforme Red Hat OpenShift použijeme plugin . Jediný rozdiel bude v tom, že prefix úloh sa zmení z k8s na oc. Predvolene plugin Kubernetes Maven vykonáva -kompilácie, zatiaľ čo plugin OpenShift Maven vykonáva kompilácie . Do nášho projektu nevykonávame žiadne zmeny, okrem odstránenia vlastnosti jkube.generator.name, pretože nie je potrebná pri zaslaní do registra (počas fázy kompilácie OpenShift umiestňuje obraz vo svojom vnútornom registri). A toto sa objaví na obrazovke, keď spustíme náš príklad, v ktorom, mimochodom, vykonávame ciele úloh nie po jednej, ale všetky naraz:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn oc:build oc:resource oc:apply
[INFO] Skenujem projekty...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Budovanie random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] oc: Používam OpenShift build so stratégiou S2I
[INFO] oc: Beží v režime OpenShift
[INFO] oc: Bežím generátor spring-boot
[INFO] oc: spring-boot: Používam Docker image quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 ako základ \/ builder
[INFO] oc: [random-generator:0.0.1] "spring-boot": Vytvorený docker zdrojový tar \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/docker\/random-generator\/0.0.1\/tmp\/docker-build.tar
[INFO] oc: Pridávam do Secret pullsecret-jkube
[INFO] oc: Používam Secret pullsecret-jkube
[INFO] oc: Vytváram BuildServiceConfig random-generator-s2i pre Source build
[INFO] oc: Vytváram ImageStream random-generator
[INFO] oc: Spúšťam Build random-generator-s2i
[INFO] oc: Čakám na dokončenie build random-generator-s2i-1...
[INFO] oc: Ukladaním blobov pod "\/var\/cache\/blobs".
[INFO] oc: Získavanie podpisov obrazov
[INFO] oc: Kopírovanie blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopírovanie blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopírovanie blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopírovanie config sha256:52d6788fcfdd39595264d34a3959464a5dabc1d4ef0ae188802b20fc2d6a857b
[INFO] oc: Písanie manifestu do umiestnenia obrazu
[INFO] oc: Ukladanie podpisov
[INFO] oc: Generovanie dockerfile s builder image quay.io\/jkube\/jkube-java-binary-s2i:0.0.7
[INFO] oc: KROK 1: Z QUIET quay.io\/jkube\/jkube-java-binary-s2i:0.0.7
[INFO] oc: KROK 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: KROK 3: ENV JAVA_APP_DIR="\/deployments" OPENSHIFT_BUILD_NAME="random-generator-s2i-1" OPENSHIFT_BUILD_NAMESPACE="default"
[INFO] oc: KROK 4: UŽÍVATEĽ root
[INFO] oc: KROK 5: KOPÍROVANIE upload\/src \/tmp\/src
[INFO] oc: KROK 6: RUN chown -R 1000:0 \/tmp\/src
[INFO] oc: KROK 7: UŽÍVATEĽ 1000
[INFO] oc: KROK 8: RUN \/usr\/local\/s2i\/assemble
[INFO] oc: INFO S2I zdrojový build s čistými binárkami detechtovaný
[INFO] oc: INFO S2I binárny build z fabric8-maven-plugin detechtovaný
[INFO] oc: INFO Kopírovanie bináriek z \/tmp\/src\/deployments do \/deployments ...
[INFO] oc: random-generator-0.0.1.jar
[INFO] oc: INFO Kopírovanie nasadení z deployments do \/deployments...
[INFO] oc: '\/tmp\/src\/deployments\/random-generator-0.0.1.jar' -> '\/deployments\/random-generator-0.0.1.jar'
[INFO] oc: KROK 9: CMD \/usr\/local\/s2i\/run
[INFO] oc: KROK 10: COMMIT temp.builder.openshift.io\/default\/random-generator-s2i-1:48795e41
[INFO] oc: time="2020-08-10T06:37:49Z" level=info msg="Nesúlad operačného systému obrazu: obraz používa "", očakáva "linux""
[INFO] oc: time="2020-08-10T06:37:49Z" level=info msg="Nesúlad architektúry obrazu: obraz používa "", očakáva "amd64""
[INFO] oc: Získavanie podpisov obrazov
[INFO] oc: Kopírovanie blob sha256:d8e1f35641acb80b562f70cf49911341dfbe8c86f4d522b18efbf3732aa74223
[INFO] oc: Kopírovanie blob sha256:b6f081e4b2b6de8be4b1dec132043d14c121e968384dd624fb69c2c07b482edb
[INFO] oc: Kopírovanie blob sha256:b7139ad07aa8ce4ed5a132f7c5cc9f1de0f5099b5e155027a23d57f7fbe78b16
[INFO] oc: Kopírovanie blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopírovanie config sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Písanie manifestu do umiestnenia obrazu
[INFO] oc: Ukladanie podpisov
[INFO] oc: --> 27aaadaf28e
[INFO] oc: 27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Získavanie podpisov obrazov
[INFO] oc:
[INFO] oc: Odosielanie obrazu image-registry.openshift-image-registry.svc:5000\/default\/random-generator:0.0.1 ...
[INFO] oc: Kopírovanie blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopírovanie blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopírovanie blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopírovanie blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopírovanie config sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Písanie manifestu do umiestnenia obrazu
[INFO] oc: Ukladanie podpisov
[INFO] oc: Úspešne odoslané image-registry.openshift-image-registry.svc:5000\/default\/random-generator@sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: Odoslanie úspešné
[INFO] oc: Build random-generator-s2i-1 má stav Kompletné
[INFO] oc: Nájdený tag na ImageStream random-generator tag: sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: ImageStream random-generator zapísaný do \/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: Používam názov docker image namespace: default
[INFO] oc: Bežím generátor spring-boot
[INFO] oc: spring-boot: Používam Docker image quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 ako základ \/ builder
[INFO] oc: jkube-controller: Pridávam predvolený DeploymentConfig
[INFO] oc: jkube-service: Pridávam predvolenú službu 'random-generator' s portami [8080]
[INFO] oc: jkube-healthcheck-spring-boot: Pridávam readiness probe na porte 8080, cesta='\/actuator\/health', schéma='HTTP', s počiatočným oneskorením 10 sekúnd
[INFO] oc: jkube-healthcheck-spring-boot: Pridávam liveness probe na porte 8080, cesta='\/actuator\/health', schéma='HTTP', s počiatočným oneskorením 180 sekúnd
[INFO] oc: jkube-revision-history: Pridávam obmedzenie histórie revízií na 2
[INFO]
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] oc: Používam OpenShift na https:\/\/api.crc.testing:6443\/ v namespace default s manifestom \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/classes\/META-INF\/jkube\/openshift.yml
[INFO] oc: Detekovaná platforma OpenShift
[INFO] oc: Používam projekt: default
[INFO] oc: Vytváram službu z openshift.yml namespace default názov random-generator
[INFO] oc: Vytvorená služba: target\/jkube\/applyJson\/default\/service-random-generator.json
[INFO] oc: Vytváram DeploymentConfig z openshift.yml namespace default názov random-generator
[INFO] oc: Vytvorená DeploymentConfig: target\/jkube\/applyJson\/default\/deploymentconfig-random-generator.json
[INFO] oc: Vytváram Route default:random-generator host: null
[INFO] oc: NÁPOVEDA: Použite príkaz `oc get pods -w` na sledovanie štartu vašich pods
[INFO] ------------------------------------------------------------------------
[INFO] ÚSPEŠNÉ NASADENIE
[INFO] ------------------------------------------------------------------------
[INFO] Celkový čas: 01:07 min
[INFO] Dokončené dňa: 2020-08-10T12:08:00+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ oc get pods -w
NAME READY STATUS RESTARTS AGE
random-generator-1-deploy 1\/1 Beží 0 14s
random-generator-1-vnrm9 0\/1 Beží 0 11s
random-generator-s2i-1-build 0\/1 Dokončené 0 1m
random-generator-1-vnrm9 1\/1 Beží 0 24s
random-generator-1-deploy 0\/1 Dokončené 0 28s
~\/work\/repos\/eclipse-jkube-demo-project : $ oc get routes
NAME HOST\/PORT PATH SERVICES PORT TERMINATION WILDCARD
random-generator random-generator-default.apps-crc.testing random-generator 8080 None
~\/work\/repos\/eclipse-jkube-demo-project : $ curl random-generator-default.apps-crc.testing\/random
% Celkový % Prijaté % Prenos Priemerná Rýchlosť Čas Čas Čas Aktuálne
Dload Upload Celkový Minulý Zostávajúci Rýchlosť
100 45 0 45 0 0 1666 0 --:--:-- --:--:-- --:--:-- 1730
{
"id": "d80052d9-2f92-43cb-b9eb-d7cffb879798"
}
~\/work\/repos\/eclipse-jkube-demo-project : $
Video návod
Ak sa chcete dozvedieť viac o tom, ako zjednodušiť vývoj Kubernetes pomocou Eclipse JKube, pozrite si video návod na rýchle nasadenie jednoduchého aplikácie Spring Boot na Minikube:

Záver
V tomto článku sme ukázali, ako Eclipse JKube uľahčuje život Java vývojárovi pri práci s Kubernetes. Ďalšie informácie o Eclipse JKube nájdete na a na .
Zdroj: habr.com
