A’ leasachadh thagraidhean Java airson Kubernetes a’ cleachdadh Eclipse JKube

25 bliadhna air ais, chaidh Java a-steach don phrìomh shruth de phrògramadh agus mu dheireadh thàinig e gu bhith mar aon de na prìomh eileamaidean timcheall air a bheil cruachan tagraidh air an togail. An-diugh, ge-tà, tha mòran dhaoine agus bhuidhnean a tha air a bhith dìleas do Java airson grunn bhliadhnaichean trang ag imrich no a’ beachdachadh air imrich chun àrd-ùrlar. Kubernetes no a thoraidhean mar Red Red OpenShift no Amazon EX.

A’ leasachadh thagraidhean Java airson Kubernetes a’ cleachdadh Eclipse JKube

Gu mì-fhortanach, tha lùb ionnsachaidh cas aig Kubernetes agus a 'toirt a-steach ìre obrachaidh eile a-steach don phròiseas leasachaidh a tha luchd-prògramaidh Java cleachdte ris. An-diugh innsidh sinn dhut mar a chleachdas tu e Eclipse JKube, gus na h-obraichean a bharrachd sin co-cheangailte ri Kubernetes agus soithichean a dhèanamh nas sìmplidhe, agus dèanamh cinnteach à imrich gun phian chun àrd-ùrlar sgòthan fhad ‘s a chumas iad an eag-shiostam Java eòlach. A bharrachd air an sin, seallaidh sinn mar a chleachdas tu tagraidhean Java air an àrd-ùrlar OpenShift a ’cleachdadh am plugan OpenShift Maven.

Pròiseas Leasachaidh Java traidiseanta

Pròiseas leasachaidh traidiseanta Java (Figear 1) a’ toirt a-steach an leasaiche a’ sgrìobhadh còd, an uairsin a’ cruthachadh aonadan cleachdaidh ann an cruth faidhlichean JAR no WAR, agus an uairsin a’ cleachdadh agus a’ ruith nam faidhlichean sin air frithealaiche lìn no tagraidh. Is e am prìomh dhòigh air seo a dhèanamh Maven a chleachdadh bhon loidhne-àithne no IDE mar IntelliJ no Eclipse a chleachdadh gus na h-aplacaidean a chòdachadh agus a phacadh. Tha luchd-leasachaidh cleachdte ri bhith a’ dèanamh atharrachaidhean còd agus a’ dèanamh deuchainn mionaideach air a h-uile càil mus cuir iad an còd an sàs agus ga chur a-steach gu smachd dreach.

A’ leasachadh thagraidhean Java airson Kubernetes a’ cleachdadh Eclipse JKube

Reis. 1. Pròiseas leasachaidh Java traidiseanta.

Pròiseas Leasachaidh Java airson an Cloud

Nuair a ghluaiseas tu gu tagraidhean sgòthan, bidh Kubernetes agus soithichean. Mar sin, a-nis feumaidh an leasaiche tagraidhean Java a phacadh a-steach dealbhan container agus cruthaich taisbeanaidhean Kubernetes a bheir cunntas air na h-ìomhaighean sin. Tha na manifestos sin an uairsin air an cur an sàs anns an t-seirbheisiche riochdachaidh a tha a’ ruith Kubernetes. An uair sin, bidh Kubernetes a’ toirt na h-ìomhaighean sin bhon chlàr agus a’ cleachdadh thagraidhean a rèir nan rèiteachaidhean a sgrìobh sinn ann am manifestos, a tha mar as trice nam faidhlichean YAML.

Tha metamorphosis pròiseas leasachaidh traidiseanta Java anns a’ ghluasad chun sgòth ri fhaicinn ann am Fig. 2.

A’ leasachadh thagraidhean Java airson Kubernetes a’ cleachdadh Eclipse JKube

Reis. 2. Pròiseas leasachaidh Java airson an sgòth.

Eclipse JKube

Bidh imrich gu Kubernetes a’ cur ìre obrachaidh eile ris a’ phròiseas leasachaidh, agus tha mòran de luchd-leasachaidh iomagaineach mu dheidhinn leis gu bheil iad airson fòcas a chuir air a’ phrìomh obair aca - loidsig an tagraidh - seach mar a chleachdas iad iad. Agus seo far a bheil e a 'tighinn a-steach. Eclipse JKube, a leigeas le luchd-leasachaidh na leabharlannan agus na plugins aca a chleachdadh (Kit JKube còmhla ri Plugin Kubernetes Maven no Plugin OpenShift Maven) gnìomhan co-cheangailte ri soithichean agus Kubernetes a dhèanamh gun oidhirp le bhith a’ leantainn an dealbh ann am Figear. 2.

Anns a’ chòrr den artaigil seo, seallaidh sinn dhut mar as urrainn dhut pròiseas leasachaidh Java a dhèanamh nas sìmplidhe ann an àrainneachd Kubernetes le bhith a’ cleachdadh Eclipse JKube leis an Kubernetes Maven Plugin.

Pròiseas Leasachaidh Cloud A’ cleachdadh Eclipse JKube

Beachdaichidh sinn air sgeama leasachaidh Java beagan atharraichte airson an sgòth bho Fig. 2, a’ toirt a-steach Eclipse JKube agus Kubernetes Maven Plugin a-steach dha, mar a chithear ann am Fig. 3.

A’ leasachadh thagraidhean Java airson Kubernetes a’ cleachdadh Eclipse JKube

Reis. 3. Pròiseas leasachaidh Java airson an sgòth a 'cleachdadh Eclipse JKube.

Mar a chì sinn, an seo tha a h-uile gnìomh airson eadar-obrachadh le Kubernetes agus soithichean (air a chomharrachadh ann an dearg san dealbh) air an cur an àite gnìomhan amasan bunaiteach Eclipse JKube, a tha air an liostadh sa chlàr. 1.

Clàr 1. Eclipse JKube default gnìomhan.

Amas
Ìre
Tuairisgeul

k8s: togail
PRE_INTEGRATION_TEST
Togail dealbhan docker

k8s: putadh
stàlaich
Gus dealbhan a luchdachadh a-nuas gu docker

k8s: goireas
PROCESS_RESOURCES
A 'cruthachadh taisbeanaidhean K8s

k8s: cuir a-steach
COMHRADH
A’ cur taisbeanairean gineadh gu K8s

k8s: gun chleachdadh
AN AONGHADH
A’ toirt air falbh goireasan K8s a chaidh a chleachdadh a’ cleachdadh k8s: tagradh agus k8s: cleachdadh

Note: Mura h-eil thu airson gum bi gnìomhan a’ cleachdadh na bun-bheachdan beachdail sin, faodaidh tu Eclipse JKube a rèiteachadh le làimh dhut fhèin, leis gu bheil e a’ toirt taic do rèiteachadh tro XML и goireasan.

A-nis leig dhuinn sùil a thoirt air eisimpleirean de bhith a’ cleachdadh Eclipse JKube agus Kubernetes Maven Plugin nuair a bhios tu ag obair le tagraidhean.

A’ cleachdadh tagradh Java air Kubernetes a’ cleachdadh Eclipse JKube

San eisimpleir seo cuiridh sinn a-steach tagradh Java sìmplidh air brabhsair Minikube a’ cleachdadh Eclipse JKube. A’ cleachdadh an Kubernetes Maven Plugin, is urrainn dhuinn crìochan cleachdadh a shuidheachadh gun a bhith againn ri rèiteachadh sam bith a sgrìobhadh.

Mar eisimpleir tagradh a bhios sinn a’ cleachdadh gineadair àireamh air thuaiream sìmplidh, a bheir a-mach toradh JSON aig a’ cheann-uidhe / air thuaiream:

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

Ceum 1. Luchdaich a-nuas Kubernetes Maven Plugin

Tha Kubernetes Maven Plugin san stòr Stòr-tasgaidh Maven Central. Gus Eclipse JKube a chleachdadh feumaidh tu am plugan Kubernetes Maven a chur ris a’ pom.xml agad mar eisimeileachd:

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

Ma thèid OpenShift a chleachdadh an àite Kubernetes fìor-ghlan, thèid pom.xml atharrachadh mar a leanas:

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

Ceum 2. Tog an ìomhaigh docker

Faodar faidhle JAR an tagraidh a thogail leis an àithne pacaid mvn, agus an uairsin faodar an obair amas mvn k8s: build a chleachdadh gus ìomhaigh docker den tagradh a thogail. Thoir an aire gu bheil sinn air a dhol thairis air an ainm ìomhaigh bunaiteach leis an t-seilbh seo:

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

Mus tèid an ìomhaigh a thogail, feumaidh tu dèanamh cinnteach gu bheil an daemon docker fosgailte gu ceart. Faodar seo a dhèanamh leis an òrdugh a leanas:

$ eval $(minikube docker-env)

An uairsin bidh sinn a’ dol a-steach don mvn k8s: build command, agus is e seo a chì sinn air an sgrion nuair a bhios sinn a’ togail ìomhaigh docker a’ cleachdadh gnìomh togail 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 : $

Ceum 3. Luchdaich suas an ìomhaigh gu clàr docker

Às deidh dhuinn an ìomhaigh docker a thogail leis a’ chlàr putaidh air a rèiteachadh (anns a ’chùis againn is e docker.io a th’ ann), is urrainn dhuinn an ìomhaigh seo a chuir chun chlàr. Is e seo a thèid a thaisbeanadh às deidh dhuinn iarraidh air Eclipse JKube na gnìomhan 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 : $ 

Às deidh dhut an ìomhaigh a chuir, feumaidh tu dèanamh cinnteach gu bheil e air a ghabhail a-steach sa chlàr. Anns a ’chùis againn, tha sinn dìreach ga fhaicinn ann an Docker Hub, mar a chithear ann am Fig. 4.

A’ leasachadh thagraidhean Java airson Kubernetes a’ cleachdadh Eclipse JKube

Reis. 4. Nochd an ìomhaigh a chaidh a chuir chun a 'chlàraidh ann an Docker Hub.

Ceum 4. Generate goireas Kubernetes manifests airson an iarrtais

Mar sin, tha sinn air ìomhaigh an tagraidh a chruinneachadh, a-nis feumaidh sinn manifestos Kubernetes a sgrìobhadh. Gus seo a dhèanamh, tha gnìomh aig Eclipse JKube a bhios a’ gineadh nochdaidhean ghoireasan teann stèidhichte air frèam Java bunaiteach (Boot earraich, Cuarcus, Vert.x no cuid eile). Faodaidh tu cuideachd am follaiseach a ghnàthachadh le bhith a’ cleachdadh faidhle rèiteachaidh XML agus a’ cur criomagan amh (mìrean den ghoireas a tha a dhìth) ann am pasgan an tagraidh src/main/jkube. Anns a 'chùis seo, thèid an rèiteachadh agad a luchdachadh suas gu na taisbeanaidhean a chaidh a chruthachadh.

Anns an eisimpleir againn, bidh sinn a ’fàgail a h-uile càil mar a tha, agus mar sin bidh Eclipse JKube a’ gineadh foillseachadh airson an cleachdadh bunaiteach agus airson an t-seirbheis le seòrsa ClusterIP. Agus dìreach an uairsin bidh sinn ag atharrachadh an t-seirbheis follaiseach gus an seòrsa seirbheis atharrachadh gu NodePort. Faodaidh tu a dhol thairis air a’ ghiùlan àbhaisteach a’ cleachdadh an t-seilbh a leanas:

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

Seo cò ris a bhios toradh an sgrion coltach às deidh dhuinn iarraidh air Eclipse JKube an mvn k8s: goireas goireas goireas a choileanadh.

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

Ceum 5. Cleachd an tagradh gu brabhsair Kubernetes

A-nis tha sinn uile deiseil airson an aplacaid a chleachdadh: tha sinn air an ìomhaigh aige a chruthachadh agus an uairsin air goireasan a chruthachadh gu fèin-ghluasadach. A-nis chan eil air fhàgail ach seo uile a chuir an sàs ann am buidheann Kubernetes. Gus an tagradh a chleachdadh, faodaidh tu, gu dearbh, an àithne kubectl apply -f a chleachdadh, ach faodaidh am plugan seo a dhèanamh dhuinn. Is e seo a nochdas air an sgrion às deidh dhuinn iarraidh air Eclipse JKube na mvn k8s a chuir an gnìomh: cuir an gnìomh gnìomh:

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

Ceum 6. Undeploy iarrtasan bho bhuidheann Kubernetes

Gus seo a dhèanamh, thathas a ’cleachdadh a’ ghnìomh neo-chleachdadh, a tha dìreach a ’toirt air falbh a h-uile goireas a chaidh a chuir an sàs sa cheum roimhe, is e sin, nuair a thèid an gnìomh tagraidh a chuir gu bàs. Is e seo a chì sinn air an sgrion às deidh dhuinn iarraidh air Eclipse JKube an obair mvn k8s a choileanadh: cuir às do dhreuchd:

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

Dè eile as urrainn dhut a dhèanamh le Eclipse JKube

Mar sin, thug sinn sùil air na prìomh ghnìomhan amasan aig Eclipse JKube agus Kubernetes Maven Plugin, a bhios a’ comasachadh leasachadh thagraidhean Java airson àrd-ùrlar Kubernetes. Mura h-eil thu airson na gnìomhan sin a chuir a-steach gu cunbhalach bhon mheur-chlàr, faodaidh tu an sgrìobhadh ann an rèiteachadh nam plugan, mar eisimpleir, mar seo:

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

Feumar a ràdh nach do bheachdaich sinn san artaigil seo air a h-uile gnìomh tadhail a tha ann an Eclipse JKube agus Kubernetes Maven Plugin, agus mar sin bheir sinn seachad ann an Clàr 2 liosta de ghnìomhan a bharrachd a dh’ fhaodadh a bhith feumail dhut cuideachd.

Clàr 2. Gnìomhan tadhail Eclipse JKube a bharrachd.

Amas
Ìre
Tuairisgeul

k8s: log
DAILEANACH
A’ faighinn logaichean bho thagradh a tha a’ ruith air Kubernetes.

k8s: debug
pasgan
Fosgail port deasbaid gus an urrainn dhut an tagradh agad a dhì-cheadachadh a ’ruith air Kubernetes gu dìreach bhon IDE.

k8s: cleachdadh
stàlaich
A’ cruthachadh forc airson a’ ghnìomh Stàladh agus a’ cur na taisbeanaidhean a chaidh a chruthachadh an sàs ann an cruinneachadh Kubernetes san aon dòigh ri cùis na h-obrach tagraidh.

k8s: faire
pasgan
Cleachdadh teth fèin-ghluasadach de thagradh le bhith a’ cumail sùil air an àite-ainm aige.

A’ cleachdadh thagraidhean Java air Red Hat OpenShift a’ cleachdadh am plugan OpenShift Maven

Gus an tagradh bhon eisimpleir againn a chuir a-steach air àrd-ùrlar Red Hat OpenShift, bidh sinn a’ cleachdadh am plugan OpenShift Maven. Is e an aon eadar-dhealachadh gun atharraich an ro-leasachan gnìomh bho k8s gu oc. Gu gnàthach bidh am plugan Kubernetes Maven a’ dèanamh docker-assemblies, agus am plugan OpenShift Maven - co-chruinneachaidhean S2I. Chan eil sinn a’ dèanamh atharrachaidhean sam bith air a’ phròiseact againn, ach a-mhàin a bhith a’ toirt air falbh an t-seilbh jkube.generator.name, leis nach eil feum air nuair a phut sinn chun chlàr (Rè an ìre togail, bidh OpenShift a’ cur an ìomhaigh anns a’ chlàr a-staigh aige). Agus is e seo a nochdas air an sgrion nuair a ruitheas sinn ar n-eisimpleir, anns am bi sinn, leis an t-slighe, a’ coileanadh gnìomhan amasan chan ann aon aig aon àm, ach uile aig an aon àm:

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

Leasanan bhidio

Gus barrachd ionnsachadh mu mar as urrainn dhut leasachadh Kubernetes a dhèanamh nas fhasa le Eclipse JKube, thoir sùil air an oideachadh bhidio seo air mar as urrainn dhut tagradh sìmplidh Spring Boot a chuir an sàs gu sgiobalta air Minikube:

co-dhùnadh

San artaigil seo, sheall sinn mar a nì Eclipse JKube beatha nas fhasa do leasaiche Java nuair a bhios e ag obair le Kubernetes. Gheibhear tuilleadh fiosrachaidh mu Eclipse JKube aig làrach a ’phròiseict agus air adhart GitHub.

Source: www.habr.com

Cuir beachd ann