Eclipse JKube استعمال ڪندي ڪبرنيٽس لاءِ جاوا ايپليڪيشنون تيار ڪرڻ

25 سال اڳ، جاوا پروگرامنگ جي مکيه وهڪرو ۾ داخل ٿيو ۽ آخرڪار بنيادي عنصرن مان هڪ بڻجي ويو جنهن جي چوڌاري ايپليڪيشن اسٽيڪ ٺهيل آهن. اڄ، جيتوڻيڪ، ڪيترائي ماڻهو ۽ تنظيمون جيڪي ڪيترن ئي سالن تائين جاوا سان وفادار آهن لڏپلاڻ ۾ مصروف آهن يا پليٽ فارم ڏانهن لڏپلاڻ تي غور ڪري رهيا آهن. ڪوبنيٿس يا ان مان نڪتل شيون جهڙوڪ ڳاڙھو Hat OpenShift يا Amazon EKS.

Eclipse JKube استعمال ڪندي ڪبرنيٽس لاءِ جاوا ايپليڪيشنون تيار ڪرڻ

بدقسمتي سان، ڪبرنيٽس وٽ هڪ تيز سکيا وارو وکر آهي ۽ ترقي جي عمل ۾ هڪ ٻيو آپريشنل پرت متعارف ڪرايو آهي جنهن جا جاوا پروگرامر عادي آهن. اڄ اسان توهان کي ٻڌائينداسين ته ڪيئن استعمال ڪجي Eclipse JKube، ڪبرنيٽس ۽ ڪنٽينرز سان لاڳاپيل انهن اضافي عملن کي آسان ڪرڻ لاءِ، ۽ واقف جاوا ايڪو سسٽم کي برقرار رکندي ڪلائوڊ پليٽ فارم تي بي دردي واري لڏپلاڻ کي يقيني بڻائي. ان کان علاوه، اسان ڏيکارينداسين ته جاوا ايپليڪيشنون ڪيئن لڳايو وڃي OpenShift پليٽ فارم تي OpenShift Maven پلگ ان استعمال ڪندي.

روايتي جاوا ڊولپمينٽ پروسيس

روايتي ترقي جي عمل جاوا (Figure 1) ڊولپر لکڻ جو ڪوڊ شامل ڪري ٿو، پوءِ JAR يا WAR فائلن جي صورت ۾ ڊيپلائيمينٽ يونٽ ٺاهڻ، ۽ پوءِ انھن فائلن کي ويب يا ايپليڪيشن سرور تي ڊيپلائي ڪرڻ ۽ ھلائڻ. اهو ڪرڻ جو بنيادي طريقو آهي Maven کي ڪمانڊ لائين مان استعمال ڪرڻ يا ڪوڊ ۽ پيڪيج ڪرڻ لاءِ هڪ IDE جهڙوڪ IntelliJ يا Eclipse استعمال ڪرڻ آهي. ڊولپرز ڪوڊ تبديل ڪرڻ ۽ ڪوڊ کي ڪم ڪرڻ کان پهريان ۽ ان کي ورزن ڪنٽرول ۾ جمع ڪرڻ کان پهريان هر شي کي چڱي طرح جانچڻ لاءِ استعمال ڪيا ويندا آهن.

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 ۾ ڏيکاريل آهي. XNUMX.

Eclipse JKube استعمال ڪندي ڪبرنيٽس لاءِ جاوا ايپليڪيشنون تيار ڪرڻ

چانور. 3. Eclipse JKube استعمال ڪندي بادل لاءِ جاوا ڊولپمينٽ جو عمل.

جيئن اسان ڏسي سگهون ٿا، هتي ڪبرنيٽس ۽ ڪنٽينرز (ڊاگرام ۾ ڳاڙهي رنگ ۾ نمايان ٿيل) سان رابطي لاءِ سڀ عمل ڊفالٽ Eclipse JKube گول ٽاسڪ سان تبديل ڪيا ويا آهن، جيڪي ٽيبل ۾ درج ٿيل آهن. 1.

ٽيبل 1. Eclipse JKube ڊفالٽ ڪم.

مقصد
اسٽيج
بيان

k8s: تعمير
PRE_INTEGRATION_TEST
عمارت ڊاکر تصويرون

k8s: ڌڪ
انسٽال
رجسٽري ۾ ڊاکر تصويرون اپ لوڊ ڪندي

k8s: وسيلا
PROCESS_RESOURCES
K8s پيدا ڪري ٿو

k8s: لاڳو ڪريو
اجرڪ
K8s تي ٺاهيل منشور لاڳو ڪرڻ

k8s: undeploy
UNDEPLOY
K8s وسيلن کي هٽائڻ جيڪي k8s:apply ۽ k8s:deploy استعمال ڪندي لڳايا ويا هئا

نوٽ: جيڪڏھن توھان نٿا چاھيو تہ ڪم انھن راءِ رکندڙ ڊفالٽ کي استعمال ڪرڻ لاءِ، توھان دستي طور تي Eclipse JKube کي پنھنجي لاءِ ترتيب ڏئي سگھو ٿا، ڇو ته اھو ان ذريعي ترتيب ڏيڻ جي سپورٽ ڪري ٿو. كل и وسيلا.

ھاڻي اچو ته مثالن تي نظر رکون استعمال ڪرڻ جا Eclipse JKube ۽ Kubernetes Maven Plugin جڏهن ايپليڪيشنن سان ڪم ڪندي.

Eclipse JKube استعمال ڪندي ڪبرنيٽس تي جاوا ايپليڪيشن کي ترتيب ڏيڻ

هن مثال ۾ اسان هڪ سادي جاوا ايپليڪيشن کي ڪلستر تي ترتيب ڏينداسين منيڪيوب Eclipse JKube استعمال ڪندي. Kubernetes Maven پلگ ان کي استعمال ڪندي، اسان بغير ڪنهن ترتيب جي ترتيب ڏيڻ جي مقرري جا پيرا ميٽر مقرر ڪري سگھون ٿا.

مثال طور ايپليڪيشن اسان استعمال ڪندا آهيون سادي بي ترتيب نمبر جنريٽر، جيڪو JSON پيداوار پيدا ڪري ٿو / random endpoint تي:

~/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 پلگ ان مخزن ۾ آهي Maven مرڪزي مخزن. Eclipse JKube استعمال ڪرڻ لاءِ توھان کي ڪبرنيٽس 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 task:

~/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.

Eclipse JKube استعمال ڪندي ڪبرنيٽس لاءِ جاوا ايپليڪيشنون تيار ڪرڻ

چانور. 4. رجسٽري ڏانهن موڪليل تصوير Docker Hub ۾ ظاهر ٿي.

قدم 4. ايپليڪيشن لاءِ Kubernetes وسيلا ظاهر ڪريو

تنهن ڪري، اسان گڏ ڪيو آهي ايپليڪيشن تصوير، هاڻي اسان کي لکڻ جي ضرورت آهي Kubernetes manifests. ائين ڪرڻ لاءِ، Eclipse JKube وٽ ھڪڙو ڪم آھي جيڪو بنيادي جاوا فريم ورڪ جي بنياد تي سخت وسيلا ظاهر ڪري ٿو (اسپرنگ بوٽ, ڪرڪشس، Vert.x يا ڪجهه ٻيو). توهان هڪ XML ترتيب واري فائيل استعمال ڪندي ۽ خام ٽڪرا (گهربل وسيلن جي منشور جا ٽڪرا) کي ايپليڪيشن فولڊر src/main/jkube ۾ رکڻ سان پڻ منشور کي ترتيب ڏئي سگھو ٿا. انهي صورت ۾، توهان جي ٺاھ جوڙ ٺاهيل منشور تي اپ لوڊ ڪيو ويندو.

اسان جي مثال ۾، اسان سڀڪنھن شيء کي ڇڏي ڏيون ٿا، ۽ تنھنڪري Eclipse JKube ڊفالٽ ترتيب ڏيڻ ۽ ClusterIP ٽائپ سان خدمت لاءِ منشور ٺاھي ٿو. ۽ صرف پوءِ اسان خدمت جي قسم کي تبديل ڪرڻ لاءِ خدمت جي منشور کي تبديل ڪريون ٿا NodePort. توھان ھيٺ ڏنل ملڪيت استعمال ڪندي ڊفالٽ رويي کي ختم ڪري سگھو ٿا:

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

اھو اھو آھي جيڪو اسڪرين جي ٻاھرين وانگر ڏسڻ ۾ اچي ٿو جڏھن اسان Eclipse JKube کان پڇو mvn k8s:resource resource task.

~/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 apply 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. ڪبرنيٽس ڪلستر مان ايپليڪيشنن کي ختم ڪريو

هن کي ڪرڻ لاء، غير ترتيب ڏيڻ وارو ڪم استعمال ڪيو ويندو آهي، جيڪو صرف سڀني وسيلن کي هٽائي ٿو جيڪو پوئين قدم ۾ لاڳو ڪيو ويو آهي، اهو آهي، جڏهن لاڳو ٿيل ڪم تي عمل ڪيو ويندو آهي. اھو اھو آھي جيڪو اسان اسڪرين تي ڏسندا سين پوءِ اسان 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>
     <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: لاگ
تصديق ڪريو
ڪبرنيٽس تي هلندڙ ايپليڪيشن مان لاگ وصول ڪرڻ.

k8s: ڊيبگ
پئڪيج
ڊيبگ پورٽ کوليو ته جيئن توهان پنهنجي ايپليڪيشن کي ڊيبگ ڪري سگهو ٿا Kubernetes تي هلندڙ سڌو IDE مان.

k8s: deploy
انسٽال
انسٽاليشن ٽاسڪ لاءِ ڪانٽو ٺاهڻ ۽ ٺاهيل منشور کي ڪبرنيٽس ڪلستر تي لاڳو ڪرڻ ساڳي طرح لاڳو ٿيل ٽاسڪ جي صورت ۾.

k8s: واچ
پئڪيج
هڪ ايپليڪيشن جي خودڪار طور تي ان جي نالي جي جڳهه کي ٽريڪ ڪندي گرم لڳائڻ.

OpenShift Maven پلگ ان استعمال ڪندي Red Hat OpenShift تي جاوا ايپليڪيشنن کي ترتيب ڏيڻ

اسان جي مثال مان ايپليڪيشن کي ترتيب ڏيڻ لاءِ Red Hat OpenShift پليٽ فارم تي، اسان استعمال ڪريون ٿا پلگ ان OpenShift Maven. فرق صرف اهو ٿيندو ته ڪم جو اڳوڻو k8s کان oc ۾ تبديل ٿي ويندو. ڊفالٽ طور Kubernetes Maven پلگ ان ڪندو آهي گھڻي-اسمبليز، ۽ 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 سان ڪبرنيٽس ڊولپمينٽ کي آسان ڪيئن بڻائڻ جي باري ۾ وڌيڪ سکڻ لاءِ، هي وڊيو ٽيوٽوريل ڏسو ته ڪيئن تيزيءَ سان هڪ سادي اسپرنگ بوٽ ايپليڪيشن کي Minikube تي لڳايو وڃي:

ٿڪل

هن آرٽيڪل ۾، اسان ڏيکاريو ته ڪيئن Eclipse JKube جاوا ڊولپر لاءِ زندگي آسان بڻائي ٿي جڏهن ڪبرنيٽس سان ڪم ڪري رهيو آهي. Eclipse JKube تي وڌيڪ معلومات ملي سگهي ٿي منصوبي جي ويب سائيٽ ۽ تي GitHub.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو