Java rakenduste arendamine Kuberneteses Eclipse JKube abil

25 aastat tagasi tuli Java laiale arendajaskonnale, et lõpuks saada üheks nendest tugipunktidest, mille ümber rakenduste tehnoloogiad ehitatakse. Siiski on täna paljud inimesed ja organisatsioonid, kes on aastaid Java-le truuks jäänud, hõivatud platvormile ülemisega või kaaluvad selle üleminekut Kubernetes või selle alamtasanditele, nagu Red Hat OpenShift või Amazon EKS.

Java rakenduste arendamine Kuberneteses Eclipse JKube abil

Kahjuks on Kubernetesel järsk õppimiskõver ning see lisab veel ühe operatiivse taseme Java-arendajate jaoks tuttavasse arendusprotsessi. Täna räägime, kuidas kasutada Eclipse JKube, et lihtsustada neid täiendavaid operatsioone, mis on seotud Kubernetesega ja konteineritega, ning tagada valutuks üleminekuks pilveplatvormile, säilitades tuttava Java ökosüsteemi. Veelgi enam, näitame, kuidas juurutada Java rakendusi OpenShift platvormil OpenShift Maven plugina abil.

Traditsiooniline Java-arenduse protsess

Traditsiooniline arendusprotsess Java (Kujutis 1) eeldab, et arendaja kirjutab koodi, seejärel loob juurutamisüksusi JAR või WAR failide kujul ja seejärel juurutab ja käivitab need failid veebiserveris või rakenduste serveris. Selleks kasutatakse peamiselt Maven'i käsurealt või IDE-sid, nagu IntelliJ või Eclipse, rakenduste kodeerimiseks ja pakendamiseks. Arendajad on harjunud koodis muudatusi tegema ja kõik hoolikalt testima, enne kui nad koodi fikseerivad ja versioonihaldussüsteemi edastavad.

Java rakenduste arendamine Kuberneteses Eclipse JKube abil

Kujutis 1. Traditsiooniline Java-arenduse protsess.

Java arenduse protsess pilves

Pilve rakendustele üleminekuga lisanduvad ülaltoodud schemale Kubernetes ja konteinerid. Seega peab arendaja nüüd Java rakendused konteineripiltideks pakendama konteineripiltideks ja looma Kubernetes'e manifestid, mis kirjeldavad neid pilte. Seejärel rakendatakse neid manifeste tootmisserverile, kus töötab Kubernetes. Omakorda võtab Kubernetes need pildid registrist ja juurutab rakendused vastavalt neile konfiguratsioonidele, mille oleme manifestidesse määranud, mis tavaliselt on YAML-failid.

Traditsioonilise Java-arenduse protsessi metamorfoos pilve ülemineku korral on näidatud Kujutisel 2.

Java rakenduste arendamine Kuberneteses Eclipse JKube abil

Kujutis 2. Java arenduse protsess pilves.

Eclipse JKube

Kubernetesi kasutusele võtmine lisab arendusprotsessile veel ühe operatiivse tasandi, mis ajab paljusid arendajaid närvi, kuna nad soovivad keskenduda oma põhitegevusele – rakenduste loogikale – mitte sellele, kuidas neid rakendada. Siin tuleb mängu Eclipse JKube, mis võimaldab arendajatel kasutada oma raamatukogusid ja pluginaid (JKube Kit koos Kubernetes Maven Plugin või OpenShift Maven Plugin), et probleemideta teostada konteineritega ja Kubernetesega seotud toiminguid, järgides joonisel 2 esitatud skeemi.

Selles artiklis näitame, kuidas lihtsustada Java arendust Kubernetes keskkonnas, kasutades Eclipse JKube'i koos Kubernetes Maven Pluginiga.

Eclipse JKube'i kasutamine pilves arendamise protsessis

Vaadake veidi muudetud Java arenduse skeemi pilves, nagu on näidatud joonisel 2, tutvustades selles Eclipse JKube'i ja Kubernetes Maven Plugin'i, nagu on näidatud joonisel 3.

Java rakenduste arendamine Kuberneteses Eclipse JKube abil

Joonis 3. Java arendamise protsess pilves, kasutades Eclipse JKube'i.

Nagu näeme, on siin kõik Kubernetesega ja konteineritega seotud toimingud (skeemil punasega esile tõstetud) asendatud Eclipse JKube’i vaikimisi eesmärgiga, mis on loetletud tabelis 1.

Tabel 1. Eclipse JKube’i vaikimisi ülesanded.

Ülesanne
Prepare, Test ja Report
Kirjeldus

k8s:build
PRE_INTEGRATION_TEST
Docker-piltide koostamine

k8s:push
INSTALL
Docker-piltide saatmine registrisse

k8s:resource
PROCESS_RESOURCES
K8s-i manifestide genereerimine

k8s:apply
COMPILE
Genereeritud manifestide rakendamine K8s-ile

k8s:undeploy
UNDEPLOY
K8s-i ressursside eemaldamine, mis on rakendatud k8s:apply ja k8s:deploy kaudu

Märkus: Kui te ei soovi, et ülesanded kasutaksid neid jäigaid vaikeseadeid (opinionated defaults), saate Eclipse JKube'i käsitsi konfigureerida, sest see toetab konfigureerimist kaudu filestream ja ressursid.

Nüüd vaatame näiteid Eclipse JKube'i ja Kubernetes Maven Plugin'i kasutamisest rakendustele.

Rakendame Java rakenduse Kubernetes's, kasutades Eclipse JKube'i

Selles näites rakendame lihtsa Java rakenduse klastris Minikube Eclipse JKube'i kaudu. Kasutades Kubernetes Maven Plugin'i, saame määrata rakendamisparameetrid, ilma et peaksime kirjeldama mingit konfiguratsiooni.

Näidisrakenduseks on meil lihtne juhuslike numbrite generaator, mis annab JSON-väljundi lõpp-punktis\/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"
}

Samm 1. Laadime Kubernetes Maven Plugin'i

Kubernetes Maven Plugin asub hoidlas Maven Central Repository. Eclipse JKube'i kasutamiseks tuleb lisada Kubernetes Maven Plugin oma pom.xml faili sõltuvusena:

org.eclipse.jkube
     kubernetes-maven-plugin
     ${jkube.version}

Kui kasutatakse OpenShift'i puhta Kubernetes'i asemel, modifitseeritakse pom.xml järgmiselt:

org.eclipse.jkube
     openshift-maven-plugin
     ${jkube.version}

Samm 2. Kogume docker-pildi

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 vaikimisi pildi nime üle määranud järgmise omadusega:

docker.io/rohankanojia/random-generator:${project.version}

Enne pildi kogumist tuleb veenduda, et docker-demo on õigesti eksponeeritud. Seda saab teha järgmist käsuga:

$ eval $(minikube docker-env)

Seejärel sisestame käsu mvn k8s:build, ja siin on, mida me näeme ekraanil, kui kogume docker-pilti Eclipse JKube'i build-ülesande abil:

~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:build
[INFO] Projekte skaneerimine...
[INFO] 
[INFO] ---------------------------------------------
[INFO] Kogume 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äitab Kubernetes režiimis
[INFO] k8s: Kogub Docker pilti Kubernetes režiimis
[INFO] k8s: Käitab generaatorit spring-boot
[INFO] k8s: spring-boot: Kasutades Docker pilti quay.io/jkube/jkube-java-binary-s2i:0.0.7 baasi / koostaja
[INFO] k8s: [docker.io/rohankanojia/random-generator:0.0.1] "spring-boot": Loodud docker-build.tar 251 millisekundi jooksul
[INFO] k8s: [docker.io/rohankanojia/random-generator:0.0.1] "spring-boot": Koostatud pildi sha256:a20e5
[INFO] ------------------------------------------------------------------------
[INFO] KOOSTAMINE ÕNNESTUS
[INFO] ------------------------------------------------------------------------
[INFO] Kokku kestis:  5.053 s
[INFO] Lõpetatud: 2020-08-10T11:28:23+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $

Samm 3. Saadame pildi docker-registrisse

Pärast seda, kui oleme docker-pildi koos seadistatud push-registriga (meie juhul docker.io) kogunud, saame selle registrisse saata. Siin on, mida ekraanile ilmub pärast seda, kui palume Eclipse JKube'il push-ülesannet mvn k8s:push teostada:

~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:push
[INFO] Projekte otsitakse...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Koostamine 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äivitatakse Kubernetes režiimis
[INFO] k8s: Koostatakse Docker-pilt 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 aluseks \/ ehitajana
[INFO] k8s: Push viitab registrile [docker.io\/rohankanojia\/random-generator]
5dcd9556710f: Kiht juba eksisteerib 
b7139ad07aa8: Kiht juba eksisteerib 
b6f081e4b2b6: Kiht juba eksisteerib 
d8e1f35641ac: Kiht juba eksisteerib 
[INFO] k8s: 0.0.1: digest: sha256:9f9eda2a13b8cab1d2c9e474248500145fc09e2922fe3735692f9bda4c76002d suurus: 1162
[INFO] k8s: Saadetud docker.io\/rohankanojia\/random-generator:0.0.1 7 sekundi jooksul 
[INFO] ------------------------------------------------------------------------
[INFO] EHIH EDU
[INFO] ------------------------------------------------------------------------
[INFO] Kokku aega:  11.222 s
[INFO] Valmis: 2020-08-10T11:35:37+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ 

Pärast pildi saatmist tuleb kontrollida, et see on registrisse jõudnud. Meie puhul näeme seda lihtsalt Docker Hub'is, nagu on näidatud joonisel 4.

Java rakenduste arendamine Kuberneteses Eclipse JKube abil

Joonis 4. Saadetud registrisse pilt ilmus Docker Hub'is.

Samm 4. Genereerime Kubernetes-i ressursside manifestid rakenduse jaoks

Nii et rakenduse pilt on meil valmis, nüüd tuleb kirjutada Kubernetes-i manifestid. Selle jaoks on Eclipse JKubes ülesanne, mis genereerib jämedad ressursi manifestid, lähtudes allolevast Java-raamist (Spring Boot, Quarkus, Vert.x või mõni muu). Samuti on võimalik manifesti konfigureerida, kasutades konfiguratsioonilise XML-faili ja paigaldades raw-fragmentid (vajalike ressursi manifestide fragmentid) rakenduse kausta src\/main\/jkube. Sellisel juhul laaditakse teie konfigureerimine genereeritud manifestidesse.

Meie näites jätame kõik endiseks, seega genereerib Eclipse JKube manifesti vaikimisi juurutamiseks ja teenusele, mille tüüp on ClusterIP. Ja pärast seda modifitseerime teenuse manifesti, et muuta teenuse tüüpi NodePort. Vaikimisi käitumise ülekirjutamiseks võib kasutada järgmist omadust:

<jkube.enricher.jkube-service.type>NodePort<\/jkube.enricher.jkube-service.type>

Nii näeb välja ekraaniväljund pärast seda, kui palume Eclipse JKube'l käitada ressursside ülesannet mvn k8s:resource.

~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:resource
[INFO] Otsitakse projekte...
[INFO] 
[INFO] ---------------------------------------------
[INFO] Koostame 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äivitame generaatori spring-boot
[INFO] k8s: spring-boot: Kasutame Docker pilti quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 alusena \/ ehitajana
[INFO] k8s: jkube-controller: Lisame vaike Deployment'i
[INFO] k8s: jkube-service: Lisame vaike teenuse 'random-generator' portidega [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: Lisame valmisoleku kontrolli pordil 8080, tee='\/actuator\/health', skeem='HTTP', algse viivitusega 10 sekundit
[INFO] k8s: jkube-healthcheck-spring-boot: Lisame elujõu kontrolli pordil 8080, tee='\/actuator\/health', skeem='HTTP', algse viivitusega 180 sekundit
[INFO] k8s: jkube-revision-history: Lisame versiooni ajalugu piirangu 2
[INFO] ------------------------------------------------------------------------
[INFO] EHITUS ÕNNESTUS
[INFO] ------------------------------------------------------------------------
[INFO] Kogu 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, nüüd on kõik valmis, et rakenduse juurutamine ellu viia: oleme genereerinud selle pildi ja seejärel automaatselt genereerinud ressursside manifestid. Nüüd jääbki vaid need Kubernetes klastrisse rakendada. Rakenduse juurutamiseks võite muidugi kasutada käsku kubectl apply -f, kuid pistikprogramm suudab selle samuti meie eest teha. Siin on ekraan, mis ilmub pärast seda, kui palume Eclipse JKube'il täita apply-ülesande mvn k8s:apply:

~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:apply
[INFO] Projekte skaneerimine...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Koostatakse 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\/ vaikeseades koos manifestiga \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/classes\/META-INF\/jkube\/kubernetes.yml 
[INFO] k8s: Kasutatakse vaikeseadet: default
[INFO] k8s: Loomine teenuseks kubernetes.yml vaikeseade nimega random-generator
[INFO] k8s: Teenus loodud: target\/jkube\/applyJson\/default\/service-random-generator.json
[INFO] k8s: Loomine juurutamiseks kubernetes.yml vaikeseade nimega random-generator
[INFO] k8s: Juurutus loodud: target\/jkube\/applyJson\/default\/deployment-random-generator.json
[INFO] k8s: NIPP: Kasutage käsku `kubectl get pods -w`, et jälgida oma podide käivitumist
[INFO] ------------------------------------------------------------------------
[INFO] EHITUS ÕNNESTUS
[INFO] ------------------------------------------------------------------------
[INFO] Kogu aeg:  7.306 s
[INFO] Valmis kell: 2020-08-10T11:40:57+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get pods -w
NIMI                                                    VALMIS   STSENAARIUM       UUDISTE D   VANUSE
random-generator-58b7847d7f-9m9df                       0\/1     Käivitamisel       0          7s
random-generator-58b7847d7f-9m9df                       1\/1     Käivitamisel       0          17s
^C~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get svc
NIMI                                   Tüüp       KLASSEERIMIS-IP   VÄLIS-IP    PORT(S)           VANUSE
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 .
  % Kogu    % Saadud % Xferd  Keskmine Kiirus   Aeg     Aeg     Aeg  Praegune
                                 Laaditud  Üles  Kogu   Veedetud  Jäänud  Kiirus
100    45    0    45    0     0   1800      0 --:--:-- --:--:-- --:--:--  1875
{
  "id": "42e5571f-a20f-44b3-8184-370356581d10"
}

Samm 6. Eemaldame rakenduse Kubernetes'i klastrist

Selleks kasutatakse undeploy ülesannet, mis lihtsalt eemaldab kõik ressursid, mis oli rakendatud eelmisel sammul, st ülesande apply täitmise ajal. Siin on, mida me näeme ekraanil pärast seda, kui palume Eclipse JKube'il täita 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 : $

Mida veel saab Eclipse JKube'iga teha

Oleme tutvunud Eclipse JKube ja Kubernetes Maven Plugin'i põhieesmärkidega, mis lihtsustavad Java rakenduste arendamist Kubernetes platvormile. Kui te ei soovi neid ülesandeid pidevalt käsitsi sisestada, saate need pluginaklassifitseerimisse lisada, näiteks niimoodi:

org.eclipse.jkube
     kubernetes-maven-plugin
     ${project.version}
     
         
             
                  build
                  resource
                  apply

Tuleb märkida, et selles artiklis tutvustasime kaugelt mitte kõikide eesmärkide ülesandeid, mis on Eclipse JKube'is ja Kubernetes Maven Plugin'is, seega toome allpool tabelis 2 välja täiendavad ülesanded, mis võivad samuti kasulikud olla.

Tabel 2. Täiendavad eesmärgid Eclipse JKube'is.

Ülesanne
Prepare, Test ja Report
Kirjeldus

k8s:log
VALIDATE
Logide saamine rakendusest, mis töötab Kubernetes'is.

k8s:debug
PAKETT
Silmaporti avamine rakenduse silumiseks, mis töötab Kuberneteses, otse IDE-st.

k8s:deploy
INSTALL
Foori loomine Install-ülesande jaoks ja genereeritud manifestide rakendamine Kubernetes klastrisse samamoodi nagu apply-ülesande puhul.

k8s:watch
PAKETT
Rakenduse automaatne kuumaseadmine selle nimestruktuuri jälgimise kaudu.

Java rakenduste juurutamine Red Hat OpenShiftis OpenShift Maven Plugin abil.

Rakenduse juurutamiseks meie näites Red Hat OpenShift platvormil kasutame pluginat. OpenShift Maven. Ainus erinevus on see, et ülesannete prefiks muutub k8s-lt oc-ks. Vaikimisi teeb Kubernetes Maven plugin docker-kokkuvõtteid, samas kui OpenShift Maven plugin – kokkuvõtteid. S2I. Me ei tee oma projekti mingeid muutusi, välja arvatud jkube.generator.name atribuutide eemaldamine, kuna see ei ole registreerimisel vajalik (OpenShiftis asub pildiregister oma sisemises registris). Ja siin on see, mis kuvatakse ekraanil, kui käivitame meie näite, kus me, muide, käivitame ülesande eesmärke mitte ükshaaval, vaid kõik korraga:

~\/work\/repos\/eclipse-jkube-demo-project : $ mvn oc:build oc:resource oc:apply
[INFO] Otsin projekte...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Ehitan random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] oc: Kasutatakse OpenShift ehitusstrateegiat S2I
[INFO] oc: Käivitamine OpenShift režiimis
[INFO] oc: Käivitamine generaator spring-boot
[INFO] oc: spring-boot: Kasutatakse Docker pilti quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 kui baasi \/ builder
[INFO] oc: [random-generator:0.0.1] "spring-boot": Loodi docker allikas tar\/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/docker\/random-generator\/0.0.1\/tmp\/docker-build.tar
[INFO] oc: Lisamine Salajasele pullsecret-jkube
[INFO] oc: Kasutatakse Salajast pullsecret-jkube
[INFO] oc: Luua BuildServiceConfig random-generator-s2i allika ehitusseks
[INFO] oc: Luua ImageStream random-generator
[INFO] oc: Käivita ehitus random-generator-s2i
[INFO] oc: Ootan, et ehitus random-generator-s2i-1 lõpetaks...
[INFO] oc: Töötluse allakonteinerid "\/var\/cache\/blobs".
[INFO] oc: Saamine pildi allika allkiri
[INFO] oc: Kopeerimine blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopeerimine blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopeerimine blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopeerimine konfi sha256:52d6788fcfdd39595264d34a3959464a5dabc1d4ef0ae188802b20fc2d6a857b
[INFO] oc: Kirjuta manfest pildi sihtkohta
[INFO] oc: Salvestamine allkirjad
[INFO] oc: Generoimine dockerfile ehitajapildiga quay.io\/jkube\/jkube-java-binary-s2i:0.0.7
[INFO] oc: SAMM 1: KUJUNEDA quay.io\/jkube\/jkube-java-binary-s2i:0.0.7
[INFO] oc: SAMM 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: SAMM 3: ENV JAVA_APP_DIR="\/deployments"     OPENSHIFT_BUILD_NAME="random-generator-s2i-1"     OPENSHIFT_BUILD_NAMESPACE="default"
[INFO] oc: SAMM 4: KASUTAJA root
[INFO] oc: SAMM 5: KOPEERIDA upload\/src \/tmp\/src
[INFO] oc: SAMM 6: RUN chown -R 1000:0 \/tmp\/src
[INFO] oc: SAMM 7: KASUTAJA 1000
[INFO] oc: SAMM 8: RUN \/usr\/local\/s2i\/assemble
[INFO] oc: INFO S2I allika ehitus tavaliste binaaride poolt tuvastatud
[INFO] oc: INFO S2I binaaride ehitus fabric8-maven-plugin poolt tuvastatud
[INFO] oc: INFO Kopeerimine binaare \/tmp\/src\/deployments to \/deployments ...
[INFO] oc: random-generator-0.0.1.jar
[INFO] oc: INFO Kopeerimine paigaldusi paigaldustest \/deployments...
[INFO] oc: '"\/tmp\/src\/deployments\/random-generator-0.0.1.jar' -> '"\/deployments\/random-generator-0.0.1.jar'
[INFO] oc: SAMM 9: CMD \/usr\/local\/s2i\/run
[INFO] oc: SAMM 10: KOHANDA temp.builder.openshift.io\/default\/random-generator-s2i-1:48795e41
[INFO] oc: aeg="2020-08-10T06:37:49Z" tase=info msg="Pildi operatsioonisüsteemi sobimatus: pilt kasutab "", oodates "linux""
[INFO] oc: aeg="2020-08-10T06:37:49Z" tase=info msg="Pildi arhitektuuri sobimatus: pilt kasutab "", oodates "amd64""
[INFO] oc: Saamine pildi allika allkiri
[INFO] oc: Kopeerimine blob sha256:d8e1f35641acb80b562f70cf49911341dfbe8c86f4d522b18efbf3732aa74223
[INFO] oc: Kopeerimine blob sha256:b6f081e4b2b6de8be4b1dec132043d14c121e968384dd624fb69c2c07b482edb
[INFO] oc: Kopeerimine blob sha256:b7139ad07aa8ce4ed5a132f7c5cc9f1de0f5099b5e155027a23d57f7fbe78b16
[INFO] oc: Kopeerimine blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopeerimine konfi sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Kirjuta manfest pildi sihtkohta
[INFO] oc: Salvestamine allkirjad
[INFO] oc: --> 27aaadaf28e
[INFO] oc: 27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Saamine pildi allika allkiri
[INFO] oc: 
[INFO] oc: Pushime pilti image-registry.openshift-image-registry.svc:5000\/default\/random-generator:0.0.1 ...
[INFO] oc: Kopeerimine blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopeerimine blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopeerimine blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopeerimine blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopeerimine konfi sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Kirjuta manfest pildi sihtkohta
[INFO] oc: Salvestamine allkirjad
[INFO] oc: Edukalt edastatud image-registry.openshift-image-registry.svc:5000\/default\/random-generator@sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: Push õnnestus
[INFO] oc: Ehita random-generator-s2i-1 olek Täielik
[INFO] oc: Leitud silt ImageStream random-generator silt: sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: ImageStream random-generator kirjutatud failina \/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: Kasutatakse docker pildi nime nimespaksuses: default
[INFO] oc: Käivitamine generaator spring-boot
[INFO] oc: spring-boot: Kasutatakse Docker pilti quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 kui baasi \/ builder
[INFO] oc: jkube-controller: Lisatakse vaikimisi DeploymentConfig
[INFO] oc: jkube-service: Lisatakse vaikimisi teenus 'random-generator', portidega [8080]
[INFO] oc: jkube-healthcheck-spring-boot: Lisatakse valmisolekuproov portil 8080, teel='\/actuator\/health', skeem='HTTP', algse viivitusega 10 sekundit
[INFO] oc: jkube-healthcheck-spring-boot: Lisatakse elavuse proov portil 8080, teel='\/actuator\/health', skeem='HTTP', algse viivitusega 180 sekundit
[INFO] oc: jkube-revision-history: Lisatakse revision ajalugu piirang 2
[INFO] 
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] oc: Kasutatakse OpenShift'i aadressil https:\/\/api.crc.testing:6443\/ nimespaksuses default manifest failis \/home\/rohaan\/work\/repos\/eclipse-jkube-demo-project\/target\/classes\/META-INF\/jkube\/openshift.yml 
[INFO] oc: OpenShift platvorm tuvastatud
[INFO] oc: Kasutatakse projekti: default
[INFO] oc: Teenuse loomiseks openshift.yml nimespaksuses default nimega random-generator
[INFO] oc: Teenus loodud: target\/jkube\/applyJson\/default\/service-random-generator.json
[INFO] oc: Looge DeploymentConfig openshift.yml nimespaksuses default nimega random-generator
[INFO] oc: DeploymentConfig loodud: target\/jkube\/applyJson\/default\/deploymentconfig-random-generator.json
[INFO] oc: Looge Rada default:random-generator host: null
[INFO] oc: NÕU: Kasutage käsku `oc get pods -w`, et jälgida, kuidas teie pod'id käivituvad
[INFO] ------------------------------------------------------------------------
[INFO] EHITUS ÕNNESTUS
[INFO] ------------------------------------------------------------------------
[INFO] Kogu aeg:  01:07 min
[INFO] Lõpetatud kell: 2020-08-10T12:08:00+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ oc get pods -w
NIMI                           VALMIS     OLEK      UUESTI ALGATATUD   VANUS
random-generator-1-deploy      1\/1       Käivitus     0          14s
random-generator-1-vnrm9       0\/1       Käivitus     0          11s
random-generator-s2i-1-build   0\/1       Lõpetatud   0          1m
random-generator-1-vnrm9   1\/1       Käivitus   0         24s
random-generator-1-deploy   0\/1       Lõpetatud   0         28s
~\/work\/repos\/eclipse-jkube-demo-project : $ oc get routes
NIMI                HOST\/PORT                                    TEED      TEENUSED            PORT      LÕPETAMINE   JAH
random-generator    random-generator-default.apps-crc.testing              random-generator    8080                    Ei
~\/work\/repos\/eclipse-jkube-demo-project : $ curl random-generator-default.apps-crc.testing\/random 
  % Kogus    % Vastuvõetud % Xferd  Keskmine Kiirus   Aeg    Aeg     Aeg  Praegune
                                 Dload  Lae   Kogu   Kulutatud   Jäänud  Kiirus
100    45    0    45    0     0   1666      0 --:--:-- --:--:-- --:--:--  1730
{
  "id": "d80052d9-2f92-43cb-b9eb-d7cffb879798"
}
~\/work\/repos\/eclipse-jkube-demo-project : $

Videoõpetus

Kuidas lihtsustada Kubernetes'i arendust Eclipse JKube abil, vaadake videot, kus tutvustatakse lihtsa Spring Boot rakenduse kiiret juurutamist Minikube'is:

Mängi videot

Kokkuvõte

Selles artiklis näitasime, kuidas Eclipse JKube kergendab Java arendajate tööd Kubernetes'iga. Täiendavat teavet Eclipse JKube kohta leiate saidilt projekti lehelt ja GitHub.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster