Pred 25 rokmi sa Java dostala do rúk mnohých programátorov, aby sa napokon stala jedným z pilierov, okolo ktorého sa budujú aplikačné stacky. Dnes však mnohí ľudia a organizácie, ktoré roky verne používali Java, prechádzajú alebo uvažujú o prechode na platformu alebo jej deriváty, ako napríklad alebo .

Žiaľ, Kubernetes sa vyznačuje strmou učebnou krivkou a zavádza ďalšiu operačnú úroveň do procesov vývoja, na ktoré sú Java programátori zvyknutí. Dnes sa pozrieme, ako používať , aby sa zjednodušili dodatočné operácie spojené s Kubernetes a kontajnermi a zároveň zabezpečila bezbolestná migrácia na cloudovú platformu so zachovaním známej Java ekosystémy. Navyše vám ukážeme, ako nasadzovať 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 vývojár píše kód, potom vytvára jednotky nasadenia vo forme JAR alebo WAR súborov a následne nasádza a spúšťa tieto súbory na webovom serveri alebo serveri aplikácií. Na tento účel sa väčšinou 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í robiť zmeny v kóde a dôkladne všetko testovať predtým, ako kód potvrdiť a odoslať 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 uvedeného schémy pridáva Kubernetes a . Preto musí teraz vývojár zabaliť Java aplikácie do a vytvoriť Kubernetes manifesty, ktoré opisujú tieto obrazy. Tieto manifesty sa následne aplikujú na produkčný server, na ktorom beží Kubernetes. Kubernetes potom čerpá tieto obrazy z registru a nasadzuje aplikácie podľa konfigurácií, ktoré sme uviedli v manifestoch, ktoré zvyčajne predstavujú súbory YAML.
Metamorfóza tradičného procesu Java vývoja pri prechode do cloudu je znázornená na Obr. 2.

Obr. 2. Proces Java vývoja pre cloud.
Eclipse JKube
Prechod na Kubernetes pridáva ďalšiu operačnú vrstvu do procesu vývoja, a mnohých vývojárov to nervuje, 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á umožňuje vývojárom používať ich knižnice a pluginy ( spolu s alebo ), aby bez námahy vykonávali operácie spojené s kontajnermi a Kubernetes podľa schémy na Obr. 2.
V zvyšnej časti tohto článku ukážeme, ako zjednodušiť proces Java vývoja v prostredí Kubernetes pomocou Eclipse JKube s pluginom Kubernetes Maven Plugin.
Proces vývoja pre cloud s použitím Eclipse JKube
Pozrime sa na mierne upravenú schému Java vývoja pre cloud na Obr. 2, do ktorej zavedieme Eclipse JKube a Kubernetes Maven Plugin, ako je znázornené na Obr. 3.

Obr. 3. Proces Java vývoja pre cloud s použitím Eclipse JKube.
Ako vidíme, všetky operácie interakcie s Kubernetes a kontajnermi (v schéme zvýraznené červenou) sú nahradené predvolenými úlohami Eclipse JKube, ktoré sú uvedené v Tab. 1.
Tab. 1. Predvolené úlohy Eclipse JKube.
Úloha
Fáza
Popis
PRE_INTEGRATION_TEST
Zostavenie docker obrazov
INSTALL
Odoslanie docker obrazov do registru
PROCESS_RESOURCES
Generovanie manifestov K8s
COMPILE
Aplikovanie vygenerovaných manifestov na K8s
UNDEPLOY
Odstránenie K8s zdrojov, ktoré boli nasadené prostredníctvom k8s:apply a k8s:deploy.
Poznámka: Ak nechcete, aby úlohy používali tieto tvrdé predvoľby (opinionated defaults), môžete si manuálne nastaviť Eclipse JKube podľa seba, pretože podporuje konfiguráciu prostredníctvom a .
Teraz sa pozrime na príklady použitia Eclipse JKube a Kubernetes Maven Plugin pri práci s aplikáciami.
Nasadíme Java aplikáciu do Kubernetes pomocou Eclipse JKube.
V tomto príklade nasadíme jednoduchú Java aplikáciu do klastra s použitím Eclipse JKube. Použitím Kubernetes Maven Plugin môžeme zadať parametre nasadenia bez toho, aby sme museli vytvárať akúkoľvek konfiguráciu.
Ako príklad aplikácie použijeme , ktorý poskytuje JSON výstup na endpoint’e /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
{
"id": "e80a4d10-c79b-4b9a-aaac-7c286cb37f3c"
}
Krok 1. Nahrávame Kubernetes Maven Plugin
Kubernetes Maven Plugin sa nachádza v repozitári . Pre 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 namiesto čistého Kubernetes používate OpenShift, pom.xml sa upraví nasledovne:
org.eclipse.jkube
openshift-maven-plugin
${jkube.version}
Krok 2. Skladáme docker-obraz
JAR súbor aplikácie môže byť zložený príkazom mvn package, a následne môžeme použiť cieľovú úlohu mvn k8s:build na zloženie 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ž zložíme obraz, je potrebné zabezpečiť, aby bol docker démon správne exponovaný. To môžeme urobiť pomocou nasledujúceho príkazu:
$ eval $(minikube docker-env)
Následne zadáme príkaz mvn k8s:build, a toto uvidíme na obrazovke pri skladaní docker-obrazu pomocou build-úlohy Eclipse JKube:
~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:build
[INFO] Skenujem projekty...
[INFO]
[INFO] ---------------------------------------------
[INFO] Skladám random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] k8s: Spúšťam v Kubernetes móde
[INFO] k8s: Skladám Docker obraz v Kubernetes móde
[INFO] k8s: Spúšťam generátor spring-boot
[INFO] k8s: spring-boot: Používam 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": Vytvoril docker-build.tar za 251 milisekúnd
[INFO] k8s: [docker.io/rohankanojia/random-generator:0.0.1] "spring-boot": Složený obraz sha256:a20e5
[INFO] ------------------------------------------------------------------------
[INFO] VÝROBA ÚSPEŠNÁ
[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. Odosielame obraz do docker registra
Po tom, čo sme zložili docker-obraz pri nastavenom push registri (v našom prípade to je docker.io), môžeme odosielať tento obraz do registru. Toto sa vypíše 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] Skenerovanie projektov...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Skladanie 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: Bežím generátor spring-boot
[INFO] k8s: spring-boot: Používam Docker obraz quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 ako základný\/builder
[INFO] k8s: Odoslanie sa týka repozitára [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: súhrn: sha256:9f9eda2a13b8cab1d2c9e474248500145fc09e2922fe3735692f9bda4c76002d veľkosť: 1162
[INFO] k8s: Odoslané docker.io\/rohankanojia\/random-generator:0.0.1 za 7 sekúnd
[INFO] ------------------------------------------------------------------------
[INFO] ÚSPĚŠNÁ VÝSTAVBA
[INFO] ------------------------------------------------------------------------
[INFO] Celkový čas: 11.222 s
[INFO] Dokončené o: 2020-08-10T11:35:37+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $
Po odoslaní obrazu je potrebné skontrolovať, či sa dostal do registra. V našom prípade ho jednoducho vidíme na Docker Hub, ako je znázornené na Obr. 4.

Obr. 4. Odoslaný obraz sa objavil na Docker Hub.
Krok 4. Generovanie manifestov Kubernetes zdrojov pre aplikáciu
Takže sme zložili obraz aplikácie, teraz treba napísať manifesty Kubernetes. Na to má Eclipse JKube úlohu, ktorá generuje statické manifesty zdrojov, vychádzajúc z podkladového Java rámca (, , Vert.x alebo iný). Tiež je možné nastaviť manifest pomocou konfiguračného XML súboru a umiestniť raw-fragmenty (fragmenty 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 generovaných manifestov.
V našom príklade nechávame všetko tak, ako je, a preto Eclipse JKube generuje manifest pre predvolené nasadenie a pre službu s typom ClusterIP. A potom modifikujeme manifest služby, aby sme zmenili typ služby na NodePort. Predvolené správanie možno 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] Skenujem projekty...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Staviam random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:resource (default-cli) @ random-generator ---
[INFO] k8s: Spúšťam generátor spring-boot
[INFO] k8s: spring-boot: Používam Docker image quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 ako základ / builder
[INFO] k8s: jkube-controller: Pridávam predvolenú Deployment
[INFO] k8s: jkube-service: Pridávam predvolenú službu 'random-generator' s portami [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: Pridávam záťažový test na porte 8080, cesta='\/actuator\/health', schéma='HTTP', s počiatočným oneskorením 10 sekúnd
[INFO] k8s: jkube-healthcheck-spring-boot: Pridávam životnosťový test na porte 8080, cesta='\/actuator\/health', schéma='HTTP', s počiatočným oneskorením 180 sekúnd
[INFO] k8s: jkube-revision-history: Pridávam limit histórie revízií na 2
[INFO] ------------------------------------------------------------------------
[INFO] ÚSPEŠNÁ VÝSTAVBA
[INFO] ------------------------------------------------------------------------
[INFO] Celkový čas: 3.344 s
[INFO] Dokončené o: 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. Nasadzujeme aplikáciu v klasteri Kubernetes
Takže máme všetko pripravené na nasadenie aplikácie: vygenerovali sme jej obraz a následne automaticky vygenerovali manifesty zdrojov. Teraz stačí všetko aplikovať do klastera 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. Požiadame Eclipse JKube, aby vykonal úlohu apply mvn k8s:apply a toto bude na obrazovke:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:apply
[INFO] Skenujem projekty...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Sestavovanie 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žívanie 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žívanie namespace: default
[INFO] k8s: Vytváranie služby z kubernetes.yml namespace default názov random-generator
[INFO] k8s: Vytvorená služba: target\/jkube\/applyJson\/default\/service-random-generator.json
[INFO] k8s: Vytváranie nasadenia z kubernetes.yml namespace default názov random-generator
[INFO] k8s: Vytvorené nasadenie: target\/jkube\/applyJson\/default\/deployment-random-generator.json
[INFO] k8s: NÁVOD: Použite príkaz `kubectl get pods -w` na sledovanie štartu vašich podov
[INFO] ------------------------------------------------------------------------
[INFO] VÝSTAVBA ÚSPEŠNÁ
[INFO] ------------------------------------------------------------------------
[INFO] Celkový čas: 7.306 s
[INFO] Dokončené o: 2020-08-10T11:40:57+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get pods -w
NÁZOV READY STATUS RESTARTS AGE
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 KLUSTER-IP EXTERNÝ-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 .
% Celkový % Prijatý % Prenesený Priemerná Rýchlosť Čas Čas Čas Aktuálny
Dload Upload Celkový Strávený Zostávajúci Rýchlosť
100 45 0 45 0 0 1800 0 --:--:-- --:--:-- --:--:-- 1875
{
"id": "42e5571f-a20f-44b3-8184-370356581d10"
}
Krok 6. Odstraňujeme aplikáciu z klastrov Kubernetes
Na to sa používa úloha undeploy, ktorá jednoducho odstraňuje všetky zdroje, ktoré boli aplikované 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 o vykonanie úlohy 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 sa dá urobiť s Eclipse JKube
Takže sme sa pozreli na hlavné ú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 si 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 nezohľadnili všetky úlohy, ktoré sú v Eclipse JKube a Kubernetes Maven Plugin, preto uvádzame v Tab.2 zoznam ďalších úloh, ktoré vám môžu byť užitočné.
Tab. 2. Ďalšie úlohy Eclipse JKube.
Úloha
Fáza
Popis
VALIDOVAŤ
Získavanie logov z aplikácie, ktorá beží na Kubernetes.
BALÍK
Otvorenie ladenia portu na vykonávanie ladenia aplikácie bežiacej na Kubernetes priamo z IDE.
INSTALL
Vytvorenie forku pre úlohu Install a aplikovanie vygenerovaných manifestov na cluster Kubernetes presne tak, ako v prípade úlohy apply.
BALÍK
Automatické horúce nasadenie aplikácie prostredníctvom sledovania 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 -buildy, zatiaľ čo plugin OpenShift Maven robí buildy . Do nášho projektu nevkladáme žiadne zmeny, okrem odstránenia vlastnosti jkube.generator.name, pretože nie je potrebná pri odosielaní do registra (v štádiu zostavovania OpenShift umiestňuje obraz vo svojom vnútornom registri). A toto je to, čo sa objaví na obrazovke, keď spustíme náš príklad, v ktorom mimochodom vykonávame úlohy goal nie po jednej, ale všetky naraz:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn oc:build oc:resource oc:apply
[INFO] Skanning projekt...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Kompilovanie 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žívanie OpenShift build so stratégiou S2I
[INFO] oc: Beží v režime OpenShift
[INFO] oc: Beží generátor spring-boot
[INFO] oc: spring-boot: Používanie Docker image quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 ako základný\/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 tajnej databázy pullsecret-jkube
[INFO] oc: Používanie tajnej databázy 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: Ukladanie blobov pod "\/var\/cache\/blobs".
[INFO] oc: Získavanie podpisov zdroja obrázku
[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 cieľového obrázku
[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 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: USER root
[INFO] oc: KROK 5: COPY upload\/src \/tmp\/src
[INFO] oc: KROK 6: RUN chown -R 1000:0 \/tmp\/src
[INFO] oc: KROK 7: USER 1000
[INFO] oc: KROK 8: RUN \/usr\/local\/s2i\/assemble
[INFO] oc: INFO S2I zdrojový build s obyčajnými binárkami zistený
[INFO] oc: INFO S2I binárny build z fabric8-maven-plugin zistený
[INFO] oc: INFO Kopírovanie binárok 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: čas="2020-08-10T06:37:49Z" level=info msg="Nesúlad operačného systému obrázku: obrázok používa "", očakávanie "linux""
[INFO] oc: čas="2020-08-10T06:37:49Z" level=info msg="Nesúlad architektúry obrázku: obrázok používa "", očakávanie "amd64""
[INFO] oc: Získavanie podpisov zdroja obrázku
[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 cieľového obrázku
[INFO] oc: Ukladanie podpisov
[INFO] oc: --> 27aaadaf28e
[INFO] oc: 27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Získavanie podpisov zdroja obrázku
[INFO] oc:
[INFO] oc: Pushing image 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 cieľového obrázku
[INFO] oc: Ukladanie podpisov
[INFO] oc: Úspešne vytlačené image-registry.openshift-image-registry.svc:5000\/default\/random-generator@sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: Push úspešný
[INFO] oc: Build random-generator-s2i-1 v stave Complete
[INFO] oc: Nájdená značka na ImageStream random-generator značka: 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žívanie názvu docker image z názvového priestoru: default
[INFO] oc: Beží generátor spring-boot
[INFO] oc: spring-boot: Používanie Docker image quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 ako základný\/builder
[INFO] oc: jkube-controller: Pridávanie predvolenej DeploymentConfig
[INFO] oc: jkube-service: Pridávanie predvoľby služby 'random-generator' s portami [8080]
[INFO] oc: jkube-healthcheck-spring-boot: Pridávanie 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ávanie 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ávanie limitu revíznej histórie na 2
[INFO]
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] oc: Používanie OpenShift na https:\/\/api.crc.testing:6443\/ v názvovom priestore 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žívanie projektu: default
[INFO] oc: Vytváranie služby z openshift.yml názvor default názov random-generator
[INFO] oc: Vytvorená služba: target\/jkube\/applyJson\/default\/service-random-generator.json
[INFO] oc: Vytváranie DeploymentConfig z openshift.yml názvor default názov random-generator
[INFO] oc: Vytvorená DeploymentConfig: target\/jkube\/applyJson\/default\/deploymentconfig-random-generator.json
[INFO] oc: Vytváranie Route default:random-generator host: null
[INFO] oc: NÁVOD: Použite príkaz `oc get pods -w` na sledovanie spustenia vašich pods
[INFO] ------------------------------------------------------------------------
[INFO] VYBUDOVANIE USPELO
[INFO] ------------------------------------------------------------------------
[INFO] Celkový čas: 01:07 min
[INFO] Dokončené v: 2020-08-10T12:08:00+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ oc get pods -w
NÁZOV 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
NÁZOV HOST\/PORT CESTA SLUŽBY PORT TERMINÁCIA 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é % Xferd Priemerná Rýchlosť Čas Čas Čas Aktuálny
Dload Upload Celkom Strávené Ľavý Rýchlosť
100 45 0 45 0 0 1666 0 --:--:-- --:--:-- --:--:-- 1730
{
"id": "d80052d9-2f92-43cb-b9eb-d7cffb879798"
}
~\/work\/repos\/eclipse-jkube-demo-project : $
Video tutorial
Ak chcete zistiť viac o tom, ako zjednodušiť vývoj Kubernetes pomocou Eclipse JKube, pozrite si video tutorial o rýchlom nasadení 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árom pri práci s Kubernetes. Ďalšie informácie o Eclipse JKube nájdete na a na .
Zdroj: habr.com
