Ke hoʻomohala nei i nā noi Java no nā Kubernetes me ka hoʻohana ʻana iā Eclipse JKube

25 mau makahiki i hala aku nei, ua komo ʻo Java i ke kumu nui o ka hoʻonohonoho ʻana a ua lilo i hoʻokahi o nā mea koʻikoʻi e pili ana i ke kūkulu ʻia ʻana o nā waihona noi. Eia naʻe, i kēia lā, nui nā kānaka a me nā hui i kūpaʻa iā Java no nā makahiki he nui i ka neʻe ʻana a i ʻole e noʻonoʻo ana e neʻe i ka paepae. Kubernetes a i ʻole nā ​​​​mea hoʻopuka e like me ʻO Red Hat OpenShift ai ole ia, Amazon EKS.

Ke hoʻomohala nei i nā noi Java no nā Kubernetes me ka hoʻohana ʻana iā Eclipse JKube

ʻO ka mea pōʻino, loaʻa iā Kubernetes kahi kaʻe aʻo kiʻekiʻe a hoʻolauna i kahi papa hana ʻē aʻe i loko o ke kaʻina hana hoʻomohala i maʻa mau ai nā polokalamu Java. I kēia lā e haʻi mākou iā ʻoe pehea e hoʻohana ai Eclipse JKube, e hoʻomaʻamaʻa i kēia mau hana hou e pili ana me nā Kubernetes a me nā ipu, a e hōʻoia i ka neʻe ʻana i ka ʻeha ʻole i ka paepae ao me ka mālama ʻana i ka kaiaola Java maʻa. Eia kekahi, e hōʻike mākou pehea e hoʻokau ai i nā noi Java ma ka OpenShift platform me ka hoʻohana ʻana i ka plugin OpenShift Maven.

Ke Kaʻina Hana Hana Kuʻuna Java

Kaʻina hana kuʻuna Iawa (Figure 1) pili i ka mea hoʻomohala kākau code, a laila hoʻokumu i nā ʻāpana hoʻolālā ma ke ʻano o nā faila JAR a i ʻole WAR, a laila e hoʻolele a holo i kēia mau faila ma kahi pūnaewele a i ʻole ke kikowaena noi. ʻO ke ala nui e hana ai i kēia, ʻo ia ka hoʻohana ʻana iā Maven mai ka laina kauoha a i ʻole e hoʻohana i kahi IDE e like me IntelliJ a i ʻole Eclipse e code a hoʻopaʻa i nā noi. Hoʻohana ʻia nā mea hoʻomohala e hana i nā hoʻololi code a hoʻāʻo pono i nā mea āpau ma mua o ka hana ʻana i ke code a waiho ʻia i ka mana mana.

Ke hoʻomohala nei i nā noi Java no nā Kubernetes me ka hoʻohana ʻana iā Eclipse JKube

Laiki. 1. Kaʻina hana hoʻomohala Java kuʻuna.

Ke Kaʻina Hana Hoʻomohala Java no ke Ao

Ke neʻe nei i nā noi ao, Kubernetes a mau pahu hopu. No laila, i kēia manawa pono ka mea hoʻomohala e hoʻopili i nā polokalamu Java i loko kiʻi ipu a hana i nā hōʻike Kubernetes e wehewehe i kēia mau kiʻi. Hoʻopili ʻia kēia mau hōʻike i ka kikowaena hana e holo ana i nā Kubernetes. Ma ka huli ʻana, lawe ʻo Kubernetes i kēia mau kiʻi mai ka papa inoa a kau i nā noi e like me nā hoʻonohonoho a mākou i kākau ai i nā hōʻike, ʻo ia ka faila YAML.

Hōʻike ʻia ka metamorphosis o ke kaʻina hana hoʻomohala Java kuʻuna i ka hoʻololi ʻana i ke ao. 2.

Ke hoʻomohala nei i nā noi Java no nā Kubernetes me ka hoʻohana ʻana iā Eclipse JKube

Laiki. 2. Kaʻina hana hoʻomohala Java no ke ao.

Eclipse JKube

Hoʻohui ʻia ka neʻe ʻana i Kubernetes i kahi papa hana ʻē aʻe i ke kaʻina hana hoʻomohala, a hopohopo nā mea hoʻomohala he nui no ka mea makemake lākou e kālele i kā lākou hana koʻikoʻi-ʻo ka loiloi noi-ma mua o ke ʻano o ka hoʻonohonoho ʻana iā lākou. A eia kahi e komo ai. Eclipse JKube, hiki i nā mea hoʻomohala ke hoʻohana i kā lākou mau waihona a me nā plugins (JKube Kit pū me Kubernetes Maven Plugin ai ole ia, Pākuʻi OpenShift Maven) e hana maʻalahi i ka pahu a me nā hana e pili ana i nā Kubernetes ma ka hahai ʻana i ke kiʻikuhi ma ke Kiʻi. 2.

Ma ke koena o kēia ʻatikala, e hōʻike mākou iā ʻoe pehea e hoʻomaʻamaʻa ai i ke kaʻina hana hoʻomohala Java ma ke kaiapuni Kubernetes me ka hoʻohana ʻana iā Eclipse JKube me ka Kubernetes Maven Plugin.

Kaʻina hana hoʻomohala ʻana i ke ao me ka hoʻohana ʻana iā Eclipse JKube

E noʻonoʻo kākou i kahi hoʻolālā hoʻomohala Java i hoʻololi iki ʻia no ke ao mai Fig. 2, e hoʻokomo ana iā Eclipse JKube a me Kubernetes Maven Plugin i loko, e like me ka hōʻike ʻana ma ka Fig. 3.

Ke hoʻomohala nei i nā noi Java no nā Kubernetes me ka hoʻohana ʻana iā Eclipse JKube

Laiki. 3. Ke kaʻina hana hoʻomohala Java no ke ao e hoʻohana ana iā Eclipse JKube.

E like me kā mākou e ʻike ai, eia nā hana āpau no ka launa pū ʻana me nā Kubernetes a me nā ipu (i hōʻike ʻia i ka ʻulaʻula ma ke kiʻi) ua pani ʻia e nā hana pahuhopu Eclipse JKube paʻamau, i helu ʻia ma ka Papa. 1.

Papakaukau 1. Eclipse JKube hana paʻamau.

Nń Pahuhopu
Wāwae
hōʻikeʻano

k8s:kūkulu
PRE_INTEGRATION_TEST
Ke kūkulu nei i nā kiʻi docker

k8s:koi
hoʻouka
Ke hoʻouka ʻana i nā kiʻi docker i ke kākau inoa

k8s:waiwai
PROCESS_RESOURCES
Ke hana nei i nā hōʻike K8

k8s: pili
HOOHULU
Ke noi nei i nā hōʻike i hana ʻia i nā K8

k8s: wehe ʻia
HOOLAHA
Ke wehe nei i nā kumuwaiwai K8s i hoʻohana ʻia me ka hoʻohana ʻana i k8s: hoʻopili a me k8s: hoʻolālā

'Ōlelo Aʻo: Inā ʻaʻole ʻoe makemake i nā hana e hoʻohana i kēia mau kuhi manaʻo, hiki iā ʻoe ke hoʻonohonoho lima iā Eclipse JKube nou iho, no ka mea, kākoʻo ia i ka hoʻonohonoho ʻana ma o 'ōkuene и kumuwaiwai.

I kēia manawa, e nānā kākou i nā hiʻohiʻona o ka hoʻohana ʻana iā Eclipse JKube a me Kubernetes Maven Plugin i ka hana ʻana me nā noi.

Ke hoʻohana nei i kahi palapala Java ma nā Kubernetes me ka hoʻohana ʻana iā Eclipse JKube

Ma kēia hiʻohiʻona e kau mākou i kahi noi Java maʻalahi ma kahi hui ʻO Minikube me ka hoʻohana ʻana iā Eclipse JKube. Ke hoʻohana nei i ka Kubernetes Maven Plugin, hiki iā mākou ke hoʻonohonoho i nā ʻāpana hoʻonohonoho me ka ʻole e kākau i kekahi hoʻonohonoho.

Ma ke ʻano he polokalamu hoʻohālike mākou e hoʻohana ai mīkini hana helu maʻalahi, ka mea e hoʻopuka ai i ka puka JSON ma ka /random endpoint:

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

KaʻAnuʻu Hana 1. Download Kubernetes Maven Plugin

Aia ʻo Kubernetes Maven Plugin i ka waihona Maven Central waihona. No ka hoʻohana ʻana iā Eclipse JKube pono ʻoe e hoʻohui i ka Kubernetes Maven Plugin i kāu pom.xml ma ke ʻano he hilinaʻi:

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

Inā hoʻohana ʻia ʻo OpenShift ma kahi o nā Kubernetes maʻemaʻe, a laila hoʻololi ʻia ka pom.xml penei:

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

KaʻAnuʻu 2. E kūkulu i ke kiʻi docker

Hiki ke kūkulu ʻia ka faila JAR o ka noi me ke kauoha pūʻolo mvn, a laila hiki ke hoʻohana ʻia ka hana pahuhopu mvn k8s:build e kūkulu i kahi kiʻi docker o ka noi. E hoʻomaopopo ua hoʻopau mākou i ka inoa kiʻi paʻamau me kēia waiwai:

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

Ma mua o ke kūkulu ʻana i ke kiʻi, pono ʻoe e hōʻoia i ka hōʻike pololei ʻana o ka daemon docker. Hiki ke hana i kēia me kēia kauoha:

$ eval $(minikube docker-env)

A laila, komo mākou i ka mvn k8s: ke kauoha kūkulu, a ʻo kēia ka mea a mākou e ʻike ai ma ka ʻaoʻao ke kūkulu ʻana i ke kiʻi docker me ka hoʻohana ʻana i ka hana hana 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 : $

KaʻAnuʻu Hana 3. Hoʻouka i ke kiʻi i ka docker kakau

Ma hope o kā mākou kūkulu ʻana i ke kiʻi docker me ka hoʻopaʻa inoa pana i hoʻonohonoho ʻia (i kā mākou hihia ʻo docker.io), hiki iā mākou ke hoʻouna i kēia kiʻi i ka papa inoa. ʻO kēia ka mea e hōʻike ʻia ma hope o kā mākou noi ʻana iā Eclipse JKube e hana i ka 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 : $ 

Ma hope o ka hoʻounaʻana i ke kiʻi, ponoʻoe e nānā i ka hoʻokomoʻia i loko o ke kākau inoa. I kā mākou hihia, ʻike mākou iā ia ma Docker Hub, e like me ka hōʻike ʻana ma Fig. 4.

Ke hoʻomohala nei i nā noi Java no nā Kubernetes me ka hoʻohana ʻana iā Eclipse JKube

Laiki. 4. Ua ʻike ʻia ke kiʻi i hoʻouna ʻia i ke kākau inoa ma Docker Hub.

KaʻAnuʻu Hana 4. E hana i nā hōʻike kumu kumu Kubernetes no ka noi

No laila, ua ʻohi mākou i ke kiʻi noi, pono mākou e kākau i nā hōʻike Kubernetes. No ka hana ʻana i kēia, loaʻa iā Eclipse JKube kahi hana e hana ai i nā hōʻike kumu waiwai paʻa e pili ana i ke kumu o ka Java framework (ʻ bootpala puna, ʻO Quarkus, Vert.x a i ʻole kekahi). Hiki iā ʻoe ke hoʻopilikino i ka hōʻike ma ka hoʻohana ʻana i kahi faila hoʻonohonoho XML a kau i nā ʻāpana maka (mau ʻāpana o ka hōʻike kumu i makemake ʻia) i loko o ka waihona noi src/main/jkube. I kēia hihia, e hoʻouka ʻia kāu hoʻonohonoho i nā hōʻike i hana ʻia.

Ma kā mākou laʻana, haʻalele mākou i nā mea āpau, a no laila e hoʻopuka ʻo Eclipse JKube i kahi hōʻike no ka hoʻonohonoho paʻamau a no ka lawelawe me ke ʻano ClusterIP. A laila hoʻololi mākou i ka hōʻike lawelawe e hoʻololi i ke ʻano lawelawe iā NodePort. Hiki iā ʻoe ke hoʻopau i ka hana paʻamau me ka hoʻohana ʻana i kēia waiwai:

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

ʻO kēia ke ʻano o ka puka aniani ma hope o kā mākou noi ʻana iā Eclipse JKube e hana i ka hana mvn k8s: kumu waiwai.

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

KaʻAnuʻu 5. E hoʻolālā i ka palapala noi i ka hui Kubernetes

I kēia manawa ua mākaukau mākou e kau i ka palapala noi: ua hana mākou i kāna kiʻi a laila hana ʻakomi i nā hōʻike kumu. I kēia manawa, ʻo ka hoʻopili ʻana i kēia mau mea āpau i ka hui Kubernetes. No ka kau ʻana i ka noi, hiki iā ʻoe, ʻoiaʻiʻo, hoʻohana i ke kauoha kubectl apply -f, akā hiki i ka plugin ke hana i kēia no mākou. ʻO kēia ka mea e ʻike ʻia ma ka ʻaoʻao ma hope o kā mākou noi ʻana iā Eclipse JKube e hoʻokō i ka mvn k8s: hoʻopili i ka hana:

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

KaʻAnuʻu 6. Wehe i nā noi mai ka hui Kubernetes

No ka hana ʻana i kēia, hoʻohana ʻia ka hana undeploy, ka mea e wehe wale i nā kumuwaiwai āpau i hoʻohana ʻia i ka pae mua, ʻo ia hoʻi, ke hoʻokō ʻia ka hana noi. ʻO kēia ka mea a mākou e ʻike ai ma ka pale ma hope o kā mākou noi ʻana iā Eclipse JKube e hana i ka 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 : $

He aha hou kāu e hana ai me Eclipse JKube

No laila, ua nānā mākou i nā hana pahuhopu nui o Eclipse JKube a me Kubernetes Maven Plugin, e hoʻomaʻamaʻa i ka hoʻomohala ʻana i nā noi Java no ke kahua Kubernetes. Inā ʻaʻole ʻoe makemake e hoʻokomo mau i kēia mau hana mai ka papa keyboard, hiki iā ʻoe ke kākau iā lākou i ka hoʻonohonoho plugin, no ka laʻana, e like me kēia:

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

Pono e ʻōlelo ʻia ma kēia ʻatikala ʻaʻole mākou i noʻonoʻo i nā hana pahuhopu āpau i loko o Eclipse JKube a me Kubernetes Maven Plugin, no laila hāʻawi mākou i ka Papa 2 i kahi papa inoa o nā hana hou aʻe e pono ai iā ʻoe.

Papakaukau 2. Nā hana pahuhopu ʻo Eclipse JKube hou.

Nń Pahuhopu
Wāwae
hōʻikeʻano

k8s:log
HOOLAHA
Loaʻa nā moʻolelo mai kahi palapala noi e holo ana ma Kubernetes.

k8s:debug
PACKAGE
E wehe i kahi awa debug i hiki iā ʻoe ke hoʻopololei i kāu noi e holo pololei ana ma Kubernetes mai ka IDE.

k8s: hoʻolaha
hoʻouka
Ke hana ʻana i kahi maʻa no ka hana Install a me ka hoʻopili ʻana i nā hōʻike i hana ʻia i ka hui Kubernetes ma ke ʻano like me ke ʻano o ka hana noi.

k8s: kiai
PACKAGE
Hoʻolaha wela ʻakomi o kahi noi ma ka nānā ʻana i kona inoa inoa.

Ke hoʻohana nei i nā polokalamu Java ma Red Hat OpenShift me ka hoʻohana ʻana i ka OpenShift Maven Plugin

No ka waiho ʻana i ka noi mai kā mākou hiʻohiʻona ma ka Red Hat OpenShift platform, hoʻohana mākou i ka plugin OpenShift Maven. ʻO ka ʻokoʻa wale nō e hoʻololi ʻia ka prefix hana mai k8s a i oc. Ma ka maʻamau, hana ʻo Kubernetes Maven plugin ka loea-hui, a me ka OpenShift Maven plugin - hui S2I. ʻAʻole mākou e hoʻololi i kā mākou papahana ma mua o ka wehe ʻana i ka waiwai jkube.generator.name no ka mea ʻaʻole koi ʻia i ka wā e hoʻokuʻu ai i ke kākau inoa (Hoʻokomo ʻo OpenShift i ke kiʻi i loko o kāna papa inoa kūloko i ka wā kūkulu). A ʻo kēia ka mea e ʻike ʻia ma ka pale ke holo mākou i kā mākou hiʻohiʻona, ma ke ala, hana mākou i nā hana pahuhopu ʻaʻole hoʻokahi i ka manawa, akā i ka manawa hoʻokahi:

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

Haʻawina wikiō

I mea e aʻo hou aʻe e pili ana i ka hoʻomohala ʻana i nā Kubernetes me Eclipse JKube, e nānā i kēia aʻoaʻo wikiō e pili ana i ka hoʻonohonoho wikiwiki ʻana i kahi noi Spring Boot maʻalahi ma Minikube:

hopena

Ma kēia ʻatikala, ua hōʻike mākou i ka hana maʻalahi o Eclipse JKube i ke ola no ka mea hoʻomohala Java ke hana pū me Kubernetes. Hiki ke loaʻa ka ʻike hou aku ma Eclipse JKube ma pūnaewele papahana a ma GitHub.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka