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]です。