ááœááºáá²á·áá±á¬ 25 ááŸá
áºá Java ááẠáááá¯ááááºážáááºážá áááºááá±á
á®ážááŒá±á¬ááºážááá¯á· áááºáá±á¬ááºáá²á·ááŒá®áž áá±á¬ááºáá¯á¶ážááœáẠá¡ááá®áá±ážááŸááºáž stacks áá»á¬ážáááºáá±á¬ááºááá·áº core element áá
áºáá¯ááŒá
áºáá¬áá²á·áááºá ááá¯á·áá±á¬áº ááá±á·ááœááºá Java ááᯠááŸá
áºáá±á«ááºážáá»á¬ážá
áœá¬ áá
á¹á
á¬á
á±á¬áá·áºáááá±á¬ áá°áá»á¬ážááŸáá·áº á¡ááœá²á·á¡á
ááºážá¡áá»á¬ážá¡ááŒá¬ážááẠááœáŸá±á·ááŒá±á¬ááºážááŒááºáž ááá¯á·ááá¯áẠááááºáá±á¬ááºážááá¯á· ááŒá±á¬ááºážááœáŸá±á·ááẠá
ááºážá
á¬ážáá±ááŒááẠá
áá¶ááá±á¬ááºážá
áœá¬ááŒáá·áºá Kubernetes ááœáẠáááºáá²áá±á¬ áááºáá°ááŸá¯áá»ááºážáá
áºáá¯ááŸáááŒá®áž Java áááá¯ááááºáá¬áá»á¬áž áá»áá·áºáá¯á¶ážáá±á·ááŸááá±á¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá
ááºááœáẠá¡ááŒá¬ážáá±á¬ áá¯ááºáááºážáá±á¬ááºááœááºááŸá¯á¡ááœáŸá¬ááᯠááááºáááºáá±ážáááºá áá®áá±á·áá±á¬á· á¡áá¯á¶ážááŒá¯áá¯á¶ááᯠááŒá±á¬ááŒáá±ážáá«áááºá
ááá¬ážááá¯ážáá» Java ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá ááº
ááá¯ážáá¬ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±áž áá¯ááºáááºážá
ááº
ááááºážá 1. ááá¯ážáᬠJava ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá¯ááºáááºážá ááºá
Cloud á¡ááœáẠJava ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá¯ááºáááºážá ááº
cloud á¡ááá®áá±ážááŸááºážáá»á¬ážááá¯á· ááœáŸá±á·ááá·áºá¡áá« Kubernetes ááŸáá·áº
Cloud ááá¯á·áá°ážááŒá±á¬ááºážáá¬ááœáẠááá¯ážáᬠJava ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá ááºáá¡ááœááºááŒá±á¬ááºážááŸá¯ááᯠáá¯á¶ááœááºááŒááá¬ážáááºá áá
ááááºážá 2. cloud á¡ááœáẠJava ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá¯ááºáááºážá ááºá
áá±ááŒáẠJKube
Kubernetes ááá¯á· ááŒá±á¬ááºážááœáŸá±á·ááŒááºážááẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá¯ááºáááºážá
ááºááœáẠá¡ááŒá¬ážáá±á¬ áá¯ááºáááºážáá±á¬ááºááœááºááŸá¯ á¡ááœáŸá¬ááᯠáá±á«ááºážááá·áºáá¬ážááŒá®áž áá±á¬á·ááºáá²áá±ážáá¬ážáá° á¡áá»á¬ážá¡ááŒá¬ážááẠáááºážááá¯á·ááᯠá¡áá¯á¶ážáá»áááºážááẠáááºážááá¯á·á áááºáá¡áá¯ááºâá¡ááá®áá±ážááŸááºáž áá¯áá¹áááá±á-- áááºážááá¯á·ááᯠá¡áá¯á¶ážáá»áá¯á¶ááẠáááºážááá¯á·á áááºáá¡áá¯ááºâá¡ááá®áá±ážááŸááºáž áá¯áá¹áááá±áááᯠá¡á¬áá¯á¶á
áá¯ááºááá¯áá±á¬ááŒá±á¬áá·áº áááºážááᯠááŒá±á¬ááºááœá¶á·ááŒáááºá ááŒá®ážáá±á¬á· áá«á áá
á¬ážááá¯á· áá¬áá¬á
áá»ááºáá±á¬ááºážáá«ážááœááºá Kubernetes Maven Plugin ááŒáá·áº Eclipse JKube ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº Kubernetes áááºáááºážáá»ááºááœáẠJava ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá ááºááᯠááá¯ážááŸááºážá¡á±á¬ááºááŒá¯áá¯ááºáááºážááᯠááá·áºá¡á¬áž ááŒááá«áááºá
Eclipse JKube ááᯠá¡áá¯á¶ážááŒá¯á Cloud Development Process
áá¯á¶ááœááºááŒáá¬ážááá·áºá¡ááá¯ááºáž Eclipse JKube ááŸáá·áº Kubernetes Maven Plugin ááᯠáá¯á¶ 2 á០cloud á¡ááœáẠá¡áááºážáááºááœááºážáá¶áá¬ážáá±á¬ Java ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡á á®á¡á ááºááᯠá ááºážá á¬ážááŒáá·áºááŒáá«á áá¯á·á áá
ááááºážá 3. Eclipse JKube ááᯠá¡áá¯á¶ážááŒá¯á cloud á¡ááœáẠJava ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá¯ááºáááºážá ááºá
áá»áœááºá¯ááºááá¯á·ááŒááºááá¯ááºááá²á·ááá¯á·á á€áá±áá¬ááœáẠKubernetes ááŸáá·áº ááœááºááááºáá¬áá»á¬áž (áá¯á¶áá±áá¯á¶ááœáẠá¡áá®áá±á¬ááºááŒáá·áº áá®ážáá±á¬ááºážááá¯ážááŒáá¬ážáá±á¬) ááŸáá·áº á¡ááŒááºá¡ááŸááºáááºáá¶ááŒááºážá¡ááœáẠáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠááá¬ážááœááºáá±á¬áºááŒáá¬ážáá±á¬ áá¯á¶áá± Eclipse JKube áááºááŸááºážáá»ááºáá¬áááºáá»á¬ážááŒáá·áº á¡á á¬ážááá¯ážáá¬ážáá«áááºá áá
á á¬ážááœá² 1. Eclipse JKube áá¯á¶áá±áá¯ááºáá±á¬ááºá áá¬áá»á¬ážá
áá¯ááºáááºáž
áá¬ááºá
ááº
áá±á«áºááŒáá»ááº
PRE_INTEGRATION_TEST
docker áá¯á¶áá»á¬ážááá¯áááºáá±á¬ááºááŒááºážá
INSTALL
docker áá¯á¶áá»á¬ážááᯠregistry ááá¯á· á¡ááºáá¯ááºáá¯ááºáá±áááºá
PROCESS_RESOURCES
K8s áá»á¬ážááᯠáá¯ááºáá±ážááŒááºáž
á
á¯á
ááºážáá«á
áá¯ááºáá¯ááºáá¬ážáá±á¬ áááºáá®ážáááºá
áºáá»á¬ážááᯠK8s ááœáẠá¡áá¯á¶ážááŒá¯ááŒááºážá
ááŒá¯ááºáá»ááá¯ááºáá«á
k8s:apply ááŸáá·áº k8s:deploy ááá¯á¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ K8s á¡áááºážá¡ááŒá
áºáá»á¬ážááᯠáááºááŸá¬ážááŒááºáž
ááŸááºáá»ááº: á€áááºááŒááºáá°ááá¬ážáá±á¬ áá¯á¶áá±áá»á¬ážááᯠá¡áá¯á¶ážáááŒá¯ááá¯áá«á á¡áá¯ááºáá»á¬ážááᯠEclipse JKube ááŸáááá·áº áááºááá¯ááºááá¯áẠá
á®á
ááºáááºááŸááºááá¯ááºáááºá
ááᯠá¡ááá®áá±ážááŸááºážáá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬á¡áá« Eclipse JKube ááŸáá·áº Kubernetes Maven Plugin ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá á¥ááá¬áá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
Eclipse JKube ááᯠá¡áá¯á¶ážááŒá¯á Kubernetes ááœáẠJava á¡ááá®áá±ážááŸááºážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá
á€á¥ááá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠááá¯ážááŸááºážáá±á¬ Java á¡ááá®áá±ážááŸááºážááᯠá¡á
á¯á¡áá±ážáá
áºáá¯áá±á«áºááœáẠááŒáá·áºáá»ááºáá¬ážáá«áááºá
á¥ááá¬á¡áá±áá²á· áá»áœááºáá±á¬áºááá¯á·áá¯á¶ážáá²á· application áá
áºáá¯áá«á
~/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 ááá¯áá±á«ááºážáá¯ááºáá¯ááºáá«á
Kubernetes Maven Plugin ááẠrepository ááœááºááŸááááºá
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
á¡áááºá OpenShift ááᯠpure Kubernetes á¡á á¬áž á¡áá¯á¶ážááŒá¯áá«á pom.xml ááᯠá¡á±á¬ááºáá«á¡ááá¯ááºáž ááŒá¯ááŒááºáá¬ážáá«áááºá
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>openshift-maven-plugin</artifactId>
<version>${jkube.version}</version>
</plugin>
á¡ááá·áº 2. docker image ááá¯áááºáá±á¬ááºáá«á
á¡ááá®áá±ážááŸááºážá JAR ááá¯ááºááᯠmvn package command ááŒáá·áº áááºáá±á¬ááºááá¯ááºááŒá®ážá ááá¯á·áá±á¬áẠmvn áááºááŸááºážáá»ááºáá¬ááẠk8s:build ááᯠá¡ááá®áá±ážááŸááºážá docker áá¯á¶áá áºáá¯áááºáá±á¬ááºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠáá°áááºážáá¯á¶á¡áááºááᯠá€ááá¯ááºááá¯ááºááŸá¯ááŒáá·áº á¡á á¬ážááá¯ážáá¬ážáááºááᯠáááááŒá¯áá«á
<jkube.generator.name>docker.io/rohankanojia/random-generator:${project.version}</jkube.generator.name>
áá¯á¶ááᯠááááºáá±á¬ááºáá®á docker daemon ááᯠááŸááºáááºá áœá¬ áááºááŸá¬ážá¡á±á¬ááºááŒá¯áá¯ááºááẠááá¯á¡ááºáá«áááºá áááºážááᯠá¡á±á¬ááºáá« command ááŒáá·áº áá¯ááºáá±á¬ááºááá¯ááºáááºá
$ eval $(minikube docker-env)
ááá¯á·áá±á¬ááºáá»áœááºá¯ááºááá¯á·ááẠmvn k8s:build command ááá¯ááá¯ááºááá·áºáᬠEclipse JKube build task ááá¯á¡áá¯á¶ážááŒá¯á docker image ááá¯áááºáá±á¬ááºáá±á¬á¡áá« screen áá±á«áºááœááºáá»áœááºá¯ááºááá¯á·ááŒááºáááá·áºá¡áá¬ááŒá áºáááº-
~/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 registry ááá¯á· á¡ááºáá¯ááºáá¯ááºáá«á
Push registry ááᯠconfigure áá¯ááºáá¬ážáá±á¬ docker image ááá¯áááºáá±á¬ááºááŒá®ážáá±á¬áẠ(áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááŸá¬ docker.io ááŒá áºáááº)á á€áá¯á¶ááᯠregistry ááá¯á·áá±ážááá¯á·ááá¯ááºáá«áááºá mvn k8s:push push task- ááá¯áá¯ááºáá±á¬ááºááẠEclipse JKube á¡á¬áž áá»áœááºá¯ááºááá¯á·áá±á¬ááºážááá¯ááŒá®ážáá±á¬áẠá€á¡áá¬ááẠááŒááááºááŒá áºáááºá
~/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. Registry ááá¯á·áá±ážááá¯á·áá±á¬áá¯á¶ááẠDocker Hub ááœááºáá±á«áºáá¬áááºá
á¡ááá·áº 4. á¡ááá®áá±ážááŸááºážá¡ááœáẠKubernetes á¡áááºážá¡ááŒá áºáá±á¬áºááŒáá»ááºáá»á¬ážááᯠáááºáá®ážáá«á
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážáá¯á¶á¡á¬áž á
á¯áá±á¬ááºážáá¬ážááŒá®ážá ááᯠKubernetes manifests áá»á¬ážááᯠáá±ážáá¬ážááẠááá¯á¡ááºáá«áááºá áá«ááá¯áá¯ááºááá¯á·á Eclipse JKube ááŸá¬ á¡áááºážáᶠJava áá°áá±á¬ááºááᯠá¡ááŒá±áá¶ááŒá®áž áááºážáá»ááºáá²á· á¡áááºážá¡ááŒá
Ạmanifest ááœá±ááᯠáá¯ááºáá±ážáá²á· á¡áá¯ááºáá
áºáá¯ááŸááá«ááẠ(
áá»áœááºá¯ááºááá¯á·áá¥ááá¬ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá¬á¡á¬ážáá¯á¶ážááá¯áá¬ážáá²á·áááºá ááá¯á·ááŒá±á¬áá·áº Eclipse JKube ááẠáá¯á¶áá±á¡áá¯á¶ážááŒá¯ááŸá¯ááŸáá·áº ClusterIP á¡áá»áá¯ážá¡á á¬ážááŒáá·áºáááºáá±á¬ááºááŸá¯á¡ááœááºáá±á¬áºááŒáá»ááºáá áºáá¯áá¯ááºáá±ážáááºá ááá¯ááŸáá¬áá»áŸáẠáá»áœááºá¯ááºááá¯á·ááẠáááºáá±á¬ááºááŸá¯á¡áá»áá¯ážá¡á á¬ážááᯠNodePort ááá¯á·ááŒá±á¬ááºážáá²ááẠáááºáá±á¬ááºááŸá¯áááºáá®ážáááºá áºááᯠááœááºážáá¶ááŒááºáááºáá«áááºá á¡á±á¬ááºáá«ááá¯ááºááá¯ááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯á áá°áááºážá¡ááŒá¯á¡áá°ááᯠááœáŸááºážááá¯ážááá¯ááºáááº-
<jkube.enricher.jkube-service.type>NodePort</jkube.enricher.jkube-service.type>
mvn k8s:resource á¡áááºážá¡ááŒá áºáá¬áááºááᯠáá¯ááºáá±á¬ááºááẠEclipse JKube ááᯠáá»áœááºá¯ááºááá¯á· áá±á¬ááºážááá¯ááŒá®ážáá±á¬áẠáááºáá¬ážááŒááºá á¡ááœááºááœááºáá¯á¶ááẠáááºááá¯á·ááẠááŒá áºáááºáááºážá
~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:resource
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:resource (default-cli) @ random-generator ---
[INFO] k8s: Running generator spring-boot
[INFO] k8s: spring-boot: Using Docker image quay.io/jkube/jkube-java-binary-s2i:0.0.7 as base / builder
[INFO] k8s: jkube-controller: Adding a default Deployment
[INFO] k8s: jkube-service: Adding a default service 'random-generator' with ports [8080]
[INFO] k8s: jkube-healthcheck-spring-boot: Adding readiness probe on port 8080, path='/actuator/health', scheme='HTTP', with initial delay 10 seconds
[INFO] k8s: jkube-healthcheck-spring-boot: Adding liveness probe on port 8080, path='/actuator/health', scheme='HTTP', with initial delay 180 seconds
[INFO] k8s: jkube-revision-history: Adding revision history limit to 2
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.344 s
[INFO] Finished at: 2020-08-10T11:38:11+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $ ls target/classes/META-INF/jkube/kubernetes
random-generator-deployment.yml random-generator-service.yml
~/work/repos/eclipse-jkube-demo-project : $ cat target/classes/META-INF/jkube/kubernetes/random-generator-deployment.yml | head -n10
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
jkube.io/git-url: [email protected]:rohanKanojia/eclipse-jkube-demo-project.git
jkube.io/git-commit: 1ef9ef2ef7a6fcbf8eb64c293f26f9c42d026512
jkube.io/git-branch: master
jkube.io/scm-url: https://github.com/spring-projects/spring-boot/spring-boot-starter-parent/random-generator
jkube.io/scm-tag: HEAD
~/work/repos/eclipse-jkube-demo-project : $
á¡ááá·áº 5. á¡ááá®áá±ážááŸááºážááᯠKubernetes á¡á á¯á¡áá±ážááá¯á· ááŒáá·áºáá»ááºáá«á
ááᯠáá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážááᯠá¡áá¯á¶ážáá»ááẠá¡á¬ážáá¯á¶ážá¡áááºááá·áºááŒá áºáá±áá«ááŒá®- áá»áœááºá¯ááºááá¯á·ááẠáááºážááá¯ááºáá¯á¶ááᯠáá¯ááºáá±ážááŒá®áž á¡áááºážá¡ááŒá áºáááºáá®ážáááºá áºáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±ážáá«áááºá ááᯠáá»ááºááŸááá±áááºááŸá¬ áááºážá¡á¬ážáá¯á¶ážááᯠKubernetes á¡á á¯á¡áá±ážááœáẠá¡áá¯á¶ážáá»áááºááŒá áºáááºá á¡ááá®áá±ážááŸááºážááá¯á¡áá¯á¶ážááŒá¯áááºá áááºááẠkubectl apply -f command ááá¯áá¯á¶ážááá¯ááºáááºá ááá¯á·áá±á¬áº plugin áááºáá»áœááºá¯ááºááá¯á·á¡ááœááºáááºážááá¯áá¯ááºáá±á¬ááºááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠmvn k8s ááá¯áá¯ááºáá±á¬ááºááẠEclipse JKube ááá¯áá±á¬ááºážááá¯ááŒá®ážáá±á¬áẠá ááááºáá±á«áºááœááºáá±á«áºáá¬ááá·áºá¡áá¬ááŒá áºáá«áááº-
~/work/repos/eclipse-jkube-demo-project : $ mvn k8s:apply
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< meetup:random-generator >-----------------------
[INFO] Building random-generator 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- kubernetes-maven-plugin:1.0.0-rc-1:apply (default-cli) @ random-generator ---
[INFO] k8s: Using Kubernetes at https://192.168.39.145:8443/ in namespace default with manifest /home/rohaan/work/repos/eclipse-jkube-demo-project/target/classes/META-INF/jkube/kubernetes.yml
[INFO] k8s: Using namespace: default
[INFO] k8s: Creating a Service from kubernetes.yml namespace default name random-generator
[INFO] k8s: Created Service: target/jkube/applyJson/default/service-random-generator.json
[INFO] k8s: Creating a Deployment from kubernetes.yml namespace default name random-generator
[INFO] k8s: Created Deployment: target/jkube/applyJson/default/deployment-random-generator.json
[INFO] k8s: HINT: Use the command `kubectl get pods -w` to watch your pods start up
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.306 s
[INFO] Finished at: 2020-08-10T11:40:57+05:30
[INFO] ------------------------------------------------------------------------
~/work/repos/eclipse-jkube-demo-project : $ kubectl get pods -w
NAME READY STATUS RESTARTS AGE
random-generator-58b7847d7f-9m9df 0/1 Running 0 7s
random-generator-58b7847d7f-9m9df 1/1 Running 0 17s
^C~/work/repos/eclipse-jkube-demo-project : $ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
io-openliberty-sample-getting-started NodePort 10.110.4.104 <none> 9080:30570/TCP 44h
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18d
random-generator NodePort 10.97.172.147 <none> 8080:32186/TCP 22s
~/work/repos/eclipse-jkube-demo-project : $ curl `minikube ip`:32186/random | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 45 0 45 0 0 1800 0 --:--:-- --:--:-- --:--:-- 1875
{
"id": "42e5571f-a20f-44b3-8184-370356581d10"
}
á¡ááá·áº 6. Kubernetes á¡á á¯á¡áá±ážá០á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠáááºááŸá¬ážááá¯ááºáá«á
áá«ááá¯áá¯ááºááá¯á·á undeploy task ááá¯á¡áá¯á¶ážááŒá¯ááŒá®ážá ááá¯ááá¯áá¬áá apply task ááá¯áá¯ááºáá±á¬ááºáá²á·á¡áá«á ááááºá¡ááá·áºááŸá¬áá¯á¶ážáá²á·áá²á· resource á¡á¬ážáá¯á¶ážááᯠáááºááŸá¬ážáá áºááá¯ááºáá«áááºá mvn k8s ááá¯áá¯ááºáá±á¬ááºááẠEclipse JKube ááᯠáá±á¬ááºážááá¯ááŒá®ážáá±á¬áẠá ááááºáá±á«áºááœáẠá€á¡áá¬ááẠáá»áœááºá¯ááºááá¯á· ááŒááºááœá±á·áááá·áºá¡áá¬ááŒá áºááẠá
~/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 áá²á· áááºáá¬áá¯ááºááá¯ááºááá²á
ááá¯á·ááŒá±á¬áá·áº Kubernetes ááááºáá±á¬ááºážá¡ááœáẠJava á¡ááá®áá±ážááŸááºážáá»á¬áž ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠááœááºáá°áá»á±á¬ááœá±á·á á±ááá·áº Eclipse JKube ááŸáá·áº Kubernetes Maven Plugin ááá¯á·á á¡ááááááºááŸááºážáá»ááºáá¬áááºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· ááŒáá·áºááŸá¯áá²á·ááŒáááºá áá®ážáá¯ááºá០á€á¡áá¯ááºáá»á¬ážááᯠá¡áááºáááŒááºáááá·áºááá¯áá«áá á¥ááá¬á¡á¬ážááŒáá·áºá á€áá²á·ááá¯á·áá±á¬ plugin configuration ááœáẠáááºážááá¯á·ááᯠáá±ážááá¯ááºáá«áááºá
<plugin>
<groupId>org.eclipse.jkube</groupId>
<artifactId>kubernetes-maven-plugin</artifactId>
<version>${project.version}</version>
<executions>
<execution>
<goals>
<goal>build</goal>
<goal>resource</goal>
<goal>apply</goal>
</goals>
</execution>
</executions>
</plugin>
á€áá±á¬ááºážáá«ážááœáẠEclipse JKube ááŸáá·áº Kubernetes Maven Plugin ááœááºáá«ááŸááá±á¬ áááºááŸááºážáá»ááºáá¬áááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá»áœááºá¯ááºááá¯á· ááá·áºááœááºážáá ááºážá á¬ážááá±ážáá±á¬ááŒá±á¬áá·áº ááá¬áž 2 ááœáẠááá·áºá¡ááœáẠá¡áá¯á¶ážáááºááá¯ááºááá·áº áá±á¬ááºáááºáá¯ááºáá±á¬ááºá áá¬áá»á¬ážá á¬áááºážááᯠáá±á¬áºááŒáá±ážáá¬ážáá«áááºá
á á¬ážááœá² 2. áá±á¬ááºááẠEclipse JKube áááºááŸááºážáá»ááºáá¬áááºáá»á¬ážá
áá¯ááºáááºáž
áá¬ááºá
ááº
áá±á«áºááŒáá»ááº
á¡áááºááŒá¯
Kubernetes áá±á«áºááœáẠáá¯ááºáá±á¬ááºáá±áá±á¬ á¡ááºááºáá
áºáá¯á០ááŸááºáááºážáá»á¬ážááᯠáááºáá¶ááá°ááŒááºážá
PACKAGE ááœááº
IDE á០Kubernetes ááœáẠááá¯ááºááá¯ááºáááºáááºáá±áá±á¬ ááá·áºá¡ááá®áá±ážááŸááºážááᯠá¡ááŸá¬ážááŸá¬ááŒááºááá¯ááºáá±á¬ ááá¯á·ááºááá¯ááœáá·áºáá«á
INSTALL
ááá·áºááœááºážááŒááºážáá¯ááºáááºážá¡ááœáẠáááºáááºážáá
áºáá¯ááᯠáááºáá®ážááŒááºážááŸáá·áº áá¯ááºáá±ážáá¬ážáá±á¬ áááºáá®ážáááºá
áºáá»á¬ážááᯠKubernetes á¡á
á¯á¡áá±ážááœáẠá¡áá¯á¶ážáá»ááŒááºážááá
á¹á
ááœááºáá²á·ááá¯á·ááẠá¡áá¯á¶ážááŒá¯ááŒááºážá
PACKAGE ááœááº
áááºážá namespace ááᯠááŒá±áá¬áá¶ááŒááºážááŒáá·áº á¡ááá®áá±ážááŸááºážáá
áºáá¯á áá°ááŒááºážáá±á¬ ááŒáá·áºáá»ááºááŸá¯ááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááŒááºážá
OpenShift Maven Plugin ááᯠá¡áá¯á¶ážááŒá¯á Red Hat OpenShift ááœáẠJava Application áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá
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 ááŒáá·áº Kubernetes ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠááá¯ááá¯ááœááºáá°á¡á±á¬áẠááŒá¯áá¯ááºáááºážááᯠááá¯ááá¯áá±á·áá¬áááºá Minikube ááœáẠááá¯ážááŸááºážáá±á¬ Spring Boot á¡ááá®áá±ážááŸááºážááᯠáááºáá²á·ááá¯á· áá»ááºááŒááºá áœá¬ á¡áá¯á¶ážááŒá¯ááá¯ááºáá¯á¶ááᯠá€áá®áá®ááá¯áááºáááºážá á¬ááœáẠááŒáá·áºááŸá¯áá«á
áá±á¬ááºáá»ááº
á€áá±á¬ááºážáá«ážááœáẠKubernetes ááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬á¡áá« Eclipse JKube ááẠJava developer áá
áºáŠážá¡ááœáẠááááá¯ááá¯ááœááºáá°á
á±áá¯á¶ááᯠááŒááá²á·áááºá Eclipse JKube á áá±á¬ááºáááºá¡áá»ááºá¡áááºáá»á¬ážááᯠááœáẠááŒáá·áºááŸá¯ááá¯ááºáá«áááºá
source: www.habr.com