25 taon na ang nakalilipas, pumasok ang Java sa mainstream ng programming at kalaunan ay naging isa sa mga pangunahing elemento sa paligid kung saan binuo ang mga stack ng application. Ngayon, gayunpaman, maraming mga tao at organisasyon na naging tapat sa Java sa loob ng maraming taon ay abala sa paglipat o isinasaalang-alang ang paglipat sa platform.
Sa kasamaang palad, ang Kubernetes ay may isang matarik na curve sa pag-aaral at nagpapakilala ng isa pang operational layer sa proseso ng pag-develop na nakasanayan ng mga Java programmer. Ngayon sasabihin namin sa iyo kung paano gamitin
Tradisyunal na Proseso ng Pag-unlad ng Java
Tradisyonal na proseso ng pag-unlad
kanin. 1. Tradisyunal na proseso ng pagbuo ng Java.
Proseso ng Pag-develop ng Java para sa Cloud
Kapag lumilipat sa mga cloud application, Kubernetes at
Ang metamorphosis ng tradisyonal na proseso ng pag-unlad ng Java sa paglipat sa ulap ay ipinapakita sa Fig. 2.
kanin. 2. Proseso ng pagbuo ng Java para sa cloud.
Eclipse JKube
Ang paglipat sa Kubernetes ay nagdaragdag ng isa pang operational layer sa proseso ng pag-develop, at maraming developer ang kinakabahan tungkol dito dahil gusto nilang tumuon sa kanilang pangunahing gawainβang application logicβsa halip na kung paano i-deploy ang mga ito. At dito ito pumapasok.
Sa natitirang bahagi ng artikulong ito, ipapakita namin sa iyo kung paano gawing simple ang proseso ng pagbuo ng Java sa kapaligiran ng Kubernetes sa pamamagitan ng paggamit ng Eclipse JKube kasama ang Kubernetes Maven Plugin.
Proseso ng Cloud Development Gamit ang Eclipse JKube
Isaalang-alang natin ang bahagyang binagong Java development scheme para sa cloud mula sa Fig. 2, na ipinapasok dito ang Eclipse JKube at Kubernetes Maven Plugin, tulad ng ipinapakita sa Fig. 3.
kanin. 3. Proseso ng pagbuo ng Java para sa cloud gamit ang Eclipse JKube.
Tulad ng nakikita natin, narito ang lahat ng mga operasyon para sa pakikipag-ugnayan sa mga Kubernetes at mga lalagyan (na naka-highlight sa pula sa diagram) ay pinapalitan ng mga default na gawain sa layunin ng Eclipse JKube, na nakalista sa Talahanayan. 1.
mesa 1. Eclipse JKube default na gawain.
Gawain
Stage
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
PRE_INTEGRATION_TEST
Pagbuo ng mga larawan ng docker
INSTALL
Pag-upload ng mga larawan ng docker sa registry
PROCESS_RESOURCES
Pagbuo ng mga K8 na manifest
I-COMPILE
Paglalapat ng mga nabuong manifest sa K8s
UNDEPLOY
Pag-alis ng mga mapagkukunan ng K8 na na-deploy gamit ang k8s:apply at k8s:deploy
Tandaan: Kung hindi mo gustong gamitin ng mga gawain ang mga opinyong default na ito, maaari mong manu-manong i-configure ang Eclipse JKube para sa iyong sarili, dahil sinusuportahan nito ang configuration sa pamamagitan ng
Ngayon tingnan natin ang mga halimbawa ng paggamit ng Eclipse JKube at Kubernetes Maven Plugin kapag nagtatrabaho sa mga application.
Pag-deploy ng Java Application sa Kubernetes Gamit ang Eclipse JKube
Sa halimbawang ito, magde-deploy kami ng simpleng Java application sa isang cluster
Bilang isang halimbawa ng application na ginagamit namin
~/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"
}
Hakbang 1. I-download ang Kubernetes Maven Plugin
Ang Kubernetes Maven Plugin ay nasa repositoryo
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
Kung OpenShift ang ginagamit sa halip na purong Kubernetes, ang pom.xml ay binago tulad ng sumusunod:
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>openshift-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
Hakbang 2. Buuin ang imahe ng docker
Ang JAR file ng application ay maaaring buuin gamit ang mvn package command, at pagkatapos ay ang mvn goal task na k8s:build ay maaaring gamitin upang bumuo ng docker image ng application. Tandaan na na-override namin ang default na pangalan ng larawan gamit ang property na ito:
<jkube.generator.name>docker.io/rohankanojia/random-generator:${project.version}</jkube.generator.name>
Bago buuin ang imahe, kailangan mong tiyakin na ang docker daemon ay nakalantad nang tama. Magagawa ito gamit ang sumusunod na utos:
$ eval $(minikube docker-env)
Pagkatapos ay ipinasok natin ang mvn k8s:build command, at ito ang makikita natin sa screen kapag binuo ang docker image gamit ang Eclipse JKube build task:
~/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 : $
Hakbang 3. I-upload ang larawan sa registry ng docker
Pagkatapos naming mabuo ang docker image na may push registry na na-configure (sa aming kaso ito ay docker.io), maaari naming ipadala ang larawang ito sa registry. Ito ang ipapakita pagkatapos naming hilingin sa Eclipse JKube na gawin ang mvn k8s:push push task:
~/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 : $
Pagkatapos ipadala ang imahe, kailangan mong suriin kung kasama ito sa pagpapatala. Sa aming kaso, nakikita lang namin ito sa Docker Hub, tulad ng ipinapakita sa Fig. 4.
kanin. 4. Ang larawang ipinadala sa registry ay lumabas sa Docker Hub.
Hakbang 4. Bumuo ng Kubernetes resource manifests para sa application
Kaya, nakolekta namin ang imahe ng application, ngayon kailangan naming isulat ang mga manifest ng Kubernetes. Upang gawin ito, ang Eclipse JKube ay may isang gawain na bumubuo ng mga matibay na resource manifest batay sa pinagbabatayan na balangkas ng Java (
Sa aming halimbawa, hinahayaan namin ang lahat ng bagay, at samakatuwid ang Eclipse JKube ay bumubuo ng isang manifest para sa default na pag-deploy at para sa serbisyong may uri ng ClusterIP. At pagkatapos lamang namin baguhin ang manifest ng serbisyo upang baguhin ang uri ng serbisyo sa NodePort. Maaari mong i-override ang default na gawi gamit ang sumusunod na property:
<jkube.enricher.jkube-service.type>NodePort</jkube.enricher.jkube-service.type>
Ganito ang hitsura ng screen output pagkatapos naming hilingin sa Eclipse JKube na gawin ang mvn k8s:resource resource task.
~/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 : $
Hakbang 5. I-deploy ang application sa Kubernetes cluster
Ngayon ay handa na kaming i-deploy ang application: nabuo namin ang imahe nito at pagkatapos ay awtomatikong nakabuo ng mga resource manifest. Ngayon ang natitira na lang ay ilapat ang lahat ng ito sa cluster ng Kubernetes. Upang i-deploy ang application, maaari mong, siyempre, gamitin ang kubectl apply -f command, ngunit magagawa ito ng plugin para sa amin. Ito ang lalabas sa screen pagkatapos naming hilingin sa Eclipse JKube na isagawa ang 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"
}
Hakbang 6. I-undeploy ang mga application mula sa Kubernetes cluster
Upang gawin ito, ginagamit ang undeploy na gawain, na nag-aalis lamang ng lahat ng mga mapagkukunan na inilapat sa nakaraang hakbang, iyon ay, kapag naisakatuparan ang pag-apply na gawain. Ito ang makikita natin sa screen pagkatapos naming hilingin sa Eclipse JKube na gawin ang 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 : $
Ano pa ang maaari mong gawin sa Eclipse JKube
Kaya, tiningnan namin ang mga pangunahing layunin na gawain ng Eclipse JKube at Kubernetes Maven Plugin, na nagpapadali sa pagbuo ng mga Java application para sa Kubernetes platform. Kung hindi mo nais na patuloy na ipasok ang mga gawaing ito mula sa keyboard, maaari mong isulat ang mga ito sa pagsasaayos ng plugin, halimbawa, tulad nito:
<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>
Dapat sabihin na sa artikulong ito ay hindi namin isinasaalang-alang ang lahat ng mga gawain sa layunin na nasa Eclipse JKube at Kubernetes Maven Plugin, kaya nagbibigay kami sa Talahanayan 2 ng isang listahan ng mga karagdagang gawain na maaaring maging kapaki-pakinabang din sa iyo.
mesa 2. Karagdagang mga gawain sa layunin ng Eclipse JKube.
Gawain
Stage
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
I-VALIDATE
Pagtanggap ng mga log mula sa isang application na tumatakbo sa Kubernetes.
PACKAGE
Magbukas ng debug port para ma-debug mo ang iyong application na tumatakbo sa Kubernetes nang direkta mula sa IDE.
INSTALL
Paggawa ng fork para sa gawaing Pag-install at paglalapat ng mga nabuong manifest sa cluster ng Kubernetes sa parehong paraan tulad ng sa kaso ng gawaing ilapat.
PACKAGE
Awtomatikong mainit na pag-deploy ng isang application sa pamamagitan ng pagsubaybay sa namespace nito.
Pag-deploy ng mga Java Application sa Red Hat OpenShift Gamit ang OpenShift Maven Plugin
Upang i-deploy ang application mula sa aming halimbawa sa platform ng Red Hat OpenShift, ginagamit namin ang plugin
~/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 lesson
Upang matuto nang higit pa tungkol sa kung paano gawing mas madali ang pag-develop ng Kubernetes sa Eclipse JKube, panoorin ang video tutorial na ito kung paano mabilis na mag-deploy ng simpleng Spring Boot na application sa Minikube:
Konklusyon
Sa artikulong ito, ipinakita namin kung paano pinapadali ng Eclipse JKube ang buhay para sa isang developer ng Java kapag nagtatrabaho sa Kubernetes. Higit pang impormasyon sa Eclipse JKube ay matatagpuan sa
Pinagmulan: www.habr.com