Spring BootアプリケーションをOpenShiftにデプロイする
1. 概要
このチュートリアルでは、Bootstrap a Simple Application using Spring BootのチュートリアルからOpenshiftにアプリケーションをデプロイする方法を示します。
この一環として、次のことを行います。
-
Openshift開発ツールをインストールして構成します。
-
OpenshiftプロジェクトとMySQLデプロイメントを作成します。
-
Spring Cloud Kubernetes用にアプリケーションを構成します。
-
Fabric8 Maven pluginを使用してコンテナーにアプリケーションを作成およびデプロイし、アプリケーションをテストおよびスケーリングします。
2. Openshift設定
まず、we need to install Minishift, the local single-node Openshift cluster, and the Openshift client。
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 Consoleを使用してMySQLサービスを作成します。 次を使用してブラウザのURLを起動できます。
minishift console
自動的にログインしない場合は、developer/developer.を使用してください
example-demoという名前のプロジェクトを作成してから、カタログからMySQLデータベースサービスを作成します。 データベースサービスにexample-db、MySQLデータベース名にexample_db を指定し、他の値はデフォルトのままにします。
これで、データベースにアクセスするためのサービスと秘密ができました。 データベース接続のURLに注意してください:mysql://example-db:3306/example_db
また、アプリケーションがKubernetes SecretsやConfigMapsなどの構成を読み取れるようにする必要もあります。
oc create rolebinding default-view --clusterrole=view \
--serviceaccount=example-demo:default --namespace=example-demo
3. Spring CloudKubernetesの依存関係
Spring Cloud Kubernetesプロジェクトを使用して、Openshiftを支えるKubernetesのクラウドネイティブAPIを有効にします。
openshift
org.springframework.cloud
spring-cloud-kubernetes-dependencies
0.3.0.RELEASE
pom
import
org.springframework.cloud
spring-cloud-dependencies
Finchley.SR2
pom
import
org.springframework.cloud
spring-cloud-starter-kubernetes-config
org.springframework.boot
spring-boot-starter-actuator
また、Fabric8 Maven pluginを使用して、コンテナをビルドおよびデプロイします。
io.fabric8
fabric8-maven-plugin
3.5.37
fmp
resource
build
4. アプリケーション構成
今we need to provide configuration to ensure the correct Spring Profiles and Kubernetes Secrets are injected as environmental variables。
Let’s create a YAML fragment in src/main/fabric8。これにより、Fabric8Mavenプラグインはデプロイメント構成の作成時にそれを使用します。
また、Fabric8のデフォルトでは、/actuator/health:ではなく/healthにアクセスしようとするため、SpringBootアクチュエーターのセクションも追加する必要があります。
spec:
template:
spec:
containers:
- env:
- name: SPRING_PROFILES_ACTIVE
value: mysql
- name: SPRING_DATASOURCE_USER
valueFrom:
secretKeyRef:
name: example-db
key: database-user
- name: SPRING_DATASOURCE_PASSWORD
valueFrom:
secretKeyRef:
name: example-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
次に、we’ll save a ConfigMap in*openshift/configmap.yml*,には、MySQL URLを含むapplication.propertiesのデータが含まれます。
apiVersion: v1
kind: ConfigMap
metadata:
name: spring-boot-bootstrap
data:
application.properties: |-
spring.datasource.url=jdbc:mysql://example-db:3306/example_db
Before interacting with Openshift using the command line client we need to log in。 Webコンソールの右上には、「ログインコマンドのコピー」というラベルの付いたドロップダウンメニューを選択できるユーザーアイコンがあります。 次に、シェルで使用します。
oc login https://192.168.42.122:8443 --token=
正しいプロジェクトを使用していることを確認しましょう。
oc project example-demo
そして、we upload the 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
example-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-example-demo.192.168.42.122.nip.io spring-boot-bootstrap 8080 None
それでは、本を追加して、アプリケーションが機能していることを確認しましょう。
http POST http://spring-boot-bootstrap-example-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は、この記事の範囲を超えて、managing performance and scalingの幅広いオプションを提供します。
7. 結論
このチュートリアルでは、次のことを行います。
-
Openshift開発ツールとローカル環境をインストールおよび構成しました
-
MySQLサービスをデプロイしました
-
データベース接続プロパティを提供するConfigMapおよびDeployment構成を作成しました
-
構成済みのSpring Bootアプリケーション用のコンテナを構築および展開し、
-
アプリケーションをテストおよびスケーリングしました。
詳細については、the detailed Openshift documentationを確認してください。
ここでの例の完全なソースコードは、いつものように、over on GitHubです。