Famolavolana fampiharana Java ho an'ny Kubernetes amin'ny fampiasana Eclipse JKube

25 taona lasa izay, niditra tao amin'ny sehatry ny fandaharana i Java ary tamin'ny farany dia lasa iray amin'ireo singa fototra manodidina ny fananganana stacks fampiharana. Amin'izao fotoana izao anefa, maro ny olona sy fikambanana izay tsy nivadika tamin'i Java nandritra ny taona maro no sahirana mifindra monina na mieritreritra ny hifindra any amin'ny lampihazo. Kubernetes na ny derivatives toy ny RedHat OpenShift na Amazon EKS.

Famolavolana fampiharana Java ho an'ny Kubernetes amin'ny fampiasana Eclipse JKube

Indrisy anefa, ny Kubernetes dia manana lΓ lam-pianarana mideza ary mampiditra sosona hafa miasa amin'ny dingana fampandrosoana izay mahazatra ny mpandrindra Java. Androany dia hilaza aminao ny fomba fampiasana Eclipse JKube, mba hanatsorana ireo asa fanampiny mifandray amin'ny Kubernetes sy ny kaontenera, ary hiantohana ny fifindra-monina tsy misy fanaintainana mankany amin'ny sehatra rahona sady mitazona ny tontolo iainana Java mahazatra. Ankoatr'izay, hasehontsika ny fomba fametrahana rindranasa Java amin'ny sehatra OpenShift amin'ny alΓ lan'ny plugin OpenShift Maven.

Fomba fampandrosoana Java nentim-paharazana

Fomba fampandrosoana nentim-paharazana Java (sary 1) dia ahitana ny kaody fanoratana mpamorona, avy eo mamorona vondrona fametrahana amin'ny endrika rakitra JAR na WAR, ary avy eo mametraka sy mampandeha ireo rakitra ireo amin'ny tranonkala na mpizara fampiharana. Ny fomba lehibe hanaovana izany dia ny fampiasana Maven avy amin'ny baikon'ny baiko na mampiasa IDE toa an'i IntelliJ na Eclipse hanodinana sy hametahana ny rindranasa. Ny mpamorona dia zatra manao fanovana kaody sy mizaha toetra tsara ny zava-drehetra alohan'ny hanaovana ny kaody ary handefa izany amin'ny fanaraha-maso ny dikan-teny.

Famolavolana fampiharana Java ho an'ny Kubernetes amin'ny fampiasana Eclipse JKube

vary. 1. Fizotry ny fampandrosoana Java nentim-paharazana.

Java Development Process for the Cloud

Rehefa mifindra amin'ny rindranasa rahona, Kubernetes sy fitoeran. Noho izany, izao ny mpamorona dia mila mametraka ny rindranasa Java ao sary fitoeran-javatra ary mamorona Kubernetes manifests izay mamaritra ireo sary ireo. Ireo fanehoana ireo avy eo dia ampiharina amin'ny mpizara famokarana mampiasa Kubernetes. Ho setrin'izany, i Kubernetes dia maka ireo sary ireo ao amin'ny rejisitra ary mametraka rindranasa mifanaraka amin'ny fanitsiana nosoratanay tamin'ny manifests, izay matetika rakitra YAML.

Ny metamorphose amin'ny fizotran'ny fampandrosoana Java nentim-paharazana amin'ny fifindrana mankany amin'ny rahona dia aseho amin'ny sary. 2.

Famolavolana fampiharana Java ho an'ny Kubernetes amin'ny fampiasana Eclipse JKube

vary. 2. Dingan'ny fampandrosoana Java ho an'ny rahona.

Eclipse JKube

Ny fifindra-monina ao amin'ny Kubernetes dia manampy sosona hafa miasa amin'ny fizotran'ny fampandrosoana, ary maro ny mpamorona no mitebiteby momba izany satria te hifantoka amin'ny asany fototraβ€”ny lojika fampiharanaβ€”fa tsy ny fomba fametrahana azy ireo. Ary eto no miditra an-tsehatra. Eclipse JKube, izay ahafahan'ny mpamorona mampiasa ny tranomboky sy ny plugins (JKube Kit miaraka amin'ny Kubernetes Maven Plugin na OpenShift Maven Plugin) mba hanatanterahana mora foana ny container sy ny hetsika mifandraika amin'ny Kubernetes amin'ny fanarahana ny kisary ao amin'ny sary. 2.

Amin'ny tohin'ity lahatsoratra ity, hasehonay anao ny fomba hanatsorana ny fizotran'ny fampandrosoana Java ao amin'ny tontolo Kubernetes amin'ny fampiasana Eclipse JKube miaraka amin'ny Kubernetes Maven Plugin.

Fizotry ny fampivoarana rahona mampiasa Eclipse JKube

Andeha hodinihintsika ny tetika fampandrosoana Java novaina kely ho an'ny rahona avy amin'ny sary 2, mampiditra Eclipse JKube sy Kubernetes Maven Plugin ao anatiny, araka ny asehon'ny sary. 3.

Famolavolana fampiharana Java ho an'ny Kubernetes amin'ny fampiasana Eclipse JKube

vary. 3. Dingan'ny fampandrosoana Java ho an'ny rahona mampiasa Eclipse JKube.

Araka ny hitantsika, eto ny asa rehetra hifaneraserana amin'ny Kubernetes sy ny kaontenera (asongadina amin'ny mena amin'ny kisary) dia soloina amin'ny alΓ lan'ny asa tanjona Eclipse JKube default, izay voatanisa ao amin'ny tabilao. 1.

LOHA 1. Eclipse JKube asa default.

asa
sehatra
famaritana

k8s: manorina
PRE_INTEGRATION_TEST
Manorina sary docker

k8s: ny
hametraka
Mampiakatra sary docker ao amin'ny rejisitra

k8s: loharano
PROCESS_RESOURCES
Mamorona fampisehoana K8

k8s: azo
manangona
Fampiharana ireo fanehoana vokarina amin'ny K8s

k8s: esorina
UNDEPLOY
Esory ny loharanon-karena K8 izay napetraka tamin'ny fampiasana k8s:apply ary k8s:deploy

Fanamarihana: Raha tsy tianao ny asa hampiasa ireo faneken-keloka ireo dia azonao atao ny manitsy ny Eclipse JKube ho anao manokana, satria manohana ny fanamafisana amin'ny alΓ lan'ny XML ΠΈ harena.

Andeha isika hijery ohatra amin'ny fampiasana Eclipse JKube sy Kubernetes Maven Plugin rehefa miasa amin'ny fampiharana.

Mametraka fampiharana Java amin'ny Kubernetes mampiasa Eclipse JKube

Amin'ity ohatra ity dia hametraka fampiharana Java tsotra amin'ny cluster isika Minikube mampiasa Eclipse JKube. Amin'ny fampiasana ny Kubernetes Maven Plugin, dia afaka mametraka mari-pamantarana fametrahana tsy mila manoratra tefy.

Ho ohatra fampiharana ampiasainay generator isa kisendrasendra tsotra, izay mamokatra vokatra JSON amin'ny /random endpoint:

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

Dingana 1. Ampidino ny Plugin Kubernetes Maven

Kubernetes Maven Plugin dia ao amin'ny tahiry Maven Central Repository. Raha hampiasa ny Eclipse JKube ianao dia mila manampy ny Kubernetes Maven Plugin amin'ny pom.xml anao ho fiankinan-doha:

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

Raha OpenShift no ampiasaina fa tsy Kubernetes madio, dia ovaina toy izao manaraka izao ny pom.xml:

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

Dingana 2. Amboary ny sary docker

Ny rakitra JAR an'ny fampiharana dia azo amboarina miaraka amin'ny baikon'ny fonosana mvn, ary avy eo ny tanjona mvn k8s:build dia azo ampiasaina hanamboarana sarin'ny docker amin'ny fampiharana. Mariho fa nosoloinay ny anaran'ny sary default amin'ity fananana ity:

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

Alohan'ny hananganana ny sary dia mila mahazo antoka ianao fa mibaribary tsara ny daemon docker. Izany dia azo atao amin'ny alalan'ity baiko manaraka ity:

$ eval $(minikube docker-env)

Avy eo dia miditra amin'ny mvn k8s: manangana baiko isika, ary izao no ho hitantsika eo amin'ny efijery rehefa manangana sary docker amin'ny fampiasana ny asa fananganana 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 : $

Dingana 3. Ampidiro ao amin'ny rejisitra docker ny sary

Rehefa avy nanamboatra ny sarin'ny docker izahay miaraka amin'ny rejisitra tosika (amin'ny tranga misy anay dia docker.io), afaka mandefa ity sary ity amin'ny rejisitra izahay. Izao no haseho rehefa avy mangataka ny Eclipse JKube izahay hanatanteraka ny asa mvn k8s:push push:

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

Aorian'ny fandefasana ny sary dia mila manamarina ianao fa tafiditra ao amin'ny rejisitra. Amin'ny tranga misy antsika dia hitantsika fotsiny ao amin'ny Docker Hub izy io, araka ny aseho amin'ny sary. 4.

Famolavolana fampiharana Java ho an'ny Kubernetes amin'ny fampiasana Eclipse JKube

vary. 4. Ny sary nalefa tany amin'ny rejisitra dia niseho tao amin'ny Docker Hub.

Dingana 4. Mamorona fanehoana loharanon-karena Kubernetes ho an'ny fampiharana

Noho izany, nanangona ny sarin'ny fampiharana izahay, izao dia mila manoratra ny fanehoana Kubernetes. Mba hanaovana izany, ny Eclipse JKube dia manana asa iray izay miteraka fanehoana loharano henjana mifototra amin'ny rafitra Java fototra (Bootin'ny lohataona, quarkus, Vert.x na hafa). Azonao atao ihany koa ny mampifanaraka ny fisehoana amin'ny alΓ lan'ny fampiasana rakitra fanamafisana XML ary mametraka sombiny manta (sombiny amin'ny fanehoana loharano ilaina) ao amin'ny lahatahiry fampiharana src/main/jkube. Amin'ity tranga ity dia halefa any amin'ny manifestations novolavolaina ny fandrindranao.

Amin'ny ohatra ataontsika dia avelantsika ho toy ny misy ny zava-drehetra, ary noho izany ny Eclipse JKube dia miteraka fisehoana ho an'ny fametrahana default sy ho an'ny serivisy misy karazana ClusterIP. Ary avy eo dia manova ny serivisy serivisy izahay hanovana ny karazana serivisy ho NodePort. Azonao atao ny manafoana ny fihetsika default amin'ny fampiasana ity fananana manaraka ity:

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

Toy izao ny endriky ny efijery rehefa avy nangataka ny Eclipse JKube izahay mba hanatanteraka ny asa mvn k8s: loharanon-karena.

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

Dingana 5. Apetraho amin'ny cluster Kubernetes ny fampiharana

Ankehitriny dia efa vonona ny hametraka ny fampiharana izahay: namorona ny sariny izahay ary avy eo dia namorona fanehoana loharano ho azy. Ny hany sisa tavela dia ny mampihatra izany rehetra izany amin'ny cluster Kubernetes. Mba hametrahana ny fampiharana dia azonao atao mazava ho azy ny mampiasa ny baiko kubectl apply -f, fa ny plugin dia afaka manao izany ho antsika. Izany no hiseho eo amin'ny efijery rehefa avy mangataka amin'ny Eclipse JKube izahay mba hanatanteraka ny mvn k8s: ampiharo ny asa:

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

Dingana 6. Esory ny fampiharana avy amin'ny cluster Kubernetes

Mba hanaovana izany, dia ampiasaina ny asa undeploy, izay manaisotra fotsiny ny loharanon-karena rehetra nampiharina tamin'ny dingana teo aloha, izany hoe rehefa vita ny asa fampiharana. Izao no ho hitantsika eo amin'ny efijery rehefa avy nangataka ny Eclipse JKube izahay mba hanatanteraka ny 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 : $

Inona koa no azonao atao amin'ny Eclipse JKube

Noho izany, nijery ny tanjona fototra amin'ny Eclipse JKube sy Kubernetes Maven Plugin izahay, izay manamora ny fampivoarana ny rindranasa Java ho an'ny sehatra Kubernetes. Raha tsy te-hiditra tsy tapaka ireo asa ireo amin'ny klavier ianao dia azonao atao ny manoratra azy ireo amin'ny fanamafisana plugin, ohatra, toy izao:

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

Tsy maintsy lazaina fa ato amin'ity lahatsoratra ity dia tsy nandinika ny tanjona rehetra ao amin'ny Eclipse JKube sy Kubernetes Maven Plugin izahay, noho izany dia omenay ao amin'ny tabilao 2 ny lisitry ny asa fanampiny izay mety hahasoa anao ihany koa.

LOHA 2. Eclipse JKube tanjona fanampiny.

asa
sehatra
famaritana

k8s: ny
hanamafy
Mandray diary avy amin'ny fampiharana mandeha amin'ny Kubernetes.

k8s: ny
Package
Sokafy ny seranan-tsambo debug mba ahafahanao debug ny rindranasa mandeha amin'ny Kubernetes mivantana avy amin'ny IDE.

k8s:efa
hametraka
Mamorona fork ho an'ny asa Fametrahana ary mampihatra ireo fisehoana vokarina amin'ny kluster Kubernetes amin'ny fomba mitovy amin'ny raharaha momba ny asa ampiharina.

k8s: ny
Package
Fametrahana mafana mandeha ho azy amin'ny fampiharana amin'ny alΓ lan'ny fanaraha-maso ny toerana misy azy.

Mametraka fampiharana Java amin'ny Red Hat OpenShift amin'ny fampiasana ny OpenShift Maven Plugin

Mba hametrahana ny fampiharana avy amin'ny ohatra ataontsika amin'ny sehatra Red Hat OpenShift dia mampiasa ny plugin izahay OpenShift Maven. Ny hany mahasamihafa azy dia ny fiovan'ny prefix asa avy amin'ny k8s ho oc. Amin'ny alΓ lan'ny default dia manao ny plugin Kubernetes Maven docker-assemblies, ary ny plugin OpenShift Maven - assemblies S2I. Tsy manao fanovana amin'ny tetikasanay izahay afa-tsy ny fanesorana ny fananana jkube.generator.name satria tsy ilaina izany rehefa manosika ny rejisitra (OpenShift dia mametraka ny sary ao amin'ny rejisitra anatiny mandritra ny dingana fananganana). Ary izao no hiseho eo amin'ny efijery rehefa manao ny ohatra asehontsika isika, izay, raha ny marina, dia manao asa tanjona tsy iray amin'ny fotoana iray, fa indray mandeha:

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

Video lesona

Raha te hianatra bebe kokoa momba ny fomba hanamora ny fampivoarana Kubernetes miaraka amin'ny Eclipse JKube, jereo ity torolalana ity momba ny fomba fametrahana haingana fampiharana Lohataona Boot tsotra amin'ny Minikube:

famaranana

Ato amin'ity lahatsoratra ity, nasehonay ny fomba nanamora ny fiainan'ny mpamorona Java ny Eclipse JKube rehefa miasa amin'ny Kubernetes. Ny fampahalalana bebe kokoa momba ny Eclipse JKube dia azo jerena ao amin'ny tranokalan'ny tetikasa ary eo GitHub.

Source: www.habr.com

Add a comment