Tsim Java Applications rau Kubernetes Siv Eclipse JKube

25 xyoo dhau los, Java tau nkag mus rau hauv lub ntsiab ntawm cov programming thiab nws thiaj li dhau los ua ib qho ntawm cov ntsiab lus tseem ceeb nyob ib ncig ntawm daim ntawv thov pawg tsim. Niaj hnub no, txawm li cas los xij, ntau tus neeg thiab cov koom haum uas tau ua siab ncaj rau Java tau ntau xyoo tsis khoom tsiv teb tsaws lossis xav txog kev tsiv teb tsaws chaw. Kubernetes los yog nws cov derivatives xws li Red Hat OpenShift los yog Amazon EKS.

Tsim Java Applications rau Kubernetes Siv Eclipse JKube

Hmoov tsis zoo, Kubernetes muaj qhov kev kawm tob tob thiab qhia lwm txheej ua haujlwm rau hauv cov txheej txheem kev txhim kho uas Java programmers tau siv. Niaj hnub no peb yuav qhia koj yuav ua li cas siv Dab noj hnub JKube, txhawm rau ua kom yooj yim cov haujlwm ntxiv no cuam tshuam nrog Kubernetes thiab ntim khoom, thiab xyuas kom tsis muaj mob tsiv mus rau huab platform thaum tswj hwm Java ecosystem paub. Ntxiv mus, peb yuav qhia yuav ua li cas xa cov ntawv thov Java ntawm OpenShift platform siv OpenShift Maven plugin.

Traditional Java Development Process

Cov txheej txheem kev loj hlob ib txwm muaj Java (Daim duab 1) suav nrog tus tsim tawm sau cov lej, tom qab ntawd tsim cov chaw xa tawm hauv daim ntawv JAR lossis WAR cov ntaub ntawv, thiab tom qab ntawd xa tawm thiab khiav cov ntaub ntawv no ntawm lub vev xaib lossis daim ntawv thov server. Txoj hauv kev tseem ceeb los ua qhov no yog siv Maven los ntawm kab hais kom ua lossis siv IDE zoo li IntelliJ lossis dab noj hnub rau cov lej thiab ntim cov ntawv thov. Cov neeg tsim khoom siv los hloov cov cai thiab sim txhua yam kom huv si ua ntej ua qhov chaws thiab xa mus rau kev tswj hwm version.

Tsim Java Applications rau Kubernetes Siv Eclipse JKube

Rice. 1. Cov txheej txheem tsim kho Java ib txwm muaj.

Java Development Process rau Huab

Thaum tsiv mus rau huab thov, Kubernetes thiab ntim. Yog li, tam sim no tus tsim tawm yuav tsum tau ntim cov ntawv thov Java hauv ntim cov duab thiab tsim Kubernetes manifests uas piav txog cov duab no. Cov manifests tom qab ntawd raug siv rau cov khoom siv ntau lawm uas khiav Kubernetes. Nyob rau hauv lem, Kubernetes siv cov duab no los ntawm kev sau npe thiab xa cov ntawv thov raws li cov kev teeb tsa uas peb tau sau rau hauv manifests, uas feem ntau yog YAML cov ntaub ntawv.

Lub metamorphosis ntawm cov tsoos Java txoj kev loj hlob txheej txheem nyob rau hauv kev hloov mus rau huab yog qhia nyob rau hauv daim duab. 2.

Tsim Java Applications rau Kubernetes Siv Eclipse JKube

Rice. 2. Java txhim kho txheej txheem rau huab.

Dab noj hnub JKube

Kev tsiv mus rau Kubernetes ntxiv lwm txheej ua haujlwm rau cov txheej txheem kev txhim kho, thiab ntau tus neeg tsim khoom tau ntshai txog nws vim lawv xav tsom mus rau lawv cov haujlwm tseem ceeb - daim ntawv thov kev xav - ntau dua li siv lawv li cas. Thiab qhov no yog qhov uas nws los rau hauv kev ua si. Dab noj hnub JKube, uas tso cai rau cov neeg tsim khoom siv lawv cov tsev qiv ntawv thiab plugins (JKube Kit ua ke nrog Kubernetes Maven Plugin los yog OpenShift Maven Plugin) kom siv zog ua lub thawv thiab Kubernetes cov haujlwm ntsig txog los ntawm kev ua raws li daim duab hauv daim duab. 2.

Hauv seem ntawm tsab xov xwm no, peb yuav qhia koj yuav ua li cas txhawm rau txhim kho Java txheej txheem hauv Kubernetes ib puag ncig los ntawm kev siv Eclipse JKube nrog Kubernetes Maven Plugin.

Cloud Development Process siv dab noj hnub JKube

Cia peb xav txog qhov hloov kho me ntsis Java txoj kev txhim kho rau huab los ntawm daim duab 2, qhia dab noj hnub JKube thiab Kubernetes Maven Plugin rau hauv nws, raws li qhia hauv daim duab. 3.

Tsim Java Applications rau Kubernetes Siv Eclipse JKube

Rice. 3. Java txhim kho txheej txheem rau huab siv dab noj hnub JKube.

Raws li peb tuaj yeem pom, ntawm no tag nrho cov haujlwm rau kev cuam tshuam nrog Kubernetes thiab ntim khoom (qhov tseem ceeb hauv liab hauv daim duab) yog hloov los ntawm default Eclipse JKube lub hom phiaj cov haujlwm, uas tau teev tseg hauv Table. 1.

Rooj 1. Dab noj hnub JKube default hauj lwm.

Hom phiaj
Theem
piav qhia

k8s: ua
PRE_INTEGRATION_TEST
Tsev docker duab

k8s :ua
INSTALL
Uploading docker duab mus rau npe

k8s: ua
PROCESS_RESOURCES
Tsim K8s manifests

k8s: ua
COMPILE
Siv cov khoom tsim tawm rau K8s

k8s: ua
TSIS TXAUS SIAB
Tshem tawm K8s cov peev txheej uas tau siv los siv k8s: thov thiab k8s: xa tawm

Nco ntsoov: Yog tias koj tsis xav tau txoj haujlwm los siv cov kev xav tsis zoo no, koj tuaj yeem teeb tsa Eclipse JKube rau koj tus kheej, vim nws txhawb kev teeb tsa ntawm XML ΠΈ peev txheej.

Tam sim no cia saib cov piv txwv ntawm kev siv Eclipse JKube thiab Kubernetes Maven Plugin thaum ua haujlwm nrog cov ntawv thov.

Deploying a Java Application on Kubernetes Siv Eclipse JKube

Hauv qhov piv txwv no peb yuav xa ib daim ntawv thov Java yooj yim rau ntawm pawg Minikube siv Eclipse JKube. Siv Kubernetes Maven Plugin, peb tuaj yeem teeb tsa kev xa tawm yam tsis tas yuav sau ib qho kev teeb tsa.

Ua piv txwv daim ntawv thov peb siv yooj yim random tooj generator, uas ua rau JSON tso zis ntawm /random kawg:

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

Kauj ruam 1. Download Kubernetes Maven Plugin

Kubernetes Maven Plugin yog nyob rau hauv repository Maven Central Repository. Txhawm rau siv Eclipse JKube koj yuav tsum ntxiv Kubernetes Maven Plugin rau koj pom.xml raws li kev vam khom:

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

Yog tias OpenShift siv tsis yog Kubernetes ntshiab, ces pom.xml hloov raws li hauv qab no:

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

Kauj ruam 2. Tsim cov duab docker

Daim ntawv thov cov ntaub ntawv JAR tuaj yeem tsim nrog mvn pob lus txib, thiab tom qab ntawd mvn lub hom phiaj ua haujlwm k8s: tsim tuaj yeem siv los tsim cov duab docker ntawm daim ntawv thov. Nco ntsoov tias peb tau overridden lub npe duab lub npe nrog cov cuab yeej no:

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

Ua ntej tsim cov duab, koj yuav tsum xyuas kom meej tias docker daemon raug nthuav tawm kom raug. Qhov no tuaj yeem ua tiav nrog cov lus txib hauv qab no:

$ eval $(minikube docker-env)

Tom qab ntawd peb nkag mus rau mvn k8s: tsim cov lus txib, thiab qhov no yog qhov peb yuav pom ntawm qhov screen thaum tsim cov duab docker siv dab noj hnub JKube ua haujlwm:

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

Kauj ruam 3. Upload duab rau docker npe

Tom qab peb tau tsim cov duab docker nrog lub laub npe teeb tsa (hauv peb rooj plaub nws yog docker.io), peb tuaj yeem xa daim duab no mus rau npe. Qhov no yog qhov yuav tshwm sim tom qab peb thov dab noj hnub JKube ua lub mvn k8s: thawb lub luag haujlwm:

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

Tom qab xa cov duab, koj yuav tsum xyuas tias nws muaj nyob rau hauv daim ntawv teev npe. Hauv peb qhov xwm txheej, peb tsuas pom nws hauv Docker Hub, raws li qhia hauv daim duab. 4.

Tsim Java Applications rau Kubernetes Siv Eclipse JKube

Rice. 4. Cov duab xa mus rau npe tau tshwm sim hauv Docker Hub.

Kauj ruam 4. Tsim Kubernetes cov peev txheej manifests rau daim ntawv thov

Yog li, peb tau sau cov duab thov, tam sim no peb yuav tsum sau Kubernetes manifests. Txhawm rau ua qhov no, Dab Ntxwg Nyoog JKube muaj ib txoj haujlwm uas tsim cov peev txheej nruj raws li lub hauv paus Java moj khaum (Caij nplooj ntoos hlav khau raj, quarkus, Vert.x los yog lwm yam). Koj tuaj yeem hloov kho qhov manifest los ntawm kev siv cov ntaub ntawv XML teeb tsa thiab tso cov khoom seem (fragments ntawm cov ntaub ntawv xav tau) hauv daim ntawv thov folder src/main/jkube. Nyob rau hauv cov ntaub ntawv no, koj configuration yuav muab upload rau cov generated manifests.

Hauv peb qhov piv txwv, peb tawm txhua yam raws li yog, thiab yog li ntawd Dab Ntxwg Nyoog JKube ua kom pom qhov tshwm sim rau qhov kev xa tawm thiab rau cov kev pabcuam nrog hom ClusterIP. Thiab tsuas yog tom qab ntawd peb hloov kho qhov kev pabcuam manifest hloov hom kev pabcuam rau NodePort. Koj tuaj yeem override tus cwj pwm tsis zoo siv cov cuab yeej hauv qab no:

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

Qhov no yog qhov tso tawm qhov screen zoo li tom qab peb thov dab noj hnub JKube ua lub mvn k8s: cov peev txheej peev txheej.

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

Kauj ruam 5. Xa daim ntawv thov mus rau Kubernetes pawg

Tam sim no peb txhua tus tau teeb tsa los xa daim ntawv thov: peb tau tsim nws cov duab thiab tom qab ntawd cia li tsim cov peev txheej manifests. Tam sim no txhua yam uas tseem tshuav yog siv tag nrho cov no rau Kubernetes pawg. Txhawm rau xa daim ntawv thov, koj tuaj yeem, tau kawg, siv kubectl thov -f hais kom ua, tab sis lub plugin tuaj yeem ua qhov no rau peb. Nov yog qhov yuav tshwm sim ntawm qhov screen tom qab peb nug dab noj hnub JKube kom ua tiav mvn k8s: thov ua haujlwm:

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

Kauj ruam 6. Undeploy applications from the Kubernetes cluster

Txhawm rau ua qhov no, kev ua haujlwm tsis siv neeg siv, uas tsuas yog tshem tawm tag nrho cov peev txheej uas tau thov hauv cov kauj ruam dhau los, uas yog, thaum ua tiav cov haujlwm. Nov yog qhov peb yuav pom ntawm qhov screen tom qab peb thov dab noj hnub JKube ua lub mvn k8s: undeploy undeploy hauj lwm:

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

Dab tsi ntxiv koj tuaj yeem ua nrog Eclipse JKube

Yog li, peb tau saib lub hom phiaj tseem ceeb ntawm dab noj hnub JKube thiab Kubernetes Maven Plugin, uas pab txhawb kev txhim kho Java daim ntawv thov rau Kubernetes platform. Yog tias koj tsis xav mus tas li nkag mus rau cov haujlwm no los ntawm cov keyboard, koj tuaj yeem sau lawv hauv plugin configuration, piv txwv li, zoo li no:

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

Nws yuav tsum tau hais tias nyob rau hauv tsab xov xwm no peb tsis tau txiav txim siab tag nrho cov hom phiaj ua hauj lwm uas muaj nyob rau hauv dab noj hnub JKube thiab Kubernetes Maven Plugin, yog li peb muab nyob rau hauv Table 2 ib daim ntawv teev cov hauj lwm ntxiv uas kuj yuav pab tau rau koj.

Rooj 2. Ntxiv dab noj hnub JKube lub hom phiaj ua haujlwm.

Hom phiaj
Theem
piav qhia

k8s :ua
TSEEM CEEB
Tau txais cov cav los ntawm ib daim ntawv thov uas khiav ntawm Kubernetes.

k8s: ua
POB
Qhib qhov chaw nres nkoj debug kom koj tuaj yeem debug koj daim ntawv thov khiav ntawm Kubernetes ncaj qha los ntawm IDE.

k8s: ua
INSTALL
Tsim ib rab diav rawg rau kev teeb tsa ua haujlwm thiab siv cov khoom tsim tawm rau Kubernetes pawg tib yam li hauv cov ntaub ntawv thov ua haujlwm.

k8s: ua
POB
Tsis siv neeg kub xa tawm ntawm daim ntawv thov los ntawm kev taug qab nws lub npe chaw.

Siv Java Applications ntawm Red Hat OpenShift Siv OpenShift Maven Plugin

Txhawm rau xa daim ntawv thov los ntawm peb qhov piv txwv ntawm Red Hat OpenShift platform, peb siv lub plugin OpenShift Maven. Qhov txawv tsuas yog qhov ua haujlwm ua ntej yuav hloov ntawm k8s mus rau oc. Los ntawm lub neej ntawd Kubernetes Maven plugin ua docker-assemblies, thiab OpenShift Maven plugin - cov rooj sib txoos S2 I. Peb tsis tau hloov pauv rau peb qhov project uas tsis yog tshem tawm cov cuab yeej jkube.generator.name vim nws tsis tas yuav tsum tau thaum thawb mus rau npe (OpenShift muab cov duab tso rau hauv nws cov ntawv sau npe sab hauv thaum lub sijhawm tsim). Thiab qhov no yog qhov yuav tshwm sim ntawm qhov screen thaum peb khiav peb qhov piv txwv, nyob rau hauv uas, los ntawm txoj kev, peb ua lub hom phiaj ua hauj lwm tsis yog ib zaug, tab sis tag nrho ib zaug:

~/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 zaj lus qhia

Yog xav paub ntxiv txog yuav ua li cas kom Kubernetes txoj kev txhim kho yooj yim dua nrog Eclipse JKube, saib daim vis dis aus no qhia txog yuav ua li cas sai sai siv lub caij nplooj ntoos hlav khau raj yooj yim ntawm Minikube:

xaus

Hauv tsab xov xwm no, peb tau qhia yuav ua li cas Dab Ntxwg Nyoog JKube ua rau lub neej yooj yim dua rau Java tus tsim tawm thaum ua haujlwm nrog Kubernetes. Xav paub ntau ntxiv txog dab noj hnub JKube tuaj yeem nrhiav tau ntawm qhov project website thiab GitHub.

Tau qhov twg los: www.hab.com

Ntxiv ib saib