Horumarinta Codsiyada Java ee Kubernetes Isticmaalka Eclipse JKube

25 sano ka hor, Java waxa ay gashay qaybta guud ee barnaamijyada oo aakhirkii waxa ay noqotay mid ka mid ah curiyayaasha udub dhexaadka u ah taas oo xidhmooyin codsiyo ah lagu dhisay. Maanta, si kastaba ha ahaatee, dad badan iyo ururo badan oo daacad u ahaa Java sannado badan ayaa ku mashquulsan inay u guuraan ama u guuraan goobta. Kubureteska ama asalkiisa sida Koofiyada Cas OpenShift ama Amazon EKS.

Horumarinta Codsiyada Java ee Kubernetes Isticmaalka Eclipse JKube

Nasiib darro, Kubernetes waxay leedahay qalooc waxbarasho oo qotodheer waxayna soo bandhigaysaa lakab kale oo hawlgelin ah oo ku saabsan habka horumarinta ee barnaamijyada Java-ga ay caadeysteen. Maanta waxaan kuu sheegi doonaa sida loo isticmaalo Madoobaad JKube, si loo fududeeyo hawlgaladan dheeraadka ah ee la xidhiidha Kubernetes iyo weelasha, iyo in la hubiyo u guuritaanka aan xanuunka lahayn ee goobta daruuraha iyadoo la ilaalinayo nidaamka deegaanka Java ee la yaqaan. Intaa waxaa dheer, waxaan ku tusi doonaa sida loo geeyo codsiyada Java goobta OpenShift iyadoo la adeegsanayo plugin OpenShift Maven.

Habka Horumarinta Java ee Dhaqanka

Habka horumarinta dhaqanka Java (Jaantuska 1) waxay ku lug leedahay soo-saare kood qorista, ka dib abuurista cutubyo geynta qaabka JAR ama faylasha WAR, ka dibna geynta iyo socodsiinta faylashan shabakada ama server-ka codsiga. Habka ugu weyn ee tan loo sameeyo waa in la isticmaalo Maven oo ka socda khadka taliska ama isticmaal IDE sida IntelliJ ama Eclipse si aad u codeeeyso oo aad u xirto codsiyada. Horumariyayaashu waxa loo isticmaalaa in ay wax ka beddelaan koodka oo ay si fiican u tijaabiyaan wax kasta ka hor inta aanay samayn koodka oo ay u soo gudbiyaan xakamaynta nooca.

Horumarinta Codsiyada Java ee Kubernetes Isticmaalka Eclipse JKube

Bariis 1. Habka horumarinta Java ee dhaqanka.

Habka Horumarinta Java ee Cloud

Markaad u guurto codsiyada daruuraha, Kubernetes iyo weelasha. Sidaa darteed, hadda horumariyuhu wuxuu u baahan yahay inuu ku xidho codsiyada Java sawirada weelka oo samee muuqaalada Kubernetes ee qeexaya sawiradan. Muujintan ayaa markaa lagu dabaqaa server-ka wax soo saarka ee ku shaqeeya Kubernetes. Dhanka kale, Kubernetes waxay sawiradan ka soo qaadaa diiwaanka waxayna geysaa codsiyada iyadoo loo eegayo qaabeynta aan ku qornay muujinta, kuwaas oo badanaa ah faylasha YAML.

Metamorphosis ee geedi socodka horumarinta Java ee soo jireenka ah ee u gudubka daruurta ayaa lagu muujiyay shaxanka. 2.

Horumarinta Codsiyada Java ee Kubernetes Isticmaalka Eclipse JKube

Bariis 2. Habka horumarinta Java ee daruuraha.

Madoobaad JKube

U haajiridda Kubernetes waxay ku darsataa lakab kale oo hawlgelineed geeddi-socodka horumarka, horumariyayaal badanina way ka walaacsan yihiin sababta oo ah waxay rabaan inay diiradda saaraan shaqadooda asaasiga ah - macquulka codsiga-halkii sidii loo geyn lahaa. Waana meesha ay ka soo gasho ciyaarta. Madoobaad JKube, kaas oo u ogolaanaya horumariyayaasha inay isticmaalaan maktabadahooda iyo plugins (JKube Kit wada jir Kubernetes Maven Plugin ama FurShift Maven Plugin) in si dadaal la'aan ah loo sameeyo weel iyo hawlgallo la xiriira Kubernetes iyadoo la raacayo jaantuska Jaantuska. 2.

Inta ka hartay maqaalkan, waxaan ku tusi doonaa sida loo fududeeyo habka horumarinta Java ee deegaanka Kubernetes adigoo isticmaalaya Eclipse JKube oo wata Kubernetes Maven Plugin.

Habka Horumarinta Daruuraha Isticmaalka Madoobaad JKube

Aynu tixgalino qorshaha horumarinta Java ee waxyar laga beddelay ee daruuraha laga bilaabo Jaantuska 2, oo ku soo bandhigaya Eclipse JKube iyo Kubernetes Maven Plugin, sida ka muuqata shaxanka. 3.

Horumarinta Codsiyada Java ee Kubernetes Isticmaalka Eclipse JKube

Bariis 3. Habka horumarinta Java ee daruuraha iyadoo la adeegsanayo Eclipse JKube.

Sida aan arki karno, halkan dhammaan hawlgallada isdhexgalka ee Kubernetes iyo weelasha (casaanka lagu muujiyay jaantuska) waxaa lagu beddelayaa hawlaha gooldhalinta Eclipse JKube, kuwaas oo ku taxan Shaxda. 1.

Miis 1. Eclipse JKube hawlaha caadiga ah.

Ujeeddo
Heerka
Description

k8s: dhis
PRE_INTEGRATION_TEST
Dhismaha sawirada docker

k8s: riix
Ku rakib
Soo raritaanka sawirada docker ee diiwaanka

k8s: kheyraad
PROCESS_RESOURCES
Soo saarista K8-yada ayaa muujinaya

k8s: codso
ISKU SOO KORDHA
Dalbashada muujinta la soo saaray ee K8s

k8s: aan la hawlgelin
LA'AAN
Ka saarida agabka K8s ee la geeyay iyadoo la adeegsanayo k8s:apply iyo k8s:deploy

Fiiro gaar ah: Haddii aadan rabin in hawlaha aad isticmaasho kuwan ra'yiga ah, waxaad gacanta ku habeyn kartaa Eclipse JKube naftaada, maadaama ay taageerto qaabeynta iyada oo loo marayo XML ΠΈ kheyraadka.

Hadda aan eegno tusaalooyinka isticmaalka Eclipse JKube iyo Kubernetes Maven Plugin marka la shaqeynayo codsiyada.

Gelitaanka Codsiga Java ee Kubernetes Isticmaalka Eclipse JKube

Tusaalahan waxa aanu ku shubi doonaa arji Java fudud koox Minikube iyadoo la isticmaalayo Eclipse JKube. Adigoo adeegsanayna Kubernetes Maven Plugin, waxaan dejin karnaa cabbirada geynta anagoon qorin wax qaabayn ah.

Tusaale ahaan codsiga waxaanu isticmaalnaa curiyaha tirada random fudud, kaas oo soo saara wax soo saarka JSON ee meesha ugu dambaysa:

~/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"
}

Tallaabada 1. Soo deji Kubernetes Maven Plugin

Kubernetes Maven Plugin waxa uu ku yaalaa kaydka Maven Central Repository. Si aad u isticmaasho Eclipse JKube waxaad u baahan tahay inaad kubernetes Maven Plugin ku darto pom.xml kaaga tiirsanaan ahaan:

<plugin>
     <groupId>org.eclipse.jkube</groupId>
     <artifactId>kubernetes-maven-plugin</artifactId>
     <version>${jkube.version}</version>
 </plugin>

Haddii OpenShift loo isticmaalo halkii laga isticmaali lahaa Kubernetes saafi ah, markaa pom.xml waxaa loo habeeyey sida soo socota:

<plugin>
     <groupId>org.eclipse.jkube</groupId>
     <artifactId>openshift-maven-plugin</artifactId>
     <version>${jkube.version}</version>
 </plugin>

Tallaabada 2. Dhis sawirka docker

Faylka codsiga ee JAR waxaa lagu dhisi karaa amarka xirmada mvn, ka dibna mvn goal task k8s:build waxaa loo isticmaali karaa in lagu dhiso sawirka docker ee codsiga. Ogsoonow in aanu ka gudubnay magaca sawirka caadiga ah ee hantidan:

<jkube.generator.name>docker.io/rohankanojia/random-generator:${project.version}</jkube.generator.name>

Kahor intaadan dhisin sawirka, waxaad u baahan tahay inaad hubiso in docker daemon si sax ah loo qaawiyo. Tan waxaa lagu samayn karaa amarka soo socda:

$ eval $(minikube docker-env)

Kadibna waxaan galeynaa mvn k8s: Build Command, waana tan waxa aan ku arki doonno shaashadda marka la dhisayo sawirka docker-ka iyadoo la adeegsanayo hawsha dhismaha Eclipse JKube:

~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:build
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] k8s: Running in Kubernetes mode
[INFO] k8s: Building Docker image in Kubernetes mode
[INFO] k8s: Running generator spring-boot
[INFO] k8s: spring-boot: Using Docker image quay.io/jkube/jkube-java-binary-s2i:0.0.7 as base / builder
[INFO] k8s: [docker.io/rohankanojia/random-generator:0.0.1] "spring-boot": Created docker-build.tar in 251 milliseconds
[INFO] k8s: [docker.io/rohankanojia/random-generator:0.0.1] "spring-boot": Built image sha256:a20e5
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.053 s
[INFO] Finished at: 2020-08-10T11:28:23+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $

Talaabada 3. Soo rar sawirka goobta diiwanka docker-ka

Ka dib markii aan dhisnay sawirka dockerka iyada oo diiwaanka riixitaanka la habeeyay (xaaladkeena waa docker.io), sawirkan waxaan u diri karnaa diiwaanka. Tani waa waxa la soo bandhigi doono ka dib marka aan waydiisano Eclipse JKube si uu u qabto mvn k8s: riix hawsha riix:

~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:push
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:push (default-cli) @ random-generator ---
[INFO] k8s: Running in Kubernetes mode
[INFO] k8s: Building Docker image in Kubernetes mode
[INFO] k8s: Running generator spring-boot
[INFO] k8s: spring-boot: Using Docker image quay.io/jkube/jkube-java-binary-s2i:0.0.7 as base / builder
[INFO] k8s: The push refers to repository [docker.io/rohankanojia/random-generator]
5dcd9556710f: Layer already exists 
b7139ad07aa8: Layer already exists 
b6f081e4b2b6: Layer already exists 
d8e1f35641ac: Layer already exists 
[INFO] k8s: 0.0.1: digest: sha256:9f9eda2a13b8cab1d2c9e474248500145fc09e2922fe3735692f9bda4c76002d size: 1162
[INFO] k8s: Pushed docker.io/rohankanojia/random-generator:0.0.1 in 7 seconds 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  11.222 s
[INFO] Finished at: 2020-08-10T11:35:37+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $ 

Ka dib markaad dirto sawirka, waxaad u baahan tahay inaad hubiso inuu ku jiro diiwaanka. Xaaladeena, waxaan si fudud ugu aragnaa Docker Hub, sida ku cad Fig. 4.

Horumarinta Codsiyada Java ee Kubernetes Isticmaalka Eclipse JKube

Bariis 4. Sawirka loo diray diiwaanka ayaa ka soo muuqday Docker Hub.

Talaabada 4. Samee agabka Kubernetes ee codsiga

Markaa, waxaan soo aruurinay sawirka codsiga, hadda waxaan u baahanahay inaan qorno muujinta Kubernetes. Si tan loo sameeyo, Eclipse JKube waxay leedahay hawl soo saarta muuqaalo kheyraad adag oo ku saleysan qaabka Java ee hoose (Kabaha guga, quruus, Vert.x ama qaar kale). Waxa kale oo aad habayn kartaa muujinta adiga oo isticmaalaya faylka qaabaynta XML oo aad geliso jajabyo cayriin ah (jarjarrada caddaynta kheyraadka loo baahan yahay) galka codsiga src/main/jkube. Xaaladdan oo kale, qaabeyntaada waxaa lagu dhejin doonaa muujinta la soo saaray.

Tusaalahayaga, waxaan uga tagnay wax walba sida ay yihiin, oo sidaas darteed Eclipse JKube waxay soo saartaa caddaynta geynta caadiga ah iyo adeegga nooca ClusterIP. Kadibna kaliya ayaanu wax ka beddeleynaa adeegga muujinta si aan u beddelno nooca adeegga NodePort. Waxaad burin kartaa hab-dhaqanka aan caadiga ahayn adiga oo isticmaalaya hantida soo socota:

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

Tani waa waxa soo-saarka shaashadda u eg yahay ka dib markii aan waydiisanno Eclipse JKube inuu qabto mvn k8s: hawsha kheyraadka.

~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:resource
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:resource (default-cli) @ random-generator ---
[INFO] k8s: Running generator spring-boot
[INFO] k8s: spring-boot: Using Docker image quay.io/jkube/jkube-java-binary-s2i:0.0.7 as base / builder
[INFO] k8s: jkube-controller: Adding a default Deployment
[INFO] k8s: jkube-service: Adding a default service 'random-generator' with ports [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: Adding readiness probe on port 8080, path='/actuator/health', scheme='HTTP', with initial delay 10 seconds
[INFO] k8s: jkube-healthcheck-spring-boot: Adding liveness probe on port 8080, path='/actuator/health', scheme='HTTP', with initial delay 180 seconds
[INFO] k8s: jkube-revision-history: Adding revision history limit to 2
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.344 s
[INFO] Finished at: 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: [email protected]: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 : $

Tallaabada 5. Geli codsiga kooxda Kubernetes

Hadda waxaan dhammaanteen diyaar u nahay inaan geyno arjiga: waxaan soo saarnay muuqaalkiisa ka dibna si toos ah ayaan u soo saarnay agabka muuqda. Hadda waxa hadhay waa in waxaas oo dhan lagu dabaqo kooxda Kubernetes. Si aad u geyso arjiga, waxaad, dabcan, isticmaali kartaa kubectl apply -f Command, laakiin plugin-ku wuu noo samayn karaa tan. Tani waa waxa ka soo muuqan doona shaashadda ka dib markii aan waydiisanno Eclipse JKube inuu fuliyo mvn k8s: codso hawsha:

~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:apply
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:apply (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: Creating a Service from kubernetes.yml namespace default name random-generator
[INFO] k8s: Created Service: target/jkube/applyJson/default/service-random-generator.json
[INFO] k8s: Creating a Deployment from kubernetes.yml namespace default name random-generator
[INFO] k8s: Created Deployment: target/jkube/applyJson/default/deployment-random-generator.json
[INFO] k8s: HINT: Use the command `kubectl get pods -w` to watch your pods start up
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  7.306 s
[INFO] Finished at: 2020-08-10T11:40:57+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $ kubectl get pods -w
NAME                                                     READY   STATUS             RESTARTS   AGE
random-generator-58b7847d7f-9m9df                        0/1     Running            0          7s
random-generator-58b7847d7f-9m9df                        1/1     Running            0          17s
^C~/work/repos/eclipse-jkube-demo-project : $ kubectl get svc
NAME                                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
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 .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    45    0    45    0     0   1800      0 --:--:-- --:--:-- --:--:--  1875
{
  "id": "42e5571f-a20f-44b3-8184-370356581d10"
}

Talaabada 6. Codsiyada ka bixi kooxda Kubernetes

Si tan loo sameeyo, hawsha aan la isticmaalin ayaa la isticmaalaa, taas oo si fudud meesha uga saaraysa dhammaan agabkii lagu dabaqay tallaabadii hore, taas oo ah, marka hawsha la qabanayo la fuliyo. Tani waa waxa aan ku arki doono shaashadda ka dib markii aan waydiisanno Eclipse JKube si ay u qabato mvn k8s: undeploy undeploy task:

~/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       <none>        443/TCP          18d
service/random-generator   NodePort    10.97.172.147   <none>        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] ----------------------< meetup:random-generator >-----------------------
[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    <none>        443/TCP   18d
~/work/repos/eclipse-jkube-demo-project : $

Maxaa kale oo aad ku samayn kartaa Eclipse JKube

Sidaa daraadeed, waxaanu eegnay hawlaha ugu muhiimsan ee Eclipse JKube iyo Kubernetes Maven Plugin, kuwaas oo fududeynaya horumarinta codsiyada Java ee Kubernetes platform. Haddii aadan rabin inaad si joogto ah uga soo gasho hawlahan kiiboodhka, waxaad ku qori kartaa qaabeynta plugin, tusaale ahaan, sidan oo kale:

<plugin>
     <groupId>org.eclipse.jkube</groupId>
     <artifactId>kubernetes-maven-plugin</artifactId>
     <version>${project.version}</version>
     <executions>
         <execution>
             <goals>
                  <goal>build</goal>
                  <goal>resource</goal>
                  <goal>apply</goal>
             </goals>
         </execution>
     </executions>
</plugin>

Waa in la sheegaa in qodobkan aynaan tixgelin dhammaan hawlaha yoolalka ah ee ku jira Eclipse JKube iyo Kubernetes Maven Plugin, markaa waxaan ku siineynaa Shaxda 2 liiska hawlo dheeraad ah oo laga yaabo inay adiga waxtar kuu yeeshaan.

Miis 2. Madoobaad Dheeraad ah oo ah hawlaha hadafka JKube.

Ujeeddo
Heerka
Description

k8s: log
KARIIMO
Helitaanka diiwaannada arjiga ku socda Kubernetes.

k8s: khalad
DAWADA
Fur debug debug si aad si toos ah uga saxdo codsigaaga Kubernetes ka IDE-ga.

k8s: geyn
Ku rakib
Abuuritaanka fargeeto hawsha Rakibaadda iyo ku dabaqida muujinta la soo saaray kooxda Kubernetes si la mid ah kiiska hawsha codsashada.

k8s: daawo
DAWADA
Si otomaatig ah u geynta kulul ee arjiga iyadoo la raadinayo meesha magaceeda.

Gelitaanka Codsiyada Java ee Koofiyada Cas OpenShift Isticmaalka Furaha Maven ee OpenShift

Si aan arjiga uga dirno tusaalaheenna koofiyadda Cas ee OpenShift, waxaan isticmaalnaa plugin-ka FurShift Maven. Farqiga kaliya ayaa noqon doona in horgalaha hawsha uu ka beddeli doono k8s una beddelo oc. Sida caadiga ah plugin Kubernetes Maven ayaa sameeya docker-ururada, iyo OpenShift Maven plugin - shirarka S2I. Wax isbeddel ah kuma samaynayno mashruucayaga marka laga reebo ka saarista jkube.generator.name hantida maadaama aan loo baahnayn marka la riixayo diiwaanka (OpenShift wuxuu dhigayaa sawirka gudaha diiwaanka gudaha inta lagu jiro marxaladda dhismaha). Oo tani waa waxa ka soo muuqan doona shaashadda marka aan wadno tusaalahayaga, kaas oo, habka, aan u fulino hawlaha hadafyada midba midka kale, laakiin dhammaan hal mar:

~/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 : $

Cashar muuqaal ah

Si aad wax badan uga barato sida loogu fududeeyo horumarka Kubernetes Eclipse JKube, daawo casharkan fiidyaha ah ee ku saabsan sida ugu dhakhsaha badan ee loo geeyo codsiga Boot Guga fudud ee Minikube:

gunaanad

Maqaalkan, waxaan ku tusnay sida Eclipse JKube uu nolosha ugu fududeeyo horumariyaha Java marka uu la shaqeynayo Kubernetes. Macluumaad dheeraad ah oo ku saabsan Eclipse JKube waxaa laga heli karaa at website-ka mashruuca iyo on GitHub.

Source: www.habr.com

Add a comment