25 aastat tagasi käivitus Java laiemasse programmeerijate ringi, et lõpuks saada üheks nendest aluspinkidest, mille ümber rakenduste tehnoloogiad ehitatakse. Siiski on paljud inimesed ja organisatsioonid, kes on aastaid Java'le truud püsinud, nüüd hõivatud üleminekuga või mõtlemas üleminekule platvormile või selle variante, nagu või .

Kahjuks on Kubernetesil järsk õpikõver ja see toob tuttavasse Java arendajate arendusprotsessi veel ühe operatiivse taseme. Täna räägime, kuidas kasutada , et lihtsustada neid Kubernetesega ja konteineritega seotud lisategevusi ning tagada sujuv üleminek pilveplatvormile, säilitades Java tuttava ökosüsteemi. Veelgi enam, näitame, kuidas juurutada Java rakendusi OpenShift platvormil OpenShift Maven pluginaga.
Traditsiooniline Java arendamisprotsess
Traditsiooniline arendusprotsess (Joon. 1) tähendab, et arendaja kirjutab koodi, seejärel loob ta rakendusteüksused JAR- või WAR-failidena ning seejärel paigaldab ja käivitab need failid veebiserveris või rakenduste serveris. Peamiselt kasutatakse selleks kas Mavenit käsurida kaudu või IDE-d, nagu IntelliJ või Eclipse, et rakendusi kodeerida ja pakendada. Arendajad on harjunud koodis muudatusi tegema ja kõike hoolikalt testima, enne kui nad koodi fikseerivad ja saadavad selle versioonihaldussüsteemi.

Joon. 1. Traditsiooniline Java-arenduse protsess.
Java arendamise protsess pilves
Pilvepõhiste rakenduste üleminekul lisatakse ülaltoodud skeemile Kubernetes ja . Seetõttu peab arendaja nüüd Java-rakendused pakendama ja looma Kubernetes'e manifestid, mis kirjeldavad neid pilte. Seejärel rakendatakse need manifestid tootmisserverile, kus Kubernetes töötab. Omakorda võtab Kubernetes need pildid registrist ja paigaldab rakendused vastavalt nendele konfiguratsioonidele, mille oleme manifestides kirjeldanud, mis on tavaliselt YAML-failid.
Traditsioonilise Java-arenduse protsessi metamorfosis pilveülemineku ajal on näidatud joonisel 2.

Joonis 2. Java-arengu protsess pilve jaoks.
Eclipse JKube
Üleminek Kubernetes'ile lisab arendusprotsessile veel ühe operatiivtasandi, mis tekitab paljudes arendajates muret, kuna nad tahavad keskenduda oma põhitegevusele – rakenduste loogikale – mitte sellele, kuidas neid käivitada. Siin tuleb mängu , mis võimaldab arendajatel kasutada oma teeke ja pluginaid ( (autoriseerimiskoodiga). või ), et teha konteinerite ja Kubernetes'ega seotud ülesandeid hõlpsalt, järgides joonisel 2 esitatud skeemi.
Artikli ülejäänud osas näitame, kuidas muuta Java-arenduse protsess Kubernetes'i keskkonnas lihtsamaks, kasutades Eclipse JKube'i koos Kubernetes Maven Plugin'iga.
Arendusprotsess pilve jaoks, kasutades Eclipse JKube'i
Vaatame veidi muudetud Java-arenduse skeemi pilve jaoks joonisel 2, lisades sinna Eclipse JKube'i ja Kubernetes Maven Plugin'i, nagu on näidatud joonisel 3.

Joonis 3. Java-arenduse protsess pilve jaoks, kasutades Eclipse JKube'i.
Nagu me näeme, asendatakse siin kõik Kubernetes'i ja konteineritega seotud toimingud (skeemis on need punaselt esile tõstetud) Eclipse JKube vaike-eesmärkide, mis on loetletud Tabelis 1, poolt.
Tabel 1. Eclipse JKube vaikimisi ülesanded.
Ülesanne
Etapp
Kirjeldus
PRE_INTEGRATION_TEST
Docker-piltide koostamine
INSTALL
Docker-piltide saatmine registrisse
PROCESS_RESOURCES
K8s manifestide genereerimine
COMPILE
Genereeritud manifestide rakendamine K8s-ile
UNDEPLOY
K8s ressursside eemaldamine, mis on juurutatud k8s:apply ja k8s:deploy kaudu
Märkus: Kui te ei soovi, et ülesanded kasutaksid neid jäigid vaikeväärtusi (opinionated defaults), siis saate Eclipse JKube'i enda vajadustele käsitsi kohandada, sest ta toetab seadistamist läbi ja .
Nüüd vaatame näiteid Eclipse JKube ja Kubernetes Maven Plugin'i kasutamisest rakendustega.
Juurutame Java rakenduse Kubernetes'is Eclipse JKube'i abil
Selles näites juurutame lihtsa Java rakenduse klastris Eclipse JKube'i abil. Kasutades Kubernetes Maven Plugin'it, saame määrata juurutamise parameetrid ilma, et peaksime mingeid konfiguratsioone kirjutama.
Näidisrakenduseks on meil , mis tõukab JSON-väljundi endpoint'il /random:
~/work/repos/eclipse-jkube-demo-project : $ curl localhost:8080/random | jq .
% Kogu % Saadud % Edastus Keskmine Kiirus Aeg Aeg Aeg Praegune
Laadimine Üleslaadimine Kogu Veedetud Jäänud Kiirus
100 45 0 45 0 0 818 0 --:--:-- --:--:-- --:--:-- 818
{
"id": "e80a4d10-c79b-4b9a-aaac-7c286cb37f3c"
}
Samm 1. Laadige alla Kubernetes Maven Plugin
Kubernetes Maven Plugin asub hoidlas . Eclipse JKube'i kasutamiseks tuleb lisada Kubernetes Maven Plugin oma pom.xml-s sõltuvuseks:
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
Kui puhta Kubernetes'i asemel kasutatakse OpenShifti, muudetakse pom.xml järgmiselt:
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>openshift-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
Samm 2. Koguge docker-pilt
Rakenduse JAR-faili saab koguda käsuga mvn package, seejärel saab kasutada eesmärki mvn k8s:build, et koguda selle rakenduse docker-pilt. Pange tähele, et oleme muutnud vaikepildi nime järgmise atribuudi abil:
<jkube.generator.name>docker.io/rohankanojia/random-generator:${project.version}</jkube.generator.name>
Enne pildi koostamist tuleb veenduda, et docker-daemon on korrektsetelt eksponeeritud. Selleks saab kasutada järgmist käsku:
$ eval $(minikube docker-env)
Seejärel sisestame käsu mvn k8s:build ja siin on, mida näeme ekraanil docker-pildi koostamisel Eclipse JKube build-ülesande abil:
~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:build
[INFO] Projekti otsimine...
[INFO]
[INFO] ---------------------------------------------
[INFO] Koostatakse random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] k8s: Käivitatakse Kubernetes režiimis
[INFO] k8s: Koostatakse Docker-pilti Kubernetes režiimis
[INFO] k8s: Käivitatakse generaator spring-boot
[INFO] k8s: spring-boot: Kasutatakse Docker-pilti quay.io/jkube/jkube-java-binary-s2i:0.0.7 baasina / genereerijana
[INFO] k8s: [docker.io/rohankanojia/random-generator:0.0.1] "spring-boot": Loodi docker-build.tar 251 millisekundi jooksul
[INFO] k8s: [docker.io/rohankanojia/random-generator:0.0.1] "spring-boot": Pildi sha256:a20e5
[INFO] ------------------------------------------------------------------------
[INFO] KOOSTAMINE ÕNNESTUS
[INFO] ------------------------------------------------------------------------
[INFO] Kogu aeg: 5.053 s
[INFO] Lõpetatud kell: 2020-08-10T11:28:23+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $
Samm 3. Toimetame pildi docker registrisse
Pärast docker-pildi koostamist seadistatud push-repositooriumiga (meie juhul docker.io) saame selle pildi repositooriumisse saata. Siin on, mida kuvatakse ekraanile, kui palume Eclipse JKube'il push-ülesannet mvn k8s:push täita:
/work/repos/eclipse-jkube-demo-project : $ mvn k8s:push
[INFO] Otsitakse projekte...
[INFO]
[INFO] ---------------------------------------------
[INFO] Koostatakse random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:push (default-cli) @ random-generator ---
[INFO] k8s: Käitatakse Kubernetes'i režiimis
[INFO] k8s: Docker pildi loomine Kubernetes'i režiimis
[INFO] k8s: Käitatakse generaatorit spring-boot
[INFO] k8s: spring-boot: Kasutatakse Docker pildi quay.io/jkube/jkube-java-binary-s2i:0.0.7 aluseks / ehitajana
[INFO] k8s: Push viitab repositooriumile [docker.io/rohankanojia/random-generator]
5dcd9556710f: Kiht eksisteerib juba
b7139ad07aa8: Kiht eksisteerib juba
b6f081e4b2b6: Kiht eksisteerib juba
d8e1f35641ac: Kiht eksisteerib juba
[INFO] k8s: 0.0.1: digest: sha256:9f9eda2a13b8cab1d2c9e474248500145fc09e2922fe3735692f9bda4c76002d suurus: 1162
[INFO] k8s: Pildid saadetud docker.io/rohankanojia/random-generator:0.0.1 7 sekundi jooksul
[INFO] ------------------------------------------------------------------------
[INFO] EHITUS ÕNNESTUS
[INFO] ------------------------------------------------------------------------
[INFO] Kokkuvõttes: 11.222 s
[INFO] Lõpetatud: 2020-08-10T11:35:37+05:30
[INFO] ------------------------------------------------------------------------
/work/repos/eclipse-jkube-demo-project : $
Pärast pildi üleslaadimist tuleb kontrollida, kas see on registrisse jõudnud. Meie juhul näeme lihtsalt, et see on Docker Hubis, nagu on näidatud joonisel 4.

Joonis 4. Registrisse üles laaditud pilt on ilmunud Docker Hubi.
Samm 4. Loome Kubernetesi ressursside manifestid rakendusele
Nii et me oleme rakenduse pildi kokku pannud, nüüd tuleb kirjutada Kubernetes manifestid. Selleks on Eclipse JKube'is ülesanne, mis genereerib kindlad ressursi manifestid, toetudes aluseks olevale Java raamistiku (, , Vert.x või mõne muu). Samuti saab manifesti konfigureerida, kasutades konfiguratsioonifaili XML ja asetades raw-fragmentid (vajalike ressursi manifestide fragmendid) rakenduse kausta src/main/jkube. Sellisel juhul laaditakse teie konfiguratsioon genereeritud manifestidesse.
Meie näites jätame kõik nii nagu on, ja seepärast genereerib Eclipse JKube manifesti vaikepaigaldamiseks ja teenusele, mille tüüp on ClusterIP. Ja seejärel muudame teenuse manifesti, et muuta teenuse tüüp NodePort'iks. Vaikeste käitumise üle määramine on võimalik järgmise omaduse abil:
NodePort
Nii näeb välja ekraaniväljund pärast seda, kui palume Eclipse JKube'l täita resource-ülesanne mvn k8s:resource.
~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:resource
[INFO] Projekti otsimine...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Ehitamine random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:resource (default-cli) @ random-generator ---
[INFO] k8s: Käitamine generaatoreid spring-boot
[INFO] k8s: spring-boot: Kasutatakse Docker'i pilti quay.io/jkube/jkube-java-binary-s2i:0.0.7 alusena / ehitamiseks
[INFO] k8s: jkube-controller: Lisatakse vaikimisi juurutus
[INFO] k8s: jkube-service: Lisatakse vaikimisi teenus 'random-generator' portidega [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: Lisatakse valmisoleku kontroll porti 8080, tee='/actuator/health', skeem='HTTP', esimese viivitusega 10 sekundit
[INFO] k8s: jkube-healthcheck-spring-boot: Lisatakse elavuse kontroll porti 8080, tee='/actuator/health', skeem='HTTP', esimese viivitusega 180 sekundit
[INFO] k8s: jkube-revision-history: Lisatakse revideerimise ajaloosa piir 2
[INFO] ------------------------------------------------------------------------
[INFO] EHITAMINE ÕNNESTUS
[INFO] ------------------------------------------------------------------------
[INFO] Kokku kulunud aeg: 3.344 s
[INFO] Lõpetatud: 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 : $
Samm 5. Rakenduse juurutamine Kubernetes klastris
Nii, meil on kõik valmis rakenduse juurutamiseks: oleme genereerinud selle pildi ja seejärel automaatselt genereerinud ressursi manifestid. Nüüd jääb vaid kõik see Kubernetes klastrisse rakendada. Rakenduse juurutamiseks võime loomulikult kasutada käsku kubectl apply -f, kuid lisandmoodul suudab selle meie eest ka teha. Siin on, mis ekraanil kuvatakse pärast seda, kui palume Eclipse JKube'il täita apply-ülesanne mvn k8s:apply:
~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:apply
[INFO] Projektide skaneerimine...
[INFO]
[INFO] ---------------------------------------------
[INFO] Ehitus random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] k8s: Kasutatakse Kubernetes'i aadressil https://192.168.39.145:8443/ vaikimisi nimetaotluses
[INFO] k8s: Kasutatakse nimetaotlust: vaikimisi
[INFO] k8s: Teenuse loomine kubernetes.yml failist vaikimisi nimetaotlusele nimega random-generator
[INFO] k8s: Teenus loodud: target/jkube/applyJson/default/service-random-generator.json
[INFO] k8s: Rakenduse loomine kubernetes.yml failist vaikimisi nimetaotlusele nimega random-generator
[INFO] k8s: Rakendus loodud: target/jkube/applyJson/default/deployment-random-generator.json
[INFO] k8s: NIPP: Kasutage käsku `kubectl get pods -w`, et jälgida oma konteinerite käivitumist
[INFO] ------------------------------------------------------------------------
[INFO] EHIITUS EDASTAMINE
[INFO] ------------------------------------------------------------------------
[INFO] Kogu aeg: 7.306 s
[INFO] Lõpetatud: 2020-08-10T11:40:57+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $ kubectl get pods -w
NIMI VALMIS OLEK UUENDUSED VANUS
random-generator-58b7847d7f-9m9df 0/1 Käimas 0 7s
random-generator-58b7847d7f-9m9df 1/1 Käimas 0 17s
^C~/work/repos/eclipse-jkube-demo-project : $ kubectl get svc
NIMI Tüüp KLASSE-VEEB VÄLIS-VEES PORT(ID) VANUS
io-openliberty-sample-getting-started NodePort 10.110.4.104 9080:30570/TCP 44h
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 .
% Kogus % Vastuvõetud % Edastus Keskmine Kiirus Aeg Aeg Aeg Praegune
Laadimine Üleslaadimine Kogu Mölgunud Jäänud Kiirus
100 45 0 45 0 0 1800 0 --:--:-- --:--:-- --:--:-- 1875
{
"id": "42e5571f-a20f-44b3-8184-370356581d10"
}
Samm 6. Käitame rakenduse undeploy Kubernetes klastrist
Selleks kasutatakse undeploy ülesannet, mis lihtsalt kustutab kõik ressursid, mis olid rakendatud eelmises etapis, st ülesande apply täitmisel. Siin on, mida me näeme ekraanil pärast seda, kui palume Eclipse JKube'l teostada undeploy ülesanne 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 : $
Millised on muud võimalused Eclipse JKube'iga?
Nii oleme vaadanud põhieesmärke, mis on seotud Eclipse JKube ja Kubernetes Maven Plugin'iga, mis lihtsustavad Java-rakenduste arendamist Kubernetes platvormil. Kui te ei soovi neid ülesandeid pidevalt klaviatuurilt sisestada, saate need pluginak konfiguratsioonis näiteks niimoodi kirja panna:
org.eclipse.jkube
kubernetes-maven-plugin
${project.version}
build
resource
apply
Peab ütlema, et selles artiklis oleme vaadanud kaugel ei ole kõiki eesmärke, mis on seotud Eclipse JKube ja Kubernetes Maven Plugin'iga, seetõttu toome tabelis 2 välja loetelu lisauppestest, mis võivad samuti kasulikud olla.
Tabel 2. Täiendavad eesmärgid Eclipse JKube'ile.
Ülesanne
Etapp
Kirjeldus
VALIDATE
Rakenduse logide hankimine, mis töötab Kubernetesel.
PACKAGE
Silumisporti avamine, et lubada rakenduse silumist, mis töötab Kubernetesel, otse IDE-st.
INSTALL
Install-ülesande forki loomine ja genereeritud manifestide rakendamine Kubernetes klastrisse täpselt nagu apply-ülesande korral.
PACKAGE
Rakenduse automaatne kuumad jaotamine selle nimede ruumi jälgimise kaudu.
Java rakenduste jaotamine Red Hat OpenShiftis OpenShift Maven plugina abil
Kasutades meie näide rakenduse jaotamiseks Red Hat OpenShift platvormil, rakendame plugina . Ainus erinevus on see, et ülesannete prefiks muutub k8s-elt oc-ks. Vaikimisi teeb Kubernetes Maven plugin -koostamisi, samas kui OpenShift Maven plugin teeb -koostamisi. . Me ei tee meie projekti mingisuguseid muudatusi, välja arvatud jkube.generator.name omaduse eemaldamine, kuna see ei ole vajalik registrisse saatmisel (OpenShifti ehitusetapis paigutab see pildi oma sisemisse registrisse). Ja nii näeb meie näidis välja, kui käivitame selle, kus muide täidame goal-ülesandeid mitte ühe kaupa, vaid kõik korraga:
~/work/repos/eclipse-jkube-demo-project : $ mvn oc:build oc:resource oc:apply
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] oc: Using OpenShift build with strategy S2I
[INFO] oc: Running in OpenShift mode
[INFO] oc: Running generator spring-boot
[INFO] oc: spring-boot: Using Docker image quay.io/jkube/jkube-java-binary-s2i:0.0.7 as base / builder
[INFO] oc: [random-generator:0.0.1] "spring-boot": Created docker source tar /home/rohaan/work/repos/eclipse-jkube-demo-project/target/docker/random-generator/0.0.1/tmp/docker-build.tar
[INFO] oc: Adding to Secret pullsecret-jkube
[INFO] oc: Using Secret pullsecret-jkube
[INFO] oc: Creating BuildServiceConfig random-generator-s2i for Source build
[INFO] oc: Creating ImageStream random-generator
[INFO] oc: Starting Build random-generator-s2i
[INFO] oc: Waiting for build random-generator-s2i-1 to complete...
[INFO] oc: Caching blobs under "/var/cache/blobs".
[INFO] oc: Getting image source signatures
[INFO] oc: Copying blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Copying blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Copying blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Copying config sha256:52d6788fcfdd39595264d34a3959464a5dabc1d4ef0ae188802b20fc2d6a857b
[INFO] oc: Writing manifest to image destination
[INFO] oc: Storing signatures
[INFO] oc: Generating dockerfile with builder image quay.io/jkube/jkube-java-binary-s2i:0.0.7
[INFO] oc: STEP 1: FROM quay.io/jkube/jkube-java-binary-s2i:0.0.7
[INFO] oc: STEP 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: STEP 3: ENV JAVA_APP_DIR="/deployments" OPENSHIFT_BUILD_NAME="random-generator-s2i-1" OPENSHIFT_BUILD_NAMESPACE="default"
[INFO] oc: STEP 4: USER root
[INFO] oc: STEP 5: COPY upload/src /tmp/src
[INFO] oc: STEP 6: RUN chown -R 1000:0 /tmp/src
[INFO] oc: STEP 7: USER 1000
[INFO] oc: STEP 8: RUN /usr/local/s2i/assemble
[INFO] oc: INFO S2I source build with plain binaries detected
[INFO] oc: INFO S2I binary build from fabric8-maven-plugin detected
[INFO] oc: INFO Copying binaries from /tmp/src/deployments to /deployments ...
[INFO] oc: random-generator-0.0.1.jar
[INFO] oc: INFO Copying deployments from deployments to /deployments...
[INFO] oc: '/tmp/src/deployments/random-generator-0.0.1.jar' -> '/deployments/random-generator-0.0.1.jar'
[INFO] oc: STEP 9: CMD /usr/local/s2i/run
[INFO] oc: STEP 10: COMMIT temp.builder.openshift.io/default/random-generator-s2i-1:48795e41
[INFO] oc: time="2020-08-10T06:37:49Z" level=info msg="Image operating system mismatch: image uses "", expecting "linux""
[INFO] oc: time="2020-08-10T06:37:49Z" level=info msg="Image architecture mismatch: image uses "", expecting "amd64""
[INFO] oc: Getting image source signatures
[INFO] oc: Copying blob sha256:d8e1f35641acb80b562f70cf49911341dfbe8c86f4d522b18efbf3732aa74223
[INFO] oc: Copying blob sha256:b6f081e4b2b6de8be4b1dec132043d14c121e968384dd624fb69c2c07b482edb
[INFO] oc: Copying blob sha256:b7139ad07aa8ce4ed5a132f7c5cc9f1de0f5099b5e155027a23d57f7fbe78b16
[INFO] oc: Copying blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Copying config sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Writing manifest to image destination
[INFO] oc: Storing signatures
[INFO] oc: --> 27aaadaf28e
[INFO] oc: 27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Getting image source signatures
[INFO] oc:
[INFO] oc: Pushing image image-registry.openshift-image-registry.svc:5000/default/random-generator:0.0.1 ...
[INFO] oc: Copying blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Copying blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Copying blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Copying blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Copying config sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Writing manifest to image destination
[INFO] oc: Storing signatures
[INFO] oc: Successfully pushed image-registry.openshift-image-registry.svc:5000/default/random-generator@sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: Push successful
[INFO] oc: Build random-generator-s2i-1 in status Complete
[INFO] oc: Found tag on ImageStream random-generator tag: sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: ImageStream random-generator written to /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: Using docker image name of namespace: default
[INFO] oc: Running generator spring-boot
[INFO] oc: spring-boot: Using Docker image quay.io/jkube/jkube-java-binary-s2i:0.0.7 as base / builder
[INFO] oc: jkube-controller: Adding a default DeploymentConfig
[INFO] oc: jkube-service: Adding a default service 'random-generator' with ports [8080]
[INFO] oc: jkube-healthcheck-spring-boot: Adding readiness probe on port 8080, path='/actuator/health', scheme='HTTP', with initial delay 10 seconds
[INFO] oc: jkube-healthcheck-spring-boot: Adding liveness probe on port 8080, path='/actuator/health', scheme='HTTP', with initial delay 180 seconds
[INFO] oc: jkube-revision-history: Adding revision history limit to 2
[INFO]
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] oc: Using OpenShift at https://api.crc.testing:6443/ in namespace default with manifest /home/rohaan/work/repos/eclipse-jkube-demo-project/target/classes/META-INF/jkube/openshift.yml
[INFO] oc: OpenShift platform detected
[INFO] oc: Using project: default
[INFO] oc: Creating a Service from openshift.yml namespace default name random-generator
[INFO] oc: Created Service: target/jkube/applyJson/default/service-random-generator.json
[INFO] oc: Creating a DeploymentConfig from openshift.yml namespace default name random-generator
[INFO] oc: Created DeploymentConfig: target/jkube/applyJson/default/deploymentconfig-random-generator.json
[INFO] oc: Creating Route default:random-generator host: null
[INFO] oc: HINT: Use the command `oc get pods -w` to watch your pods start up
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:07 min
[INFO] Finished at: 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 Running 0 14s
random-generator-1-vnrm9 0/1 Running 0 11s
random-generator-s2i-1-build 0/1 Completed 0 1m
random-generator-1-vnrm9 1/1 Running 0 24s
random-generator-1-deploy 0/1 Completed 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
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 45 0 45 0 0 1666 0 --:--:-- --:--:-- --:--:-- 1730
{
"id": "d80052d9-2f92-43cb-b9eb-d7cffb879798"
}
~/work/repos/eclipse-jkube-demo-project : $
Videotund
Kuidas lihtsustada Kubernetes-arendust Eclipse JKube abil, vaadake videotundi, kus tutvustatakse lihtsa Spring Boot rakenduse kiiret juurutamist Minikube’is:

Kokkuvõte
Selles artiklis näitame, kuidas Eclipse JKube hõlbustab Java-arendajate elu Kubernetesega töötamisel. Lisainfot Eclipse JKube’i kohta leiate ja .
Allikas: habr.com
