ืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ Java ืขื‘ื•ืจ Kubernetes ื‘ืืžืฆืขื•ืช Eclipse JKube

ืœืคื ื™ 25 ืฉื ื”, ื’'ืื•ื•ื” ื ื›ื ืกื” ืœื–ืจื ื”ืžืจื›ื–ื™ ืฉืœ ื”ืชื›ื ื•ืช ื•ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื”ืคื›ื” ืœืื—ื“ ืžืžืจื›ื™ื‘ื™ ื”ืœื™ื‘ื” ืฉืกื‘ื™ื‘ื ื‘ื ื•ื™ื™ื ืขืจื™ืžื•ืช ื™ื™ืฉื•ืžื™ื. ืื•ืœื ื›ื™ื•ื, ืื ืฉื™ื ื•ืืจื’ื•ื ื™ื ืจื‘ื™ื ืฉื ืืžื ื™ื ืœื’'ืื•ื•ื” ื‘ืžืฉืš ืฉื ื™ื ืจื‘ื•ืช ืขืกื•ืงื™ื ื‘ืžืขื‘ืจ ืื• ื‘ื‘ื—ื™ื ืช ื”ื’ื™ืจื” ืœืคืœื˜ืคื•ืจืžื”. ืงื•ื‘ืจื ื˜ ืื• ื ื’ื–ืจื•ืชื™ื• ื›ื’ื•ืŸ ืจื“ ื”ืื˜ ืื• ืืžื–ื•ืŸ EKS.

ืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ Java ืขื‘ื•ืจ Kubernetes ื‘ืืžืฆืขื•ืช Eclipse JKube

ืœืจื•ืข ื”ืžื–ืœ, ืœ-Kubernetes ืขืงื•ืžืช ืœืžื™ื“ื” ืชืœื•ืœื” ื•ืžื›ื ื™ืกื” ืœืชื”ืœื™ืš ื”ืคื™ืชื•ื— ืฉื›ื‘ื” ืชืคืขื•ืœื™ืช ื ื•ืกืคืช ืฉืืœื™ื• ืจื’ื™ืœื™ื ืžืชื›ื ืชื™ Java. ื”ื™ื•ื ื ืกืคืจ ืœื›ื ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ Eclipse JKube, ื›ื“ื™ ืœืคืฉื˜ ืืช ื”ืคืขื•ืœื•ืช ื”ื ื•ืกืคื•ืช ื”ืœืœื• ื”ืงืฉื•ืจื•ืช ืœ-Kubernetes ื•ืœืงื•ื ื˜ื™ื™ื ืจื™ื, ื•ืœื”ื‘ื˜ื™ื— ื”ืขื‘ืจื” ืœืœื ื›ืื‘ื™ื ืœืคืœื˜ืคื•ืจืžืช ื”ืขื ืŸ ืชื•ืš ืฉืžื™ืจื” ืขืœ ื”ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ื”ืžื•ื›ืจืช ืฉืœ Java. ื™ืชืจ ืขืœ ื›ืŸ, ื ืจืื” ื›ื™ืฆื“ ืœืคืจื•ืก ื™ื™ืฉื•ืžื™ Java ื‘ืคืœื˜ืคื•ืจืžืช OpenShift ื‘ืืžืฆืขื•ืช ื”ืชื•ืกืฃ OpenShift Maven.

ืชื”ืœื™ืš ืคื™ืชื•ื— Java ืžืกื•ืจืชื™

ืชื”ืœื™ืš ืคื™ืชื•ื— ืžืกื•ืจืชื™ Java (ืื™ื•ืจ 1) ื›ื•ืœืœ ืืช ื›ืชื™ื‘ืช ื”ืงื•ื“ ืฉืœ ื”ืžืคืชื—, ืœืื—ืจ ืžื›ืŸ ื™ืฆื™ืจืช ื™ื—ื™ื“ื•ืช ืคืจื™ืกื” ื‘ืฆื•ืจื” ืฉืœ ืงื•ื‘ืฆื™ JAR ืื• WAR, ื•ืœืื—ืจ ืžื›ืŸ ืคืจื™ืกื” ื•ื”ืจืฆื” ืฉืœ ืงื‘ืฆื™ื ืืœื” ื‘ืฉืจืช ืื™ื ื˜ืจื ื˜ ืื• ื™ื™ืฉื•ืžื™ื. ื”ื“ืจืš ื”ืขื™ืงืจื™ืช ืœืขืฉื•ืช ื–ืืช ื”ื™ื ืœื”ืฉืชืžืฉ ื‘-Maven ืžืฉื•ืจืช ื”ืคืงื•ื“ื” ืื• ืœื”ืฉืชืžืฉ ื‘-IDE ื›ืžื• IntelliJ ืื• Eclipse ื›ื“ื™ ืœืงื•ื“ ื•ืœืืจื•ื– ืืช ื”ื™ื™ืฉื•ืžื™ื. ืžืคืชื—ื™ื ืจื’ื™ืœื™ื ืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื ื‘ืงื•ื“ ื•ืœื‘ื“ื•ืง ื”ื›ืœ ื‘ื™ืกื•ื“ื™ื•ืช ืœืคื ื™ ื‘ื™ืฆื•ืข ื”ืงื•ื“ ื•ืฉืœื™ื—ืชื• ืœื‘ืงืจืช ื’ืจืกืื•ืช.

ืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ Java ืขื‘ื•ืจ Kubernetes ื‘ืืžืฆืขื•ืช Eclipse JKube

ืื•ืจื–. 1. ืชื”ืœื™ืš ืคื™ืชื•ื— Java ืžืกื•ืจืชื™.

ืชื”ืœื™ืš ืคื™ืชื•ื— Java ืขื‘ื•ืจ ื”ืขื ืŸ

ื‘ืขืช ืžืขื‘ืจ ืœื™ื™ืฉื•ืžื™ ืขื ืŸ, Kubernetes ื• ืžื›ื•ืœื•ืช. ืœื›ืŸ, ื›ืขืช ืขืœ ื”ืžืคืชื— ืœืืจื•ื– ื™ื™ืฉื•ืžื™ Java ืชืžื•ื ื•ืช ืžื™ื›ืœ ื•ืœื™ืฆื•ืจ ืžื ื™ืคืกื˜ื™ื ืฉืœ Kubernetes ืฉืžืชืืจื™ื ืืช ื”ืชืžื•ื ื•ืช ื”ืœืœื•. ืžื ื™ืคืกื˜ื™ื ืืœื” ืžื•ื—ืœื™ื ืœืื—ืจ ืžื›ืŸ ืขืœ ืฉืจืช ื”ื™ื™ืฆื•ืจ ื”ืžืจื™ืฅ Kubernetes. ื‘ืชื•ืจื•, Kubernetes ืœื•ืงื— ืืช ื”ืชืžื•ื ื•ืช ื”ืœืœื• ืžื”ืจื™ืฉื•ื ื•ืคื•ืจืก ืืคืœื™ืงืฆื™ื•ืช ื‘ื”ืชืื ืœืชืฆื•ืจื•ืช ืฉื›ืชื‘ื ื• ื‘ืžื ื™ืคืกื˜ื™ื, ืฉื”ื ื‘ื“ืจืš ื›ืœืœ ืงื‘ืฆื™ YAML.

ื”ืžื˜ืžื•ืจืคื•ื–ื” ืฉืœ ืชื”ืœื™ืš ื”ืคื™ืชื•ื— ื”ืžืกื•ืจืชื™ ืฉืœ Java ื‘ืžืขื‘ืจ ืœืขื ืŸ ืžื•ืฆื’ืช ื‘ืื™ื•ืจ. 2.

ืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ Java ืขื‘ื•ืจ Kubernetes ื‘ืืžืฆืขื•ืช Eclipse JKube

ืื•ืจื–. 2. ืชื”ืœื™ืš ืคื™ืชื•ื— Java ืœืขื ืŸ.

Eclipse JKube

ื”ื”ื’ื™ืจื” ืœ-Kubernetes ืžื•ืกื™ืคื” ืขื•ื“ ืจื•ื‘ื“ ืชืคืขื•ืœื™ ืœืชื”ืœื™ืš ื”ืคื™ืชื•ื—, ื•ืžืคืชื—ื™ื ืจื‘ื™ื ื—ื•ืฉืฉื™ื ืžื›ืš ื›ื™ ื”ื ืจื•ืฆื™ื ืœื”ืชืžืงื“ ื‘ืขื‘ื•ื“ืช ื”ืœื™ื‘ื” ืฉืœื”ื - ืœื•ื’ื™ืงื” ืฉืœ ื”ืืคืœื™ืงืฆื™ื” - ื‘ืžืงื•ื ื›ื™ืฆื“ ืœืคืจื•ืก ืื•ืชื. ื•ื›ืืŸ ื–ื” ื ื›ื ืก ืœืชืžื•ื ื”. Eclipse JKube, ื”ืžืืคืฉืจ ืœืžืคืชื—ื™ื ืœื”ืฉืชืžืฉ ื‘ืกืคืจื™ื•ืช ื•ื‘ืคืœืื’ื™ื ื™ื ืฉืœื”ื (ืขืจื›ืช JKube ืขื ืชื•ืกืฃ Kubernetes Maven ืื• ืชื•ืกืฃ OpenShift Maven) ื›ื“ื™ ืœื‘ืฆืข ืœืœื ืžืืžืฅ ืคืขื•ืœื•ืช ื”ืงืฉื•ืจื•ืช ืœืžื™ื›ืœ ื•ืœ-Kubernetes ืขืœ ื™ื“ื™ ื‘ื™ืฆื•ืข ื”ื“ื™ืื’ืจืžื” ื‘ืื™ื•ืจ. 2.

ื‘ื”ืžืฉืš ื”ืžืืžืจ ื”ื–ื”, ื ืจืื” ืœื›ื ื›ื™ืฆื“ ืœืคืฉื˜ ืืช ืชื”ืœื™ืš ื”ืคื™ืชื•ื— ืฉืœ Java ื‘ืกื‘ื™ื‘ืช Kubernetes ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘-Eclipse JKube ืขื ืชื•ืกืฃ Kubernetes Maven.

ืชื”ืœื™ืš ืคื™ืชื•ื— ืขื ืŸ ื‘ืืžืฆืขื•ืช Eclipse JKube

ื”ื‘ื” ื ืฉืงื•ืœ ืกื›ื™ืžืช ืคื™ืชื•ื— ื’'ืื•ื•ื” ืฉืฉื•ื ืชื” ืžืขื˜ ืขื‘ื•ืจ ื”ืขื ืŸ ืžืื™ื•ืจ 2, ืชื•ืš ื”ืฆื’ืช Eclipse JKube ื•-Kubernetes Maven Plugin ืœืชื•ื›ื”, ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืื™ื•ืจ. 3.

ืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ Java ืขื‘ื•ืจ Kubernetes ื‘ืืžืฆืขื•ืช Eclipse JKube

ืื•ืจื–. 3. ืชื”ืœื™ืš ืคื™ืชื•ื— Java ืœืขื ืŸ ื‘ืืžืฆืขื•ืช Eclipse JKube.

ื›ืคื™ ืฉืื ื• ื™ื›ื•ืœื™ื ืœืจืื•ืช, ื›ืืŸ ื›ืœ ื”ืคืขื•ืœื•ืช ืœืื™ื ื˜ืจืืงืฆื™ื” ืขื Kubernetes ื•ืžื›ื•ืœื•ืช (ืžืกื•ืžื ื•ืช ื‘ืื“ื•ื ื‘ืชืจืฉื™ื) ืžื•ื—ืœืคื•ืช ื‘ืžืฉื™ืžื•ืช ื™ืขื“ ืฉืœ Eclipse JKube, ื”ืžืคื•ืจื˜ื•ืช ื‘ื˜ื‘ืœื”. 1.

ืฉื•ืœื—ืŸ 1. ืžืฉื™ืžื•ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ Eclipse JKube.

ืžืฉื™ืžื”
ืฉืœื‘
ืชื™ืื•ืจ

k8s:build
PRE_INTEGRATION_TEST
ื‘ื ื™ื™ืช ืชืžื•ื ื•ืช Docker

k8s: ื“ื—ื™ืคื”
ืชืชืงื™ืŸ
ื”ืขืœืืช ืชืžื•ื ื•ืช docker ืœืจื™ืฉื•ื

k8s:ืžืฉืื‘
PROCESS_RESOURCES
ื™ืฆื™ืจืช ืžื ื™ืคืกื˜ื™ื ืฉืœ K8s

k8s:ื”ื—ืœ
ืœึฐืœึทืงึตื˜
ื”ื—ืœืช ืžื ื™ืคืกื˜ื™ื ืฉื ื•ืฆืจื• ืขืœ K8s

k8s:undeploy
ื‘ื˜ืœ ืขื‘ื•ื“ื”
ื”ืกืจืช ืžืฉืื‘ื™ K8s ืฉื ืคืจืกื• ื‘ืืžืฆืขื•ืช k8s:apply ื•-k8s:deploy

ื”ืขืจื”: ืื ืื™ื ืš ืจื•ืฆื” ืฉื”ืžืฉื™ืžื•ืช ื™ืฉืชืžืฉื• ื‘ื‘ืจื™ืจื•ืช ื”ืžื—ื“ืœ ื”ื“ืขืชื ื™ื•ืช ื”ืœืœื•, ืชื•ื›ืœ ืœื”ื’ื“ื™ืจ ื‘ืื•ืคืŸ ื™ื“ื ื™ ืืช Eclipse JKube ืขื‘ื•ืจ ืขืฆืžืš, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืชื•ืžืš ื‘ืชืฆื•ืจื” ื‘ืืžืฆืขื•ืช XML ะธ ั€ะตััƒั€ัั‹.

ื›ืขืช ื ืกืชื›ืœ ืขืœ ื“ื•ื’ืžืื•ืช ืœืฉื™ืžื•ืฉ ื‘-Eclipse JKube ื•-Kubernetes Maven Plugin ื‘ืขืช ืขื‘ื•ื“ื” ืขื ื™ื™ืฉื•ืžื™ื.

ืคืจื™ืกืช ื™ื™ืฉื•ื Java ื‘-Kubernetes ื‘ืืžืฆืขื•ืช Eclipse JKube

ื‘ื“ื•ื’ืžื” ื–ื• ื ืคืจื•ืก ื™ื™ืฉื•ื Java ืคืฉื•ื˜ ืขืœ ืืฉื›ื•ืœ ืžื™ื ื™ืงื•ื‘ ื‘ืืžืฆืขื•ืช Eclipse JKube. ื‘ืืžืฆืขื•ืช ืชื•ืกืฃ Kubernetes Maven, ืื ื• ื™ื›ื•ืœื™ื ืœื”ื’ื“ื™ืจ ืคืจืžื˜ืจื™ื ืฉืœ ืคืจื™ืกื” ืœืœื ืฆื•ืจืš ื‘ื›ืชื™ื‘ืช ืชืฆื•ืจื” ื›ืœืฉื”ื™.

ื›ื“ื•ื’ืžื” ืœื™ื™ืฉื•ื ืฉืื ื• ืžืฉืชืžืฉื™ื ื‘ื• ืžื—ื•ืœืœ ืžืกืคืจื™ื ืืงืจืื™ื™ื ืคืฉื•ื˜, ืืฉืจ ืžื™ื™ืฆืจ ืคืœื˜ JSON ื‘ื ืงื•ื“ืช ื”ืงืฆื” /ืืงืจืื™ืช:

~/work/repos/eclipse-jkube-demo-project : $ curl localhost:8080/random | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    45    0    45    0     0    818      0 --:--:-- --:--:-- --:--:--   818
{
  "id": "e80a4d10-c79b-4b9a-aaac-7c286cb37f3c"
}

ืฉืœื‘ 1. ื”ื•ืจื“ ืืช ื”ืชื•ืกืฃ Kubernetes Maven

Kubernetes Maven Plugin ื ืžืฆื ื‘ืžืื’ืจ ืžืื’ืจ ืžืจื›ื–ื™ ืฉืœ ืžื™ื™ื‘ืŸ. ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘-Eclipse JKube ืขืœื™ืš ืœื”ื•ืกื™ืฃ ืืช ืชื•ืกืฃ Kubernetes Maven ืœ-pom.xml ืฉืœืš ื›ืชืœื•ืช:

<plugin>
     <groupId>org.eclipse.jkube</groupId>
     <artifactId>kubernetes-maven-plugin</artifactId>
     <version>${jkube.version}</version>
 </plugin>

ืื ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘-OpenShift ื‘ืžืงื•ื Kubernetes ื˜ื”ื•ืจ, ืื–ื™ pom.xml ืžืฉืชื ื” ื‘ืื•ืคืŸ ื”ื‘ื:

<plugin>
     <groupId>org.eclipse.jkube</groupId>
     <artifactId>openshift-maven-plugin</artifactId>
     <version>${jkube.version}</version>
 </plugin>

ืฉืœื‘ 2. ื‘ื ื” ืืช ืชืžื•ื ืช ื”ื“ื•ืงืจ

ื ื™ืชืŸ ืœื‘ื ื•ืช ืืช ืงื•ื‘ืฅ ื”-JAR ืฉืœ ื”ื™ื™ืฉื•ื ืขื ืคืงื•ื“ืช ื”ื—ื‘ื™ืœื” mvn, ื•ืœืื—ืจ ืžื›ืŸ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืžืฉื™ืžืช mvn goal k8s:build ื›ื“ื™ ืœื‘ื ื•ืช ืชืžื•ื ืช docker ืฉืœ ื”ื™ื™ืฉื•ื. ืฉื™ืžื• ืœื‘ ืฉืขืงืคื ื• ืืช ืฉื ื”ืชืžื•ื ื” ื”ืžื•ื’ื“ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืขื ื”ืžืืคื™ื™ืŸ ื”ื–ื”:

<jkube.generator.name>docker.io/rohankanojia/random-generator:${project.version}</jkube.generator.name>

ืœืคื ื™ ื‘ื ื™ื™ืช ื”ืชืžื•ื ื”, ืขืœื™ืš ืœื•ื•ื“ื ืฉื“ืžื•ืŸ ื”ื“ื•ืงืจ ื ื—ืฉืฃ ื‘ืฆื•ืจื” ื ื›ื•ื ื”. ื ื™ืชืŸ ืœืขืฉื•ืช ื–ืืช ืขื ื”ืคืงื•ื“ื” ื”ื‘ืื”:

$ eval $(minikube docker-env)

ืœืื—ืจ ืžื›ืŸ ื ื–ื™ืŸ ืืช ื”ืคืงื•ื“ื” mvn k8s:build, ื•ื–ื” ืžื” ืฉื ืจืื” ืขืœ ื”ืžืกืš ื‘ืขืช ื‘ื ื™ื™ืช ืชืžื•ื ืช ื”-docker ื‘ืืžืฆืขื•ืช ืžืฉื™ืžืช ื”ื‘ื ื™ื™ื” ืฉืœ 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 registry

ืœืื—ืจ ืฉื‘ื ื™ื ื• ืืช ืชืžื•ื ืช ื”-docker ืขื ืžื•ื’ื“ืจืช ื”-Push Registry (ื‘ืžืงืจื” ืฉืœื ื• ื–ื” docker.io), ื ื•ื›ืœ ืœืฉืœื•ื— ืืช ื”ืชืžื•ื ื” ื”ื–ื• ืœ- Registry. ื–ื” ืžื” ืฉื™ื•ืฆื’ ืœืื—ืจ ืฉื ื‘ืงืฉ ืž-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.

ืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ Java ืขื‘ื•ืจ Kubernetes ื‘ืืžืฆืขื•ืช Eclipse JKube

ืื•ืจื–. 4. ื”ืชืžื•ื ื” ืฉื ืฉืœื—ื” ืœืจื™ืฉื•ื ื”ื•ืคื™ืขื” ื‘- Docker Hub.

ืฉืœื‘ 4. ืฆื•ืจ ืžื ื™ืคืกื˜ื™ื ืฉืœ ืžืฉืื‘ื™ Kubernetes ืขื‘ื•ืจ ื”ื™ื™ืฉื•ื

ืื–, ืืกืคื ื• ืืช ืชืžื•ื ืช ื”ืืคืœื™ืงืฆื™ื”, ืขื›ืฉื™ื• ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื›ืชื•ื‘ ืžื ื™ืคืกื˜ื™ื ืฉืœ Kubernetes. ืœืฉื ื›ืš, ืœ-Eclipse JKube ื™ืฉ ืžืฉื™ืžื” ื”ืžื™ื™ืฆืจืช ืžื ื™ืคืกื˜ื™ื ืฉืœ ืžืฉืื‘ื™ื ื ื•ืงืฉื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ื”ืžืกื’ืจืช ื”ื‘ืกื™ืกื™ืช ืฉืœ Java (ืžื’ืฃ ืื‘ื™ื‘, ืงื•ื•ืจืงื•ืก, 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.

~/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, ืืš ื”ืชื•ืกืฃ ื™ื›ื•ืœ ืœืขืฉื•ืช ื–ืืช ืขื‘ื•ืจื ื•. ื–ื” ืžื” ืฉื™ื•ืคื™ืข ืขืœ ื”ืžืกืš ืœืื—ืจ ืฉื ื‘ืงืฉ ืž-Eclipse JKube ืœื‘ืฆืข ืืช ืžืฉื™ืžืช ื”ื™ื™ืฉื•ื mvn k8s: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. ื‘ื˜ืœ ืคืจื™ืกืช ื™ื™ืฉื•ืžื™ื ืžืืฉื›ื•ืœ Kubernetes

ืœืฉื ื›ืš, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืžืฉื™ืžื” ื‘ื™ื˜ื•ืœ ืคืจื™ืกื”, ืืฉืจ ืคืฉื•ื˜ ืžืกื™ืจื” ืืช ื›ืœ ื”ืžืฉืื‘ื™ื ืฉื”ื•ื—ืœื• ื‘ืฉืœื‘ ื”ืงื•ื“ื, ื›ืœื•ืžืจ, ื›ืืฉืจ ืžืฉื™ืžืช ื”ื—ืœื” ืžื‘ื•ืฆืขืช. ื–ื” ืžื” ืฉื ืจืื” ืขืœ ื”ืžืกืš ืœืื—ืจ ืฉื ื‘ืงืฉ ืž-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, ื”ืžืืคืฉืจื•ืช ืืช ื”ืคื™ืชื•ื— ืฉืœ ื™ื™ืฉื•ืžื™ Java ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžืช 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>

ื™ืฉ ืœื•ืžืจ ืฉื‘ืžืืžืจ ื–ื” ืœื ืฉืงืœื ื• ืืช ื›ืœ ืžืฉื™ืžื•ืช ื”ืžื˜ืจื” ืฉื ืžืฆืื•ืช ื‘-Eclipse JKube ื•-Kubernetes Maven Plugin, ื•ืœื›ืŸ ืื ื• ืžืกืคืงื™ื ื‘ื˜ื‘ืœื” 2 ืจืฉื™ืžื” ืฉืœ ืžืฉื™ืžื•ืช ื ื•ืกืคื•ืช ืฉืขืฉื•ื™ื•ืช ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ื•ืช ื’ื ืขื‘ื•ืจื›ื.

ืฉื•ืœื—ืŸ 2. ืžืฉื™ืžื•ืช ืžื˜ืจื” ื ื•ืกืคื•ืช ืฉืœ Eclipse JKube.

ืžืฉื™ืžื”
ืฉืœื‘
ืชื™ืื•ืจ

k8s:log
ืœึฐืึทืžึตืช
ืงื‘ืœืช ื™ื•ืžื ื™ื ืžืืคืœื™ืงืฆื™ื” ื”ืคื•ืขืœืช ื‘-Kubernetes.

k8s:debug
ื—ึฒื‘ึดื™ืœึธื”
ืคืชื— ื™ืฆื™ืืช ืื™ืชื•ืจ ื‘ืื’ื™ื ื›ื“ื™ ืฉืชื•ื›ืœ ืœื ืคื•ืช ื‘ืื’ื™ื ื‘ื™ื™ืฉื•ื ืฉืœืš ื”ืคื•ืขืœ ืขืœ Kubernetes ื™ืฉื™ืจื•ืช ืžื”-IDE.

k8s:deploy
ืชืชืงื™ืŸ
ื™ืฆื™ืจืช ืžื–ืœื’ ืขื‘ื•ืจ ืžืฉื™ืžืช ื”ื”ืชืงื ื” ื•ื”ื—ืœืช ื”ืžื ื™ืคืกื˜ื™ื ืฉื ื•ืฆืจื• ืขืœ ืืฉื›ื•ืœ Kubernetes ื‘ืื•ืชื• ืื•ืคืŸ ื›ืžื• ื‘ืžืงืจื” ืฉืœ ืžืฉื™ืžืช ื”ื™ื™ืฉื•ื.

k8s:ืฉืขื•ืŸ
ื—ึฒื‘ึดื™ืœึธื”
ืคืจื™ืกื” ื—ืžื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ื™ื™ืฉื•ื ืขืœ ื™ื“ื™ ืžืขืงื‘ ืื—ืจ ืžืจื—ื‘ ื”ืฉืžื•ืช ืฉืœื•.

ืคืจื™ืกืช ื™ื™ืฉื•ืžื™ Java ื‘-Red Hat OpenShift ื‘ืืžืฆืขื•ืช ืชื•ืกืฃ OpenShift Maven

ื›ื“ื™ ืœืคืจื•ืก ืืช ื”ืืคืœื™ืงืฆื™ื” ืžื”ื“ื•ื’ืžื” ืฉืœื ื• ื‘ืคืœื˜ืคื•ืจืžืช Red Hat OpenShift, ืื ื• ืžืฉืชืžืฉื™ื ื‘ืชื•ืกืฃ OpenShift Maven. ื”ื”ื‘ื“ืœ ื”ื™ื—ื™ื“ ื™ื”ื™ื” ืฉืงื™ื“ื•ืžืช ื”ืžืฉื™ืžื” ืชืฉืชื ื” ืž-k8s ืœ-oc. ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืชื•ืกืฃ Kubernetes Maven ืขื•ืฉื” ื–ืืช ืกึทื•ึธืจ-assemblies, ื•ื”ืชื•ืกืฃ OpenShift Maven - ื”ืจื›ื‘ื•ืช Sxnumxi. ืื ื—ื ื• ืœื ืžื‘ืฆืขื™ื ื›ืœ ืฉื™ื ื•ื™ ื‘ืคืจื•ื™ืงื˜ ืฉืœื ื• ืžืœื‘ื“ ื”ืกืจืช ื”ืžืืคื™ื™ืŸ 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 : $

ืฉื™ืขื•ืจ ื•ื™ื“ืื•

ื›ื“ื™ ืœืœืžื•ื“ ืขื•ื“ ืขืœ ืื™ืš ืœื”ืงืœ ืขืœ ืคื™ืชื•ื— Kubernetes ืขื Eclipse JKube, ืฆืคื” ื‘ืกืจื˜ื•ืŸ ื”ื“ืจื›ื” ื–ื” ืขืœ ืื™ืš ืœืคืจื•ืก ื‘ืžื”ื™ืจื•ืช ื™ื™ืฉื•ื Spring Boot ืคืฉื•ื˜ ื‘-Minkube:

ืžืกืงื ื”

ื‘ืžืืžืจ ื–ื”, ื”ืจืื™ื ื• ื›ื™ืฆื“ Eclipse JKube ืขื•ืฉื” ื—ื™ื™ื ืงืœื™ื ื™ื•ืชืจ ืขื‘ื•ืจ ืžืคืชื— Java ื‘ืขื‘ื•ื“ื” ืขื Kubernetes. ืžื™ื“ืข ื ื•ืกืฃ ืขืœ Eclipse JKube ื ื™ืชืŸ ืœืžืฆื•ื ื‘ื›ืชื•ื‘ืช ืืชืจ ื”ืคืจื•ื™ืงื˜ ื• - GitHub.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”