Þróun Java forrit fyrir Kubernetes með Eclipse JKube

Fyrir 25 árum fór Java inn í almenna forritun og varð að lokum einn af kjarnaþáttunum sem forritastaflar eru byggðir í kringum. Í dag eru hins vegar margir og stofnanir sem hafa verið tryggir Java í mörg ár uppteknir við að flytja eða íhuga að flytja yfir á pallinn. Kubernetes eða afleiður þess eins og RedHat OpenShift eða Amazon EKS.

Þróun Java forrit fyrir Kubernetes með Eclipse JKube

Því miður er Kubernetes með bratta námsferil og kynnir annað rekstrarlag í þróunarferlinu sem Java forritarar eru vanir. Í dag munum við segja þér hvernig á að nota Myrkvi JKube, til að einfalda þessar viðbótaraðgerðir sem tengjast Kubernetes og gámum, og tryggja sársaukalausa flutning á skýjapallinn á meðan viðhalda kunnuglegu Java vistkerfi. Ennfremur munum við sýna hvernig á að dreifa Java forritum á OpenShift pallinum með því að nota OpenShift Maven viðbótina.

Hefðbundið Java þróunarferli

Hefðbundið þróunarferli Java (Mynd 1) felur í sér að verktaki skrifar kóða, býr síðan til dreifingareiningar í formi JAR- eða WAR-skráa og setur síðan upp og keyrir þessar skrár á vef- eða forritaþjóni. Aðalleiðin til að gera þetta er að nota Maven frá skipanalínunni eða nota IDE eins og IntelliJ eða Eclipse til að kóða og pakka forritunum. Hönnuðir eru vanir að gera kóðabreytingar og prófa allt ítarlega áður en þeir framkvæmir kóðann og senda hann í útgáfustýringu.

Þróun Java forrit fyrir Kubernetes með Eclipse JKube

Hrísgrjón. 1. Hefðbundið Java þróunarferli.

Java þróunarferli fyrir skýið

Þegar farið er yfir í skýjaforrit, Kubernetes og ílát. Þess vegna þarf verktaki núna að pakka Java forritum inn gámamyndir og búa til Kubernetes manifests sem lýsa þessum myndum. Þessar birtingarmyndir eru síðan settar á framleiðsluþjóninn sem keyrir Kubernetes. Aftur á móti tekur Kubernetes þessar myndir úr skránni og setur upp forrit í samræmi við þær stillingar sem við höfum skrifað í upplýsingaskrá, sem venjulega eru YAML skrár.

Umbreyting hefðbundins Java þróunarferlis við umskipti yfir í skýið er sýnd á mynd. 2.

Þróun Java forrit fyrir Kubernetes með Eclipse JKube

Hrísgrjón. 2. Java þróunarferli fyrir skýið.

Myrkvi JKube

Flutningur til Kubernetes bætir enn einu rekstrarlagi við þróunarferlið og margir þróunaraðilar eru kvíðin fyrir því vegna þess að þeir vilja einbeita sér að kjarnavinnu sinni - umsóknarrökfræðinni - frekar en hvernig á að dreifa þeim. Og þetta er þar sem það kemur við sögu. Myrkvi JKube, sem gerir forriturum kleift að nota söfn sín og viðbætur (JKube Kit ásamt Kubernetes Maven Plugin eða OpenShift Maven Plugin) til að framkvæma áreynslulaust gáma- og Kubernetes-tengdar aðgerðir með því að fylgja skýringarmyndinni á myndinni. 2.

Í restinni af þessari grein munum við sýna þér hvernig á að einfalda Java þróunarferlið í Kubernetes umhverfinu með því að nota Eclipse JKube með Kubernetes Maven Plugin.

Þróunarferli skýja með því að nota Eclipse JKube

Við skulum íhuga örlítið breytt Java þróunarkerfi fyrir skýið frá mynd 2, með því að kynna Eclipse JKube og Kubernetes Maven Plugin inn í það, eins og sýnt er á mynd. 3.

Þróun Java forrit fyrir Kubernetes með Eclipse JKube

Hrísgrjón. 3. Java þróunarferli fyrir skýið með Eclipse JKube.

Eins og við sjáum er hér öllum aðgerðum til að hafa samskipti við Kubernetes og ílát (auðkennt með rauðu á skýringarmyndinni) skipt út fyrir sjálfgefna Eclipse JKube markmiðsverkefni, sem eru skráð í töflu. 1.

Tafla 1. Eclipse JKube sjálfgefin verkefni.

Verkefni
Svið
Lýsing

k8s:bygging
PRE_INTEGRATION_TEST
Byggingarhafnarmyndir

k8s: ýttu
SETJA
Að hlaða upp docker myndum í skrárinn

k8s: auðlind
PROCESS_RESOURCES
Búa til K8s birtingarmyndir

k8s:sæktu
SAFNA SAMAN
Notkun myndaðra birtinga á K8s

k8s:undeploy
ATVINNA
Fjarlægir K8s tilföng sem voru notuð með k8s:apply og k8s:deploy

Ath: Ef þú vilt ekki að verkefni noti þessar skoðana sjálfgefnu stillingar geturðu stillt Eclipse JKube handvirkt fyrir þig, þar sem það styður stillingar í gegnum XML и auðlindir.

Nú skulum við skoða dæmi um notkun Eclipse JKube og Kubernetes Maven Plugin þegar unnið er með forrit.

Að setja upp Java forrit á Kubernetes með því að nota Eclipse JKube

Í þessu dæmi munum við setja upp einfalt Java forrit á klasa Minikube með Eclipse JKube. Með því að nota Kubernetes Maven viðbótina getum við stillt uppsetningarfæribreytur án þess að þurfa að skrifa neina uppsetningu.

Sem dæmi um forrit sem við notum einfaldur slembitölugenerator, sem framleiðir JSON úttak á /random endapunktinum:

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

Skref 1. Sæktu Kubernetes Maven Plugin

Kubernetes Maven Plugin er í geymslunni Maven Central Repository. Til að nota Eclipse JKube þarftu að bæta Kubernetes Maven Plugin við pom.xml sem ósjálfstæði:

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

Ef OpenShift er notað í stað hreins Kubernetes, þá er pom.xml breytt sem hér segir:

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

Skref 2. Byggja bryggjumyndina

Hægt er að búa til JAR skrá forritsins með mvn pakka skipuninni og síðan er mvn goal verkefnið k8s:build hægt að nota til að búa til docker mynd af forritinu. Athugaðu að við höfum hnekkt sjálfgefna myndheitinu með þessum eiginleika:

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

Áður en þú byggir myndina þarftu að ganga úr skugga um að docker púkinn sé rétt útsettur. Þetta er hægt að gera með eftirfarandi skipun:

$ eval $(minikube docker-env)

Síðan förum við inn í mvn k8s:build skipunina og þetta er það sem við munum sjá á skjánum þegar við smíðum docker myndina með því að nota Eclipse JKube smíðaverkefnið:

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

Skref 3. Hladdu upp myndinni í docker registry

Eftir að við höfum byggt upp docker myndina með push registry stillt (í okkar tilviki er það docker.io), getum við sent þessa mynd til the registry. Þetta er það sem birtist eftir að við biðjum Eclipse JKube að framkvæma mvn k8s:push push verkefnið:

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

Eftir að þú hefur sent myndina þarftu að athuga hvort hún sé innifalin í skránni. Í okkar tilviki sjáum við það einfaldlega í Docker Hub, eins og sýnt er á mynd. 4.

Þróun Java forrit fyrir Kubernetes með Eclipse JKube

Hrísgrjón. 4. Myndin sem send var til skrásetningarinnar birtist í Docker Hub.

Skref 4. Búðu til Kubernetes tilfangaskrár fyrir forritið

Svo við höfum safnað umsóknarmyndinni, nú þurfum við að skrifa Kubernetes upplýsingaskrá. Til að gera þetta hefur Eclipse JKube verkefni sem býr til stífar auðlindaskrár byggðar á undirliggjandi Java ramma (Vorstígvél, Kvarkus, Vert.x eða eitthvað annað). Þú getur líka sérsniðið upplýsingaskrána með því að nota XML stillingarskrá og setja hrá brot (brot af nauðsynlegri upplýsingaskrá) í forritamöppuna src/main/jkube. Í þessu tilviki verður stillingunum þínum hlaðið upp á útbúna upplýsingaskrána.

Í dæminu okkar látum við allt eins og það er og þess vegna býr Eclipse JKube til upplýsingaskrá fyrir sjálfgefna uppsetningu og fyrir þjónustuna með gerð ClusterIP. Og aðeins þá breytum við þjónustuskránni til að breyta þjónustugerðinni í NodePort. Þú getur hnekkt sjálfgefna hegðun með því að nota eftirfarandi eiginleika:

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

Svona lítur úttak skjásins út eftir að við biðjum Eclipse JKube að framkvæma mvn k8s: resource resource verkefnið.

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

Skref 5. Dreifðu forritinu í Kubernetes klasann

Nú erum við öll tilbúin að dreifa forritinu: við höfum búið til mynd þess og síðan búið til sjálfkrafa tilfangaskrár. Nú er allt sem er eftir að beita þessu öllu á Kubernetes klasann. Til að dreifa forritinu geturðu að sjálfsögðu notað kubectl application -f skipunina, en viðbótin getur gert þetta fyrir okkur. Þetta er það sem mun birtast á skjánum eftir að við biðjum Eclipse JKube að framkvæma mvn k8s:apply application verkefnið:

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

Skref 6. Taktu úr notkun forrita úr Kubernetes klasanum

Til að gera þetta er afdeploy verkefnið notað, sem einfaldlega fjarlægir öll tilföng sem voru notuð í fyrra skrefi, það er þegar umsóknarverkefnið er keyrt. Þetta er það sem við munum sjá á skjánum eftir að við biðjum Eclipse JKube að framkvæma mvn k8s:undeploy undeploy verkefnið:

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

Hvað annað geturðu gert með Eclipse JKube

Svo skoðuðum við helstu markmiðsverkefni Eclipse JKube og Kubernetes Maven Plugin, sem auðvelda þróun Java forrita fyrir Kubernetes pallinn. Ef þú vilt ekki stöðugt slá inn þessi verkefni frá lyklaborðinu geturðu skrifað þau í stillingar viðbótarinnar, til dæmis, svona:

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

Það verður að segjast að í þessari grein höfum við ekki skoðað öll markmiðsverkefnin sem eru í Eclipse JKube og Kubernetes Maven Plugin, svo við gefum í töflu 2 lista yfir viðbótarverkefni sem gætu einnig verið gagnleg fyrir þig.

Tafla 2. Viðbótarverkefni Eclipse JKube markmiða.

Verkefni
Svið
Lýsing

k8s: log
STAÐA
Móttaka annála frá forriti sem keyrir á Kubernetes.

k8s:kemba
PAKKNING
Opnaðu kembiforrit svo þú getir kembiforritið þitt sem keyrir á Kubernetes beint frá IDE.

k8s: deploy
SETJA
Að búa til gaffal fyrir uppsetningarverkefnið og beita mynduðu birtingaskránni á Kubernetes þyrpinguna á sama hátt og þegar um umsóknarverkefnið er að ræða.

k8s: horfa á
PAKKNING
Sjálfvirk heit dreifing forrits með því að rekja nafnrými þess.

Innleiðing Java forrita á Red Hat OpenShift með því að nota OpenShift Maven viðbótina

Til að dreifa forritinu frá dæminu okkar á Red Hat OpenShift pallinum notum við viðbótina OpenShift Maven. Eini munurinn verður sá að verkefnisforskeytið mun breytast úr k8s í oc. Sjálfgefið er að Kubernetes Maven viðbótin gerir það bryggju-samsetningar, og OpenShift Maven viðbótina - samsetningar S2I. Við erum ekki að gera neinar breytingar á verkefninu okkar nema að fjarlægja jkube.generator.name eignina þar sem þess er ekki krafist þegar ýtt er á skrásetninguna (OpenShift setur myndina í innri skrána sína meðan á byggingu stendur). Og þetta er það sem mun birtast á skjánum þegar við keyrum dæmið okkar, þar sem við framkvæmum markmiðsverkefni ekki eitt í einu, heldur allt í einu:

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

Vídeó kennslustund

Til að læra meira um hvernig á að gera Kubernetes þróun auðveldari með Eclipse JKube, horfðu á þetta kennslumyndband um hvernig á að nota fljótt einfalt Spring Boot forrit á Minikube:

Ályktun

Í þessari grein sýndum við hvernig Eclipse JKube gerir lífið auðveldara fyrir Java forritara þegar unnið er með Kubernetes. Nánari upplýsingar um Eclipse JKube er að finna á heimasíðu verkefnisins og GitHub.

Heimild: www.habr.com

Bæta við athugasemd