Ngembangake Aplikasi Java kanggo Kubernetes Nggunakake Eclipse JKube

25 taun kepungkur, Jawa mlebu aliran utama pemrograman lan pungkasane dadi salah sawijining unsur inti sing dibangun tumpukan aplikasi. Nanging saiki, akeh wong lan organisasi sing wis setya marang Jawa suwene pirang-pirang taun sibuk migrasi utawa mikir migrasi menyang platform kasebut. Kubernetes utawa turunane kayata Red Hat OpenShift utawa Amazon EX.

Ngembangake Aplikasi Java kanggo Kubernetes Nggunakake Eclipse JKube

Sayange, Kubernetes duwe kurva sinau sing curam lan ngenalake lapisan operasional liyane menyang proses pangembangan sing wis biasa para programer Java. Dina iki kita bakal pitutur marang kowe carane nggunakake Eclipse JKube, kanggo nyederhanakake operasi tambahan sing digandhengake karo Kubernetes lan kontaner, lan njamin migrasi tanpa rasa sakit menyang platform maya nalika njaga ekosistem Jawa sing akrab. Kajaba iku, kita bakal nuduhake carane nyebarake aplikasi Java ing platform OpenShift nggunakake plugin OpenShift Maven.

Proses Pengembangan Tradisional Jawa

Proses pangembangan tradisional Jawa (Gambar 1) nyakup kode nulis pangembang, banjur nggawe unit penyebaran ing wangun file JAR utawa WAR, lan banjur nyebarake lan mbukak file kasebut ing server web utawa aplikasi. Cara utama kanggo nindakake iki yaiku nggunakake Maven saka baris printah utawa nggunakake IDE kaya IntelliJ utawa Eclipse kanggo kode lan paket aplikasi. Pangembang digunakake kanggo nggawe owah-owahan kode lan nyoba kabeh sak tenane sadurunge nindakake kode lan ngirim menyang kontrol versi.

Ngembangake Aplikasi Java kanggo Kubernetes Nggunakake Eclipse JKube

Gabah. 1. Proses pangrembakane adat Jawa.

Proses Pangembangan Jawa kanggo Cloud

Nalika pindhah menyang aplikasi maya, Kubernetes lan kontaner. Mula, saiki pangembang kudu ngemas aplikasi Java gambar wadhah lan nggawe Kubernetes manifests sing njlèntrèhaké gambar iki. Manifestasi kasebut banjur ditrapake ing server produksi sing nganggo Kubernetes. Sabanjure, Kubernetes njupuk gambar kasebut saka pendaptaran lan nyebarake aplikasi miturut konfigurasi sing wis ditulis ing manifests, sing biasane file YAML.

Metamorfosis proses pangembangan Jawa tradisional ing transisi menyang awan ditampilake ing Fig. 2.

Ngembangake Aplikasi Java kanggo Kubernetes Nggunakake Eclipse JKube

Gabah. 2. Proses pangembangan Java kanggo awan.

Eclipse JKube

Migrasi menyang Kubernetes nambahake lapisan operasional liyane ing proses pangembangan, lan akeh pangembang sing gugup amarga pengin fokus ing karya inti-logika aplikasi-tinimbang carane nyebarake. Lan iki ngendi iku teka menyang muter. Eclipse JKube, sing ngidini pangembang nggunakake perpustakaan lan plugin (JKube Kit bebarengan karo Plugin Kubernetes Maven utawa OpenShift Maven Plugin) kanthi gampang nindakake operasi sing gegandhengan karo wadhah lan Kubernetes kanthi ngetutake diagram ing Gambar. 2.

Ing artikel liyane, kita bakal nuduhake sampeyan carane nyederhanakake proses pangembangan Java ing lingkungan Kubernetes kanthi nggunakake Eclipse JKube karo Kubernetes Maven Plugin.

Proses Pangembangan Cloud Nggunakake Eclipse JKube

Ayo dipikirake skema pangembangan Java sing rada diowahi kanggo awan saka Fig. 2, ngenalake Eclipse JKube lan Kubernetes Maven Plugin menyang, minangka ditampilake ing Fig. 3.

Ngembangake Aplikasi Java kanggo Kubernetes Nggunakake Eclipse JKube

Gabah. 3. Proses pangembangan Java kanggo awan nggunakake Eclipse JKube.

Kita bisa ndeleng, kene kabeh operasi kanggo sesambungan karo Kubernetes lan wadhah (disorot abang ing diagram) diganti dening gawan Eclipse JKube tugas goal, kang kapacak ing Tabel. 1.

Tabel 1. Eclipse JKube tugas gawan.

Tujuan
Stage
Description

k8s: gawe
PRE_INTEGRATION_TEST
Gambar docker bangunan

k8s: sru
PASANG
Ngunggah gambar docker menyang registri

k8s: sumber
PROSES_RESOURCES
Ngasilake K8s manifests

k8s: nglamar
KOMPILE
Nglamar kui manifests kanggo K8s

k8s: uwal
UNDEPLOY
Mbusak sumber daya K8s sing disebarake nggunakake k8s: aplikasi lan k8s: nyebarke

Wigati: Yen sampeyan ora pengin tugas nggunakake standar pendapat iki, sampeyan bisa kanthi manual ngatur Eclipse JKube dhewe, amarga ndhukung konfigurasi liwat XML ΠΈ sumber daya.

Saiki ayo deleng conto nggunakake Eclipse JKube lan Kubernetes Maven Plugin nalika nggarap aplikasi.

Nyebarake Aplikasi Java ing Kubernetes Nggunakake Eclipse JKube

Ing conto iki kita bakal masang aplikasi Java prasaja ing kluster Minikube nggunakake Eclipse JKube. Nggunakake Plugin Kubernetes Maven, kita bisa nyetel paramèter panyebaran tanpa kudu nulis konfigurasi.

Minangka conto aplikasi sing digunakake generator nomer acak prasaja, sing ngasilake output JSON ing titik pungkasan / acak:

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

Langkah 1. Download Kubernetes Maven Plugin

Kubernetes Maven Plugin ana ing repositori Maven Central Repository. Kanggo nggunakake Eclipse JKube sampeyan kudu nambahake Plugin Kubernetes Maven menyang pom.xml minangka dependensi:

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

Yen OpenShift digunakake tinimbang Kubernetes murni, banjur pom.xml diowahi kaya ing ngisor iki:

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

Langkah 2. Mbangun gambar docker

File JAR aplikasi bisa dibangun nganggo printah paket mvn, banjur mvn goal task k8s:build bisa digunakake kanggo mbangun gambar docker saka aplikasi. Elinga yen kita wis ngganti jeneng gambar standar karo properti iki:

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

Sadurunge nggawe gambar, sampeyan kudu mesthekake yen daemon docker wis kapapar kanthi bener. Iki bisa ditindakake kanthi printah ing ngisor iki:

$ eval $(minikube docker-env)

Banjur kita ngetik perintah mvn k8s:build, lan iki sing bakal kita deleng ing layar nalika mbangun gambar docker nggunakake tugas mbangun 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 : $

Langkah 3. Upload gambar menyang pendaptaran docker

Sawise kita nggawe gambar docker kanthi registri push sing dikonfigurasi (ing kasus kita yaiku docker.io), kita bisa ngirim gambar iki menyang registri. Iki sing bakal ditampilake sawise njaluk Eclipse JKube nindakake tugas 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 : $ 

Sawise ngirim gambar, sampeyan kudu mriksa manawa kalebu ing registri. Ing kasus kita, kita mung ndeleng ing Docker Hub, kaya sing ditampilake ing Fig. 4.

Ngembangake Aplikasi Java kanggo Kubernetes Nggunakake Eclipse JKube

Gabah. 4. Gambar sing dikirim menyang pendaptaran katon ing Docker Hub.

Langkah 4. Generate sumber daya Kubernetes manifests kanggo aplikasi

Dadi, kita wis nglumpukake gambar aplikasi, saiki kita kudu nulis manifests Kubernetes. Kanggo nindakake iki, Eclipse JKube duwe tugas sing ngasilake manifestasi sumber daya sing kaku adhedhasar kerangka Java sing ndasari (Boot spring, quarkus, Vert.x utawa liyane). Sampeyan uga bisa ngatur manifest kanthi nggunakake file konfigurasi XML lan nyelehake fragmen mentah (fragmen saka manifest sumber sing dibutuhake) ing folder aplikasi src/main/jkube. Ing kasus iki, konfigurasi sampeyan bakal diunggah menyang manifes sing digawe.

Ing conto kita, kita ninggalake kabeh kaya, lan mulane Eclipse JKube ngasilake manifest kanggo panyebaran standar lan kanggo layanan kanthi jinis ClusterIP. Lan mung banjur kita ngowahi manifest layanan kanggo ngganti jinis layanan kanggo NodePort. Sampeyan bisa ngilangi prilaku standar nggunakake properti ing ngisor iki:

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

Iki minangka output layar sawise kita takon Eclipse JKube nindakake tugas mvn k8s: sumber daya.

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

Langkah 5. Pasang aplikasi menyang kluster Kubernetes

Saiki kita wis siap kanggo nyebarake aplikasi kasebut: kita wis nggawe gambar lan banjur ngasilake sumber daya kanthi otomatis. Saiki sing isih ana yaiku ngetrapake kabeh iki menyang kluster Kubernetes. Kanggo nyebarake aplikasi kasebut, sampeyan bisa, mesthi, nggunakake perintah kubectl apply -f, nanging plugin bisa nindakake iki kanggo kita. Iki sing bakal katon ing layar sawise njaluk Eclipse JKube nglakokake mvn k8s:apply aplikasi tugas:

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

Langkah 6. Mbusak aplikasi saka kluster Kubernetes

Kanggo nindakake iki, tugas undeploy digunakake, sing mung mbusak kabeh sumber daya sing ditrapake ing langkah sadurunge, yaiku, nalika tugas aplikasi dieksekusi. Iki sing bakal kita deleng ing layar sawise njaluk Eclipse JKube nindakake tugas 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 : $

Apa maneh sing bisa ditindakake karo Eclipse JKube

Dadi, kita ndeleng tugas tujuan utama Eclipse JKube lan Kubernetes Maven Plugin, sing nggampangake pangembangan aplikasi Java kanggo platform Kubernetes. Yen sampeyan ora pengin terus ngetik tugas kasebut saka keyboard, sampeyan bisa nulis ing konfigurasi plugin, contone, kaya iki:

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

Sampeyan kudu ngandika ing artikel iki kita wis ora dianggep kabeh tugas goal sing ana ing Eclipse JKube lan Kubernetes Maven Plugin, supaya kita nyedhiyani ing Tabel 2 dhaftar tugas tambahan sing uga migunani kanggo sampeyan.

Tabel 2. Tugas gol Eclipse JKube tambahan.

Tujuan
Stage
Description

k8s: luh
VALIDASI
Nampa log saka aplikasi sing mlaku ing Kubernetes.

k8s: mbuh
PAKET
Bukak port debug supaya sampeyan bisa debug aplikasi sing mlaku ing Kubernetes langsung saka IDE.

k8s: nyekar
PASANG
Nggawe garpu kanggo tugas Instal lan nglamar manifests kui menyang kluster Kubernetes ing cara sing padha ing cilik saka tugas aplikasi.

k8s :waos
PAKET
Panyebaran panas otomatis aplikasi kanthi nglacak namespace.

Nerapake Aplikasi Java ing Red Hat OpenShift Nggunakake Plugin OpenShift Maven

Kanggo masang aplikasi saka conto kita ing platform Red Hat OpenShift, kita nggunakake plugin OpenShift Maven. Bentenipun mung bakal sing ater-ater tugas bakal ngganti saka k8s kanggo oc. Kanthi gawan plugin Kubernetes Maven ora docker-assemblies, lan plugin OpenShift Maven - rakitan S2I. Kita ora nggawe owah-owahan ing project kita liyane saka njabut property jkube.generator.name awit iku ora dibutuhake nalika meksa nindakake perkara kanggo pendaptaran (OpenShift nempatno gambar ing pendaptaran internal sak phase mbangun). Lan iki sing bakal katon ing layar nalika kita mbukak conto, ing ngendi, kanthi cara, kita nindakake tugas gol ora siji-sijine, nanging kabeh bebarengan:

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

Video wulangan

Kanggo mangerteni sing luwih lengkap babagan carane nggawe pembangunan Kubernetes luwih gampang karo Eclipse JKube, tonton video tutorial iki carane cepet masang aplikasi Spring Boot prasaja ing Minikube:

kesimpulan

Ing artikel iki, kita nuduhake carane Eclipse JKube nggawe urip luwih gampang kanggo pangembang Java nalika nggarap Kubernetes. Informasi liyane babagan Eclipse JKube bisa ditemokake ing situs web proyek lan ing GitHub.

Source: www.habr.com

Add a comment