Devlope aplikasyon Java pou Kubernetes lè l sèvi avèk Eclipse JKube

25 ane de sa, Java te antre nan endikap nan pwogramasyon epi evantyèlman te vin youn nan eleman prensipal yo alantou ki pil aplikasyon yo bati. Jodi a, sepandan, anpil moun ak òganizasyon ki rete fidèl a Java pandan plizyè ane yo okipe emigre oswa konsidere imigre nan platfòm la. Kubernetes oswa dérivés li yo tankou Sou entènèt jwèt Red Hat OpenShift oswa Amazon EKS.

Devlope aplikasyon Java pou Kubernetes lè l sèvi avèk Eclipse JKube

Malerezman, Kubernetes gen yon koub aprantisaj apik epi li entwodui yon lòt kouch operasyonèl nan pwosesis devlopman ke pwogramasyon Java yo abitye. Jodi a nou pral di w kijan pou itilize Eclipse JKube, pou senplifye operasyon adisyonèl sa yo ki asosye ak Kubernetes ak kontenè, epi asire yon migrasyon san doulè nan platfòm nwaj la pandan w ap kenbe ekosistèm Java abitye. Anplis, nou pral montre kijan pou deplwaye aplikasyon Java sou platfòm OpenShift lè l sèvi avèk Plugin OpenShift Maven.

Pwosesis Devlopman Java Tradisyonèl

Pwosesis devlopman tradisyonèl yo Java (Figi 1) enplike nan devlopè ekri kòd, Lè sa a, kreye inite deplwaman nan fòm JAR oswa WAR dosye, ak Lè sa a, deplwaye ak kouri fichye sa yo sou yon sèvè entènèt oswa aplikasyon. Fason prensipal pou fè sa se sèvi ak Maven nan liy lòd la oswa itilize yon IDE tankou IntelliJ oswa Eclipse pou kode ak pake aplikasyon yo. Devlopè yo abitye fè chanjman kòd ak teste tout bagay byen anvan yo komèt kòd la epi soumèt li nan kontwòl vèsyon.

Devlope aplikasyon Java pou Kubernetes lè l sèvi avèk Eclipse JKube

Diri. 1. Pwosesis devlopman tradisyonèl Java.

Pwosesis Devlopman Java pou nwaj la

Lè w ap deplase nan aplikasyon pou nwaj, Kubernetes ak resipyan. Se poutèt sa, kounye a pwomotè a bezwen pake aplikasyon Java nan imaj veso yo epi kreye manifest Kubernetes ki dekri imaj sa yo. Lè sa a, manifeste sa yo aplike nan sèvè pwodiksyon an kouri Kubernetes. Nan vire, Kubernetes pran imaj sa yo nan rejis la epi deplwaye aplikasyon yo dapre konfigirasyon yo ke nou te ekri nan manifeste, ki anjeneral yo se dosye YAML.

Metamòfoz nan pwosesis devlopman tradisyonèl Java nan tranzisyon an nan nwaj la montre nan Fig. 2.

Devlope aplikasyon Java pou Kubernetes lè l sèvi avèk Eclipse JKube

Diri. 2. Pwosesis devlopman Java pou nwaj la.

Eclipse JKube

Migrasyon nan Kubernetes ajoute yon lòt kouch operasyonèl nan pwosesis devlopman an, ak anpil devlopè yo nève sou li paske yo vle konsantre sou travay debaz yo - lojik aplikasyon an - olye ke fason yo deplwaye yo. Epi sa a se kote li antre nan jwèt. Eclipse JKube, ki pèmèt devlopè yo sèvi ak bibliyotèk yo ak grefon yo (JKube Twous ansanm ak Kubernetes Maven Plugin oswa OpenShift Maven Plugin) pou fè san efò kontenè ak operasyon ki gen rapò ak Kubernetes nan swiv dyagram nan Figi a. 2.

Nan rès atik sa a, nou pral montre w kouman pou senplifye pwosesis devlopman Java nan anviwònman Kubernetes lè w itilize Eclipse JKube ak Plugin Kubernetes Maven.

Pwosesis Devlopman Cloud Sèvi ak Eclipse JKube

Ann konsidere yon konplo devlopman Java yon ti kras modifye pou nwaj la soti nan Fig. 2, entwodwi Eclipse JKube ak Kubernetes Maven Plugin nan li, jan yo montre nan Fig. 3.

Devlope aplikasyon Java pou Kubernetes lè l sèvi avèk Eclipse JKube

Diri. 3. Pwosesis devlopman Java pou nwaj la lè l sèvi avèk Eclipse JKube.

Kòm nou ka wè, isit la tout operasyon pou kominike avèk Kubernetes ak resipyan (ki make an wouj nan dyagram nan) yo ranplase pa default travay objektif Eclipse JKube, ki nan lis nan Tablo. 1.

Tablo 1. Eclipse JKube travay default.

Objektif Travay la
Etap
Deskripsyon

k8s:konstwi
PRE_INTEGRATION_TEST
Bati imaj docker

k8s:pouse
ENSTALE
Téléchargement imaj Docker nan rejis la

k8s:resous
PROCESS_RESOURCES
Jenere K8s manifeste

k8s:aplike
KONPILE
Aplike manifeste généré pou K8 yo

k8s:deplwaye
DEPLIKE
Retire resous K8s ki te deplwaye lè l sèvi avèk k8s:apply ak k8s:deploy

Remak: Si ou pa vle travay yo sèvi ak default opinyon sa yo, ou ka manyèlman configured Eclipse JKube pou tèt ou, paske li sipòte konfigirasyon atravè XML и resous yo.

Koulye a, ann gade nan egzanp lè w ap itilize Eclipse JKube ak Kubernetes Maven Plugin lè w ap travay ak aplikasyon yo.

Deplwaye yon aplikasyon Java sou Kubernetes lè l sèvi avèk Eclipse JKube

Nan egzanp sa a nou pral deplwaye yon aplikasyon Java senp sou yon gwoup Minikube lè l sèvi avèk Eclipse JKube. Sèvi ak Kubernetes Maven Plugin la, nou ka mete paramèt deplwaman san yo pa bezwen ekri okenn konfigirasyon.

Kòm yon egzanp aplikasyon nou itilize senp dèlko nimewo o aza, ki pwodui pwodiksyon JSON nan pwen final / o aza:

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

Etap 1. Telechaje Kubernetes Maven Plugin

Kubernetes Maven Plugin se nan repozitwa a Maven Central Repository. Pou itilize Eclipse JKube ou bezwen ajoute Kubernetes Maven Plugin nan pom.xml ou kòm yon depandans:

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

Si yo itilize OpenShift olye pou yo Kubernetes pi, lè sa a pom.xml modifye jan sa a:

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

Etap 2. Bati imaj la docker

Fichye JAR aplikasyon an ka bati ak kòmand pakè mvn, epi answit travay mvn objektif k8s:build la ka itilize pou konstwi yon imaj docker aplikasyon an. Remake byen ke nou te ranplase non imaj la default ak pwopriyete sa a:

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

Anvan bati imaj la, ou bezwen asire w ke demon an Docker ekspoze kòrèkteman. Sa a ka fè ak lòd sa a:

$ eval $(minikube docker-env)

Lè sa a, nou antre nan mvn k8s: build kòmandman an, ak sa a se sa nou pral wè sou ekran an lè w ap bati imaj la docker lè l sèvi avèk travay la Eclipse JKube bati:

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

Etap 3. Voye imaj la nan rejis Docker la

Apre nou fin bati imaj la docker ak rejis la pouse configuré (nan ka nou an li se docker.io), nou ka voye imaj sa a nan rejis la. Men sa ki pral parèt apre nou mande Eclipse JKube pou fè travay mvn k8s:push push la:

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

Apre voye imaj la, ou bezwen tcheke si li enkli nan rejis la. Nan ka nou an, nou tou senpleman wè li nan Docker Hub, jan yo montre nan Fig. 4.

Devlope aplikasyon Java pou Kubernetes lè l sèvi avèk Eclipse JKube

Diri. 4. Imaj la voye nan rejis la parèt nan Docker Hub.

Etap 4. Jenere manifès resous Kubernetes pou aplikasyon an

Se konsa, nou te kolekte imaj aplikasyon an, kounye a nou bezwen ekri manifest Kubernetes. Pou fè sa, Eclipse JKube gen yon travay ki jenere manifès resous rijid ki baze sou fondasyon Java ki kache (Spring bòt, Karkus, Vert.x oswa kèk lòt). Ou kapab tou personnaliser manifest la lè w sèvi ak yon fichye konfigirasyon XML epi mete fragman anvan tout koreksyon (fragman nan manifès resous ki nesesè yo) nan katab aplikasyon src/main/jkube. Nan ka sa a, yo pral telechaje konfigirasyon ou a nan manifeste yo pwodwi.

Nan egzanp nou an, nou kite tout bagay jan yo ye, ak Se poutèt sa Eclipse JKube jenere yon manifest pou deplwaman default la ak pou sèvis la ak kalite ClusterIP. Epi sèlman lè sa a nou modifye manifest sèvis la pou chanje kalite sèvis la nan NodePort. Ou ka pase sou kontwòl konpòtman default lè l sèvi avèk pwopriyete sa a:

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

Men ki jan pwodiksyon ekran an sanble apre nou mande Eclipse JKube pou fè travay mvn k8s:resource resous la.

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

Etap 5. Deplwaye aplikasyon an nan gwoup Kubernetes la

Koulye a, nou tout ap deplwaye aplikasyon an: nou te pwodwi imaj li yo ak Lè sa a, otomatikman pwodwi manifeste resous yo. Koulye a, tout sa ki rete se aplike tout sa a nan gwoup Kubernetes la. Pou deplwaye aplikasyon an, ou ka, nan kou, sèvi ak kòmand kubectl aplike -f, men Plugin la ka fè sa pou nou. Men sa ki pral parèt sou ekran an apre nou mande Eclipse JKube pou egzekite travay mvn k8s:apply aplike:

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

Etap 6. Deplwaye aplikasyon ki soti nan gwoup Kubernetes la

Pou fè sa, yo itilize travay la deploye, ki tou senpleman retire tout resous ki te aplike nan etap anvan an, se sa ki, lè travay la aplike egzekite. Men sa nou pral wè sou ekran an apre nou mande Eclipse JKube pou fè travay 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 : $

Ki lòt bagay ou ka fè ak Eclipse JKube

Se konsa, nou te gade objektif prensipal travay Eclipse JKube ak Kubernetes Maven Plugin, ki fasilite devlopman aplikasyon Java pou platfòm Kubernetes la. Si ou pa vle toujou ap antre nan travay sa yo nan klavye a, ou ka ekri yo nan konfigirasyon an plugin, pou egzanp, tankou sa a:

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

Li dwe di ke nan atik sa a nou pa te konsidere tout travay objektif ki nan Eclipse JKube ak Kubernetes Maven Plugin, kidonk nou bay nan Tablo 2 yon lis travay adisyonèl ki ka itil ou tou.

Tablo 2. Lòt travay objektif Eclipse JKube.

Objektif Travay la
Etap
Deskripsyon

k8s:log
VALIDE
Resevwa mòso bwa nan yon aplikasyon k ap kouri sou Kubernetes.

k8s:debug
PACKAGE
Louvri yon pò debug pou ou ka debug aplikasyon w lan kouri sou Kubernetes dirèkteman nan IDE la.

k8s:deplwaye
ENSTALE
Kreye yon fouchèt pou travay la Enstale ak aplike manifeste yo pwodwi nan gwoup Kubernetes la menm jan ak nan ka a nan travay la aplike.

k8s:gade
PACKAGE
Otomatik deplwaman cho nan yon aplikasyon pa swiv espas non li yo.

Deplwaye aplikasyon Java sou Red Hat OpenShift Sèvi ak OpenShift Maven Plugin la

Pou deplwaye aplikasyon an nan egzanp nou an sou platfòm Red Hat OpenShift, nou itilize Plugin la OpenShift Maven. Sèl diferans ki genyen se ke prefiks travay la pral chanje soti nan k8s rive nan oc. Pa default Plugin Kubernetes Maven fè wokè-asanble yo, ak OpenShift Maven plugin - asanble yo S2I. Nou pa fè okenn chanjman nan pwojè nou an ki pa retire pwopriyete a jkube.generator.name paske li pa obligatwa lè w ap pouse nan rejis la (OpenShift mete imaj la nan rejis entèn li pandan faz konstriksyon an). Ak sa a se sa ki pral parèt sou ekran an lè nou kouri egzanp nou an, nan ki, nan chemen an, nou fè travay objektif pa youn nan yon moman, men tout nan yon fwa:

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

Videyo leson

Pou aprann plis sou fason pou fè devlopman Kubernetes pi fasil ak Eclipse JKube, gade leson patikilye videyo sa a sou kijan pou deplwaye byen vit yon aplikasyon Spring Boot senp sou Minikube:

Konklizyon

Nan atik sa a, nou te montre kouman Eclipse JKube fè lavi pi fasil pou yon pwomotè Java lè w ap travay ak Kubernetes. Ou ka jwenn plis enfòmasyon sou Eclipse JKube nan sit entènèt pwojè ak sou GitHub.

Sous: www.habr.com

Add nouvo kòmantè