Datblygu Cymwysiadau Java ar gyfer Kubernetes Gan Ddefnyddio Eclipse JKube

25 mlynedd yn Γ΄l, ymunodd Java Γ’ phrif ffrwd rhaglennu ac yn y pen draw daeth yn un o'r elfennau craidd y mae staciau cais yn cael eu hadeiladu o'u cwmpas. Heddiw, fodd bynnag, mae llawer o bobl a sefydliadau sydd wedi bod yn deyrngar i Java ers blynyddoedd lawer yn brysur yn mudo neu'n ystyried mudo i'r platfform. Kubernetes neu ei deilliadau megis Red Hat OpenShift neu Amazon EKS.

Datblygu Cymwysiadau Java ar gyfer Kubernetes Gan Ddefnyddio Eclipse JKube

Yn anffodus, mae gan Kubernetes gromlin ddysgu serth ac mae'n cyflwyno haen weithredol arall i'r broses ddatblygu y mae rhaglenwyr Java yn gyfarwydd Γ’ hi. Heddiw, byddwn yn dweud wrthych sut i ddefnyddio Eclipse JKube, i symleiddio'r gweithrediadau ychwanegol hyn sy'n gysylltiedig Γ’ Kubernetes a chynwysyddion, a sicrhau mudo di-boen i'r llwyfan cwmwl tra'n cynnal yr ecosystem Java gyfarwydd. Ar ben hynny, byddwn yn dangos sut i ddefnyddio cymwysiadau Java ar y platfform OpenShift gan ddefnyddio'r ategyn OpenShift Maven.

Proses Datblygu Java Traddodiadol

Proses datblygu traddodiadol Java (Ffigur 1) mae'r datblygwr yn ysgrifennu cod, yna'n creu unedau lleoli ar ffurf ffeiliau JAR neu WAR, ac yna'n defnyddio a rhedeg y ffeiliau hyn ar we neu weinydd rhaglenni. Y brif ffordd o wneud hyn yw defnyddio Maven o'r llinell orchymyn neu ddefnyddio IDE fel IntelliJ neu Eclipse i godio a phecynnu'r cymwysiadau. Mae datblygwyr wedi arfer gwneud newidiadau cod a phrofi popeth yn drylwyr cyn ymrwymo'r cod a'i gyflwyno i reolaeth fersiwn.

Datblygu Cymwysiadau Java ar gyfer Kubernetes Gan Ddefnyddio Eclipse JKube

Reis. 1. Proses datblygu Java traddodiadol.

Proses Datblygu Java ar gyfer y Cwmwl

Wrth symud i gymwysiadau cwmwl, Kubernetes a Cynhwyswyr. Felly, nawr mae angen i'r datblygwr becynnu cymwysiadau Java i mewn delweddau cynhwysydd a chreu maniffestau Kubernetes sy'n disgrifio'r delweddau hyn. Yna caiff y maniffestau hyn eu cymhwyso i'r gweinydd cynhyrchu sy'n rhedeg Kubernetes. Yn ei dro, mae Kubernetes yn cymryd y delweddau hyn o'r gofrestrfa ac yn defnyddio cymwysiadau yn Γ΄l y ffurfweddiadau rydyn ni wedi'u hysgrifennu mewn maniffestau, sydd fel arfer yn ffeiliau YAML.

Dangosir metamorffosis y broses ddatblygu Java draddodiadol yn y trawsnewid i'r cwmwl yn Ffig. 2 .

Datblygu Cymwysiadau Java ar gyfer Kubernetes Gan Ddefnyddio Eclipse JKube

Reis. 2. Proses ddatblygu Java ar gyfer y cwmwl.

Eclipse JKube

Mae mudo i Kubernetes yn ychwanegu haen weithredol arall at y broses ddatblygu, ac mae llawer o ddatblygwyr yn nerfus yn ei gylch oherwydd eu bod am ganolbwyntio ar eu gwaith craidd - rhesymeg cymhwyso - yn hytrach na sut i'w defnyddio. A dyma lle mae'n dod i chwarae. Eclipse JKube, sy'n galluogi datblygwyr i ddefnyddio eu llyfrgelloedd ac ategion (Cit JKube ynghyd Γ’ Ategyn Maven Kubernetes neu Ategyn Maven OpenShift) perfformio gweithrediadau cynhwysydd a Kubernetes yn ddiymdrech trwy ddilyn y diagram yn Ffigur. 2 .

Yng ngweddill yr erthygl hon, byddwn yn dangos i chi sut i symleiddio'r broses ddatblygu Java yn amgylchedd Kubernetes trwy ddefnyddio Eclipse JKube gyda'r Kubernetes Maven Plugin.

Proses Datblygu Cwmwl Gan Ddefnyddio Eclipse JKube

Gadewch i ni ystyried cynllun datblygu Java wedi'i addasu ychydig ar gyfer y cwmwl o Ffig. 2, gan gyflwyno Eclipse JKube a Kubernetes Maven Plugin iddo, fel y dangosir yn Ffig. 3.

Datblygu Cymwysiadau Java ar gyfer Kubernetes Gan Ddefnyddio Eclipse JKube

Reis. 3. Proses ddatblygu Java ar gyfer y cwmwl gan ddefnyddio Eclipse JKube.

Fel y gallwn weld, yma mae'r holl weithrediadau ar gyfer rhyngweithio Γ’ Kubernetes a chynwysyddion (a amlygir mewn coch yn y diagram) yn cael eu disodli gan dasgau nod Eclipse JKube rhagosodedig, sydd wedi'u rhestru yn Nhabl. 1 .

Bwrdd 1. Eclipse JKube tasgau rhagosodedig.

Gorchwyl
Cam
Disgrifiad

k8s: adeiladu
PRE_INTEGRATION_TEST
Adeiladu delweddau docwr

k8s: gwthio
GOSOD
Lanlwytho delweddau docwr i'r gofrestrfa

k8s:adnodd
PROCESS_RESOURCES
Cynhyrchu maniffestau K8s

k8s: gwneud cais
CYHUDDO
Cymhwyso maniffestau a gynhyrchir i K8s

k8s: dadleoli
DADDYSGU
Dileu adnoddau K8s a ddefnyddiwyd gan ddefnyddio k8s:apply a k8s:deploy

Nodyn: Os nad ydych am i dasgau ddefnyddio'r rhagosodiadau barn hyn, gallwch chi ffurfweddu Eclipse JKube Γ’ llaw i chi'ch hun, gan ei fod yn cefnogi ffurfweddiad trwy XML ΠΈ adnoddau.

Nawr, gadewch i ni edrych ar enghreifftiau o ddefnyddio Eclipse JKube a Kubernetes Maven Plugin wrth weithio gyda chymwysiadau.

Defnyddio Cymhwysiad Java ar Kubernetes Gan Ddefnyddio Eclipse JKube

Yn yr enghraifft hon byddwn yn defnyddio cymhwysiad Java syml ar glwstwr Miniciwb gan ddefnyddio Eclipse JKube. Gan ddefnyddio'r Kubernetes Maven Plugin, gallwn osod paramedrau lleoli heb orfod ysgrifennu unrhyw ffurfweddiad.

Fel cymhwysiad enghreifftiol rydyn ni'n ei ddefnyddio generadur rhif hap syml, sy'n cynhyrchu allbwn JSON ar y diweddbwynt / ar hap:

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

Cam 1. Lawrlwythwch Kubernetes Maven Plugin

Mae Kubernetes Maven Plugin yn y storfa Ystorfa Ganolog Maven. I ddefnyddio Eclipse JKube mae angen i chi ychwanegu'r Kubernetes Maven Plugin at eich pom.xml fel dibyniaeth:

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

Os defnyddir OpenShift yn lle Kubernetes pur, yna caiff pom.xml ei addasu fel a ganlyn:

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

Cam 2. Adeiladu delwedd y docwr

Gellir adeiladu ffeil JAR y cymhwysiad gyda'r gorchymyn pecyn mvn, ac yna gellir defnyddio'r dasg nod mvn k8s:build i adeiladu delwedd docwr o'r rhaglen. Sylwch ein bod wedi diystyru'r enw delwedd rhagosodedig gyda'r eiddo hwn:

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

Cyn adeiladu'r ddelwedd, mae angen i chi sicrhau bod yr ellyll docwr wedi'i hamlygu'n gywir. Gellir gwneud hyn gyda'r gorchymyn canlynol:

$ eval $(minikube docker-env)

Yna rydyn ni'n mynd i mewn i'r gorchymyn mvn k8s: build, a dyma beth fyddwn ni'n ei weld ar y sgrin wrth adeiladu delwedd y docwr gan ddefnyddio tasg adeiladu 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 : $

Cam 3. Llwythwch y ddelwedd i gofrestrfa'r docwr

Ar Γ΄l i ni adeiladu delwedd y docwr gyda'r gofrestrfa gwthio wedi'i ffurfweddu (docker.io yn ein hachos ni), gallwn anfon y ddelwedd hon i'r gofrestrfa. Dyma beth fydd yn cael ei arddangos ar Γ΄l i ni ofyn i Eclipse JKube gyflawni'r dasg mvn k8s: gwthio gwthio:

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

Ar Γ΄l anfon y ddelwedd, mae angen i chi wirio ei fod wedi'i gynnwys yn y gofrestrfa. Yn ein hachos ni, rydyn ni'n ei weld yn Docker Hub, fel y dangosir yn Ffig. 4.

Datblygu Cymwysiadau Java ar gyfer Kubernetes Gan Ddefnyddio Eclipse JKube

Reis. 4. Ymddangosodd y ddelwedd a anfonwyd at y gofrestrfa yn Docker Hub.

Cam 4. Cynhyrchu maniffestau adnoddau Kubernetes ar gyfer y cais

Felly, rydym wedi casglu delwedd y cais, nawr mae angen i ni ysgrifennu maniffestau Kubernetes. I wneud hyn, mae gan Eclipse JKube dasg sy'n cynhyrchu amlygiadau adnoddau anhyblyg yn seiliedig ar y fframwaith Java sylfaenol (Cist gwanwyn, Cwarcws, Vert.x neu ryw arall). Gallwch hefyd addasu'r maniffest trwy ddefnyddio ffeil ffurfweddu XML a gosod darnau crai (darnau o'r maniffest adnoddau gofynnol) yn y ffolder cymhwysiad src/main/jkube. Yn yr achos hwn, bydd eich ffurfweddiad yn cael ei uwchlwytho i'r maniffestau a gynhyrchir.

Yn ein hesiampl, rydym yn gadael popeth fel y mae, ac felly mae Eclipse JKube yn cynhyrchu maniffest ar gyfer y defnydd diofyn ac ar gyfer y gwasanaeth gyda math ClusterIP. A dim ond wedyn rydyn ni'n addasu'r maniffest gwasanaeth i newid y math o wasanaeth i NodePort. Gallwch ddiystyru'r ymddygiad diofyn gan ddefnyddio'r priodwedd canlynol:

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

Dyma sut olwg sydd ar allbwn y sgrin ar Γ΄l i ni ofyn i Eclipse JKube gyflawni'r dasg adnoddau mvn k8s:resource.

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

Cam 5. Defnyddio'r cais i glwstwr Kubernetes

Nawr rydym i gyd yn barod i ddefnyddio'r rhaglen: rydym wedi creu ei ddelwedd ac yna wedi cynhyrchu maniffestau adnoddau yn awtomatig. Nawr y cyfan sydd ar Γ΄l yw cymhwyso hyn i gyd i glwstwr Kubernetes. I ddefnyddio'r cais, gallwch, wrth gwrs, ddefnyddio'r gorchymyn kubectl apply -f, ond gall yr ategyn wneud hyn i ni. Dyma beth fydd yn ymddangos ar y sgrin ar Γ΄l i ni ofyn i Eclipse JKube gyflawni'r mvn k8s: cymhwyso tasg cymhwyso:

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

Cam 6. Dadleoli ceisiadau o'r clwstwr Kubernetes

I wneud hyn, defnyddir y dasg dadleoli, sy'n syml yn dileu'r holl adnoddau a gymhwyswyd yn y cam blaenorol, hynny yw, pan fydd y dasg cymhwyso yn cael ei chyflawni. Dyma beth fyddwn ni'n ei weld ar y sgrin ar Γ΄l i ni ofyn i Eclipse JKube gyflawni'r dasg mvn k8s:undeploy undeploy:

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

Beth arall allwch chi ei wneud gydag Eclipse JKube

Felly, fe wnaethom edrych ar brif dasgau nod Eclipse JKube a Kubernetes Maven Plugin, sy'n hwyluso datblygiad cymwysiadau Java ar gyfer platfform Kubernetes. Os nad ydych chi am fynd i mewn i'r tasgau hyn yn gyson o'r bysellfwrdd, gallwch eu hysgrifennu yng nghyfluniad yr ategyn, er enghraifft, fel hyn:

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

Rhaid dweud nad ydym yn yr erthygl hon wedi ystyried yr holl dasgau nod sydd yn Eclipse JKube a Kubernetes Maven Plugin, felly rydym yn darparu yn Nhabl 2 restr o dasgau ychwanegol a allai fod yn ddefnyddiol i chi hefyd.

Bwrdd 2. Tasgau nod JKube Eclipse ychwanegol.

Gorchwyl
Cam
Disgrifiad

k8s: log
DILYSU
Derbyn logiau o raglen sy'n rhedeg ar Kubernetes.

k8s: dadfygio
PECYN
Agorwch borth dadfygio fel y gallwch ddadfygio'ch cais sy'n rhedeg ar Kubernetes yn uniongyrchol o'r DRhA.

k8s: defnyddio
GOSOD
Creu fforc ar gyfer y dasg Gosod a chymhwyso'r maniffestau a gynhyrchir i glwstwr Kubernetes yn yr un modd ag yn achos y dasg cymhwyso.

k8s: gwylio
PECYN
Defnydd poeth awtomatig o raglen trwy olrhain ei ofod enwau.

Defnyddio Cymwysiadau Java ar Red Hat OpenShift Gan ddefnyddio'r Ategyn OpenShift Maven

I ddefnyddio'r rhaglen o'n hesiampl ar blatfform Red Hat OpenShift, rydyn ni'n defnyddio'r ategyn Maven OpenShift. Yr unig wahaniaeth fydd y bydd rhagddodiad y dasg yn newid o k8s i oc. Yn ddiofyn mae ategyn Kubernetes Maven yn ei wneud docwr-assemblies, ac ategyn OpenShift Maven - gwasanaethau S2I. Nid ydym yn gwneud unrhyw newidiadau i'n prosiect, ac eithrio tynnu'r eiddo jkube.generator.name, gan nad oes ei angen wrth wthio i'r gofrestrfa (Yn ystod y cyfnod adeiladu, mae OpenShift yn gosod y ddelwedd yn ei gofrestr fewnol). A dyma beth fydd yn ymddangos ar y sgrin pan fyddwn yn rhedeg ein hesiampl, lle rydym, gyda llaw, yn cyflawni tasgau nod nid un ar y tro, ond i gyd ar unwaith:

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

Gwers fideo

I ddysgu mwy am sut i wneud datblygiad Kubernetes yn haws gydag Eclipse JKube, gwyliwch y tiwtorial fideo hwn ar sut i ddefnyddio cymhwysiad Spring Boot syml ar Minikube yn gyflym:

Casgliad

Yn yr erthygl hon, fe wnaethom ddangos sut mae Eclipse JKube yn gwneud bywyd yn haws i ddatblygwr Java wrth weithio gyda Kubernetes. Mae rhagor o wybodaeth am Eclipse JKube ar gael yn safle'r prosiect ac ymlaen GitHub.

Ffynhonnell: hab.com

Ychwanegu sylw