Kutengeneza Programu za Java kwa Kubernetes Kutumia Eclipse JKube

Miaka 25 iliyopita, Java iliingia katika mfumo mkuu wa programu na hatimaye ikawa moja ya vipengele vya msingi ambavyo mwingi wa programu hujengwa. Leo, hata hivyo, watu na mashirika mengi ambayo yamekuwa mwaminifu kwa Java kwa miaka mingi yana shughuli nyingi za kuhama au kuzingatia kuhamia kwenye jukwaa. Mabernet au viambajengo vyake kama vile Red Hat OpenShift au Amazon EKS.

Kutengeneza Programu za Java kwa Kubernetes Kutumia Eclipse JKube

Kwa bahati mbaya, Kubernetes ina mkondo mwinuko wa kujifunza na inaleta safu nyingine ya utendaji katika mchakato wa ukuzaji ambao watengeneza programu wa Java wamezoea. Leo tutakuambia jinsi ya kutumia Eclipse JKube, ili kurahisisha shughuli hizi za ziada zinazohusiana na Kubernetes na kontena, na kuhakikisha uhamishaji usio na maumivu hadi kwenye jukwaa la wingu huku ukidumisha mfumo ikolojia wa Java. Zaidi ya hayo, tutaonyesha jinsi ya kupeleka programu za Java kwenye jukwaa la OpenShift kwa kutumia programu-jalizi ya OpenShift Maven.

Mchakato wa Jadi wa Maendeleo ya Java

Mchakato wa maendeleo ya jadi Java (Kielelezo 1) kinahusisha msimbo wa uandishi wa msanidi programu, kisha kuunda vitengo vya kusambaza kwa njia ya faili za JAR au WAR, na kisha kupeleka na kuendesha faili hizi kwenye wavuti au seva ya programu. Njia kuu ya kufanya hivyo ni kutumia Maven kutoka kwa safu ya amri au kutumia IDE kama IntelliJ au Eclipse kuweka nambari na kufunga programu. Wasanidi programu hutumiwa kufanya mabadiliko ya msimbo na kujaribu kila kitu kikamilifu kabla ya kuweka msimbo na kuuwasilisha kwa udhibiti wa toleo.

Kutengeneza Programu za Java kwa Kubernetes Kutumia Eclipse JKube

Mchele. 1. Mchakato wa jadi wa ukuzaji wa Java.

Mchakato wa Maendeleo ya Java kwa Wingu

Wakati wa kuhamia kwenye programu za wingu, Kubernetes na vyombo. Kwa hivyo, sasa msanidi anahitaji kusanikisha programu za Java ndani picha za chombo na unda maonyesho ya Kubernetes ambayo yanaelezea picha hizi. Faili hizi kisha hutumika kwa seva ya uzalishaji inayoendesha Kubernetes. Kwa upande wake, Kubernetes huchukua picha hizi kutoka kwa sajili na kusambaza programu kulingana na usanidi ambao tumeandika katika faili za maelezo, ambazo kwa kawaida ni faili za YAML.

Metamorphosis ya mchakato wa jadi wa ukuzaji wa Java katika mpito hadi wingu unaonyeshwa kwenye Mtini. 2.

Kutengeneza Programu za Java kwa Kubernetes Kutumia Eclipse JKube

Mchele. 2. Mchakato wa ukuzaji wa Java kwa wingu.

Eclipse JKube

Kuhamia Kubernetes huongeza safu nyingine ya utendaji kwa mchakato wa usanidi, na wasanidi programu wengi wana wasiwasi juu yake kwa sababu wanataka kuzingatia kazi yao kuu - mantiki ya utumaji - badala ya jinsi ya kuzipeleka. Na hapa ndipo inapokuja kucheza. Eclipse JKube, ambayo inaruhusu watengenezaji kutumia maktaba na programu-jalizi zao (JKube Kit na Programu-jalizi ya Kubernetes Maven au Programu-jalizi ya OpenShift Maven) kutekeleza kwa urahisi kontena na shughuli zinazohusiana na Kubernetes kwa kufuata mchoro kwenye Kielelezo. 2.

Katika sehemu nyingine ya makala haya, tutakuonyesha jinsi ya kurahisisha mchakato wa ukuzaji wa Java katika mazingira ya Kubernetes kwa kutumia Eclipse JKube na Kubernetes Maven Plugin.

Mchakato wa Kukuza Wingu Kwa Kutumia Eclipse JKube

Hebu tuchunguze mpango wa ukuzaji wa Java uliorekebishwa kidogo kwa wingu kutoka Mtini. 2, tukianzisha Eclipse JKube na Kubernetes Maven Plugin ndani yake, kama inavyoonyeshwa kwenye Mtini. 3.

Kutengeneza Programu za Java kwa Kubernetes Kutumia Eclipse JKube

Mchele. 3. Mchakato wa ukuzaji wa Java kwa wingu kwa kutumia Eclipse JKube.

Kama tunavyoona, hapa shughuli zote za kuingiliana na Kubernetes na kontena (zilizoangaziwa kwa rangi nyekundu kwenye mchoro) hubadilishwa na majukumu ya lengo la Eclipse JKube, ambayo yameorodheshwa kwenye Jedwali. 1.

Jedwali 1. Eclipse JKube kazi chaguo-msingi.

Kazi
Hatua
Description

k8s: jenga
PRE_INTEGRATION_TEST
Kujenga picha za docker

k8s:sukuma
Kufunga
Inapakia picha za docker kwenye Usajili

k8s: rasilimali
PROCESS_RESOURCES
Kuzalisha K8s hudhihirisha

k8s:omba
COMPILE
Kuweka maonyesho yaliyotolewa kwa K8s

k8s: kutotumika
KUTOFANYA KAZI
Kuondoa rasilimali za K8 ambazo zilitumwa kwa kutumia k8s:apply na k8s:deploy

Kumbuka: Ikiwa hutaki kazi kutumia chaguo-msingi hizi zilizowekwa maoni, unaweza kujisanidi mwenyewe Eclipse JKube, kwani inasaidia usanidi kupitia XML ΠΈ rasilimali.

Sasa hebu tuangalie mifano ya kutumia Eclipse JKube na Kubernetes Maven Plugin wakati wa kufanya kazi na programu.

Kupeleka Programu ya Java kwenye Kubernetes Kutumia Eclipse JKube

Katika mfano huu tutapeleka programu rahisi ya Java kwenye nguzo Minikube kwa kutumia Eclipse JKube. Kwa kutumia programu-jalizi ya Kubernetes Maven, tunaweza kuweka vigezo vya upelekaji bila kulazimika kuandika usanidi wowote.

Kama mfano wa maombi tunayotumia jenereta rahisi ya nambari ya nasibu, ambayo hutoa pato la JSON kwa mwisho / bila mpangilio:

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

Hatua ya 1. Pakua Kubernetes Maven Plugin

Kubernetes Maven Plugin iko kwenye hazina Hifadhi ya Kati ya Maven. Ili kutumia Eclipse JKube unahitaji kuongeza Kubernetes Maven Plugin kwenye pom.xml yako kama tegemezi:

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

Ikiwa OpenShift inatumika badala ya Kubernetes safi, basi pom.xml inarekebishwa kama ifuatavyo:

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

Hatua ya 2. Jenga picha ya docker

Faili ya programu ya JAR inaweza kujengwa kwa amri ya kifurushi cha mvn, na kisha kazi ya lengo la mvn k8s:build inaweza kutumika kuunda picha ya kituo cha programu. Kumbuka kwamba tumebatilisha jina chaguo-msingi la picha na sifa hii:

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

Kabla ya kujenga picha, unahitaji kuhakikisha kuwa daemon ya docker imefunuliwa kwa usahihi. Hii inaweza kufanywa kwa amri ifuatayo:

$ eval $(minikube docker-env)

Kisha tunaingiza mvn k8s:build amri, na hii ndiyo tutakayoona kwenye skrini wakati wa kujenga picha ya docker kwa kutumia kazi ya kujenga ya 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 : $

Hatua ya 3. Pakia picha kwenye usajili wa docker

Baada ya kuunda picha ya kizimbani na sajili ya kushinikiza iliyosanidiwa (kwa upande wetu ni docker.io), tunaweza kutuma picha hii kwa usajili. Hiki ndicho kitakachoonyeshwa baada ya kuuliza Eclipse JKube kutekeleza kazi ya mvn k8s:push push:

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

Baada ya kutuma picha, unahitaji kuangalia kuwa imejumuishwa kwenye Usajili. Kwa upande wetu, tunaiona tu kwenye Docker Hub, kama inavyoonyeshwa kwenye Mtini. 4.

Kutengeneza Programu za Java kwa Kubernetes Kutumia Eclipse JKube

Mchele. 4. Picha iliyotumwa kwa Usajili ilionekana kwenye Docker Hub.

Hatua ya 4. Tengeneza maonyesho ya rasilimali ya Kubernetes kwa programu

Kwa hivyo, tumekusanya picha ya programu, sasa tunahitaji kuandika maonyesho ya Kubernetes. Ili kufanya hivyo, Eclipse JKube ana kazi ambayo hutoa udhihirisho wa rasilimali ngumu kulingana na mfumo wa Java (Kiatu cha chemchemi, quarcus, Vert.x au nyingine). Unaweza pia kubinafsisha faili ya maelezo kwa kutumia faili ya usanidi ya XML na kuweka vipande mbichi (vipande vya faili ya maelezo inayohitajika) katika folda ya programu src/main/jkube. Katika hali hii, usanidi wako utapakiwa kwenye maonyesho yaliyotolewa.

Katika mfano wetu, tunaacha kila kitu kama kilivyo, na kwa hivyo Eclipse JKube hutoa faili ya maelezo ya uwekaji chaguomsingi na kwa huduma iliyo na aina ya ClusterIP. Na hapo ndipo tunarekebisha faili ya maelezo ya huduma ili kubadilisha aina ya huduma kuwa NodePort. Unaweza kubatilisha tabia chaguo-msingi kwa kutumia mali ifuatayo:

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

Hivi ndivyo matokeo ya skrini yanavyoonekana baada ya kuuliza Eclipse JKube kutekeleza mvn k8s: kazi ya rasilimali.

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

Hatua ya 5. Sambaza programu kwenye nguzo ya Kubernetes

Sasa tuko tayari kupeleka programu: tumetoa taswira yake na kisha udhihirisho wa rasilimali zinazozalishwa kiotomatiki. Sasa kilichobaki ni kutumia haya yote kwenye nguzo ya Kubernetes. Ili kupeleka programu, unaweza, bila shaka, kutumia kubectl apply -f amri, lakini programu-jalizi inaweza kufanya hili kwa ajili yetu. Hiki ndicho kitakachoonekana kwenye skrini baada ya kuuliza Eclipse JKube kutekeleza mvn k8s:apply apply task:

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

Hatua ya 6. Ondoa programu kutoka kwa nguzo ya Kubernetes

Kwa kufanya hivyo, kazi ya undeploy hutumiwa, ambayo huondoa tu rasilimali zote ambazo zilitumika katika hatua ya awali, yaani, wakati kazi ya kuomba inatekelezwa. Hivi ndivyo tutakavyoona kwenye skrini baada ya kuuliza Eclipse JKube kutekeleza kazi ya mvn k8s:undeploy 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       <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 : $

Nini kingine unaweza kufanya na Eclipse JKube

Kwa hivyo, tuliangalia kazi kuu za lengo la Eclipse JKube na Kubernetes Maven Plugin, ambayo inawezesha maendeleo ya programu za Java kwa jukwaa la Kubernetes. Ikiwa hutaki kuingiza kazi hizi mara kwa mara kutoka kwa kibodi, unaweza kuziandika kwenye usanidi wa programu-jalizi, kwa mfano, kama hii:

<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>

Ni lazima kusema kwamba katika makala hii hatujazingatia kazi zote za lengo ambazo ziko kwenye Eclipse JKube na Kubernetes Maven Plugin, kwa hiyo tunatoa katika Jedwali la 2 orodha ya kazi za ziada ambazo zinaweza pia kuwa na manufaa kwako.

Jedwali 2. Malengo ya ziada ya Eclipse JKube.

Kazi
Hatua
Description

k8s: logi
KUHALALISHA
Kupokea kumbukumbu kutoka kwa programu inayoendesha Kubernetes.

k8s: kurekebisha
PACKAGE
Fungua mlango wa utatuzi ili uweze kutatua programu yako inayoendesha Kubernetes moja kwa moja kutoka kwa IDE.

k8s: peleka
Kufunga
Kuunda uma kwa ajili ya kazi ya Kusakinisha na kutumia maonyesho yaliyotolewa kwenye nguzo ya Kubernetes kwa njia sawa na katika kesi ya kazi ya kuomba.

k8s: kuangalia
PACKAGE
Usambazaji wa programu moja kwa moja kwa kufuatilia nafasi yake ya majina.

Inapeleka Programu za Java kwenye Red Hat OpenShift Kwa Kutumia Programu-jalizi ya OpenShift Maven

Ili kupeleka programu kutoka kwa mfano wetu kwenye jukwaa la Red Hat OpenShift, tunatumia programu-jalizi OpenShift Maven. Tofauti pekee itakuwa kwamba kiambishi awali cha kazi kitabadilika kutoka k8s hadi oc. Kwa chaguo-msingi programu-jalizi ya Kubernetes Maven hufanya docker-assemblies, na programu-jalizi ya OpenShift Maven - makusanyiko S2I. Hatufanyi mabadiliko yoyote kwenye mradi wetu zaidi ya kuondoa sifa ya jkube.generator.name kwa kuwa haihitajiki wakati wa kusukuma hadi kwenye sajili (OpenShift huweka picha kwenye sajili yake ya ndani wakati wa awamu ya ujenzi). Na hii ndio itaonekana kwenye skrini tunapoendesha mfano wetu, ambayo, kwa njia, tunafanya kazi za lengo sio moja kwa wakati mmoja, lakini mara moja:

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

Somo la video

Ili kupata maelezo zaidi kuhusu jinsi ya kurahisisha ukuzaji wa Kubernetes ukitumia Eclipse JKube, tazama mafunzo haya ya video kuhusu jinsi ya kupeleka kwa haraka programu rahisi ya Spring Boot kwenye Minikube:

Hitimisho

Katika makala haya, tulionyesha jinsi Eclipse JKube inavyorahisisha maisha kwa msanidi programu wa Java anapofanya kazi na Kubernetes. Habari zaidi juu ya Eclipse JKube inaweza kupatikana kwa tovuti ya mradi na GitHub.

Chanzo: mapenzi.com

Kuongeza maoni