Pêşxistina Serlêdanên Java ji bo Kubernetes Bi karanîna Eclipse JKube

25 sal berê, Java ket nav bernamesaziya sereke û di dawiyê de bû yek ji hêmanên bingehîn ên ku li dora wan stakên serîlêdanê têne çêkirin. Lêbelê, îro, gelek kes û rêxistinên ku bi salan ji Java-yê re dilsoz in, bi koçkirinê re mijûl in an jî difikirin ku koçî platformê bikin. Kubernetes an jêderkên wê yên wekî Red Hat OpenShift an Amazon EKS.

Pêşxistina Serlêdanên Java ji bo Kubernetes Bi karanîna Eclipse JKube

Mixabin, Kubernetes xwedan kelek fêrbûnek hişk e û di pêvajoya pêşkeftinê ya ku bernamenûsên Java-yê jê re fêr bûne qateyek din a xebitandinê destnîşan dike. Îro em ê ji we re vebêjin ka meriv çawa bikar tîne Eclipse JKube, ji bo hêsankirina van operasyonên zêde yên ku bi Kubernetes û konteyneran re têkildar in, û di heman demê de ku ekosîstema naskirî ya Java-yê diparêzin, koçberiyek bê êş berbi platforma ewr ve piştrast bikin. Wekî din, em ê nîşan bidin ka meriv çawa bi karanîna pêveka OpenShift Maven-ê li ser platforma OpenShift-ê serîlêdanên Java-yê bicîh dike.

Pêvajoya Pêşveçûna Java ya kevneşopî

Pêvajoya pêşveçûna kevneşopî Java (Wêne 1) pêşdebirê kodê dinivîse, dûv re yekeyên veqetandinê di forma pelên JAR an WAR de diafirîne, û dûv re van pelan li ser serverek tevnek an serîlêdanê bi cih dike û dimeşîne. Rêya sereke ya kirina vê yekê ev e ku meriv Maven ji rêzika fermanê bikar bîne an jî IDE-yek mîna IntelliJ an Eclipse bikar bîne da ku serîlêdanan kod bike û pakêt bike. Pêşdebir têne bikar anîn ku guheztinên kodê bikin û her tiştî bi tevahî ceribandin berî ku kodê bikin û wê bişînin kontrola guhertoyê.

Pêşxistina Serlêdanên Java ji bo Kubernetes Bi karanîna Eclipse JKube

Birinc. 1. Pêvajoya pêşveçûna Java ya kevneşopî.

Pêvajoya Pêşveçûna Java ji bo Cloud

Dema ku diçin ser sepanên ewr, Kubernetes û naverokan. Ji ber vê yekê, naha pêşdebir pêdivî ye ku serîlêdanên Java-yê tê de pak bike wêneyên konteynir û manîfestoyên Kubernetes ên ku van wêneyan vedibêjin biafirînin. Dûv re van diyardeyan li servera hilberînê ya Kubernetes dimeşîne têne sepandin. Di encamê de, Kubernetes van wêneyan ji qeydê digire û li gorî mîhengên ku me di manîfestoyan de nivîsandine, ku bi gelemperî pelên YAML ne, sepanan dişoxilîne.

Metamorfoza pêvajoya pêşkeftina Java ya kevneşopî di veguheztina ewr de di Fig. 2.

Pêşxistina Serlêdanên Java ji bo Kubernetes Bi karanîna Eclipse JKube

Birinc. 2. Pêvajoya pêşveçûna Java ji bo ewr.

Eclipse JKube

Koçberiya Kubernetes qateyek din a xebitandinê li pêvajoya pêşkeftinê zêde dike, û gelek pêşdebiran ji wê aciz in ji ber ku ew dixwazin bala xwe bidin ser xebata xwe ya bingehîn - mantiqa serîlêdanê - û ji dêvla ku çawa wan bicîh bikin. Û ev e ku ew dikeve lîstikê. Eclipse JKube, ku destûrê dide pêşdebiran ku pirtûkxane û pêvekên xwe bikar bînin (JKube Kit bi hev re Kubernetes Maven Plugin an Pêveka OpenShift Maven) bi şopandina diyagrama di Figure de bêyî hewildan operasyonên bi konteynir û Kubernetes-ê ve girêdayî bikin. 2.

Di mayî ya vê gotarê de, em ê nîşanî we bidin ka meriv çawa bi karanîna Eclipse JKube bi Kubernetes Maven Plugin re pêvajoya pêşkeftina Java-yê di hawîrdora Kubernetes de hêsan dike.

Pêvajoya Pêşveçûna Cloud Bikaranîna Eclipse JKube

Werin em nexşeyek pêşkeftina Java-yê hinekî guhezbar ji bo ewr ji Fig. 2-ê bihesibînin, Eclipse JKube û Kubernetes Maven Plugin têxin nav wê, wekî ku di Fig. 3.

Pêşxistina Serlêdanên Java ji bo Kubernetes Bi karanîna Eclipse JKube

Birinc. 3. Pêvajoya pêşveçûna Java ya ji bo ewr bi karanîna Eclipse JKube.

Wekî ku em dibînin, li vir hemî operasyonên ji bo danûstendina bi Kubernetes û konteyneran re (di diagramê de bi rengê sor têne ronî kirin) li şûna peywirên armanca Eclipse JKube-ya xwerû, ku di Tabloyê de têne navnîş kirin, têne guheztin. 1.

Mêz 1. Karên xwerû yên JKube Eclipse.

Armanc
Şanocî
description

k8s: avakirin
PRE_INTEGRATION_TEST
Avakirina wêneyên docker

k8s: push
LÊKIRIN
Barkirina wêneyên dokerê li qeydê

k8s: çavkanî
PROCESS_RESOURCES
Hilberîna K8 diyar dibe

k8s: sepandin
BERHEVANÎN
Serlêdana diyardeyên çêkirî li K8s

k8s: nehêle
UNDPLOY
Rakirina çavkaniyên K8s ên ku bi karanîna k8s:apply û k8s:deploy hatine bicîh kirin

Têbînî: Heke hûn nexwazin peywiran van pêşnumayên nerîn bikar bînin, hûn dikarin bi destan Eclipse JKube ji bo xwe mîheng bikin, ji ber ku ew veavakirinê bi riya piştgirî dike. XML и çavkaniyên.

Naha em li mînakên karanîna Eclipse JKube û Kubernetes Maven Plugin dema ku bi serîlêdanan re dixebitin binêrin.

Bi karanîna Eclipse JKube, Serlêdanek Java-yê li Kubernetes-ê bicîh dikin

Di vê nimûneyê de em ê serîlêdanek Java-ya hêsan li ser komekê bicîh bikin Minikube bikaranîna Eclipse JKube. Bi karanîna Pêveka Kubernetes Maven, em dikarin bêyî nivîsandina veavakirinê pîvanên bicîhkirinê saz bikin.

Wek serîlêdana nimûne em bikar tînin afirînerê hejmarên çawalêhato yên hêsan, ku derenca JSON li xala dawî ya /random çêdike:

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

Gav 1. Pêveka Kubernetes Maven dakêşin

Kubernetes Maven Plugin di depoyê de ye Depoya Navendî ya Maven. Ji bo ku hûn Eclipse JKube bikar bînin hûn hewce ne ku Pêveka Kubernetes Maven li pom.xml-a xwe wekî pêvekê zêde bikin:

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

Ger OpenShift li şûna Kubernetes-a safî were bikar anîn, wê hingê pom.xml wekî jêrîn tê guheztin:

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

Gav 2. Wêneyê dokerê ava bikin

Pelê JAR-ê ya serîlêdanê dikare bi fermana pakêta mvn ve were çêkirin, û dûv re peywira armanca mvn k8s:build dikare were bikar anîn da ku wêneyek dokerê ya serîlêdanê ava bike. Bala xwe bidinê ku me navê wêneya xwerû bi vê taybetmendiyê re derbas kiriye:

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

Berî avakirina wêneyê, hûn hewce ne ku pê ewle bin ku daemonê docker rast eşkere ye. Ev dikare bi fermana jêrîn were kirin:

$ eval $(minikube docker-env)

Dûv re em têkevin fermana mvn k8s:build, û ev tiştê ku em ê li ser ekranê bibînin dema ku wêneya dokerê bi karanîna peywira avakirina Eclipse JKube ava dikin:

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

Gav 3. Wêneyê li qeyda dokerê barkirin

Piştî ku me wêneya dokerê bi qeydkirina pêvek vesazkirî çêkir (di doza me de ew docker.io ye), em dikarin vê wêneyê ji qeydê re bişînin. Ya ku dê were xuyang kirin piştî ku em ji Eclipse JKube bipirsin ku peywira mvn k8s: push push pêk bîne:

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

Piştî şandina wêneyê, hûn hewce ne ku kontrol bikin ku ew di qeydê de ye. Di doza me de, em bi tenê wê di Docker Hub de dibînin, wekî ku di Fig. 4.

Pêşxistina Serlêdanên Java ji bo Kubernetes Bi karanîna Eclipse JKube

Birinc. 4. Wêneyê ku ji qeydê re hatî şandin di Docker Hub de xuya bû.

Gav 4. Ji bo serîlêdanê diyardeyên çavkaniya Kubernetes biafirînin

Ji ber vê yekê, me wêneya serîlêdanê berhev kiriye, naha divê em manîfestoyên Kubernetes binivîsin. Ji bo kirina vê yekê, Eclipse JKube peywirek heye ku li ser bingeha çarçoweya Java ya bingehîn diyardeyên çavkaniyek hişk çêdike (Bihara biharê, quarkus, Vert.x an hinekên din). Her weha hûn dikarin manîfestoyê bi karanîna pelek veavakirina XML-ê xweş bikin û perçeyên xav (parçeyên manîfestoya çavkaniyê ya pêwîst) li peldanka serîlêdanê src/main/jkube bi cîh bikin. Di vê rewşê de, veavakirina we dê li manîfestoyên hatine çêkirin were barkirin.

Di mînaka xwe de, em her tiştî wekî xwe dihêlin, û ji ber vê yekê Eclipse JKube ji bo bicîhkirina xwerû û ji bo karûbarê bi celeb ClusterIP manîfestoyek diafirîne. Û tenê wê hingê em manîfestoya karûbarê diguhezînin da ku celebê karûbarê li NodePort biguhezînin. Hûn dikarin tevgera xwerû bi karanîna taybetmendiya jêrîn bişopînin:

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

Piştî ku em ji Eclipse JKube daxwaz dikin ku peywira çavkaniyê mvn k8s:çavkaniyê pêk bîne, derketina ekranê bi vî rengî xuya dike.

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

Gav 5. Serîlêdanê li koma Kubernetes bicîh bikin

Naha em hemî amade ne ku serîlêdanê bicîh bikin: me wêneyê wê çêkir û dûv re jî xweber nîşana çavkaniyê çêkir. Naha ya ku dimîne ev e ku meriv van hemîyan li koma Kubernetes bicîh bîne. Ji bo bicîhkirina serîlêdanê, bê guman hûn dikarin fermana kubectl application -f bikar bînin, lê pêvek dikare vê yekê ji me re bike. Tiştê ku dê li ser ekranê xuya bibe piştî ku em ji Eclipse JKube daxwaz dikin ku mvn k8s pêk bîne: peywira serîlêdanê bike:

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

Gav 6. Serlêdanên ji koma Kubernetes venekin

Ji bo kirina vê yekê, peywira betalkirinê tê bikar anîn, ku bi tenê hemî çavkaniyên ku di gava berê de hatine sepandin, ji holê radike, ango dema ku peywira serîlêdanê tê meşandin. Ya ku em ê li ser ekranê bibînin ev e ku piştî ku em ji Eclipse JKube bipirsin ku peywira mvn k8s: undeploy undeploy pêk bîne:

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

Ma hûn dikarin bi Eclipse JKube re çi bikin

Ji ber vê yekê, me li peywirên armanca sereke yên Eclipse JKube û Kubernetes Maven Plugin, ku pêşveçûna serîlêdanên Java-yê ji bo platforma Kubernetes hêsantir dike, mêze kir. Heke hûn nexwazin bi berdewamî van karan ji klavyeyê têkevin, hûn dikarin wan di veavakirina pêvekê de binivîsin, mînakî, bi vî rengî:

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

Pêdivî ye ku were gotin ku di vê gotarê de me hemî peywirên armancê yên ku di Eclipse JKube û Kubernetes Maven Plugin de ne nirxand, ji ber vê yekê em di Tabloya 2 de navnîşek karên din ên ku dibe ku ji we re jî bikêr bibin peyda dikin.

Mêz 2. Karên armanca Eclipse JKube yên din.

Armanc
Şanocî
description

k8s:log
VALIDATE
Ji serîlêdana ku li Kubernetes tê xebitandin têketin wergirtin.

k8s: debug
PAKÊTA
Dergehek debugê vekin da ku hûn serlêdana xwe ya ku li Kubernetes-ê rasterast ji IDE-yê tê xebitandin debug bikin.

k8s: bicihkirin
LÊKIRIN
Afirandina forkek ji bo peywira Sazkirinê û sepandina manîfestoyên çêkirî li koma Kubernetes bi heman awayê ku di doza serîlêdanê de ye.

k8s: temaşe
PAKÊTA
Bi şopandina cîhê navên wê ve, sazkirina germ a otomatîkî ya serîlêdanê.

Bikaranîna Pêveka OpenShift Maven li ser Red Hat OpenShift-ê bicîhkirina Serlêdanên Java-yê

Ji bo ku serîlêdanê ji mînaka me li ser platforma Red Hat OpenShift bicîh bikin, em pêvekê bikar tînin OpenShift Maven. Cûdahiya tenê dê ev be ku pêşgira peywirê dê ji k8s biguhere oc. Bi xwerû pêveka Kubernetes Maven dike docker-civînan, û pêveka OpenShift Maven - meclîsan S2I. Em ji bilî rakirina taybetmendiya jkube.generator.name tu guhertinan di projeya xwe de nakin, ji ber ku ew ne hewce ye dema ku li qeydê bikişîne (OpenShift di qonaxa çêkirinê de wêneyê di qeyda xweya hundurîn de cîh dike). Û ev e ya ku dê li ser ekranê xuya bibe dema ku em mînaka xwe dimeşînin, ku tê de, bi awayê, em peywirên armancê ne yek bi yek, lê bi yekcarî pêk tînin:

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

Dersa vîdyoyê

Ji bo bêtir fêr bibin ka meriv çawa bi Eclipse JKube re pêşkeftina Kubernetes hêsantir dike, li vê vîdyoya vîdyoyê temaşe bikin ka meriv çawa zû serîlêdana Spring Boot-a sade li Minikube bicîh dike:

encamê

Di vê gotarê de, me destnîşan kir ku Eclipse JKube dema ku bi Kubernetes re dixebite jiyan ji bo pêşdebirek Java hêsantir dike. Zêdetir agahdarî li ser Eclipse JKube dikare li ser were dîtin malpera projeyê û li ser GitHub.

Source: www.habr.com

Add a comment