د Eclipse JKube په کارولو سره د کبرنیټس لپاره د جاوا غوښتنلیکونو رامینځته کول

25 کاله دمخه ، جاوا د برنامو اصلي جریان ته ننوتل او په نهایت کې یو له اصلي عناصرو څخه شو چې شاوخوا یې د غوښتنلیک سټیکونه جوړ شوي. په هرصورت، نن ورځ ډیری خلک او سازمانونه چې د ډیرو کلونو لپاره جاوا ته وفادار دي په مهاجرت بوخت دي یا پلیټ فارم ته د مهاجرت په اړه فکر کوي. کوبنیټس یا د هغې مشتقات لکه د Red Hat OpenShift او یا ایمیزون EKS.

د Eclipse JKube په کارولو سره د کبرنیټس لپاره د جاوا غوښتنلیکونو رامینځته کول

له بده مرغه، کوبرنیټس د زده کړې سخت وکر لري او د پراختیا پروسې ته یو بل عملیاتي پرت معرفي کوي چې د جاوا پروګرام کونکي ورسره عادی دي. نن موږ به تاسو ته ووایو چې څنګه کارول کیږي Eclipse JKube، د دې اضافي عملیاتو ساده کولو لپاره چې د کوبرنیټس او کانټینرونو سره تړاو لري ، او د کلاوډ پلیټ فارم ته د بې درده مهاجرت ډاډ ترلاسه کول پداسې حال کې چې پیژندل شوي جاوا ایکوسیستم ساتل. سربیره پردې ، موږ به وښیو چې څنګه د OpenShift Maven پلگ ان په کارولو سره د OpenShift پلیټ فارم کې جاوا غوښتنلیکونه ځای په ځای کړئ.

د دودیز جاوا پراختیا پروسه

دودیز پرمختګ بهیر جاوا (شکل 1) کې د پراختیا کونکي لیکلو کوډ شامل دي، بیا د JAR یا WAR فایلونو په بڼه د ځای پرځای کولو واحدونه رامینځته کول، او بیا په ویب یا غوښتنلیک سرور کې دا فایلونه ځای پرځای کول او چلول شامل دي. د دې کولو اصلي لاره دا ده چې د کمانډ لاین څخه ماون وکاروئ یا د غوښتنلیکونو کوډ کولو او بسته کولو لپاره د IntelliJ یا Eclipse په څیر IDE وکاروئ. پراختیا کونکي د کوډ بدلولو لپاره کارول کیږي او د کوډ کولو او د نسخې کنټرول ته د سپارلو دمخه هرڅه په ښه توګه معاینه کوي.

د Eclipse JKube په کارولو سره د کبرنیټس لپاره د جاوا غوښتنلیکونو رامینځته کول

وريجې. 1. د دودیز جاوا پراختیا پروسه.

د کلاوډ لپاره د جاوا پراختیا پروسه

کله چې کلاوډ غوښتنلیکونو ته لاړشئ ، Kubernetes او کانتینرونه. له همدې امله ، اوس پراختیا کونکي اړتیا لري د جاوا غوښتنلیکونه بسته کړي د کانتینر انځورونه او Kubernetes manifests جوړ کړئ چې دا انځورونه بیانوي. دا څرګندونه بیا د تولید سرور کې پلي کیږي چې کوبرنیټس چلوي. په بدل کې ، کوبرنیټس دا عکسونه له راجسټري څخه اخلي او غوښتنلیکونه د هغه تشکیلاتو مطابق ځای په ځای کوي چې موږ یې په منشور کې لیکلي دي ، کوم چې معمولا د YAML فایلونه دي.

بادل ته په لیږد کې د دودیز جاوا پراختیا پروسې میټامورفوسس په انځور کې ښودل شوی. 2.

د Eclipse JKube په کارولو سره د کبرنیټس لپاره د جاوا غوښتنلیکونو رامینځته کول

وريجې. 2. د بادل لپاره د جاوا پراختیا پروسه.

Eclipse JKube

Kubernetes ته مهاجرت د پراختیا پروسې ته بل عملیاتي پرت اضافه کوي، او ډیری پراختیا کونکي د دې په اړه اندیښمن دي ځکه چې دوی غواړي د دوی د ځای پرځای کولو پر ځای د دوی اصلي کار - د غوښتنلیک منطق باندې تمرکز وکړي. او دا هغه ځای دی چې دا لوبې ته راځي. Eclipse JKube، کوم چې پراختیا کونکو ته اجازه ورکوي چې خپل کتابتونونه او پلگ ان وکاروي (JKube کټ سره یوځای Kubernetes Maven پلگ ان او یا د OpenShift Maven پلگ ان) په شکل کې د ډیاګرام تعقیبولو سره په اسانۍ سره د کانټینر او کبرنیټس پورې اړوند عملیات ترسره کول. 2.

د دې مقالې په پاتې برخه کې ، موږ به تاسو ته وښیو چې څنګه د کوبرنیټس ماون پلگ ان سره د Eclipse JKube په کارولو سره د کوبرنیټس چاپیریال کې د جاوا پراختیا پروسه ساده کړئ.

د Eclipse JKube په کارولو سره د کلاوډ پراختیا پروسه

راځئ چې د انځور 2 څخه د کلاوډ لپاره د جاوا پراختیا یو څه بدل شوی سکیم په پام کې ونیسو، په دې کې د Eclipse JKube او Kubernetes Maven Plugin معرفي کول، لکه څنګه چې په انځور کې ښودل شوي. 3.

د Eclipse JKube په کارولو سره د کبرنیټس لپاره د جاوا غوښتنلیکونو رامینځته کول

وريجې. 3. د Eclipse JKube په کارولو سره د بادل لپاره د جاوا پراختیا پروسه.

لکه څنګه چې موږ لیدلی شو، دلته د Kubernetes او کانټینرونو سره د تعامل لپاره ټول عملیات (په ډیاګرام کې په سور کې روښانه شوي) د ډیفالټ Eclipse JKube هدف دندو لخوا بدل شوي، کوم چې په جدول کې لیست شوي. 1.

میز 1. Eclipse JKube ډیفالټ دندې.

موخه
مرحله
شرح

k8s: جوړول
PRE_INTEGRATION_TEST
د ډاکر عکسونو جوړول

k8s: push
لګول
راجسټری ته د ډاکر عکسونه اپلوډ کول

k8s: سرچینه
PROCESS_RESOURCES
د K8s څرګندونه تولیدوي

k8s: درخواست وکړئ
COMPILE
په K8s کې د تولید شوي مینیفیسټونو پلي کول

k8s: بې کاره کول
بې کاره
د K8s سرچینې لرې کول چې د k8s:apply او k8s: deploy په کارولو سره ګمارل شوي

نوټ: که تاسو نه غواړئ دندې د دې نظر شوي ډیفالټ کارولو لپاره کاروئ ، تاسو کولی شئ په لاسي ډول د ځان لپاره Eclipse JKube تنظیم کړئ ، ځکه چې دا د دې له لارې د ترتیب ملاتړ کوي ایکس ایم ایل и سرچینې.

اوس راځئ چې د غوښتنلیکونو سره کار کولو پرمهال د Eclipse JKube او Kubernetes Maven Plugin کارولو مثالونو ته وګورو.

د Eclipse JKube په کارولو سره په کبرنیټس کې د جاوا غوښتنلیک ځای په ځای کول

پدې مثال کې به موږ په کلستر کې د ساده جاوا غوښتنلیک ځای په ځای کړو مینیکیوب د Eclipse JKube کارول. د Kubernetes Maven پلگ ان په کارولو سره، موږ کولی شو د ګمارنې پیرامیټونه تنظیم کړو پرته له دې چې کوم ترتیب لیکلو ته اړتیا ولرو.

د مثال په توګه موږ کاروو ساده تصادفي شمیره جنریټر، کوم چې په / تصادفي پای کې د JSON محصول تولیدوي:

~/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 په ذخیره کې دی د ماون مرکزي ذخیره. د Eclipse JKube کارولو لپاره تاسو اړتیا لرئ د Kubernetes Maven پلگ ان په خپل pom.xml کې د انحصار په توګه اضافه کړئ:

<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 هدف کاري 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.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 : $ 

د عکس لیږلو وروسته ، تاسو اړتیا لرئ چیک کړئ چې دا په راجسټری کې شامل دی. زموږ په قضیه کې، موږ دا په ساده ډول په ډاکر هب کې ګورو، لکه څنګه چې په انځور کې ښودل شوي. 4.

د Eclipse JKube په کارولو سره د کبرنیټس لپاره د جاوا غوښتنلیکونو رامینځته کول

وريجې. 4. راجسټری ته لیږل شوی عکس په ډاکر هب کې څرګند شو.

4 ګام. د غوښتنلیک لپاره د Kubernetes سرچینې څرګندونه تولید کړئ

نو، موږ د اپلیکیشن عکس راټول کړ، اوس موږ اړتیا لرو چې د کبرنیټس څرګندونه ولیکئ. د دې کولو لپاره، Eclipse JKube یوه دنده لري چې د جاوا د بنسټیز چوکاټ پراساس د سختو سرچینو څرګندونه رامینځته کوي (د پسرلي بوټ, کوارکوس، Vert.x یا ځینې نور). تاسو کولی شئ د XML ترتیب کولو فایل په کارولو سره او د اپلیکیشن فولډر src/main/jkube کې خام ټوټې (د اړتیا وړ سرچینې مینیفیسټ ټوټې) په ځای کولو سره منشور تنظیم کړئ. په دې حالت کې، ستاسو ترتیب به تولید شوي منشور ته پورته شي.

زموږ په مثال کې ، موږ هرڅه لکه څنګه چې دي پریږدو ، او له همدې امله Eclipse JKube د ډیفالټ ځای په ځای کولو او د کلسټر IP ډول سره د خدمت لپاره څرګندونه رامینځته کوي. او یوازې بیا موږ د خدمت ډول بدلولو لپاره د خدمت منشور بدلوو نوډ پورټ ته. تاسو کولی شئ د لاندې ملکیت په کارولو سره ډیفالټ چلند بیرته راوباسئ:

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

دا هغه څه دي چې د سکرین محصول وروسته له هغه ښکاري چې موږ له Eclipse JKube څخه وغوښتل چې د mvn k8s: 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 ګام. غوښتنلیک د کوبرنیټس کلستر ته ځای په ځای کړئ

اوس موږ ټول د غوښتنلیک ځای په ځای کولو لپاره چمتو یو: موږ د هغې عکس رامینځته کړی او بیا په اتوماتيک ډول د سرچینې څرګندونه رامینځته شوې. اوس ټول هغه څه پاتې دي چې دا ټول د کبرنیټس کلستر کې پلي کول دي. د غوښتنلیک د ځای پرځای کولو لپاره، تاسو کولی شئ، البته، د kubectl apply -f کمانډ وکاروئ، مګر پلگ ان زموږ لپاره دا کار کولی شي. دا هغه څه دي چې وروسته له هغه به په سکرین کې څرګند شي چې موږ له Eclipse JKube څخه غوښتنه کوو چې mvn k8s اجرا کړي: د پلي کولو دنده:

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

شپږم ګام. د کوبرنیټس کلستر څخه غوښتنلیکونه بې ځایه کړئ

د دې کولو لپاره ، د بې کاره کولو دنده کارول کیږي ، کوم چې په ساده ډول ټولې سرچینې لرې کوي چې په تیر مرحله کې پلي شوي ، دا دی ، کله چې د پلي کولو دنده اجرا کیږي. دا هغه څه دي چې موږ به یې په سکرین کې وګورو وروسته له دې چې موږ له Eclipse JKube څخه وغوښتل چې د mvn k8s ترسره کړي: undeploy undeploy task:

~/work/repos/eclipse-jkube-demo-project : $ kubectl get all
NAME                                    READY   STATUS    RESTARTS   AGE
pod/random-generator-58b7847d7f-9m9df   1/1     Running   0          5m21s

NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
service/kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP          18d
service/random-generator   NodePort    10.97.172.147   <none>        8080:32186/TCP   5m21s

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/random-generator   1/1     1            1           5m21s

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/random-generator-58b7847d7f   1         1         1       5m21s
~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:undeploy
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:undeploy (default-cli) @ random-generator ---
[INFO] k8s: Using Kubernetes at https://192.168.39.145:8443/ in namespace default with manifest /home/rohaan/work/repos/eclipse-jkube-demo-project/target/classes/META-INF/jkube/kubernetes.yml 
[INFO] k8s: Using namespace: default
[INFO] k8s: Deleting resource Deployment default/random-generator
[INFO] k8s: Deleting resource Service default/random-generator
[INFO] k8s: HINT: Use the command `kubectl get pods -w` to watch your pods start up
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.412 s
[INFO] Finished at: 2020-08-10T11:46:22+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $ kubectl get pods -w
^C~/work/repos/eclipse-jkube-demo-project : $ kubectl get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   18d
~/work/repos/eclipse-jkube-demo-project : $

تاسو د Eclipse JKube سره نور څه کولی شئ

نو، موږ د 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 هدف دندې.

موخه
مرحله
شرح

k8s:log
تایید کړئ
په کوبرنیټس کې روان غوښتنلیک څخه د لاګونو ترلاسه کول.

k8s: debug
بنډل
د ډیبګ پورټ پرانیزئ نو تاسو کولی شئ خپل غوښتنلیک په مستقیم ډول د IDE څخه په Kubernetes کې ډیبګ کړئ.

k8s: ځای پرځای کول
لګول
د نصب کار لپاره د فورک رامینځته کول او د کوبرنیټس کلستر ته د تولید شوي مینی فیسټونو پلي کول په ورته ډول د پلي شوي دندې په قضیه کې.

k8s:څار
بنډل
د خپل نوم ځای تعقیبولو سره د غوښتنلیک اتوماتیک ګرم ځای په ځای کول.

د OpenShift Maven پلگ ان په کارولو سره په Red Hat OpenShift کې د جاوا غوښتنلیکونه ځای پرځای کول

د Red Hat OpenShift پلیټ فارم کې زموږ د مثال څخه د غوښتنلیک ځای پرځای کولو لپاره، موږ پلگ ان کاروو OpenShift Maven. یوازینی توپیر به دا وي چې د کاري سابقه به له k8s څخه oc ته بدل شي. د ډیفالټ په واسطه د کوبرنیټس ماون پلگ ان کوي ډاکر- مجلسونه، او د OpenShift Maven پلگ ان - مجلسونه S2I. موږ په خپله پروژه کې هیڅ بدلون نه کوو، پرته له دې چې د jkube.generator.name ملکیت له مینځه یوسو، ځکه چې دا اړینه نه ده کله چې راجستر ته فشار ورکړئ (د جوړیدو مرحلې په جریان کې، 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 پراختیا اسانه کولو څرنګوالي په اړه د نورو معلوماتو لپاره ، دا ویډیو ټیوټوریل وګورئ چې څنګه په مینیکیوب کې د پسرلي بوټ ساده غوښتنلیک ګړندي ځای په ځای کړئ:

پایلې

پدې مقاله کې ، موږ وښودل چې څنګه Eclipse JKube د جاوا پراختیا کونکي لپاره ژوند اسانه کوي کله چې د کبرنیټس سره کار کوي. د Eclipse JKube په اړه نور معلومات دلته موندلی شئ د پروژې ویب پاڼه او په GitHub.

سرچینه: www.habr.com

Add a comment