SpringBootアプリケーションをOpenShiftにデプロイします
1. 概要
このチュートリアルでは、 Bootstrap a Simple Application usingSpring BootチュートリアルからOpenshiftにアプリケーションをデプロイする方法を示します。
この一環として、次のことを行います。
- Openshift開発ツールをインストールして設定します。
- OpenshiftプロジェクトとMySQLデプロイメントを作成します。
- Spring CloudKubernetes用にアプリケーションを構成します。
- Fabric8 Mavenプラグインを使用してコンテナーにアプリケーションを作成してデプロイし、アプリケーションをテストしてスケーリングします。
2. Openshift設定
まず、 Minishift、ローカルシングルノードOpenshiftクラスター、および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
次に、OpenshiftConsoleを使用してMySQLサービスを作成します。 次を使用してブラウザのURLを起動できます。
minishift console
自動的にログインしない場合は、developer/developer。を使用してください。
baeldung-demo という名前のプロジェクトを作成してから、カタログからMySQLデータベースサービスを作成します。 データベースサービスにはbaeldung-db、MySQLデータベース名には baeldung_db を指定し、他の値はデフォルトのままにします。
これで、データベースにアクセスするためのサービスとシークレットができました。 データベース接続のURLに注意してください: mysql:// baeldung-db:3306 / baeldung_db
また、アプリケーションがKubernetesSecretsやConfigMapsなどの設定を読み取れるようにする必要があります。
oc create rolebinding default-view --clusterrole=view \
--serviceaccount=baeldung-demo:default --namespace=baeldung-demo
3. SpringCloudKubernetesの依存関係
Spring Cloud Kubernetes プロジェクトを使用して、OpenshiftをサポートするKubernetesのクラウドネイティブAPIを有効にします。
<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>Greenwich.RELEASE</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>
また、 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プロファイルとKubernetesシークレットが環境変数として挿入されるように構成を提供する必要があります。
src / main / fabric8 にYAMLフラグメントを作成して、Fabric8Mavenプラグインがデプロイメント構成の作成時にそれを使用するようにします。
また、Fabric8のデフォルトでは、 / actuator / health:ではなく / health にアクセスしようとするため、SpringBootアクチュエーターのセクションも追加する必要があります。
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
次に、ConfigMapを openshift / configmap.ymlに保存します。これには、application.propertiesのデータとMySQLURLが含まれます。
apiVersion: v1
kind: ConfigMap
metadata:
name: spring-boot-bootstrap
data:
application.properties: |-
spring.datasource.url=jdbc:mysql://baeldung-db:3306/baeldung_db
コマンドラインクライアントを使用してOpenshiftと対話する前に、にログインする必要があります。 Webコンソールの右上には、「ログインコマンドのコピー」というラベルの付いたドロップダウンメニューを選択できるユーザーアイコンがあります。 次に、シェルで使用します。
oc login https://192.168.42.122:8443 --token=<some-token>
正しいプロジェクトを使用していることを確認しましょう。
oc project baeldung-demo
次に、 ConfigMap :をアップロードします
oc create -f openshift/configmap.yml
5. 展開
デプロイ中に、Fabric8Mavenプラグインは構成されたポートを判別しようとします。 サンプルアプリケーションの既存の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は、この記事の範囲を超えて、パフォーマンスの管理とスケーリングのための幅広いオプションを提供します。
7. 結論
このチュートリアルでは、次のことを行います。
- Openshift開発ツールとローカル環境をインストールして設定しました
- MySQLサービスをデプロイしました
- データベース接続プロパティを提供するためのConfigMapおよびDeployment構成を作成しました
- 構成済みのSpringBootアプリケーション用のコンテナーを構築してデプロイし、
- アプリケーションをテストしてスケーリングしました。
詳細については、詳細なOpenshiftドキュメントを確認してください。
ここでの例の完全なソースコードは、いつものように、GitHub上にあります。