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 veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster