Ho Ntlafatsa Likopo tsa Java bakeng sa Kubernetes U sebelisa Eclipse JKube

Lilemong tse 25 tse fetileng, Java e ile ea kena lenaneong la mantlha la mananeo mme qetellong ea fetoha e 'ngoe ea lintlha tsa mantlha tseo ho hahoang mekotla ea lits'ebetso ho eona. Leha ho le joalo, kajeno batho ba bangata le mekhatlo e 'nileng ea tšepahala ho Java ka lilemo tse ngata ba phathahane ka ho falla kapa ho nahana ka ho fallela sethaleng. Kubernetes kapa tse tsoang ho eona joalo ka RedHat OpenShift kapa Amazon EKS.

Ho Ntlafatsa Likopo tsa Java bakeng sa Kubernetes U sebelisa Eclipse JKube

Ka bomalimabe, Kubernetes e na le moepa oa ho ithuta mme e kenyelletsa karolo e 'ngoe ea ts'ebetso molemong oa nts'etsopele eo baetsi ba mananeo a Java ba e tloaetseng. Kajeno re tla u bolella mokhoa oa ho sebelisa Eclipse JKube, ho nolofatsa ts'ebetso ena e eketsehileng e amanang le Kubernetes le lijana, le ho netefatsa hore ho falla ho se nang bohloko ho ea sethaleng sa leru ha ho ntse ho boloka tikoloho e tloaelehileng ea Java. Ho feta moo, re tla bonts'a mokhoa oa ho kenya lits'ebetso tsa Java sethaleng sa OpenShift ho sebelisa plugin ea OpenShift Maven.

Mokhoa oa Tloaelo oa Ntlafatso ea Java

Mokhoa oa ntlafatso ea setso Java (Setšoantšo sa 1) se kenyelletsa khoutu ea ho ngola moqapi, ebe o theha likarolo tsa ho romela ka mokhoa oa lifaele tsa JAR kapa WAR, ebe o tsamaisa le ho tsamaisa lifaele tsena ho web kapa seva sa kopo. Mokhoa oa mantlha oa ho etsa sena ke ho sebelisa Maven ho tsoa moleng oa taelo kapa ho sebelisa IDE joalo ka IntelliJ kapa Eclipse ho khouta le ho paka lits'ebetso. Bahlahisi ba tloaetse ho etsa liphetoho tsa khoutu le ho lekola ntho e 'ngoe le e 'ngoe ka botlalo pele ba kenya khoutu le ho e romella taolong ea mofuta.

Ho Ntlafatsa Likopo tsa Java bakeng sa Kubernetes U sebelisa Eclipse JKube

Raese. 1. Mokhoa oa setso oa nts'etsopele ea Java.

Mokhoa oa ntlafatso oa Java bakeng sa Cloud

Ha u fallela lits'ebetsong tsa leru, Kubernetes le lik'hontheinara. Ka hona, joale moqapi o hloka ho paka lits'ebetso tsa Java ho litšoantšo tsa setshelo le ho theha Kubernetes lipontšo tse hlalosang litšoantšo tsena. Lipontšo tsena li sebelisoa ho seva sa tlhahiso se tsamaisang Kubernetes. Ka lehlakoreng le leng, Kubernetes e nka litšoantšo tsena ho tsoa ho registry ebe e sebelisa lits'ebetso ho latela litlhophiso tseo re li ngotseng ho li-manifest, tseo hangata e leng lifaele tsa YAML.

Metamorphosis ea mokhoa oa setso oa nts'etsopele ea Java nakong ea phetoho ea leru e bontšoa ho Feiga. 2.

Ho Ntlafatsa Likopo tsa Java bakeng sa Kubernetes U sebelisa Eclipse JKube

Raese. 2. Ts'ebetso ea ntlafatso ea Java bakeng sa leru.

Eclipse JKube

Ho fallela Kubernetes ho eketsa karolo e 'ngoe ea ts'ebetso ts'ebetsong ea nts'etsopele,' me bahlahisi ba bangata ba tšohile ka eona hobane ba batla ho tsepamisa maikutlo mosebetsing oa bona oa mantlha - mohopolo oa kopo - ho fapana le mokhoa oa ho li tsamaisa. Mme ke hona moo ho hlahang teng. Eclipse JKube, e lumellang bahlahisi ho sebelisa lilaeborari le li-plugins tsa bona (JKube Kit mmoho le Kubernetes Maven plugin kapa OpenShift Maven plugin) ho sebetsa ka thata setshelo le ts'ebetso e amanang le Kubernetes ka ho latela setšoantšo se setšoantšong. 2.

Karolong e setseng ea sengoloa sena, re tla u bonts'a mokhoa oa ho nolofatsa ts'ebetso ea nts'etsopele ea Java tikolohong ea Kubernetes ka ho sebelisa Eclipse JKube le Kubernetes Maven plugin.

Ts'ebetso ea Nts'etsopele ea Cloud e Sebelisang Eclipse JKube

A re ke re nahaneng ka morero oa ntlafatso ea Java o fetotsoeng hanyenyane bakeng sa leru ho tloha setšoantšong sa 2, ho hlahisa Eclipse JKube le Kubernetes Maven Plugin ho eona, joalokaha ho bontšitsoe ho Feiga. 3.

Ho Ntlafatsa Likopo tsa Java bakeng sa Kubernetes U sebelisa Eclipse JKube

Raese. 3. Mokhoa oa ntlafatso oa Java bakeng sa leru o sebelisa Eclipse JKube.

Joalokaha re bona, mona lits'ebetso tsohle tsa ho sebelisana le Kubernetes le lijana (tse totobalitsoeng ka bofubelu setšoantšong) li nkeloa sebaka ke mesebetsi ea sepheo sa Eclipse JKube, e thathamisitsoeng ho Lethathamo. 1.

Tafole 1. Eclipse JKube mesebetsi ea kamehla.

Sepheo
Mothati
tlhaloso

k8s: haha
PRE_INTEGRATION_TEST
Ho haha ​​litšoantšo tsa docker

k8s: sututsa
kenya
Ho kenya litšoantšo tsa docker ho registry

k8s: mohloli
PROCESS_RESOURCES
Ho hlahisa lihlahisoa tsa K8s

k8s: etsa kopo
KOPANE
Ho sebelisa lipontšo tse hlahisitsoeng ho K8s

k8s:ha e sebetse
SEBELISA MOSEBETSI
Ho tlosa lisebelisoa tsa K8s tse neng li sebelisoa ho sebelisoa k8s:apply le k8s:deploy

Ela hloko: Haeba u sa batle hore mesebetsi e sebelise mefokolo ena e nang le maikutlo, u ka iketsetsa Eclipse JKube ka bouena, kaha e ts'ehetsa tlhophiso ka. xML и lisebelisoa.

Joale ha re shebeng mehlala ea ho sebelisa Eclipse JKube le Kubernetes Maven plugin ha o sebetsa le lits'ebetso.

Ho kenya Sesebelisoa sa Java ho Kubernetes U sebelisa Eclipse JKube

Mohlaleng ona re tla kenya ts'ebeliso e bonolo ea Java ho sehlopha Minikube sebelisa Eclipse JKube. Re sebelisa Kubernetes Maven Plugin, re ka beha liparamente tsa phepelo ntle le ho ngola tlhophiso.

E le mohlala oa kopo eo re e sebelisang jenereithara e bonolo e sa reroang ea linomoro, e hlahisang tlhahiso ea JSON qetellong ea / e sa reroang:

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

Mohato oa 1. Khoasolla Kubernetes Maven Plugin

Kubernetes Maven plugin e sebakeng sa polokelo Maven Central Repository. Ho sebelisa Eclipse JKube o hloka ho kenya Kubernetes Maven plugin ho pom.xml ea hau joalo ka ha o itšetlehile ka:

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

Haeba OpenShift e sebelisoa sebakeng sa Kubernetes e hloekileng, pom.xml e tla fetoloa ka tsela e latelang:

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

Mohato oa 2. Haha setšoantšo sa docker

Faele ea kopo ea JAR e ka hahuoa ka taelo ea sephutheloana sa mvn, ebe mosebetsi oa sepheo sa mvn k8s:build o ka sebelisoa ho aha setšoantšo sa docker sa ts'ebeliso. Hlokomela hore re tlositse lebitso la kamehla la setšoantšo sebakeng sena:

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

Pele o theha setšoantšo, o hloka ho etsa bonnete ba hore daemon ea docker e pepesitsoe ka nepo. Sena se ka etsoa ka taelo e latelang:

$ eval $(minikube docker-env)

Ebe re kenya mvn k8s: aha taelo, 'me sena ke seo re tla se bona skrineng ha re haha ​​​​setšoantšo sa docker re sebelisa mosebetsi oa ho haha ​​oa 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 : $

Mohato oa 3. Kenya setšoantšo ho registry ea docker

Ka mor'a hore re hahe setšoantšo sa docker ka "push registry" e hlophisitsoeng (ho rona ke docker.io), re ka romela setšoantšo sena ho registry. Sena ke se tla hlahisoa kamora hore re kope Eclipse JKube ho etsa mvn k8s: push push task:

~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:push
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:push (default-cli) @ random-generator ---
[INFO] k8s: Running in Kubernetes mode
[INFO] k8s: Building Docker image in Kubernetes mode
[INFO] k8s: Running generator spring-boot
[INFO] k8s: spring-boot: Using Docker image quay.io/jkube/jkube-java-binary-s2i:0.0.7 as base / builder
[INFO] k8s: The push refers to repository [docker.io/rohankanojia/random-generator]
5dcd9556710f: Layer already exists 
b7139ad07aa8: Layer already exists 
b6f081e4b2b6: Layer already exists 
d8e1f35641ac: Layer already exists 
[INFO] k8s: 0.0.1: digest: sha256:9f9eda2a13b8cab1d2c9e474248500145fc09e2922fe3735692f9bda4c76002d size: 1162
[INFO] k8s: Pushed docker.io/rohankanojia/random-generator:0.0.1 in 7 seconds 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  11.222 s
[INFO] Finished at: 2020-08-10T11:35:37+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $ 

Ka mor'a ho romela setšoantšo, u lokela ho hlahloba hore na se kenyelelitsoe ho registry. Tabeng ea rona, re e bona feela ho Docker Hub, joalo ka ha ho bonts'itsoe ho Feiga. 4.

Ho Ntlafatsa Likopo tsa Java bakeng sa Kubernetes U sebelisa Eclipse JKube

Raese. 4. Setšoantšo se rometsoeng ho registry se hlahile ho Docker Hub.

Mohato oa 4. Hlahisa lisebelisoa tsa Kubernetes bakeng sa kopo

Kahoo, re bokelletse setšoantšo sa kopo, joale re hloka ho ngola Kubernetes lipontšo. Ho etsa sena, Eclipse JKube e na le mosebetsi o hlahisang lisebelisoa tse thata tse ipapisitseng le moralo oa Java.Boot ea selemo, quarkus, Vert.x kapa tse ling). U ka boela ua etsa ponahalo ea hau ka ho sebelisa faele ea tlhophiso ea XML le ho beha likhechana tse tala (likaroloana tsa ponahalo e hlokahalang ea mohloli) ho foldareng ea ts'ebeliso src/main/jkube. Tabeng ena, tlhophiso ea hau e tla kenngoa ho li-manifest tse hlahisitsoeng.

Mohlala oa rona, re siea ntho e 'ngoe le e' ngoe e le joalo, 'me ka hona Eclipse JKube e hlahisa ponts'o bakeng sa phepelo ea kamehla le bakeng sa ts'ebeletso e nang le mofuta oa ClusterIP. Ke ka nako eo re fetolang ponahalo ea litšebeletso ho fetola mofuta oa tšebeletso ho NodePort. U ka fetola mokhoa o tloaelehileng ka ho sebelisa thepa e latelang:

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

Sena ke seo sephetho sa skrine se shebahalang ka sona kamora hore re kope Eclipse JKube ho etsa mvn k8s: mosebetsi oa lisebelisoa.

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

Mohato oa 5. Kenya kopo ho sehlopha sa Kubernetes

Hona joale kaofela re se re ikemiselitse ho tsamaisa ts'ebeliso: re hlahisitse setšoantšo sa eona mme ka mor'a moo lisebelisoa li itlhahisa ka bo eona. Hona joale se setseng ke ho sebelisa tsena tsohle ho sehlopha sa Kubernetes. Ho kenya ts'ebeliso, ehlile, u ka sebelisa taelo ea kubectl apply -f, empa plugin e ka re etsetsa sena. Sena ke se tla hlaha skrineng kamora hore re kope Eclipse JKube ho etsa mvn k8s: etsa kopo ea mosebetsi:

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

Mohato oa 6. Tlosa likopo tse tsoang sehlopheng sa Kubernetes

Ho etsa sena, ho sebelisoa mosebetsi oa ho se sebelise, o tlosang lisebelisoa tsohle tse sebelisitsoeng mohatong o fetileng, ke hore, ha mosebetsi oa kopo o etsoa. Sena ke seo re tla se bona skrineng kamora hore re kope Eclipse JKube ho etsa mvn k8s: undeploy undeploy task:

~/work/repos/eclipse-jkube-demo-project : $ kubectl get all
NAME                                    READY   STATUS    RESTARTS   AGE
pod/random-generator-58b7847d7f-9m9df   1/1     Running   0          5m21s

NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP          18d
service/random-generator   NodePort    10.97.172.147   <none>        8080:32186/TCP   5m21s

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/random-generator   1/1     1            1           5m21s

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/random-generator-58b7847d7f   1         1         1       5m21s
~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:undeploy
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:undeploy (default-cli) @ random-generator ---
[INFO] k8s: Using Kubernetes at https://192.168.39.145:8443/ in namespace default with manifest /home/rohaan/work/repos/eclipse-jkube-demo-project/target/classes/META-INF/jkube/kubernetes.yml 
[INFO] k8s: Using namespace: default
[INFO] k8s: Deleting resource Deployment default/random-generator
[INFO] k8s: Deleting resource Service default/random-generator
[INFO] k8s: HINT: Use the command `kubectl get pods -w` to watch your pods start up
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.412 s
[INFO] Finished at: 2020-08-10T11:46:22+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $ kubectl get pods -w
^C~/work/repos/eclipse-jkube-demo-project : $ kubectl get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   18d
~/work/repos/eclipse-jkube-demo-project : $

Ke eng hape eo u ka e etsang ka Eclipse JKube

Kahoo, re shebile mesebetsi ea sepheo sa mantlha sa Eclipse JKube le Kubernetes Maven Plugin, e tsamaisang nts'etsopele ea lits'ebetso tsa Java bakeng sa sethala sa Kubernetes. Haeba u sa batle ho kenya mesebetsi ena khafetsa ho tsoa ho keyboard, u ka e ngola ho tlhophiso ea plugin, mohlala, joalo ka:

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

Ho tlameha ho boleloa hore sehloohong sena ha re so nahane ka mesebetsi eohle ea sepheo e leng ho Eclipse JKube le Kubernetes Maven Plugin, kahoo re fana ka Lethathamo la 2 lethathamo la mesebetsi e meng e ka 'nang ea e-ba molemo ho uena.

Tafole 2. Mesebetsi e meng ea sepheo sa Eclipse JKube.

Sepheo
Mothati
tlhaloso

k8s:loko
HLOMELA
Ho fumana lintlha ho tsoa ts'ebelisong e sebetsang ho Kubernetes.

k8s: lokisa
sephutheloana
Bula boema-kepe ba debug hore o tle o khone ho lokisa ts'ebeliso ea hau e sebetsang ho Kubernetes ka kotloloho ho tsoa ho IDE.

k8s: tsamaisa
kenya
Ho theha fereko bakeng sa mosebetsi oa ho kenya le ho sebelisa lipontšo tse hlahisitsoeng ho sehlopha sa Kubernetes ka mokhoa o ts'oanang le molemong oa mosebetsi oa kopo.

k8s: sheba
sephutheloana
Phepelo e chesang ea sesebelisoa ka ho sala morao sebaka sa eona sa mabitso.

Ho Kenya Likopo tsa Java ho Red Hat OpenShift U sebelisa OpenShift Maven Plugin

Ho kenya ts'ebeliso ho tsoa mohlaleng oa rona sethaleng sa Red Hat OpenShift, re sebelisa plugin OpenShift Maven. Phapang feela e tla ba hore sehlohlolo sa mosebetsi se tla fetoha ho tloha ho k8s ho ea ho oc. Ka ho sa feleng, plugin ea Kubernetes Maven e etsa joalo docker-assemblies, le plugin ea OpenShift Maven - likopano S2I. Ha re etse liphetoho leha e le life morerong oa rona ntle le ho tlosa thepa ea jkube.generator.name kaha ha e hlokehe ha u sutumelletsa ho registry (OpenShift e beha setšoantšo ka har'a ngoliso ea eona ea ka hare nakong ea mohato oa kaho). 'Me sena ke se tla hlaha skrineng ha re etsa mohlala oa rona, moo, ka tsela, re etsang mesebetsi ea sepheo eseng ka nako e le' ngoe, empa hang-hang:

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

Thuto ea video

Ho ithuta haholoanyane ka mokhoa oa ho etsa hore nts'etsopele ea Kubernetes e be bonolo ka Eclipse JKube, shebella thuto ena ea video mabapi le mokhoa oa ho kenya ts'ebeliso e bonolo ea Spring Boot ho Minikube:

fihlela qeto e

Sengoliloeng sena, re bonts'itse kamoo Eclipse JKube e nolofaletsang mohlahlami oa Java ha a sebetsa le Kubernetes. Lintlha tse ling ka Eclipse JKube li ka fumanoa ho webosaete ea morero le ho feta GitHub.

Source: www.habr.com

Eketsa ka tlhaloso