25 سال پہلے، جاوا پروگرامنگ کے مرکزی دھارے میں داخل ہوا اور آخر کار ان بنیادی عناصر میں سے ایک بن گیا جس کے ارد گرد ایپلیکیشن اسٹیک بنائے جاتے ہیں۔ تاہم، آج، بہت سے لوگ اور تنظیمیں جو کئی سالوں سے جاوا کے وفادار ہیں، ہجرت کرنے میں مصروف ہیں یا پلیٹ فارم پر ہجرت کرنے پر غور کر رہے ہیں۔
بدقسمتی سے، Kubernetes میں سیکھنے کا ایک بہت بڑا منحنی خطوط ہے اور اس نے ترقی کے عمل میں ایک اور آپریشنل پرت متعارف کرائی ہے جس کے جاوا پروگرامرز عادی ہیں۔ آج ہم آپ کو استعمال کرنے کا طریقہ بتائیں گے۔
روایتی جاوا کی ترقی کا عمل
روایتی ترقی کا عمل
چاول۔ 1. روایتی جاوا کی ترقی کا عمل۔
کلاؤڈ کے لیے جاوا کی ترقی کا عمل
جب کلاؤڈ ایپلی کیشنز میں منتقل ہوتے ہیں، Kubernetes اور
کلاؤڈ میں منتقلی میں روایتی جاوا کی نشوونما کے عمل کی میٹامورفوسس تصویر میں دکھایا گیا ہے۔ 2.
چاول۔ 2. کلاؤڈ کے لیے جاوا کی ترقی کا عمل۔
Eclipse JKube
Kubernetes میں ہجرت کرنے سے ترقی کے عمل میں ایک اور آپریشنل پرت شامل ہوتی ہے، اور بہت سے ڈویلپرز اس سے گھبراتے ہیں کیونکہ وہ اپنے بنیادی کام پر توجہ مرکوز کرنا چاہتے ہیں — ایپلی کیشن کی منطق — بجائے اس کے کہ انہیں کیسے تعینات کیا جائے۔ اور یہ وہ جگہ ہے جہاں یہ کھیل میں آتا ہے۔
اس مضمون کے بقیہ حصے میں، ہم آپ کو دکھائیں گے کہ کبرنیٹس ماون پلگ ان کے ساتھ Eclipse JKube کا استعمال کرکے کبرنیٹس ماحول میں جاوا کی ترقی کے عمل کو کس طرح آسان بنایا جائے۔
Eclipse JKube کا استعمال کرتے ہوئے کلاؤڈ ڈویلپمنٹ کا عمل
آئیے تصویر 2 سے کلاؤڈ کے لیے ایک قدرے تبدیل شدہ جاوا ڈویلپمنٹ اسکیم پر غور کریں، اس میں Eclipse JKube اور Kubernetes Maven Plugin کو متعارف کراتے ہیں، جیسا کہ تصویر 3 میں دکھایا گیا ہے۔ XNUMX.
چاول۔ 3. Eclipse JKube کا استعمال کرتے ہوئے کلاؤڈ کے لیے جاوا کی ترقی کا عمل۔
جیسا کہ ہم دیکھ سکتے ہیں، یہاں Kubernetes اور کنٹینرز کے ساتھ تعامل کے لیے تمام آپریشنز (ڈائیگرام میں سرخ رنگ میں نمایاں کیے گئے ہیں) کو ڈیفالٹ Eclipse JKube گول ٹاسک سے بدل دیا گیا ہے، جو ٹیبل میں درج ہیں۔ 1۔
ٹیبل 1. Eclipse JKube ڈیفالٹ ٹاسکس۔
ٹاسک
اسٹیج
تفصیل
PRE_INTEGRATION_TEST
ڈوکر کی تصاویر بنانا
انسٹال کریں
رجسٹری میں ڈاکر کی تصاویر اپ لوڈ کرنا
PROCESS_RESOURCES
K8s ظاہر کرنا
مرتب کریں۔
K8s پر تیار کردہ مینی فیسٹس کو لاگو کرنا
غیر تعینات
K8s کے وسائل کو ہٹانا جو k8s:apply اور k8s:deploy کا استعمال کرتے ہوئے تعینات کیے گئے تھے۔
نوٹ: اگر آپ نہیں چاہتے ہیں کہ کاموں میں ان رائے والے ڈیفالٹس کو استعمال کیا جائے، تو آپ اپنے لیے Eclipse JKube کو دستی طور پر کنفیگر کر سکتے ہیں، کیونکہ یہ کنفیگریشن کو سپورٹ کرتا ہے۔
اب ایپلی کیشنز کے ساتھ کام کرتے وقت Eclipse JKube اور Kubernetes Maven Plugin کے استعمال کی مثالیں دیکھتے ہیں۔
Eclipse JKube کا استعمال کرتے ہوئے Kubernetes پر جاوا ایپلیکیشن تعینات کرنا
اس مثال میں ہم ایک سادہ جاوا ایپلیکیشن کو کلسٹر پر تعینات کریں گے۔
مثال کے طور پر ہم استعمال کرتے ہیں۔
~/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>
اگر خالص Kubernetes کے بجائے OpenShift استعمال کیا جاتا ہے، تو 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 کمانڈ داخل کرتے ہیں، اور یہ وہی ہے جو ہم ایکلیپس 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 میں دکھایا گیا ہے۔ XNUMX.
چاول۔ 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 ریسورس ٹاسک انجام دینے کے لیے کہتے ہیں تو اسکرین آؤٹ پٹ ایسا ہی نظر آتا ہے۔
~/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:apply apply ٹاسک کو انجام دینے کے لیے کہیں گے۔
~/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۔ کبرنیٹس کلسٹر سے ایپلیکیشنز کو غیر تعینات کریں۔
ایسا کرنے کے لیے، 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 کے ساتھ اور کیا کر سکتے ہیں۔
لہذا، ہم نے 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>
یہ کہنا ضروری ہے کہ اس مضمون میں ہم نے ایکلیپس JKube اور Kubernetes Maven Plugin میں موجود تمام اہداف کے کاموں پر غور نہیں کیا ہے، اس لیے ہم ٹیبل 2 میں اضافی کاموں کی فہرست فراہم کرتے ہیں جو آپ کے لیے مفید بھی ہو سکتے ہیں۔
ٹیبل 2. اضافی Eclipse JKube گول ٹاسکس۔
ٹاسک
اسٹیج
تفصیل
تصدیق کریں۔
Kubernetes پر چلنے والی ایپلیکیشن سے لاگ وصول کرنا۔
پیکیج
ڈیبگ پورٹ کھولیں تاکہ آپ کوبرنیٹس پر چلنے والی اپنی ایپلیکیشن کو براہ راست IDE سے ڈیبگ کر سکیں۔
انسٹال کریں
انسٹال ٹاسک کے لیے ایک کانٹا بنانا اور تیار کردہ مینی فیسٹس کو اسی طرح سے Kubernetes کلسٹر پر لاگو کرنا جس طرح اپلائی ٹاسک کے معاملے میں ہوتا ہے۔
پیکیج
کسی ایپلیکیشن کے نام کی جگہ کو ٹریک کرکے اس کی خودکار گرم تعیناتی۔
OpenShift Maven پلگ ان کا استعمال کرتے ہوئے Red Hat OpenShift پر جاوا ایپلیکیشنز کی تعیناتی
ہماری مثال سے ایپلی کیشن کو 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 کے ساتھ کبرنیٹس کی ترقی کو آسان بنانے کے بارے میں مزید جاننے کے لیے، یہ ویڈیو ٹیوٹوریل دیکھیں کہ منی کیوب پر ایک سادہ اسپرنگ بوٹ ایپلیکیشن کو تیزی سے کیسے تعینات کیا جائے:
حاصل يہ ہوا
اس مضمون میں، ہم نے دکھایا کہ کس طرح Eclipse JKube جاوا ڈویلپر کے لیے کبرنیٹس کے ساتھ کام کرتے ہوئے زندگی کو آسان بناتا ہے۔ Eclipse JKube کے بارے میں مزید معلومات یہاں پر مل سکتی ہیں۔
ماخذ: www.habr.com