25 سال پیش، جاوا وارد جریان اصلی برنامه نویسی شد و در نهایت به یکی از عناصر اصلی تبدیل شد که پشته برنامه ها بر اساس آن ساخته می شوند. اما امروزه بسیاری از افراد و سازمانهایی که سالها به جاوا وفادار بودهاند، مشغول مهاجرت یا مهاجرت به این پلتفرم هستند.
متأسفانه، Kubernetes منحنی یادگیری تند دارد و یک لایه عملیاتی دیگر را وارد فرآیند توسعه می کند که برنامه نویسان جاوا به آن عادت دارند. امروز نحوه استفاده را به شما خواهیم گفت
فرآیند توسعه سنتی جاوا
فرآیند توسعه سنتی
برنج. 1. فرآیند توسعه سنتی جاوا.
فرآیند توسعه جاوا برای ابر
هنگام انتقال به برنامه های ابری، Kubernetes و
دگردیسی فرآیند توسعه سنتی جاوا در انتقال به ابر در شکل 2 نشان داده شده است. XNUMX.
برنج. 2. فرآیند توسعه جاوا برای ابر.
Eclipse JKube
مهاجرت به Kubernetes یک لایه عملیاتی دیگر را به فرآیند توسعه اضافه می کند و بسیاری از توسعه دهندگان در مورد آن عصبی هستند زیرا می خواهند به جای اینکه چگونه آنها را به کار گیرند، روی کار اصلی خود - منطق برنامه - تمرکز کنند. و اینجاست که به کار می آید.
در ادامه این مقاله، به شما نشان خواهیم داد که چگونه فرآیند توسعه جاوا را در محیط Kubernetes با استفاده از Eclipse JKube با افزونه Kubernetes Maven ساده کنید.
فرآیند توسعه ابر با استفاده از Eclipse JKube
بیایید یک طرح توسعه کمی جاوا را برای ابر از شکل 2 در نظر بگیریم و Eclipse JKube و Kubernetes Maven Plugin را در آن معرفی کنیم، همانطور که در شکل نشان داده شده است. 3.
برنج. 3. فرآیند توسعه جاوا برای ابر با استفاده از Eclipse JKube.
همانطور که می بینیم، در اینجا همه عملیات برای تعامل با Kubernetes و کانتینرها (که در نمودار با رنگ قرمز مشخص شده اند) با وظایف هدف Eclipse JKube پیش فرض جایگزین می شوند که در جدول فهرست شده اند. 1.
جدول 1. وظایف پیش فرض JKube را Eclipse کنید.
کار
صحنه
شرح
PRE_INTEGRATION_TEST
ساخت تصاویر داکر
نصب
بارگذاری تصاویر داکر در رجیستری
PROCESS_RESOURCES
ایجاد نمایش K8s
گردآوری
اعمال مانیفست های تولید شده برای K8s
بیکار کردن
حذف منابع K8s که با استفاده از k8s:apply و k8s:deploy مستقر شده بودند
توجه: اگر نمیخواهید وظایف از این پیشفرضهای پیشفرض استفاده کنند، میتوانید به صورت دستی Eclipse JKube را برای خود پیکربندی کنید، زیرا از پیکربندی از طریق پشتیبانی میکند.
حال بیایید نمونه هایی از استفاده از Eclipse JKube و Kubernetes Maven Plugin در هنگام کار با برنامه ها را بررسی کنیم.
استقرار یک برنامه جاوا در Kubernetes با استفاده از Eclipse JKube
در این مثال ما یک برنامه ساده جاوا را روی یک خوشه مستقر خواهیم کرد
به عنوان یک برنامه کاربردی که ما استفاده می کنیم
~/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 را دانلود کنید
افزونه Kubernetes Maven در مخزن است
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
اگر از OpenShift به جای Kubernetes خالص استفاده شود، pom.xml به صورت زیر اصلاح می شود:
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>openshift-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
مرحله 2. تصویر داکر را بسازید
فایل JAR برنامه را می توان با دستور بسته mvn ساخت و سپس از mvn goal task k8s:build می توان برای ساخت یک تصویر داکر از برنامه استفاده کرد. توجه داشته باشید که نام تصویر پیش فرض را با این ویژگی لغو کرده ایم:
<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 آپلود کنید
پس از اینکه تصویر داکر را با رجیستری پوش پیکربندی کردیم (در مورد ما 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 را برای برنامه ایجاد کنید
بنابراین، ما تصویر برنامه را جمع آوری کرده ایم، اکنون باید مانیفست های Kubernetes را بنویسیم. برای انجام این کار، Eclipse JKube وظیفه ای دارد که مانیفست های منبع سفت و سخت را بر اساس چارچوب زیرین جاوا تولید می کند.
در مثال ما، همه چیز را همانطور که هست رها میکنیم، و بنابراین 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 مستقر کنید
اکنون همه آماده هستیم تا برنامه را اجرا کنیم: تصویر آن را تولید کرده ایم و سپس مانیفست های منبع را به طور خودکار تولید کرده ایم. اکنون تنها چیزی که باقی می ماند اعمال همه اینها در خوشه Kubernetes است. برای استقرار برنامه، البته می توانید از دستور kubectl application -f استفاده کنید، اما افزونه می تواند این کار را برای ما انجام دهد. این چیزی است که بعد از اینکه از Eclipse JKube بخواهیم mvn k8s:apply application task را اجرا کند، روی صفحه ظاهر می شود:
~/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 استفاده می شود که به سادگی تمام منابعی را که در مرحله قبل اعمال شده بود حذف می کند، یعنی زمانی که وظیفه application اجرا می شود. این همان چیزی است که بعد از اینکه از 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 انجام دهید
بنابراین، ما به وظایف اصلی Eclipse JKube و Kubernetes Maven Plugin نگاه کردیم که توسعه برنامههای جاوا را برای پلتفرم Kubernetes تسهیل میکنند. اگر نمی خواهید دائماً این وظایف را از صفحه کلید وارد کنید، می توانید آنها را در پیکربندی افزونه بنویسید، به عنوان مثال، به این صورت:
<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 اشکال زدایی کنید.
نصب
ایجاد یک فورک برای وظیفه Install و اعمال مانیفست های تولید شده در خوشه Kubernetes به همان روشی که در مورد تسک اعمال می شود.
بسته
استقرار خودکار یک برنامه با ردیابی فضای نام آن.
استقرار برنامه های جاوا در Red Hat OpenShift با استفاده از پلاگین OpenShift Maven
برای استقرار برنامه از مثال ما در پلتفرم 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 : $
درس تصویری
برای کسب اطلاعات بیشتر در مورد چگونگی آسانتر کردن توسعه Kubernetes با Eclipse JKube، این آموزش ویدیویی را در مورد نحوه استقرار سریع یک برنامه ساده Spring Boot در Minikube تماشا کنید:
نتیجه
در این مقاله، ما نشان دادیم که چگونه Eclipse JKube زندگی یک توسعهدهنده جاوا را هنگام کار با Kubernetes آسانتر میکند. اطلاعات بیشتر در مورد Eclipse JKube را میتوانید در اینجا پیدا کنید
منبع: www.habr.com