Spring BootアプリケーションをOpenShiftにデプロイする
1概要
このチュートリアルでは、http://www.baeldung.com/spring-boot-start[Spring Bootを使用してシンプルなアプリケーションをブートストラップ]のチュートリアルからhttps://www.openshift.co.jpにアプリケーションをデプロイする方法を示します。/[Openshift]
その一環として、
-
Openshift開発ツールをインストールして設定します。
-
OpenshiftプロジェクトとMySQLのデプロイを作成します。
-
アプリケーションを設定します
-
を使用してコンテナにアプリケーションを作成してデプロイする
Fabric8 Mavenプラグイン
そしてアプリケーションのテストとスケーリングを行います。
2オープンシフト構成
まず、
install Minishift
、ローカルのシングルノードOpenshiftクラスター、およびhttps://docs.okdが必要です。 io/latest/cli
reference/get
started__cli.html#installation-the-cli[openshiftクライアント]
。
Minishiftを使用する前に、開発者ユーザーの権限を設定する必要があります。
minishift addons install --defaults
minishift addons enable admin-user
minishift start
oc adm policy --as system:admin add-cluster-role-to-user cluster-admin developer
それでは、Openshiftコンソールを使ってMySQLサービスを作成したいと思います。以下を使用してブラウザのURLを起動できます。
minishift console
自動的にログインしていない場合は、
developer/developer.
を使用してください。
baeldung-demo
という名前のプロジェクトを作成してから、カタログからMySQLデータベースサービスを作成します。データベースサービスに
baeldung-db
を、MySQLデータベース名に
__baeldung
dbを指定し、その他の値はデフォルトのままにします。
データベースにアクセスするためのサービスと秘密があります。データベース接続のURLをメモしてください:
mysql://baeldung-db:3306/baeldung
db__
また、Kubernetes SecretsやConfigMapsのようにアプリケーションに設定の読み取りを許可する必要があります。
oc create rolebinding default-view --clusterrole=view \
--serviceaccount=baeldung-demo:default --namespace=baeldung-demo
3 Spring Cloud Kubernetesの依存関係
-
Openshiftを支えるKubernetesのクラウドネイティブAPIを有効にするためにhttps://github.com/spring-cloud/spring-cloud-kubernetes[Spring Cloud Kubernetes]プロジェクトを使用します
<profile>
<id>openshift</id>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-kubernetes-dependencies</artifactId>
<version>0.3.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
</profile>
-
コンテナの構築とデプロイにはhttps://github.com/fabric8io/fabric8-maven-plugin[Fabric8 Mavenプラグイン]も使用します。**
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>fabric8-maven-plugin</artifactId>
<version>3.5.37</version>
<executions>
<execution>
<id>fmp</id>
<goals>
<goal>resource</goal>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
4アプリケーション構成
-
正しいSpring ProfilesとKubernetes Secretsが環境変数として注入されるように設定する必要があります。
-
デプロイメント設定を作成するときにFabric8 Mavenプラグインがそれを使用するように、
src/main/fabric8
** にYAMLフラグメントを作成しましょう。
Fabric8のデフォルトでは
/actuator/healthの代わりに
/health__にアクセスしようとするため、Spring Bootアクチュエータのセクションも追加する必要があります。
spec:
template:
spec:
containers:
- env:
- name: SPRING__PROFILES__ACTIVE
value: mysql
- name: SPRING__DATASOURCE__USER
valueFrom:
secretKeyRef:
name: baeldung-db
key: database-user
- name: SPRING__DATASOURCE__PASSWORD
valueFrom:
secretKeyRef:
name: baeldung-db
key: database-password
livenessProbe:
httpGet:
path:/actuator/health
port: 8080
scheme: HTTP
initialDelaySeconds: 180
readinessProbe:
httpGet:
path:/actuator/health
port: 8080
scheme: HTTP
initialDelaySeconds: 30
次に、
openshift/configmap.yml ** にConfigMap
を保存します。これには、MySQLのURLを持つ
application.properties__のデータが含まれます。
apiVersion: v1
kind: ConfigMap
metadata:
name: spring-boot-bootstrap
data:
application.properties: |-
spring.datasource.url=jdbc:mysql://baeldung-db:3306/baeldung__db
-
コマンドラインクライアントを使用してOpenshiftとやり取りする前に、ログインする必要があります** 。 Webコンソールの右上には、「Copy Login Command」というラベルの付いたドロップダウンメニューを選択できるユーザーアイコンがあります。
次にシェルで使用します。
oc login https://192.168.42.122:8443 --token=<some-token>
正しいプロジェクトを使用していることを確認しましょう。
oc project baeldung-demo
そして
私たちは
ConfigMapをアップロードします
_:
_
oc create -f openshift/configmap.yml
5展開
デプロイ中に、Fabric8 Mavenプラグインは設定されたポートを特定しようとします。サンプルアプリケーションの既存の
application.properties
ファイルでは、式を使用してポートを定義しています。プラグインはこれを解析できません。したがって、次の行にコメントを付けます。
#server.port=${port:8080}
現在の
application.properties
から。
これで展開の準備が整いました。
mvn clean fabric8:deploy -P openshift
アプリケーションの実行が確認されるまで、デプロイメントの進行状況を確認できます。
oc get pods -w
リストを提供する必要があります。
NAME READY STATUS RESTARTS AGE
baeldung-db-1-9m2cr 1/1 Running 1 1h
spring-boot-bootstrap-1-x6wj5 1/1 Running 0 46s
アプリケーションをテストする前に、ルートを決定する必要があります。
oc get routes
現在のプロジェクトのルートを印刷します。
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
spring-boot-bootstrap spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io spring-boot-bootstrap 8080 None
それでは、本を追加してアプリケーションが機能していることを確認しましょう。
http POST http://spring-boot-bootstrap-baeldung-demo.192.168.42.122.nip.io/api/books \
title="The Player of Games" author="Iain M. Banks"
次の出力が期待されます。
HTTP/1.1 201
{
"author": "Iain M. Banks",
"id": 1,
"title": "The Player of Games"
}
6. アプリケーションのスケーリング
2つのインスタンスを実行するようにデプロイメントを拡張しましょう。
oc scale --replicas=2 dc spring-boot-bootstrap
そして、以前と同じ手順を使用して、展開の監視、ルートの取得、およびエンドポイントのテストを行うことができます。
Openshiftはこの記事の範囲を超えてhttps://docs.openshift.com/container-platform/3.11/scaling__performance/index.html[管理パフォーマンスとスケーリング]のための幅広いオプションを提供します。
7. 結論
このチュートリアルでは、
-
Openshift開発ツールとローカルのインストールと設定
環境
** MySQLサービスをデプロイしました
-
データベースを提供するためのConfigMapおよびDeployment構成を作成しました
接続プロパティ
** 私たちの設定したSpring Boot用のコンテナを構築してデプロイしました
アプリケーション
** アプリケーションをテストして拡張しました。
詳細については、https://docs.openshift.com/container-platform[Openshiftの詳細なドキュメント]をチェックしてください。
ここにある私たちの例の完全なソースコードは、いつものように、https://github.com/eugenp/tutorials/tree/master/spring-boot-bootstrap[over the GitHub]です。