Eclipse JKubeን በመጠቀም ለ Kubernetes የጃቫ መተግበሪያዎችን ማዳበር

ከ 25 ዓመታት በፊት ጃቫ ወደ ፕሮግራሚንግ ብዙኃን ገብታ በመጨረሻ የአፕሊኬሽን ቁልል ከሚገነቡባቸው ምሰሶዎች አንዱ ለመሆን ነበር። ዛሬ ግን ለብዙ አመታት ለጃቫ ታማኝ የሆኑ ብዙ ሰዎች እና ድርጅቶች ወደ ጃቫ መድረክ ለመንቀሳቀስ ወይም ለመንቀሳቀስ በማሰብ ተጠምደዋል። ኩባንያቶች ወይም እንደ የእሱ ተዋጽኦዎች Red Hat OpenShift ወይም Amazon EX.

Eclipse JKubeን በመጠቀም ለ Kubernetes የጃቫ መተግበሪያዎችን ማዳበር

ወዮ፣ ኩበርኔትስ ቁልቁል የመማሪያ ጥምዝ አለው እና ሌላ ኦፕሬሽናል ንብርብር በጃቫ ፕሮግራመሮች ዘንድ የሚያውቀውን በጃቫ ልማት ሂደት ውስጥ አስተዋውቋል። ዛሬ እንዴት እንደሚጠቀሙ እናሳይዎታለን Eclipse JKubeእነዚህን ከኩበርኔትስ እና ኮንቴይነሮች ጋር የተያያዙ ተጨማሪ ስራዎችን ለማቃለል እንዲሁም የተለመደውን የጃቫን ስነ-ምህዳር በመጠበቅ ላይ ያለ ህመም ወደ ደመና ፍልሰት ማቅረብ። በተጨማሪም የጃቫ አፕሊኬሽኖችን በ OpenShift መድረክ ላይ የ OpenShift Maven ፕለጊን በመጠቀም እንዴት እንደሚሰማሩ እናሳያለን።

ባህላዊ የጃቫ ልማት ሂደት

ባህላዊ ልማት ሂደት ጃቫ (ስእል 1) የሚያመለክተው አንድ ገንቢ ኮድ ይጽፋል፣ከዚያም የማሰማሪያ ክፍሎችን እንደ JAR ወይም WAR ፋይሎች ይፈጥራል፣እና እነዚያን ፋይሎች በድር ወይም አፕሊኬሽን አገልጋይ ላይ ያሰማራ እና ያስኬዳል። ይህ በአብዛኛው የሚከናወነው ከትዕዛዝ መስመሩ Mavenን በመጠቀም ወይም እንደ IntelliJ ወይም Eclipse ያሉ IDE በመጠቀም ኮድ እና አፕሊኬሽኖችን ለማሸግ ነው። ገንቢዎች ኮዱን ከመስጠታቸው እና ወደ ምንጭ ቁጥጥር ከማስገባታቸው በፊት በኮዱ ላይ ለውጦችን ማድረግ እና ሁሉንም ነገር በደንብ መሞከርን ለምደዋል።

Eclipse JKubeን በመጠቀም ለ Kubernetes የጃቫ መተግበሪያዎችን ማዳበር

ሩዝ. 1. ባህላዊ የጃቫ ልማት ሂደት.

ለደመናው የጃቫ ልማት ሂደት

ወደ የደመና መተግበሪያዎች ሽግግር, Kubernetes እና መያዣዎች. ስለዚህ፣ አሁን ገንቢው የጃቫ መተግበሪያዎችን ማሸግ አለበት። የመያዣ ምስሎች እና እነዚህን ምስሎች የሚገልጹ የ Kubernetes መግለጫዎችን ይፍጠሩ. እነዚህ መግለጫዎች Kubernetes በሚያሄደው የምርት አገልጋይ ላይ ይተገበራሉ። በምላሹ ኩበርኔትስ እነዚህን ምስሎች ከመዝገቡ ውስጥ ወስዶ አፕሊኬሽኖቹን በማንፌስትሮች ውስጥ በጻፍናቸው አወቃቀሮች መሰረት ያሰማራቸዋል እነዚህም አብዛኛውን ጊዜ YAML ፋይሎች ናቸው።

ወደ ደመና በሚሸጋገርበት ጊዜ የባህላዊው የጃቫ ልማት ሂደት ሜታሞሮሲስ በምስል ላይ ይታያል። 2.

Eclipse JKubeን በመጠቀም ለ Kubernetes የጃቫ መተግበሪያዎችን ማዳበር

ሩዝ. 2. ለደመናው የጃቫ ልማት ሂደት.

Eclipse JKube

ወደ ኩበርኔትስ የሚደረገው ሽግግር በእድገት ሂደት ውስጥ ሌላ የአሠራር ሽፋን ይጨምራል, እና ብዙ ገንቢዎች በዚህ ያልተደናገጡ ናቸው, ምክንያቱም በዋና ሥራቸው ላይ - የመተግበሪያ አመክንዮ - እና እነሱን እንዴት ማሰማራት ላይ ማተኮር አይፈልጉም. እና እዚህ ወደ ጨዋታ ይመጣል Eclipse JKube, ይህም ገንቢዎች ቤተ-መጽሐፍቶቻቸውን እና ተሰኪዎቻቸውን እንዲጠቀሙ ያስችላቸዋል (JKube ኪት አንድ ላይ የኩበርኔትስ ማቨን ፕለጊን። ወይም OpenShift Maven ፕለጊን።) ከኮንቴይነሮች እና ከኩበርኔትስ ጋር የተያያዙ ስራዎችን ያለምንም ጥረት ለማከናወን, በስእል ውስጥ ያለውን እቅድ በመከተል. 2.

በቀሪው በዚህ ጽሑፍ ውስጥ Eclipse JKube ን ከ Kubernetes Maven Plugin ጋር በመጠቀም በኩበርኔትስ አካባቢ የጃቫን ልማት ሂደት እንዴት እንደሚያቃልሉ እናሳይዎታለን።

Eclipse JKube ን በመጠቀም ለደመናው የእድገት ሂደት

በስእል 2 ላይ እንደሚታየው Eclipse JKube እና Kubernetes Maven Pluginን ወደ ውስጥ በማስገባት በትንሹ የተሻሻለ የደመና ጃቫ ልማት ፍሰት ከስእል 3 እናስብ። XNUMX.

Eclipse JKubeን በመጠቀም ለ Kubernetes የጃቫ መተግበሪያዎችን ማዳበር

ሩዝ. 3. Eclipse JKubeን በመጠቀም ለደመናው የጃቫ ልማት ሂደት።

እንደምናየው ፣ እዚህ ከኩበርኔትስ እና ኮንቴይነሮች ጋር ለመግባባት ሁሉም ክዋኔዎች (በስዕሉ ላይ በቀይ የተገለጹ) በነባሪ Eclipse JKube ግቦች ተተክተዋል ፣ ይህም በሰንጠረዥ ውስጥ ተዘርዝሯል። 1.

ትር. 1. Eclipse JKube ነባሪ ተግባራት.

ዓላማ
ደረጃ
መግለጫ

k8s: መገንባት
PRE_INTEGRATION_TEST
የዶክተር ምስሎችን መገንባት

k8s: ግፋ
ጫን
Docker ምስሎችን ወደ መዝገብ ቤት በመግፋት ላይ

k8s: ሀብት
PROCESS_RESOURCES
የK8s መገለጫዎችን በማመንጨት ላይ

k8s: ማመልከት
ሰብስብ
የመነጩ መግለጫዎችን ወደ K8s መተግበር

k8s: ያልተሰማራ
አሰናብት
በk8s:apply እና k8s:deploy ላይ የተሰማሩ የK8s መርጃዎችን በመሰረዝ ላይ

ማስታወሻ: ተግባሮች እነዚህን ከባድ ነባሪዎች (በአስተያየት ያላቸው ነባሪዎች) ለመጠቀም ካልፈለጉ Eclipse JKube ን እራስዎ ማዋቀር ይችላሉ ፣ ምክንያቱም ውቅረትን ይደግፋል። XML и ግብዓቶች.

አሁን ከመተግበሪያዎች ጋር ስንሰራ Eclipse JKube እና Kubernetes Maven Pluginን የመጠቀም ምሳሌዎችን እንመልከት።

የጃቫ መተግበሪያን በ Eclipse JKube ወደ Kubernetes ያሰማሩ

በዚህ ምሳሌ፣ ቀላል የጃቫ መተግበሪያን በክላስተር ላይ እናሰማራለን። ሚኒኩቤ Eclipse JKube በመጠቀም. የኩበርኔትስ ማቨን ፕለጊን በመጠቀም ምንም አይነት ውቅረት ሳይጻፍ የማሰማራት አማራጮችን ማዘጋጀት እንችላለን።

እንደ ምሳሌ መተግበሪያ, እንጠቀማለን ቀላል የዘፈቀደ ቁጥር ጄኔሬተርበ/ የዘፈቀደ የመጨረሻ ነጥብ ላይ የ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 የኩበርኔትስ ማቨን ተሰኪን ያውርዱ

የኩበርኔትስ ማቨን ፕለጊን በማከማቻው ውስጥ አለ። Maven ማዕከላዊ ማከማቻ. Eclipse JKubeን ለመጠቀም የኩበርኔትስ ማቨን ፕለጊን ወደ የእርስዎ 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ን በመጠቀም ለ Kubernetes የጃቫ መተግበሪያዎችን ማዳበር

ሩዝ. 4. ለመዝገቡ የቀረበው ምስል በDocker Hub ውስጥ ታየ።

ደረጃ 4፡ ለመተግበሪያው የኩበርኔትስ ሪሶርስ ማሳያዎችን ማመንጨት

ስለዚህ, የመተግበሪያውን ምስል ሰብስበናል, አሁን የኩበርኔትስ አንጸባራቂዎችን መጻፍ ያስፈልገናል. ይህንን ለማድረግ, Eclipse JKube ከስር የጃቫ ማዕቀፍ ላይ በመመስረት የሃርድ ሃብት መግለጫዎችን የሚያመነጭ ተግባር አለው (የፀደይ ቡት, ኩርኩስ፣ Vert.x ወይም ሌላ)። እንዲሁም የኤክስኤምኤል ማዋቀሪያ ፋይልን በመጠቀም እና ጥሬ ፍርስራሾችን (የሚፈለገውን የመረጃ ደብተር ቁርጥራጭ) በማመልከቻው src/main/jkube አቃፊ ውስጥ በማስቀመጥ አንጸባራቂውን ማበጀት ይቻላል። በዚህ አጋጣሚ የእርስዎ ውቅር ወደ ተፈጠሩት አንጸባራቂዎች ይሰቀላል።

በእኛ ምሳሌ ፣ ሁሉንም ነገር እንዳለ እንተወዋለን ፣ እና ስለዚህ Eclipse JKube ለነባሪ ማሰማራቱ እና ለ ClusterIP አይነት ላለው አገልግሎት መግለጫ ያወጣል። እና ከዚያ በኋላ ብቻ የአገልግሎቱን አይነት ወደ ኖድፖርት ለመቀየር የአገልግሎቱን መግለጫ እናስተካክላለን። ነባሪ ባህሪን በሚከተለው ንብረት መሻር ይችላሉ፡-

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

Eclipse JKube mvn k8s:resource resource ተግባርን እንዲያሄድ ከጠየቅን በኋላ የስክሪኑ ውፅዓት ይህን ይመስላል።

~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:resource
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:resource (default-cli) @ random-generator ---
[INFO] k8s: Running generator spring-boot
[INFO] k8s: spring-boot: Using Docker image quay.io/jkube/jkube-java-binary-s2i:0.0.7 as base / builder
[INFO] k8s: jkube-controller: Adding a default Deployment
[INFO] k8s: jkube-service: Adding a default service 'random-generator' with ports [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: Adding readiness probe on port 8080, path='/actuator/health', scheme='HTTP', with initial delay 10 seconds
[INFO] k8s: jkube-healthcheck-spring-boot: Adding liveness probe on port 8080, path='/actuator/health', scheme='HTTP', with initial delay 180 seconds
[INFO] k8s: jkube-revision-history: Adding revision history limit to 2
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.344 s
[INFO] Finished at: 2020-08-10T11:38:11+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $ ls target/classes/META-INF/jkube/kubernetes
random-generator-deployment.yml  random-generator-service.yml
~/work/repos/eclipse-jkube-demo-project : $ cat target/classes/META-INF/jkube/kubernetes/random-generator-deployment.yml | head -n10
---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    jkube.io/git-url: [email protected]:rohanKanojia/eclipse-jkube-demo-project.git
    jkube.io/git-commit: 1ef9ef2ef7a6fcbf8eb64c293f26f9c42d026512
    jkube.io/git-branch: master
    jkube.io/scm-url: https://github.com/spring-projects/spring-boot/spring-boot-starter-parent/random-generator
    jkube.io/scm-tag: HEAD
~/work/repos/eclipse-jkube-demo-project : $

ደረጃ 5፡ ማመልከቻውን ወደ ኩበርኔትስ ክላስተር ማሰማራት

ስለዚህ፣ ሁላችንም አፕሊኬሽኑን ለማሰማራት ተዘጋጅተናል፡ ምስሉን ፈጥረናል እና የመርጃ መግለጫዎችን በራስ ሰር አፈጠርን። አሁን ይህንን ሁሉ በ Kubernetes ክላስተር ላይ መተግበር ብቻ ይቀራል። አፕሊኬሽኑን ለማሰማራት፣ በእርግጥ የ kubectl apply -f ትዕዛዝን መጠቀም ትችላለህ፣ ነገር ግን ፕለጊኑ ይህን ሊሰራልን ይችላል። Eclipse JKube mvn k8s እንዲያስፈጽም ከጠየቅን በኋላ በስክሪኑ ላይ ምን እንደሚሆን እነሆ፡ ተግብር ተግባር፡

~/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 ዋና ግቦችን ተመልክተናል። እነዚህን ስራዎች ከቁልፍ ሰሌዳው ላይ በቋሚነት ማስገባት ካልፈለጉ በተሰኪው ውቅር ውስጥ ሊጽፏቸው ይችላሉ, ለምሳሌ, እንደዚህ:

<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: ሎግ
ማረጋገጥ
በ Kubernetes ላይ ከሚሰራ መተግበሪያ የምዝግብ ማስታወሻዎችን በማግኘት ላይ።

k8s: ማረም
PACKAGE
በ Kubernetes ላይ የሚሰራ መተግበሪያን በቀጥታ ከIDE ለማረም የማረሚያ ወደብ ይክፈቱ።

k8s: ማሰማራት
ጫን
የመጫን ተግባርን መንጠፍ እና የመነጨውን አንጸባራቂዎችን ወደ ኩበርኔትስ ክላስተር መተግበር በትክክል ከተተገበረው ተግባር ጋር ተመሳሳይ ነው።

k8s: ተመልከት
PACKAGE
የስም ቦታውን በመከታተል በራስ-ሰር ትኩስ መተግበሪያን ያሰማሩ።

የOpenShift Maven Pluginን በመጠቀም የጃቫ አፕሊኬሽኖችን በ Red Hat OpenShift ላይ ማሰማራት

መተግበሪያውን ከኛ ምሳሌ በ Red Hat OpenShift መድረክ ላይ ለማሰማራት, ተሰኪውን እንጠቀማለን OpenShift Maven. ብቸኛው ልዩነት የተግባር ቅድመ ቅጥያ ከ k8s ወደ oc ይቀየራል. በነባሪ የ Kubernetes Maven ፕለጊን ይሰራል ዳኪር-ስብሰባዎች እና OpenShift Maven Plugin -ስብሰባዎች 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 እንዴት ማቃለል እንደሚቻል የበለጠ ለማወቅ ቀላል የስፕሪንግ ቡት መተግበሪያን በሚኒኩቤ ላይ በፍጥነት ስለማሰማራት የቪዲዮ አጋዥ ስልጠናውን ይመልከቱ፡-

መደምደሚያ

በዚህ ጽሑፍ ውስጥ, Eclipse JKube ከ Kubernetes ጋር ሲሰራ ለጃቫ ገንቢ ህይወትን እንዴት ቀላል እንደሚያደርግ አሳይተናል. Eclipse JKube ላይ ተጨማሪ መረጃ በ ላይ ይገኛል። የፕሮጀክት ድር ጣቢያ እና በርቷል የፊልሙ.

ምንጭ: hab.com

አስተያየት ያክሉ