För 25 Är sedan började Java sin resa in i programmerarnas vÀrld, och har nu blivit en av de grundpelare som applikationsstackar byggs kring. Idag Àr dock mÄnga personer och organisationer som troget hÄllit fast vid Java upptagna med att övergÄ eller övervÀga att övergÄ till plattformar eller dess derivat, sÄsom eller .

TyvÀrr har Kubernetes en brant inlÀrningskurva och lÀgger till en ytterligare operationell nivÄ i den utvecklingsprocess som Java-programmerare Àr vana vid. Idag kommer vi att berÀtta hur man anvÀnder , för att förenkla dessa extra operationer relaterade till Kubernetes och containrar, samt för att möjliggöra en smÀrtfri migration till en molnplattform, samtidigt som den vÀlbekanta Java-ekosystemet bevaras. Dessutom kommer vi att visa hur man distribuerar Java-applikationer pÄ OpenShift-plattformen med hjÀlp av OpenShift Maven-plugin.
Den traditionella Java-utvecklingsprocessen
Den traditionella utvecklingsprocessen (Fig. 1) innebÀr att utvecklaren skriver kod, skapar distributionsenheter i form av JAR- eller WAR-filer, och sedan distribuerar och kör dessa filer pÄ en webbserver eller applikationsserver. Vanligtvis anvÀnder man Maven frÄn kommandoraden eller en IDE som IntelliJ eller Eclipse för att koda och packa applikationer. Utvecklare Àr vana att göra Àndringar i koden och noggrant testa allt före kodfixering och inlÀmning till versionshanteringssystemet.

Fig. 1. Den traditionella Java-utvecklingsprocessen.
Java-utvecklingsprocessen för molnet
NÀr man gÄr över till molnapplikationer lÀggs Kubernetes och till den ovan beskrivna schemat. SÄ nu mÄste utvecklaren paketera Java-applikationer i och skapa Kubernetes-manifest som beskriver dessa bilder. Dessa manifest appliceras sedan pÄ produktionsservern dÀr Kubernetes körs. Kubernetes hÀmtar dessa bilder frÄn registret och distribuerar applikationerna enligt de konfigurationer som vi angivit i manifest, som vanligtvis Àr YAML-filer.
Metamorfosen av den traditionella Java-utvecklingsprocessen nÀr man gÄr över till molnet visas i Fig. 2.

Fig. 2. Java-utvecklingsprocessen för molnet.
Eclipse JKube
ĂvergĂ„ngen till Kubernetes lĂ€gger till ytterligare en driftsnivĂ„ i utvecklingsprocessen, vilket gör mĂ„nga utvecklare nervösa, eftersom de vill fokusera pĂ„ sitt kĂ€rnarbete â applikationslogik â istĂ€llet för hur de ska distribuera det. HĂ€r kommer , som gör att utvecklare kan anvĂ€nda sina bibliotek och plugins ( tillsammans med eller ), sĂ„ att de, utan större anstrĂ€ngning, kan utföra container- och Kubernetes-relaterade operationer enligt schemat i Fig. 2.
I den hÀr artikeln kommer vi att visa hur man förenklar Java-utvecklingsprocessen i en Kubernetes-miljö med hjÀlp av Eclipse JKube tillsammans med Kubernetes Maven Plugin.
Utvecklingsprocessen för molnet med Eclipse JKube
LÄt oss övervÀga ett nÄgot modifierat schema för Java-utveckling för molnet som visas i Fig. 2, dÀr vi introducerar Eclipse JKube och Kubernetes Maven Plugin, som visas i Fig. 3.

Fig. 3. Java-utvecklingsprocessen för molnet med Eclipse JKube.
Som vi ser ersÀtts alla operationer för interaktion med Kubernetes och containers (markerade i rött pÄ schemat) av mÄlinriktade Eclipse JKube-uppgifter som listas i Tab. 1.
Tab. 1. Standarduppgifter för Eclipse JKube.
Uppgift
Steg
Beskrivning
PRE_INTEGRATION_TEST
Bygga dockerbilder
INSTALL
Skicka dockerbilder till registret
PROCESS_RESOURCES
Generera K8s-manifest
COMPILE
TillÀmpa de genererade manifest pÄ K8s
UNDEPLOY
Ta bort K8s-resurser som har distribuerats genom k8s:apply och k8s:deploy
AnmÀrkning: Om du inte vill att uppgifterna ska anvÀnda dessa strikta standardinstÀllningar (opinionated defaults), kan du manuellt anpassa Eclipse JKube, eftersom den stöder konfiguration via och .
LÄt oss nu titta pÄ exempel pÄ anvÀndning av Eclipse JKube och Kubernetes Maven Plugin nÀr vi arbetar med applikationer.
Distribuera en Java-applikation i Kubernetes med hjÀlp av Eclipse JKube
I detta exempel kommer vi att distribuera en enkel Java-applikation i klustret med hjÀlp av Eclipse JKube. Genom att anvÀnda Kubernetes Maven Plugin kan vi ange distributionsparametrar utan att behöva skriva nÄgon konfiguration.
Som exempelapplikation anvÀnder vi , som ger JSON-output pÄ endpointen /random:
~ /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"
}
Steg 1. Ladda upp Kubernetes Maven Plugin
Kubernetes Maven Plugin finns i förrÄdet . För att anvÀnda Eclipse JKube mÄste du lÀgga till Kubernetes Maven Plugin i din pom.xml som en beroende:
org.eclipse.jkube
kubernetes-maven-plugin
${jkube.version}
Om istÀllet för ren Kubernetes OpenShift anvÀnds, ska pom.xml modifieras enligt följande:
org.eclipse.jkube
openshift-maven-plugin
${jkube.version}
Steg 2. Bygg docker-image
JAR-filen för applikationen kan byggas med kommandot mvn package, och sedan kan du anvÀnda mÄlet mvn k8s:build för att bygga docker-imagen för denna applikation. Observera att vi har Äsidosatt standardnamnet för imagen med följande egenskap:
docker.io/rohankanojia/random-generator:${project.version}
Innan du bygger imagen mÄste du se till att docker-demonen Àr korrekt exponerad. Detta kan göras med följande kommando:
$ eval $(minikube docker-env)
DÀrefter skriver vi kommandot mvn k8s:build, och hÀr Àr vad vi ser pÄ skÀrmen nÀr docker-imagen byggs med hjÀlp av build-mÄlet Eclipse JKube:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:build
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------------------------------
[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 : $
Steg 3. Skicka imagen till docker-register
Efter att vi har byggt docker-imagen nÀr push-register Àr konfigurerat (i vÄrt fall docker.io), kan vi skicka denna imagen till registret. HÀr Àr vad som visas pÄ skÀrmen efter att vi ber Eclipse JKube att utföra push-mÄlet mvn k8s:push:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:push
[INFO] Skannar efter projekt...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Bygger random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:push (standard-cli) @ random-generator ---
[INFO] k8s: Kör i Kubernetes-lÀge
[INFO] k8s: Bygger Docker-bild i Kubernetes-lÀge
[INFO] k8s: Kör generator spring-boot
[INFO] k8s: spring-boot: AnvÀnder Docker-bild quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 som bas \/ byggare
[INFO] k8s: Pushen avser förrÄd [docker.io\/rohankanojia\/random-generator]
5dcd9556710f: Lagret finns redan
b7139ad07aa8: Lagret finns redan
b6f081e4b2b6: Lagret finns redan
d8e1f35641ac: Lagret finns redan
[INFO] k8s: 0.0.1: digest: sha256:9f9eda2a13b8cab1d2c9e474248500145fc09e2922fe3735692f9bda4c76002d storlek: 1162
[INFO] k8s: Pushade docker.io\/rohankanojia\/random-generator:0.0.1 pÄ 7 sekunder
[INFO] ------------------------------------------------------------------------
[INFO] BYGGET FRAMGĂ
NG
[INFO] ------------------------------------------------------------------------
[INFO] Total tid: 11.222 s
[INFO] Avslutad vid: 2020-08-10T11:35:37+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $
Efter att ha skickat bilden Àr det viktigt att kontrollera att den har kommit till registret. I vÄrt fall ser vi den bara i Docker Hub, som visas i Fig. 4.

Fig. 4. Bilden som skickades till registret har dykt upp i Docker Hub.
Steg 4. Generera Kubernetes-resursernas manifest för applikationen
SÄ, vi har byggt applikationens bild, nu mÄste vi skriva Kubernetes-manifest. För detta har Eclipse JKube en uppgift som genererar fasta manifest av resurser baserat pÄ den underliggande Java-ramverket (, , Vert.x eller nÄgon annan). Man kan ocksÄ konfigurera manifestet med en konfigurations-XML-fil och placera raw-fragment (fragment av det nödvÀndiga resurmanifestet) i katalogen src\/main\/jkube i applikationen. I sÄ fall kommer din konfiguration att laddas in i de genererade manifest.
I vÄrt exempel lÄter vi allt vara som det Àr, vilket gör att Eclipse JKube genererar ett manifest för standarddistributionen och för tjÀnsten av typen ClusterIP. Senare modifierar vi tjÀnstememanifestet för att Àndra tjÀnstetypen till NodePort. Det standardbeteendet kan ÄsidosÀttas med följande egenskap:
<jkube.enricher.jkube-service.type>NodePort<\/jkube.enricher.jkube-service.type>
SÄ hÀr ser skÀrmutdata ut efter att vi bett Eclipse JKube att utföra resource-uppgiften mvn k8s:resource.
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:resource
[INFO] Skannar efter projekt...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Bygger random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:resource (standard-cli) @ random-generator ---
[INFO] k8s: Kör generatorn spring-boot
[INFO] k8s: spring-boot: AnvÀnder Docker-bild quay.io\/jkube\/jkube-java-binary-s2i:0.0.7 som bas \/ byggare
[INFO] k8s: jkube-controller: LĂ€gger till en standardutplacering
[INFO] k8s: jkube-service: LÀgger till en standardtjÀnst 'random-generator' med portar [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: LÀgger till beredskapskontroll pÄ port 8080, vÀg='\/actuator\/health', schema='HTTP', med initial fördröjning 10 sekunder
[INFO] k8s: jkube-healthcheck-spring-boot: LÀgger till livsbevakning pÄ port 8080, vÀg='\/actuator\/health', schema='HTTP', med initial fördröjning 180 sekunder
[INFO] k8s: jkube-revision-history: LÀgger till revisionshistorikgrÀns pÄ 2
[INFO] ------------------------------------------------------------------------
[INFO] BYGG LYCKADES
[INFO] ------------------------------------------------------------------------
[INFO] Total tid: 3.344 s
[INFO] Avslutad vid: 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: git@github.com: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 : $
Steg 5. Distribuera applikationen i Kubernetes-klustret
SÄ, vi har allt klart för att utföra distributionen av applikationen: vi har genererat dess bild och sedan automatiskt genererat resursmanifesten. Nu ÄterstÄr det bara att applicera allt detta pÄ Kubernetes-klustret. För att distribuera applikationen kan man givetvis anvÀnda kommandot kubectl apply -f, men pluginet kan göra det Ät oss ocksÄ. HÀr Àr vad som kommer att visas pÄ skÀrmen efter att vi har bett Eclipse JKube att utföra apply-uppgiften mvn k8s:apply:
~\/work\/repos\/eclipse-jkube-demo-project : $ mvn k8s:apply
[INFO] Skannar efter projekt...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Bygger random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] k8s: AnvÀnder Kubernetes pÄ https://192.168.39.145:8443/ i namnrymden default med manifestet /home/rohaan/work/repos/eclipse-jkube-demo-project/target/classes/META-INF/jkube/kubernetes.yml
[INFO] k8s: AnvÀnder namnrymden: default
[INFO] k8s: Skapar en tjÀnst frÄn kubernetes.yml namnrymden default namn random-generator
[INFO] k8s: Skapade tjÀnst: target/jkube/applyJson/default/service-random-generator.json
[INFO] k8s: Skapar en distribution frÄn kubernetes.yml namnrymden default namn random-generator
[INFO] k8s: Skapade distribution: target/jkube/applyJson/default/deployment-random-generator.json
[INFO] k8s: TIPS: AnvÀnd kommandot `kubectl get pods -w` för att övervaka dina pods starta
[INFO] ------------------------------------------------------------------------
[INFO] BYGG FRAMGĂ
NG
[INFO] ------------------------------------------------------------------------
[INFO] Total tid: 7.306 s
[INFO] Avslutad vid: 2020-08-10T11:40:57+05:30
[INFO] ------------------------------------------------------------------------
~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get pods -w
NAMN REDO STATUS OMSTARTNINGAR Ă
LDER
random-generator-58b7847d7f-9m9df 0\/1 Körande 0 7s
random-generator-58b7847d7f-9m9df 1\/1 Körande 0 17s
^C~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get svc
NAMN TYP KLUSTER-IP EXTERN-IP PORTAR(S) Ă
LDER
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 .
% Totalt % Mottaget % Ăverförd Genomsnittlig Hastighet Tid Tid Tid Aktuell
Ladda ner Ladda upp Totalt AnvÀnt Kvar Hastighet
100 45 0 45 0 0 1800 0 --:--:-- --:--:-- --:--:-- 1875
{
"id": "42e5571f-a20f-44b3-8184-370356581d10"
}
Steg 6. Gör en undeploy av applikationen frÄn Kubernetes-klustret
Detta görs med uppgiften undeploy, som helt enkelt tar bort alla resurser som tillÀmpades i föregÄende steg, det vill sÀga vid utförandet av uppgiften apply. SÄ hÀr kommer vi att se pÄ skÀrmen efter att vi ber Eclipse JKube att utföra undeploy-uppgiften mvn k8s:undeploy:
~\/work\/repos\/eclipse-jkube-demo-project : $ kubectl get all
NAME READY STATUS RESTARTS AGE
pod\/random-generator-58b7847d7f-9m9df 1\/1 Running 0 5m21s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service\/kubernetes ClusterIP 10.96.0.1 443\/TCP 18d
service\/random-generator NodePort 10.97.172.147 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] ---------------------------------------------
[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 443\/TCP 18d
~\/work\/repos\/eclipse-jkube-demo-project : $
Vad mer kan göras med Eclipse JKube
SÄ, vi har gÄtt igenom de huvudsakliga mÄl som Eclipse JKube och Kubernetes Maven Plugin erbjuder för att underlÀtta utvecklingen av Java-applikationer för Kubernetes-plattformen. Om du inte vill behöva mata in dessa uppgifter hela tiden kan du skriva dem i plugin-konfigurationen, till exempel sÄ hÀr:
org.eclipse.jkube
kubernetes-maven-plugin
${project.version}
build
resource
apply
Det Àr vÀrt att nÀmna att vi i den hÀr artikeln inte har tÀckt alla mÄl som finns i Eclipse JKube och Kubernetes Maven Plugin, sÄ vi listar i Tabell 2 ytterligare uppgifter som kan vara anvÀndbara för dig.
Tabell 2. Ytterligare mÄl för Eclipse JKube.
Uppgift
Steg
Beskrivning
VALIDERA
HÀmta loggar frÄn applikationen som körs pÄ Kubernetes.
PAKET
Ăppning av en debuggerport för att möjliggöra felsökning av applikationen som körs pĂ„ Kubernetes direkt frĂ„n IDE.
INSTALL
Skapa en fork för installationen och tillÀmpa de genererade manifestfilerna pÄ Kubernetes-klustret pÄ samma sÀtt som vid apply-uppgiften.
PAKET
Automatisk hot-deployment av applikationen genom att övervaka dess namespace.
Distribution av Java-applikationer pÄ Red Hat OpenShift med hjÀlp av OpenShift Maven-plugin.
För att distribuera applikationen frÄn vÄrt exempel pÄ plattformen Red Hat OpenShift tillÀmpar vi pluginet . Den enda skillnaden blir att uppgiftsprefixet Àndras frÄn k8s till oc. Som standard gör Kubernetes Maven-plugin -byggnationer, medan OpenShift Maven-plugin gör byggnationer. . Vi gör inga Àndringar i vÄrt projekt, förutom att vi tar bort egenskapen jkube.generator.name, eftersom den inte behövs vid publicering till registret (under byggsteget lÀgger OpenShift bilden i sitt interna register). Och sÄ hÀr ser det ut pÄ skÀrmen nÀr vi kör vÄrt exempel, dÀr vi för övrigt kör mÄluppgifterna inte en och en, utan alla pÄ en gÄng:
~\work\repos\eclipse-jkube-demo-project : $ mvn oc:build oc:resource oc:apply
[INFO] Skannar efter projekt...
[INFO]
[INFO] ---------------------------------------------
[INFO] Bygger random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:build (default-cli) @ random-generator ---
[INFO] oc: AnvÀnder OpenShift-bygg med strategi S2I
[INFO] oc: Kör i OpenShift-lÀge
[INFO] oc: Kör generator spring-boot
[INFO] oc: spring-boot: AnvÀnder Docker-bild quay.io/jkube/jkube-java-binary-s2i:0.0.7 som bas / byggare
[INFO] oc: [random-generator:0.0.1] "spring-boot": Skapade docker-kÀlltar /home/rohaan/work/repos/eclipse-jkube-demo-project/target/docker/random-generator/0.0.1/tmp/docker-build.tar
[INFO] oc: LĂ€gger till i Secret pullsecret-jkube
[INFO] oc: AnvÀnder Secret pullsecret-jkube
[INFO] oc: Skapar BuildServiceConfig random-generator-s2i för kÀllbygg
[INFO] oc: Skapar ImageStream random-generator
[INFO] oc: Startar bygg random-generator-s2i
[INFO] oc: VÀntar pÄ att bygget random-generator-s2i-1 ska slutföras...
[INFO] oc: Cacherar blobs under "/var/cache/blobs".
[INFO] oc: HÀmtar bildkÀlla underteckningar
[INFO] oc: Kopierar blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopierar blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopierar blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopierar config sha256:52d6788fcfdd39595264d34a3959464a5dabc1d4ef0ae188802b20fc2d6a857b
[INFO] oc: Skriver manifest till bilddestination
[INFO] oc: Lagrar underteckningar
[INFO] oc: Genererar dockerfile med byggarbild quay.io/jkube/jkube-java-binary-s2i:0.0.7
[INFO] oc: STEG 1: FRĂ
N quay.io/jkube/jkube-java-binary-s2i:0.0.7
[INFO] oc: STEG 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: STEG 3: ENV JAVA_APP_DIR="/deployments" OPENSHIFT_BUILD_NAME="random-generator-s2i-1" OPENSHIFT_BUILD_NAMESPACE="default"
[INFO] oc: STEG 4: ANVĂNDA root
[INFO] oc: STEG 5: KOPIERA upload/src /tmp/src
[INFO] oc: STEG 6: KĂR chown -R 1000:0 /tmp/src
[INFO] oc: STEG 7: ANVĂNDA 1000
[INFO] oc: STEG 8: KĂR /usr/local/s2i/assemble
[INFO] oc: INFO S2I kÀllbygg med vanliga binÀrer upptÀcktes
[INFO] oc: INFO S2I binÀrbygg frÄn fabric8-maven-plugin upptÀcktes
[INFO] oc: INFO Kopierar binÀrer frÄn /tmp/src/deployments till /deployments ...
[INFO] oc: random-generator-0.0.1.jar
[INFO] oc: INFO Kopierar distributioner frÄn deployments till /deployments...
[INFO] oc: '/tmp/src/deployments/random-generator-0.0.1.jar' -> '/deployments/random-generator-0.0.1.jar'
[INFO] oc: STEG 9: CMD /usr/local/s2i/run
[INFO] oc: STEG 10: KOMMIT temp.builder.openshift.io/default/random-generator-s2i-1:48795e41
[INFO] oc: time="2020-08-10T06:37:49Z" level=info msg="Bild operativsystem mismatch: bilden anvÀnder "", förvÀntar "linux""
[INFO] oc: time="2020-08-10T06:37:49Z" level=info msg="Bildarkitektur mismatch: bilden anvÀnder "", förvÀntar "amd64""
[INFO] oc: HÀmtar bildkÀlla underteckningar
[INFO] oc: Kopierar blob sha256:d8e1f35641acb80b562f70cf49911341dfbe8c86f4d522b18efbf3732aa74223
[INFO] oc: Kopierar blob sha256:b6f081e4b2b6de8be4b1dec132043d14c121e968384dd624fb69c2c07b482edb
[INFO] oc: Kopierar blob sha256:b7139ad07aa8ce4ed5a132f7c5cc9f1de0f5099b5e155027a23d57f7fbe78b16
[INFO] oc: Kopierar blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopierar config sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Skriver manifest till bilddestination
[INFO] oc: Lagrar underteckningar
[INFO] oc: --> 27aaadaf28e
[INFO] oc: 27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: HÀmtar bildkÀlla underteckningar
[INFO] oc:
[INFO] oc: Pushing bild image-registry.openshift-image-registry.svc:5000/default/random-generator:0.0.1 ...
[INFO] oc: Kopierar blob sha256:f320f94d91a064281f5127d5f49954b481062c7d56cce3b09910e471cf849050
[INFO] oc: Kopierar blob sha256:cf0f3ebe9f536c782ab3835049cfbd9a663761ded9370791ef6ea3965c823aad
[INFO] oc: Kopierar blob sha256:57de4da701b511cba33bbdc424757f7f3b408bea741ca714ace265da9b59191a
[INFO] oc: Kopierar blob sha256:98972fc90a1108315cc5b05b2c691a0849a149727a7b81e76bc847ac2c6d9714
[INFO] oc: Kopierar config sha256:27aaadaf28e24856a66db962b88118b8222b61d79163dceeeed869f7289bc230
[INFO] oc: Skriver manifest till bilddestination
[INFO] oc: Lagrar underteckningar
[INFO] oc: FramgÄngsrikt tryckt image-registry.openshift-image-registry.svc:5000/default/random-generator@sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: Push lyckad
[INFO] oc: Bygg random-generator-s2i-1 i status Komplett
[INFO] oc: Hittade tag pÄ ImageStream random-generator tag: sha256:aa9e1a380c04ef9174ba56459c13d44420ebe653ebf32884d60fe4306b17306d
[INFO] oc: ImageStream random-generator skriven till /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: AnvÀnder docker bild namn av namnrymden: default
[INFO] oc: Kör generator spring-boot
[INFO] oc: spring-boot: AnvÀnder Docker-bild quay.io/jkube/jkube-java-binary-s2i:0.0.7 som bas / byggare
[INFO] oc: jkube-controller: LĂ€gger till en standard DeploymentConfig
[INFO] oc: jkube-service: LÀgger till en standard tjÀnst 'random-generator' med portar [8080]
[INFO] oc: jkube-healthcheck-spring-boot: LÀgger till beredskapskontroll pÄ port 8080, sökvÀg='/actuator/health', schema='HTTP', med initial fördröjning 10 sekunder
[INFO] oc: jkube-healthcheck-spring-boot: LÀgger till levande kontroll pÄ port 8080, sökvÀg='/actuator/health', schema='HTTP', med initial fördröjning 180 sekunder
[INFO] oc: jkube-revision-history: LÀgger till revisionshistorikgrÀns till 2
[INFO]
[INFO] --- openshift-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] oc: AnvÀnder OpenShift pÄ https://api.crc.testing:6443/ i namnrymd default med manifest /home/rohaan/work/repos/eclipse-jkube-demo-project/target/classes/META-INF/jkube/openshift.yml
[INFO] oc: OpenShift-plattform upptÀcktes
[INFO] oc: AnvÀnder projekt: default
[INFO] oc: Skapar en tjÀnst frÄn openshift.yml namnrymden default namn random-generator
[INFO] oc: Skapade tjÀnst: target/jkube/applyJson/default/service-random-generator.json
[INFO] oc: Skapar en DeploymentConfig frÄn openshift.yml namnrymden default namn random-generator
[INFO] oc: Skapade DeploymentConfig: target/jkube/applyJson/default/deploymentconfig-random-generator.json
[INFO] oc: Skapar Route default:random-generator vÀrd: null
[INFO] oc: TIPS: AnvÀnd kommandot `oc get pods -w` för att övervaka dina pods starta upp
[INFO] ------------------------------------------------------------------------
[INFO] BYGG LYCKAD
[INFO] ------------------------------------------------------------------------
[INFO] Total tid: 01:07 min
[INFO] Avslutad vid: 2020-08-10T12:08:00+05:30
[INFO] ------------------------------------------------------------------------
~\work\repos\eclipse-jkube-demo-project : $ oc get pods -w
NAMN KLAR STATUS OMSĂTTNING Ă
LDER
random-generator-1-deploy 1/1 Körande 0 14s
random-generator-1-vnrm9 0/1 Körande 0 11s
random-generator-s2i-1-build 0/1 Slutförd 0 1m
random-generator-1-vnrm9 1/1 Körande 0 24s
random-generator-1-deploy 0/1 Slutförd 0 28s
~\work\repos\eclipse-jkube-demo-project : $ oc get routes
NAMN VĂRD/PORT SĂKSVĂG TJĂNSTER PORT TERMINERING VILDCARD
random-generator random-generator-default.apps-crc.testing random-generator 8080 Ingen
~\work\repos\eclipse-jkube-demo-project : $ curl random-generator-default.apps-crc.testing/random
% Total % Mottagen % Xferd Genomsnittlig Hastighet Tid Tid Tid Aktuell
Dload Uppladdning Totalt AnvÀnt Kvar Hastighet
100 45 0 45 0 0 1666 0 --:--:-- --:--:-- --:--:-- 1730
{
"id": "d80052d9-2f92-43cb-b9eb-d7cffb879798"
}
~\work\repos\eclipse-jkube-demo-project : $
Videolektion
För att lÀra dig mer om hur du förenklar Kubernetes-utveckling med Eclipse JKube, se videolektionen om snabb distribution av en enkel Spring Boot-applikation pÄ Minikube:

Slutsats
I den hÀr artikeln har vi visat hur Eclipse JKube underlÀttar livet för Java-utvecklare som arbetar med Kubernetes. Mer information om Eclipse JKube finns pÄ och pÄ .
KĂ€lla: habr.com
