Kubernetesi jaoks Java rakenduste arendamine Eclipse JKube abil

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 Kubernetes või selle variante, nagu Red Hat OpenShift või Amazon EKS.

Kubernetesi jaoks Java rakenduste arendamine Eclipse JKube abil

Kahjuks on Kubernetesil järsk õpikõver ja see toob tuttavasse Java arendajate arendusprotsessi veel ühe operatiivse taseme. Täna räägime, kuidas kasutada Eclipse JKube, 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 Java (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.

Kubernetesi jaoks Java rakenduste arendamine Eclipse JKube abil

Joon. 1. Traditsiooniline Java-arenduse protsess.

Java arendamise protsess pilves

Pilvepõhiste rakenduste üleminekul lisatakse ülaltoodud skeemile Kubernetes ja konteinerites. Seetõttu peab arendaja nüüd Java-rakendused pakendama konteineripiltideks 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.

Kubernetesi jaoks Java rakenduste arendamine Eclipse JKube abil

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 Eclipse JKube, mis võimaldab arendajatel kasutada oma teeke ja pluginaid (JKube Kit (autoriseerimiskoodiga). Kubernetes Maven Plugin või OpenShift Maven Plugin), 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.

Kubernetesi jaoks Java rakenduste arendamine Eclipse JKube abil

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

k8s:build
PRE_INTEGRATION_TEST
Docker-piltide koostamine

k8s:push
INSTALL
Docker-piltide saatmine registrisse

k8s:resource
PROCESS_RESOURCES
K8s manifestide genereerimine

k8s:apply
COMPILE
Genereeritud manifestide rakendamine K8s-ile

k8s:undeploy
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 XML ja ressursse.

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 Minikube Eclipse JKube'i abil. Kasutades Kubernetes Maven Plugin'it, saame määrata juurutamise parameetrid ilma, et peaksime mingeid konfiguratsioone kirjutama.

Näidisrakenduseks on meil lihtne juhuslike arvude generaator, 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 Maven Central Repository. 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.

Kubernetesi jaoks Java rakenduste arendamine Eclipse JKube abil

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 (Spring Boot, Quarkus, 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

k8s:log
VALIDATE
Rakenduse logide hankimine, mis töötab Kubernetesel.

k8s:debug
PACKAGE
Silumisporti avamine, et lubada rakenduse silumist, mis töötab Kubernetesel, otse IDE-st.

k8s:deploy
INSTALL
Install-ülesande forki loomine ja genereeritud manifestide rakendamine Kubernetes klastrisse täpselt nagu apply-ülesande korral.

k8s:watch
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 OpenShift Maven. Ainus erinevus on see, et ülesannete prefiks muutub k8s-elt oc-ks. Vaikimisi teeb Kubernetes Maven plugin docker-koostamisi, samas kui OpenShift Maven plugin teeb -koostamisi. S2I. 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] Otsitakse projekte...
[INFO] 
[INFO] ---------------------------------------------
[INFO] Koostatakse 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 OpenShifti koostamist strateegiaga S2I
[INFO] oc: Käideldakse OpenShifti režiimis
[INFO] oc: Käideldakse generaatorit spring-boot
[INFO] oc: spring-boot: Kasutatakse Docker pilti quay.io/jkube/jkube-java-binary-s2i:0.0.7 kui baasi / ehitajat
[INFO] oc: [random-generator:0.0.1] "spring-boot": Loodi docker allika tar /home/rohaan/work/repos/eclipse-jkube-demo-project/target/docker/random-generator/0.0.1/tmp/docker-build.tar
[INFO] oc: Lisatakse saladusele pullsecret-jkube
[INFO] oc: Kasutatakse saladust pullsecret-jkube
[INFO] oc: Koostatakse BuildServiceConfig random-generator-s2i allika jaoks
[INFO] oc: Koostatakse ImageStream random-generator
[INFO] oc: Alustatakse koostamist random-generator-s2i
[INFO] oc: Oodata koostamist random-generator-s2i-1 lõpetamiseks...
[INFO] oc: Korratakse plokke tee alla "/var/cache/blobs".
[INFO] oc: Saadakse pildi allika allkirjad
[INFO] oc: Kopeeritakse plokk sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopeeritakse plokk sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopeeritakse plokk sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopeeritakse konfiguratsioon sha256:52d6788fcfdd39595264d34a3959464a5dabc1d4ef0ae188802b20fc2d6a857b
[INFO] oc: Kirjutatakse manifest pildisihtkohta
[INFO] oc: Salvestatakse allkirjad
[INFO] oc: genereerimine dockerfile koos ehitaja pildiga quay.io/jkube/jkube-java-binary-s2i:0.0.7
[INFO] oc: SAMM 1: FROM 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: COPY 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 tuvastatud
[INFO] oc: INFO S2I binaaride ehitamine fabric8-maven-plugin'ilt tuvastatud
[INFO] oc: INFO Kopeerimine binaarest from /tmp/src/deployments to /deployments ...
[INFO] oc: random-generator-0.0.1.jar
[INFO] oc: INFO Kopeerimine rakendusi from deployments to /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: COMMIT 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 "", oodatakse "linux""
[INFO] oc: aeg="2020-08-10T06:37:49Z" tase=info msg="Pildi arhitektuuri sobimatus: pilt kasutab "", oodatakse "amd64""
[INFO] oc: Saadakse pildi allika allkirjad
[INFO] oc: Kopeeritakse plokk sha256:d8e1f35641acb80b562f70cf49911341dfbe8c86f4d522b18efbf3732aa74223
[INFO] oc: Kopeeritakse plokk sha256:b6f081e4b2b6de8be4b1dec132043d14c121e968384dd624fb69c2c07b482edb
[INFO] oc: Kopeeritakse plokk sha256:b7139ad07aa8ce4ed5a132f7c5cc9f1de0f5099b5e155027a23d57f7fbe78b16
[INFO] oc: Kopeeritakse plokk sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopeeritakse konfiguratsioon sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Kirjutatakse manifest pildisihtkohta
[INFO] oc: Salvestatakse allkirjad
[INFO] oc: --> 27aaadaf28e
[INFO] oc: 27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Saadakse pildi allika allkirjad
[INFO] oc: 
[INFO] oc: Suunata pilt image-registry.openshift-image-registry.svc:5000/default/random-generator:0.0.1 ...
[INFO] oc: Kopeeritakse plokk sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopeeritakse plokk sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopeeritakse plokk sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopeeritakse plokk sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopeeritakse konfiguratsioon sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Kirjutatakse manifest pildisihtkohta
[INFO] oc: Salvestatakse allkirjad
[INFO] oc: Edukalt suunatud image-registry.openshift-image-registry.svc:5000/default/random-generator@sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: Suunamine õnnestus
[INFO] oc: Koostamine random-generator-s2i-1 olekus Täidetud
[INFO] oc: Leidub silt ImageStream random-generator silt: sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: ImageStream random-generator kirjutatud /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 nimekirjas: default
[INFO] oc: Käideldakse generaatorit spring-boot
[INFO] oc: spring-boot: Kasutatakse Docker pilti quay.io/jkube/jkube-java-binary-s2i:0.0.7 kui baasi / ehitajat
[INFO] oc: jkube-controller: Lisatud vaikimisi DeploymentConfig
[INFO] oc: jkube-service: Lisatud vaikimisi teenus 'random-generator' portidega [8080]
[INFO] oc: jkube-healthcheck-spring-boot: Lisatud valmidusproov portile 8080, tee='/actuator/health', skeem='HTTP', esialgse viivitusega 10 sekundit
[INFO] oc: jkube-healthcheck-spring-boot: Lisatud elavuse proov portile 8080, tee='/actuator/health', skeem='HTTP', esialgse viivitusega 180 sekundit
[INFO] oc: jkube-revision-history: Lisatud revisjoni ajaloo piirang 2-le
[INFO] 
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] oc: Kasutatakse OpenShiftit https://api.crc.testing:6443/ nimekirjas default manifestist /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: Loome Teenuse openshift.yml nimekirjas default nimega random-generator
[INFO] oc: Loodi Teenus: target/jkube/applyJson/default/service-random-generator.json
[INFO] oc: Loome DeploymentConfig'i openshift.yml nimekirjas default nimega random-generator
[INFO] oc: Loodi DeploymentConfig: target/jkube/applyJson/default/deploymentconfig-random-generator.json
[INFO] oc: Loome Reisi default:random-generator host: null
[INFO] oc: NÕUANNE: Kasutage käsku `oc get pods -w`, et vaadata oma poodide käivitumist
[INFO] ------------------------------------------------------------------------
[INFO] KOOSTAMINE EDUKALT
[INFO] ------------------------------------------------------------------------
[INFO] Kogu aeg:  01:07 min
[INFO] Lõpetatud: 2020-08-10T12:08:00+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $ oc get pods -w
NIMI                           VALMIDUS     SEISUND      RESTARTID   VANUS
random-generator-1-deploy      1/1       Käitab     0          14s
random-generator-1-vnrm9       0/1       Käitab     0          11s
random-generator-s2i-1-build   0/1       Täidetud   0          1m
random-generator-1-vnrm9   1/1       Käitab   0         24s
random-generator-1-deploy   0/1       Täidetud   0         28s
~/work/repos/eclipse-jkube-demo-project : $ oc get routes
NIMI                HOST/PORT                                    PATH      TEENUSED            PORT      TERMINATSIOON   WILDKAARD
random-generator    random-generator-default.apps-crc.testing              random-generator    8080                    Ei ühtegi
~/work/repos/eclipse-jkube-demo-project : $ curl random-generator-default.apps-crc.testing/random 
  % Kogu    % Vastatud % Xferd  Keskmine Kiirus   Aeg    Aeg     Aeg  Praegune
                                 Dload  Laadimine   Kogu   Veedetud   Vasak  Kiirus
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:

Vaata videot

Kokkuvõte

Selles artiklis näitame, kuidas Eclipse JKube hõlbustab Java-arendajate elu Kubernetesega töötamisel. Lisainfot Eclipse JKube’i kohta leiate projekti veebilehel ja GitHub.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster