Feidhmchláir Java a Fhorbairt le haghaidh Kubernetes ag Úsáid Eclipse JKube

25 bliain ó shin, chuaigh Java isteach i bpríomhshruth an chláir agus sa deireadh bhí sé ar cheann de na príomhghnéithe a dtógtar stoic feidhmchlár timpeall air. Sa lá atá inniu ann, áfach, tá go leor daoine agus eagraíochtaí a bhí dílis do Java le blianta fada ag dul ar imirce nó ag smaoineamh ar imirce chuig an ardán. Kubernetes nó a díorthaigh mar Red Hat OpenShiftAmazon EKS.

Feidhmchláir Java a Fhorbairt le haghaidh Kubernetes ag Úsáid Eclipse JKube

Ar an drochuair, tá cuar foghlama géar ag Kubernetes agus cuireann sé ciseal oibriúcháin eile isteach sa phróiseas forbartha a bhfuil taithí ag ríomhchláraitheoirí Java air. Sa lá atá inniu inseoimid duit conas é a úsáid Eclipse JKube, na hoibríochtaí breise seo a bhaineann le Kubernetes agus coimeádáin a shimpliú, agus imirce gan phian chuig an ardán scamall a chinntiú agus an t-éiceachóras Java eolach á chothabháil. Thairis sin, taispeánfaimid conas feidhmchláir Java a imscaradh ar an ardán OpenShift ag baint úsáide as an breiseán OpenShift Maven.

Próiseas Traidisiúnta Forbartha Java

Próiseas forbartha traidisiúnta java (Fíor 1) baineann an forbróir cód a scríobh, ansin aonaid imlonnaithe a chruthú i bhfoirm comhaid JAR nó WAR, agus ansin na comhaid seo a imscaradh agus a rith ar fhreastalaí gréasáin nó feidhmchláir. Is é an príomhbhealach chun é seo a dhéanamh ná Maven a úsáid ón líne ordaithe nó IDE cosúil le IntelliJ nó Eclipse a úsáid chun na feidhmchláir a chódú agus a phacáistiú. Bíonn taithí ag forbróirí le hathruithe cód a dhéanamh agus gach rud a thástáil go críochnúil sula ngeallann siad an cód agus sula gcuirtear faoi rialú leagan é.

Feidhmchláir Java a Fhorbairt le haghaidh Kubernetes ag Úsáid Eclipse JKube

Rís. 1. Próiseas forbartha traidisiúnta Java.

Próiseas Forbartha Java don Scamall

Nuair a bhogtar chuig feidhmchláir scamall, Kubernetes agus Gabhdáin. Mar sin, anois ní mór don fhorbróir feidhmchláir Java a phacáistiú isteach íomhánna coimeádán agus manifests Kubernetes a chuireann síos ar na híomhánna seo a chruthú. Cuirtear na forais sin i bhfeidhm ansin ar an bhfreastalaí táirgeachta atá ag rith Kubernetes. Ina dhiaidh sin, tógann Kubernetes na híomhánna seo ón gclárlann agus imscarann ​​sé feidhmchláir de réir na bhfoirmíochtaí a scríobhamar i bhfoirm manifests, ar comhaid YAML iad de ghnáth.

Léirítear meiteamorfóis an phróisis forbartha traidisiúnta Java san aistriú go dtí an scamall i bhFíor. 2.

Feidhmchláir Java a Fhorbairt le haghaidh Kubernetes ag Úsáid Eclipse JKube

Rís. 2. Próiseas forbartha Java don scamall.

Eclipse JKube

Cuireann imirce go Kubernetes ciseal oibriúcháin eile leis an bpróiseas forbartha, agus tá go leor forbróirí neirbhíseach faoi mar go bhfuil siad ag iarraidh díriú ar a gcuid oibre lárnacha—loighic an fheidhmchláir—seachas conas iad a imscaradh. Agus is é seo nuair a thagann sé i spraoi. Eclipse JKube, a ligeann d'fhorbróirí a leabharlanna agus a breiseán a úsáid (Kit JKube le Breiseán Kubernetes MavenBreiseán Maven OpenShift) oibríochtaí a bhaineann le coimeádán agus Kubernetes a dhéanamh gan stró tríd an léaráid i bhFíor a leanúint. 2.

Sa chuid eile den alt seo, taispeánfaimid duit conas an próiseas forbartha Java a shimpliú i dtimpeallacht Kubernetes trí Eclipse JKube a úsáid le Breiseán Kubernetes Maven.

Próiseas Forbartha Néal ag Úsáid Eclipse JKube

Déanaimis machnamh ar scéim forbartha beagán modhnaithe Java don scamall ó Fíor 2, ag tabhairt isteach Eclipse JKube agus Kubernetes Maven Plugin isteach ann, mar a thaispeántar i bhFíor. 3 .

Feidhmchláir Java a Fhorbairt le haghaidh Kubernetes ag Úsáid Eclipse JKube

Rís. 3. Próiseas forbartha Java don scamall ag baint úsáide as Eclipse JKube.

Mar is féidir linn a fheiceáil, anseo cuirtear tascanna sprioc réamhshocraithe Eclipse JKube in ionad na n-oibríochtaí go léir chun idirghníomhú le Kubernetes agus coimeádáin (aibhsithe i dearg sa léaráid), atá liostaithe i dTábla. 1.

Tábla 1. Eclipse tascanna réamhshocraithe JKube.

Tasc
Céim
Cur síos

k8s: thógáil
PRE_INTEGRATION_TEST
Tógáil íomhánna docker

k8s: bhrú
Suiteáil
Íomhánna docker a uaslódáil chuig an gclárlann

k8s: acmhainn
PROCESS_RESOURCES
manifests K8s a ghiniúint

k8s: cuir i bhfeidhm
Tiomsú
Manifests ginte a chur i bhfeidhm ar K8s

k8s: dí-imscaradh
NEAMHDHEONACH
Acmhainní K8s a úsáideadh a bhaint ag baint úsáide as k8s:apply agus k8s: imscaradh

Tabhair faoi deara: Mura dteastaíonn uait go n-úsáidfeadh tascanna na réamhshocruithe tuairimí seo, is féidir leat Eclipse JKube a chumrú duit féin, ós rud é go dtacaíonn sé le cumraíocht trí XML и acmhainní.

Anois, déanaimis féachaint ar shamplaí de Eclipse JKube agus Kubernetes Maven Plugin a úsáid agus iad ag obair le hiarratais.

Feidhmchlár Java a Imscaradh ar Kubernetes Ag Úsáid Eclipse JKube

Sa sampla seo déanfaimid feidhmchlár simplí Java a imscaradh ar bhraisle Miniciúb ag baint úsáide as Eclipse JKube. Ag baint úsáide as Breiseán Kubernetes Maven, is féidir linn paraiméadair imlonnaithe a shocrú gan aon chumraíocht a scríobh.

Mar shampla iarratas a úsáidimid gineadóir uimhir randamach simplí, a tháirgeann aschur JSON ag an gcríochphointe / randamach:

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

Céim 1. Íoslódáil Breiseán Kubernetes Maven

Tá Kubernetes Maven Plugin sa stór Stór Lárnach Maven. Chun Eclipse JKube a úsáid ní mór duit an Breiseán Kubernetes Maven a chur le do pom.xml mar spleáchas:

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

Má úsáidtear OpenShift in ionad Kubernetes íon, ansin modhnaítear pom.xml mar seo a leanas:

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

Céim 2. Tóg an íomhá docker

Is féidir comhad JAR an fheidhmchláir a thógáil leis an ordú pacáiste mvn, agus ansin is féidir an tasc sprioc mvn k8s: build a úsáid chun íomhá docker den fheidhmchlár a thógáil. Tabhair faoi deara go bhfuil an t-ainm réamhshocraithe íomhá sáraithe againn leis an airí seo:

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

Sula ndéantar an íomhá a thógáil, ní mór duit a chinntiú go bhfuil an deamhan docker nochta i gceart. Is féidir é seo a dhéanamh leis an ordú seo a leanas:

$ eval $(minikube docker-env)

Ansin cuirimid isteach an mvn k8s: ordú a thógáil, agus is é seo a fheicfimid ar an scáileán agus an íomhá docker á thógáil ag baint úsáide as tasc tógála 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 : $

Céim 3. Uaslódáil an íomhá chuig an gclár docker

Tar éis dúinn an íomhá docker a thógáil leis an gclár brú cumraithe (is é docker.io inár gcás), is féidir linn an íomhá seo a sheoladh chuig an gclárlann. Seo é a thaispeánfar tar éis dúinn iarraidh ar Eclipse JKube an mvn k8s: tasc brú a bhrú:

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

Tar éis duit an íomhá a sheoladh, ní mór duit a sheiceáil go bhfuil sé san áireamh sa chlár. Is é ár gcás, ní fheicimid go simplí é i Docker Hub, mar a thaispeántar i bhFíor. 4.

Feidhmchláir Java a Fhorbairt le haghaidh Kubernetes ag Úsáid Eclipse JKube

Rís. 4. Bhí an íomhá a seoladh chuig an gclárlann le feiceáil i Docker Hub.

Céim 4. Gin manifests acmhainn Kubernetes don fheidhmchlár

Mar sin, tá íomhá an iarratais bailithe againn, anois ní mór dúinn manifests Kubernetes a scríobh. Chun é seo a dhéanamh, tá tasc ag Eclipse JKube a ghineann léiriú acmhainní dochta bunaithe ar chreat bunúsach Java (Tosaithe earraigh, Cuarcus, Vert.x nó éigin eile). Is féidir leat an forléiriú a shaincheapadh freisin trí chomhad cumraíochta XML a úsáid agus blúirí amh (blúirí den léiriú acmhainne riachtanach) a chur san fhillteán feidhmchláir src/main/jkube. Sa chás seo, beidh do chumraíocht a uaslódáil chuig an manifests ginte.

Inár sampla, fágaimid gach rud mar atá, agus dá bhrí sin gineann Eclipse JKube léiriú don imscaradh réamhshocraithe agus don tseirbhís le cineál ClusterIP. Agus gan ach ansin athraíonn muid an léiriú seirbhíse chun an cineál seirbhíse a athrú go NodePort. Is féidir leat an t-iompar réamhshocraithe a shárú leis an airí seo a leanas:

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

Seo é an chuma a bheidh ar aschur an scáileáin tar éis dúinn iarraidh ar Eclipse JKube an mvn k8s:tasc acmhainne acmhainne a dhéanamh.

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

Céim 5. Imscaradh an feidhmchlár chuig braisle Kubernetes

Anois táimid réidh leis an bhfeidhmchlár a imscaradh: tá a íomhá ginte againn agus ansin gineadh sainfhoilsiú acmhainní go huathoibríoch. Níl fágtha anois ach é seo ar fad a chur i bhfeidhm ar bhraisle Kubernetes. Chun an feidhmchlár a imscaradh, is féidir leat, ar ndóigh, an t-ordú kubectl apply -f a úsáid, ach is féidir leis an mbreiseán seo a dhéanamh dúinn. Seo é a thaispeánfar ar an scáileán tar éis dúinn iarraidh ar Eclipse JKube na mvn k8s a rith: cuir i bhfeidhm tasc:

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

Céim 6. Dí-imscaradh iarratais ó bhraisle Kubernetes

Chun seo a dhéanamh, úsáidtear an tasc dí-imlonnaithe, rud a fhágann go simplí na hacmhainní go léir a cuireadh i bhfeidhm sa chéim roimhe sin a bhaint, is é sin, nuair a chuirtear an tasc iarratais i gcrích. Seo é a fheicfimid ar an scáileán tar éis dúinn iarraidh ar Eclipse JKube an tasc mvn k8s: dí-imscaradh a dhéanamh:

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

Cad eile is féidir leat a dhéanamh le Eclipse JKube

Mar sin, d'fhéachamar ar na príomhthascanna sprice de chuid Eclipse JKube agus Kubernetes Maven Plugin, a éascaíonn forbairt iarratais Java don ardán Kubernetes. Mura dteastaíonn uait na tascanna seo a chur isteach ón méarchlár i gcónaí, is féidir leat iad a scríobh i gcumraíocht an bhreiseáin, mar shampla, 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>

Ní mór a rá nach ndearnamar san Airteagal seo na tascanna sprioc go léir atá in Eclipse JKube agus Kubernetes Maven Plugin a mheas, agus mar sin cuirimid i dTábla 2 liosta de thascanna breise a d'fhéadfadh a bheith úsáideach duit freisin.

Tábla 2. Tascanna breise sprioc JKube Eclipse.

Tasc
Céim
Cur síos

k8s: logáil
bhailíochtú
Ag fáil logaí ó fheidhmchlár a ritheann ar Kubernetes.

k8s: dífhabhtú
PACÁISTE
Oscail calafort dífhabhtaithe ionas gur féidir leat d’fheidhmchlár a dhífhabhtú ag rith ar Kubernetes go díreach ón IDE.

k8s: imscaradh
Suiteáil
Forc a chruthú don tasc Suiteáil agus na manifests ginte a chur i bhfeidhm ar bhraisle Kubernetes ar an mbealach céanna agus a dhéantar i gcás an taisc iarratais.

k8s: faire
PACÁISTE
Feidhmchlár a imscaradh go te go huathoibríoch trína ainmspás a rianú.

Feidhmchláir Java a Imscaradh ar Red Hat OpenShift Ag Úsáid Breiseán OpenShift Maven

Chun an feidhmchlár ónár sampla a imscaradh ar ardán Red Hat OpenShift, úsáidimid an breiseán Cluiche Oscailte Maven. Is é an t-aon difríocht a bheidh ann ná go n-athróidh an réimír taisc ó k8s go oc. De réir réamhshocraithe déanann an breiseán Kubernetes Maven docker-assemblies, agus an breiseán OpenShift Maven - tionóil S2I. Níl aon athruithe á ndéanamh againn ar ár dtionscadal ach amháin an mhaoin jkube.generator.name a bhaint ós rud é nach bhfuil sé ag teastáil agus tú ag brú ar an gclár (Cuireann OpenShift an íomhá ina chlár inmheánach le linn na céime tógála). Agus is é seo a bheidh le feiceáil ar an scáileán nuair a rithfimid ár sampla, ina ndéanaimid, dála an scéil, tascanna sprice ní amháin ag an am, ach go léir ag an am céanna:

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

Ceacht físeán

Chun tuilleadh a fhoghlaim faoi conas forbairt Kubernetes a dhéanamh níos éasca le Eclipse JKube, féach ar an físeán teagaisc seo ar conas feidhmchlár simplí Tosaithe Earraigh a imscaradh go tapa ar Minikube:

Conclúid

San Airteagal seo, léirigh muid conas a dhéanann Eclipse JKube saol níos éasca d’fhorbróir Java agus iad ag obair le Kubernetes. Tá tuilleadh eolais ar Eclipse JKube le fáil ag suíomh Gréasáin an tionscadail agus ar GitHub.

Foinse: will.com

Add a comment