25 жилийн өмнө Java програмчлалын үндсэн урсгалд орж, эцэст нь програмын стекийг бүтээдэг үндсэн элементүүдийн нэг болсон. Гэвч өнөөдөр олон жилийн турш Java-д үнэнч байсан олон хүмүүс, байгууллагууд платформ руу шилжих эсвэл шилжих завгүй байна.
Харамсалтай нь Кубернетес нь сургалтын эгц муруйтай бөгөөд Java программистуудын дассан хөгжүүлэлтийн процесст өөр үйлдлийн давхаргыг нэвтрүүлдэг. Өнөөдөр бид хэрхэн ашиглах талаар танд хэлэх болно
Уламжлалт Java хөгжүүлэлтийн процесс
Уламжлалт хөгжлийн үйл явц
Цагаан будаа. 1. Уламжлалт Java хөгжүүлэлтийн процесс.
Үүлэнд зориулсан Java хөгжүүлэлтийн процесс
Клоуд програм руу шилжих үед Kubernetes болон
Үүл рүү шилжих уламжлалт Java хөгжүүлэлтийн үйл явцын метаморфозыг Зураг дээр үзүүлэв. 2.
Цагаан будаа. 2. үүлэнд зориулсан Java хөгжүүлэлтийн процесс.
Eclipse JKube
Кубернетес рүү шилжих нь хөгжүүлэлтийн процесст өөр нэг үйлдлийн давхаргыг нэмж өгдөг бөгөөд олон хөгжүүлэгчид үүнийг хэрхэн байрлуулахаас илүү үндсэн ажил болох програмын логик дээр анхаарлаа хандуулахыг хүсдэг тул үүнд сандарч байна. Эндээс л энэ нь хэрэгжиж байна.
Энэ нийтлэлийн үлдсэн хэсэгт бид Eclipse JKube-г Kubernetes Maven Plugin ашиглан Kubernetes орчинд Java хөгжүүлэлтийн процессыг хэрхэн хялбарчлахыг харуулах болно.
Eclipse JKube ашиглан үүлэн хөгжүүлэлтийн процесс
Зурагт үзүүлсэн шиг Eclipse JKube болон Kubernetes Maven Plugin-ийг нэвтрүүлж, 2-р зурагт үзүүлсэн үүлэнд зориулсан Java хөгжүүлэлтийн бага зэрэг өөрчлөгдсөн схемийг авч үзье. 3.
Цагаан будаа. 3. Eclipse JKube ашиглан үүлэнд зориулсан Java хөгжүүлэлтийн процесс.
Бидний харж байгаагаар энд Кубернетес болон контейнеруудтай харилцах бүх үйлдлүүд (диаграммд улаанаар тэмдэглэсэн) нь Хүснэгтэнд жагсаасан Eclipse JKube-ийн өгөгдмөл зорилтуудаар солигдсон болно. 1.
Хүснэгт 1. Eclipse JKube өгөгдмөл ажлууд.
Зорилго
Үе шат
Тайлбар
PRE_INTEGRATION_TEST
Докерын зургийг бүтээх
Суулгацаа хийх
Докерын зургийг бүртгэлд байршуулж байна
PROCESS_RESOURCES
K8s манифест үүсгэх
ЭВХИЙЛЭХ
Үүсгэсэн манифестуудыг K8-д хэрэглэж байна
СУУРИЛУУЛАХ
k8s:apply болон k8s:deploy ашиглан байршуулсан K8s нөөцүүдийг устгаж байна.
Тайлбар: Хэрэв та даалгавруудыг эдгээр үзэл бодолтой өгөгдмөл тохиргоог ашиглахыг хүсэхгүй байгаа бол Eclipse JKube-г гараар тохируулах боломжтой, учир нь энэ нь дамжуулан тохиргоог дэмждэг.
Одоо програмуудтай ажиллахдаа Eclipse JKube болон Kubernetes Maven Plugin ашиглах жишээг харцгаая.
Eclipse JKube ашиглан Kubernetes дээр Java програмыг байрлуулах
Энэ жишээнд бид энгийн Java програмыг кластер дээр байрлуулах болно
Жишээ болгон бидний ашигладаг програм
~/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"
}
Алхам 1. Kubernetes Maven Plugin татаж аваарай
Kubernetes Maven Plugin нь хадгалах газарт байна
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
Хэрэв цэвэр Kubernetes-ийн оронд OpenShift ашигласан бол pom.xml-ийг дараах байдлаар өөрчилнө:
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>openshift-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
Алхам 2. Докерын дүрсийг бүтээх
Програмын JAR файлыг mvn багц командын тусламжтайгаар бүтээж болох ба дараа нь mvn зорилго даалгавар k8s:build-ийг ашиглан програмын docker дүрсийг бүтээх боломжтой. Бид энэ шинж чанартай зургийн үндсэн нэрийг дарсан болохыг анхаарна уу:
<jkube.generator.name>docker.io/rohankanojia/random-generator:${project.version}</jkube.generator.name>
Зургийг бүтээхээсээ өмнө та докер демон зөв ил гарсан эсэхийг шалгах хэрэгтэй. Үүнийг дараах тушаалаар хийж болно.
$ eval $(minikube docker-env)
Дараа нь бид mvn k8s:build командыг оруулаад 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 : $
Алхам 3. Зургийг докерын бүртгэлд байршуулна уу
Бид тохируулсан түлхэх бүртгэлээр докерын дүрсийг бүтээсний дараа (манай тохиолдолд энэ нь docker.io) энэ зургийг бүртгэл рүү илгээх боломжтой. Бид Eclipse JKube-ээс 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 : $
Зургийг илгээсний дараа та бүртгэлд орсон эсэхийг шалгах хэрэгтэй. Манай тохиолдолд бид үүнийг зүгээр л Docker Hub дээр харж байгаа бөгөөд үүнийг Зураг дээр үзүүлэв. 4.
Цагаан будаа. 4. Бүртгэлд илгээсэн зураг Docker Hub дээр гарч ирэв.
Алхам 4. Аппликешнд зориулж Kubernetes нөөцийн манифест үүсгэнэ үү
Тиймээс бид програмын зургийг цуглуулсан тул одоо Кубернетес манифест бичих хэрэгтэй. Үүнийг хийхийн тулд Eclipse JKube нь үндсэн Java хүрээн дээр тулгуурлан хатуу нөөцийн манифест үүсгэдэг даалгавартай.
Бидний жишээн дээр бид бүх зүйлийг байгаагаар нь үлдээдэг тул Eclipse JKube нь анхдагч байршуулалт болон ClusterIP төрлийн үйлчилгээнд зориулсан манифест үүсгэдэг. Зөвхөн дараа нь бид үйлчилгээний төрлийг NodePort болгон өөрчлөхийн тулд үйлчилгээний манифестийг өөрчилдөг. Та дараах шинж чанарыг ашиглан анхдагч үйлдлийг хүчингүй болгож болно:
<jkube.enricher.jkube-service.type>NodePort</jkube.enricher.jkube-service.type>
Бид Eclipse JKube-ээс mvn k8s:resource resource даалгаврыг гүйцэтгэхийг хүссэний дараа дэлгэцийн гаралт иймэрхүү харагдаж байна.
~/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 : $
Алхам 5. Аппликешныг Kubernetes кластерт байрлуул
Одоо бид програмыг ашиглахад бэлэн боллоо: бид түүний зургийг үүсгэж, дараа нь нөөцийн манифестуудыг автоматаар үүсгэсэн. Одоо энэ бүхнийг Кубернетес кластерт хэрэглэх л үлдлээ. Аппликейшнийг байрлуулахын тулд та мэдээж kubectl apply -f командыг ашиглаж болно, гэхдээ залгаас нь үүнийг хийх боломжтой. Энэ нь бид Eclipse JKube-ээс mvn k8s:apply application даалгаврыг гүйцэтгэхийг хүссэний дараа дэлгэцэн дээр гарч ирэх болно.
~/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"
}
Алхам 6. Kubernetes кластераас програмуудыг буулгах
Үүнийг хийхийн тулд undeploy даалгаврыг ашигладаг бөгөөд энэ нь өмнөх алхамд ашигласан бүх нөөцийг устгадаг, өөрөөр хэлбэл хэрэглэх даалгаврыг гүйцэтгэх үед. Бид Eclipse JKube-ээс mvn k8s: undeploy 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 <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 : $
Eclipse JKube ашиглан өөр юу хийж чадах вэ
Тиймээс бид Kubernetes платформд зориулсан Java програмуудыг хөгжүүлэхэд тусалдаг Eclipse JKube болон Kubernetes Maven Plugin-ийн үндсэн зорилтуудыг авч үзсэн. Хэрэв та эдгээр даалгаврыг гараас байнга оруулахыг хүсэхгүй бол залгаасын тохиргоонд бичиж болно, жишээлбэл:
<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>
Энэ нийтлэлд бид Eclipse JKube болон Kubernetes Maven Plugin-д байгаа бүх зорилгын даалгавруудыг авч үзээгүй тул танд хэрэгтэй байж болох нэмэлт ажлуудын жагсаалтыг 2-р хүснэгтэд үзүүлэв.
Хүснэгт 2. Eclipse JKube-ийн нэмэлт зорилтууд.
Зорилго
Үе шат
Тайлбар
БАТАЛГААТАЙ
Kubernetes дээр ажиллаж байгаа програмаас бүртгэл хүлээн авч байна.
БАГЦ
Дибаг хийх портыг нээснээр та Kubernetes дээр ажиллаж байгаа програмаа IDE-ээс шууд дибаг хийх боломжтой.
Суулгацаа хийх
Суулгах даалгаварт сэрээ үүсгэж, үүсгэсэн манифестуудыг хэрэглэх даалгаврын нэгэн адил Кубернетес кластерт хэрэглэнэ.
БАГЦ
Нэрийн орон зайг хянах замаар програмыг автоматаар ашиглах боломжтой.
OpenShift Maven Plugin ашиглан Red Hat OpenShift дээр Java програмуудыг байрлуулах
Манай жишээн дээрх програмыг Red Hat OpenShift платформ дээр байрлуулахын тулд бид залгаасыг ашигладаг
~/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 : $
Видео хичээл
Eclipse JKube ашиглан Kubernetes-ийн хөгжүүлэлтийг хэрхэн хөнгөвчлөх талаар илүү ихийг мэдэхийг хүсвэл Minikube дээр энгийн Spring Boot програмыг хэрхэн хурдан байрлуулах тухай видео хичээлийг үзнэ үү:
дүгнэлт
Энэ нийтлэлд бид Eclipse JKube нь Kubernetes-тэй ажиллахдаа Java хөгжүүлэгчийн амьдралыг хэрхэн хөнгөвчлөхийг харуулсан. Eclipse JKube-ийн талаарх дэлгэрэнгүй мэдээллийг эндээс авах боломжтой
Эх сурвалж: www.habr.com