ΠΡΠ΅Π΄ΠΈ 25 Π³ΠΎΠ΄ΠΈΠ½ΠΈ Java Π½Π°Π²Π»Π΅Π·Π΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΠ½Π° Π² Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ, ΠΎΠΊΠΎΠ»ΠΎ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Ρ ΡΡΠ΅ΠΊΠΎΠ²Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ½Π΅Ρ ΠΎΠ±Π°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΠ° ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ Π»ΠΎΡΠ»Π½ΠΈ ΠΊΡΠΌ Java ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΡΠ° Π·Π°Π΅ΡΠΈ Ρ ΠΌΠΈΠ³ΡΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΠΎΠ±ΠΌΠΈΡΠ»ΡΡ ΠΌΠΈΠ³ΡΠΈΡΠ°Π½Π΅ ΠΊΡΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°.
ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, Kubernetes ΠΈΠΌΠ° ΡΡΡΡΠΌΠ½Π° ΠΊΡΠΈΠ²Π° Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ²Π΅ΠΆΠ΄Π° Π΄ΡΡΠ³ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠ»ΠΎΠΉ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, Ρ ΠΊΠΎΠΉΡΠΎ Java ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈΡΠ΅ ΡΠ° ΡΠ²ΠΈΠΊΠ½Π°Π»ΠΈ. ΠΠ½Π΅Ρ ΡΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅
Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Java
Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅
ΠΡΠΈΠ·. 1. Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Java.
ΠΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Java Π·Π° ΠΎΠ±Π»Π°ΠΊΠ°
ΠΡΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΊΡΠΌ ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Kubernetes ΠΈ
ΠΠ΅ΡΠ°ΠΌΠΎΡΡΠΎΠ·Π°ΡΠ° Π½Π° ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Java ΠΏΡΠΈ ΠΏΡΠ΅Ρ ΠΎΠ΄Π° ΠΊΡΠΌ ΠΎΠ±Π»Π°ΠΊΠ° Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠΈΠ³. 2.
ΠΡΠΈΠ·. 2. ΠΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Java Π·Π° ΠΎΠ±Π»Π°ΠΊΠ°.
Eclipse JKube
ΠΠΈΠ³ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΊΡΠΌ Kubernetes Π΄ΠΎΠ±Π°Π²Ρ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠ»ΠΎΠΉ ΠΊΡΠΌ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΡΠ° Π½Π΅ΡΠ²Π½ΠΈ Π·Π° ΡΠΎΠ²Π°, Π·Π°ΡΠΎΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΡΠ΅ ΡΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠ°Ρ Π²ΡΡΡ
Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠΈ ΡΠ°Π±ΠΎΡΠ° β Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ β Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ°Ρ. Π ΡΡΠΊ Π²Π»ΠΈΠ·Π° Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
Π ΠΎΡΡΠ°Π½Π°Π»Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΎΠΏΡΠΎΡΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Java Π² ΡΡΠ΅Π΄Π°ΡΠ° Π½Π° Kubernetes, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Eclipse JKube Ρ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°ΡΠ° Kubernetes Maven.
ΠΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π² ΠΎΠ±Π»Π°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Eclipse JKube
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π»Π΅ΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΡ Π΅ΠΌΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Java Π·Π° ΠΎΠ±Π»Π°ΠΊΠ° ΠΎΡ Π€ΠΈΠ³. 2, Π²ΡΠ²Π΅ΠΆΠ΄Π°ΠΉΠΊΠΈ Π² Π½Π΅Ρ Eclipse JKube ΠΈ Kubernetes Maven Plugin, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π€ΠΈΠ³. 3.
ΠΡΠΈΠ·. 3. ΠΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Java Π·Π° ΠΎΠ±Π»Π°ΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° 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 ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Kubernetes Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Eclipse JKube
Π ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ Π²Π½Π΅Π΄ΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎ Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ»ΡΡΡΠ΅Ρ
ΠΠ°ΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅
~/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 Π΅ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ
<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 package ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° 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 ΠΈ ΡΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ Π½Π° Π΅ΠΊΡΠ°Π½Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° 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:
~/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.
ΠΡΠΈΠ·. 4. ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΎ Π΄ΠΎ ΡΠ΅Π³ΠΈΡΡΡΡΠ°, ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π² Docker Hub.
Π‘ΡΡΠΏΠΊΠ° 4. ΠΠ΅Π½Π΅ΡΠΈΡΠ°ΠΉΡΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π½Π° Kubernetes Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ
Π ΡΠ°ΠΊΠ°, ΡΡΠ±ΡΠ°Ρ
ΠΌΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈ Π½Π° Kubernetes. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ²Π°, Eclipse JKube ΠΈΠΌΠ° Π·Π°Π΄Π°ΡΠ°, ΠΊΠΎΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ²ΡΡΠ΄ΠΈ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Java ΡΠ°ΠΌΠΊΠ° (
Π Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΡΠ°Π²ΡΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Eclipse JKube Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ Π·Π° ΡΡΠ»ΡΠ³Π°ΡΠ° Ρ ΡΠΈΠΏ ClusterIP. Π Π΅Π΄Π²Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°, Π·Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΡΠΈΠΏΠ° ΡΡΠ»ΡΠ³Π° Π½Π° NodePort. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ:
<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
ΠΠ΅ΡΠ΅ ΡΠΌΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ: Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΌΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈ Π½Π° ΡΠ΅ΡΡΡΡΠΈ. Π‘Π΅Π³Π° Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΡΠ°Π²Π°, Π΅ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes. ΠΠ° Π΄Π° Π²Π½Π΅Π΄ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° 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. ΠΡΠΌΠ΅Π½Π΅ΡΠ΅ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡ ΠΊΠ»ΡΡΡΠ΅ΡΠ° 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.
ΠΠ°Π΄Π°ΡΠ°
Π΅ΡΠ°ΠΏ
ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠΠΠΠΠΠ Π
ΠΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ Π½Π° Kubernetes.
ΠΠΠΠΠ’
ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ ΠΏΠΎΡΡ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ Π½Π° Kubernetes, Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ IDE.
ΠΠΠ‘Π’ΠΠ
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π·Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈ ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½, ΠΊΠ°ΠΊΡΠΎ Π² ΡΠ»ΡΡΠ°Ρ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅.
ΠΠΠΠΠ’
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π³ΠΎΡΠ΅ΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π· ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°.
Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Red Hat OpenShift Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°ΡΠ° OpenShift Maven
ΠΠ° Π΄Π° Π²Π½Π΅Π΄ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡ Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° 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 : $
ΠΠΈΠ΄Π΅ΠΎ ΡΡΠΎΠΊ
ΠΠ° Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° ΡΠ»Π΅ΡΠ½ΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Kubernetes Ρ Eclipse JKube, Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΠΎΠ·ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΡΡΠΎΠΊ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π±ΡΡΠ·ΠΎ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Spring Boot Π½Π° Minikube:
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°Ρ
ΠΌΠ΅ ΠΊΠ°ΠΊ Eclipse JKube ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΆΠΈΠ²ΠΎΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° Java ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Kubernetes. ΠΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Eclipse JKube ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π°
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com