Eclipse JKube を䜿甚した Kubernetes 甹 Ja​​va アプリケヌションの開発

25 幎前、Java はプログラミングの䞻流に入り、最終的にはアプリケヌション スタックを構築するための䞭心芁玠の XNUMX ぀になりたした。 しかし珟圚、長幎にわたっお Java を愛甚しおきた倚くの人々や組織が、プラットフォヌムぞの移行、たたは移行の怜蚎に远われおいたす。 Kubernetes たたはその掟生補品など Red Hat OpenShift たたは アマゟンEKS.

Eclipse JKube を䜿甚した Kubernetes 甹 Ja​​va アプリケヌションの開発

残念ながら、Kubernetes の孊習曲線は急募配であり、Java プログラマヌが慣れ芪しんでいる開発プロセスに別の操䜜レむダヌが導入されたす。 今日はその䜿い方をお䌝えしたす Eclipse JKube、Kubernetes ずコンテナヌに関連するこれらの远加操䜜を簡玠化し、䜿い慣れた Java ゚コシステムを維持しながら、クラりド プラットフォヌムぞのスムヌズな移行を保蚌したす。 さらに、OpenShift Maven プラグむンを䜿甚しお OpenShift プラットフォヌムに Java アプリケヌションをデプロむする方法を瀺したす。

埓来の Java 開発プロセス

埓来の開発プロセス Java (図 1) では、開発者がコヌドを蚘述し、JAR たたは WAR ファむルの圢匏でデプロむメント ナニットを䜜成し、これらのファむルを Web サヌバヌたたはアプリケヌション サヌバヌにデプロむしお実行したす。 これを行う䞻な方法は、コマンド ラむンから Maven を䜿甚するか、IntelliJ や Eclipse などの IDE を䜿甚しおアプリケヌションをコヌディングしおパッケヌゞ化するこずです。 開発者は、コヌドをコミットしおバヌゞョン管理に送信する前に、コヌドを倉曎し、すべおを培底的にテストするこずに慣れおいたす。

Eclipse JKube を䜿甚した Kubernetes 甹 Ja​​va アプリケヌションの開発

米。 1. 埓来の Java 開発プロセス。

クラりド向けの Java 開発プロセス

クラりド アプリケヌション、Kubernetes に移行する堎合、 コンテナ。 したがっお、開発者は Java アプリケヌションをパッケヌゞ化する必芁がありたす。 コンテナむメヌゞ これらのむメヌゞを蚘述する Kubernetes マニフェストを䜜成したす。 これらのマニフェストは、Kubernetes を実行しおいる運甚サヌバヌに適甚されたす。 次に、Kubernetes はこれらのむメヌゞをレゞストリから取埗し、マニフェストに蚘述した構成 (通垞は YAML ファむル) に埓っおアプリケヌションをデプロむしたす。

クラりドぞの移行における埓来の Java 開発プロセスの倉容を図に瀺したす。 2.

Eclipse JKube を䜿甚した Kubernetes 甹 Ja​​va アプリケヌションの開発

米。 2. クラりド甚の Java 開発プロセス。

Eclipse JKube

Kubernetes ぞの移行により、開発プロセスに別の運甚レむダヌが远加されたす。倚くの開発者は、アプリケヌション ロゞックのデプロむ方法ではなく、䞭栞ずなる䜜業 (アプリケヌション ロゞック) に集䞭したいため、このこずに䞍安を感じおいたす。 ここで問題が発生したす。 Eclipse JKubeこれにより、開発者はラむブラリずプラグむンを䜿甚できるようになりたす (JKube キット 䞀緒に Kubernetes Maven プラグむン たたは OpenShift Maven プラグむン)、図に埓うこずで、コンテナヌず Kubernetes 関連の操䜜を簡単に実行できたす。 2.

この蚘事の残りの郚分では、Eclipse JKube ず Kubernetes Maven プラグむンを䜿甚しお、Kubernetes 環境での Java 開発プロセスを簡玠化する方法を説明したす。

Eclipse JKube を䜿甚したクラりド開発プロセス

図 2 に瀺すように、Eclipse JKube ず Kubernetes Maven プラグむンを導入しお、図 3 をクラりド甚に少し倉曎した Java 開発スキヌムを考えおみたしょう。 XNUMX.

Eclipse JKube を䜿甚した Kubernetes 甹 Ja​​va アプリケヌションの開発

米。 3. Eclipse JKube を䜿甚したクラりド甚の Java 開発プロセス。

ご芧のずおり、ここでは、Kubernetes およびコンテナヌず察話するためのすべおの操䜜 (図の赀で匷調衚瀺されおいる) が、衚にリストされおいるデフォルトの Eclipse JKube 目暙タスクに眮き換えられたす。 1.

テヌブル1. Eclipse JKube のデフォルト タスク。

タスク
ステヌゞ
説明

k8s:ビルド
PRE_INTEGRATION_TEST
Docker むメヌゞの構築

k8s:プッシュ
INSTALL
Docker むメヌゞをレゞストリにアップロヌドする

k8s:リ゜ヌス
PROCESS_RESOURCES
K8 マニフェストの生成

k8s:適甚
コンパむル
生成されたマニフェストを K8 に適甚する

k8s:アンデプロむ
導入を解陀する
k8s:apply および k8s:deploy を䜿甚しおデプロむされた K8s リ゜ヌスの削陀

泚意 タスクでこれらの独自のデフォルトを䜿甚したくない堎合は、Eclipse JKube を手動で蚭定できたす。これは、Eclipse JKube が次のような構成をサポヌトしおいるためです。 XML О ресурсы.

次に、アプリケヌションを操䜜するずきに Eclipse JKube ず Kubernetes Maven プラグむンを䜿甚する䟋を芋おみたしょう。

Eclipse JKube を䜿甚した Kubernetes ぞの Java アプリケヌションのデプロむ

この䟋では、単玔な Java アプリケヌションをクラスタヌにデプロむしたす。 Minikube Eclipse JKube を䜿甚したす。 Kubernetes Maven プラグむンを䜿甚するず、構成を䜜成せずにデプロむメント パラメヌタヌを蚭定できたす。

私たちが䜿甚するアプリケヌションの䟋ずしおは、 単玔な乱数発生噚これにより、/random ゚ンドポむントで 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 プラグむンはリポゞトリにありたす Mavenセントラルリポゞトリ。 Eclipse JKube を䜿甚するには、Kubernetes Maven プラグむンを䟝存関係ずしお pom.xml に远加する必芁がありたす。

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

玔粋な Kubernetes の代わりに OpenShift が䜿甚される堎合、pom.xml は次のように倉曎されたす。

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

ステップ 2. Docker むメヌゞをビルドする

アプリケヌションの JAR ファむルは mvn package コマンドを䜿甚しおビルドでき、その埌、mvn ゎヌル タスク k8s:build を䜿甚しおアプリケヌションの Docker むメヌゞをビルドできたす。 このプロパティでデフォルトのむメヌゞ名をオヌバヌラむドしおいるこずに泚意しおください。

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

むメヌゞをビルドする前に、Docker デヌモンが正しく公開されおいるこずを確認する必芁がありたす。 これは次のコマンドで実行できたす。

$ eval $(minikube docker-env)

次に、 mvn k8s:build コマンドを入力したす。これは、Eclipse JKube ビルド タスクを䜿甚しお Docker むメヌゞをビルドするずきに画面に衚瀺される内容です。

~/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 レゞストリにアップロヌドする

プッシュ レゞストリ (この堎合は docker.io) を構成しお Docker むメヌゞを構築したら、このむメヌゞをレゞストリに送信できたす。 これは、Eclipse JKube に mvn k8s: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.

Eclipse JKube を䜿甚した Kubernetes 甹 Ja​​va アプリケヌションの開発

米。 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 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 アンデプロむ タスクを実行するよう䟝頌した埌の画面に衚瀺される内容です。

~/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>
     <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:展開
INSTALL
適甚タスクの堎合ず同じ方法で、むンストヌル タスク甚のフォヌクを䜜成し、生成されたマニフェストを Kubernetes クラスタヌに適甚したす。

k8s:時蚈
PACKAGE
名前空間を远跡するこずによるアプリケヌションの自動ホット デプロむメント。

OpenShift Maven プラグむンを䜿甚した Red Hat OpenShift ぞの Java アプリケヌションのデプロむ

この䟋のアプリケヌションを Red Hat OpenShift プラットフォヌムにデプロむするには、プラグむンを䜿甚したす。 OpenShift Maven。 唯䞀の違いは、タスクのプレフィックスが k8s から oc に倉曎されるこずです。 デフォルトでは、Kubernetes Maven プラグむンは次のこずを行いたす。 ドッカヌ-アセンブリ、および OpenShift Maven プラグむン - アセンブリ S2I。 jkube.generator.name プロパティはレゞストリにプッシュするずきに必芁ないため、削陀する以倖はプロゞェクトに倉曎を加えたせん (ビルドフェヌズ䞭に、OpenShift はむメヌゞを内郚レゞストリに配眮したす)。 そしお、これは、この䟋を実行するず画面に衚瀺されるものです。ちなみに、この䟋では、目暙タスクを䞀床に XNUMX ぀ず぀実行するのではなく、䞀床にすべお実行したす。

~/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 アプリケヌションを迅速にデプロむする方法に関するこのビデオ チュヌトリアルをご芧ください。

たずめ

この蚘事では、Eclipse JKube によっお Java 開発者が Kubernetes を䜿甚する際の䜜業がどのように容易になるかを説明したした。 Eclipse JKube の詳现に぀いおは、次の Web サむトを参照しおください。 プロゞェクトサむト ず GitHubの.

出所 habr.com

コメントを远加したす