1概要

Spring BootアプリケーションをCloud Foundryにデプロイするのは簡単な作業です。このチュートリアルでは、その方法を説明します。


2 Spring Cloudの依存関係

このプロジェクトにはSpring Cloudプロジェクトの新しい依存関係が必要になるため、Spring Cloud Dependencies BOMを追加します。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

これで、Cloud Foundry用に別のビルドを維持したいので、Mavenの

pom.xmlに

cloudfoundry__という名前のプロファイルを作成します。

パッケージの名前を設定するために、コンパイラの除外とSpring Bootプラグインも追加します。

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>** ** /logback.xml</exclude>
            </excludes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <finalName>${project.name}-cf</finalName>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>** ** /cloud/config/** .java</exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

また、クラウド固有のファイルを通常のビルドから除外したいので、Mavenコンパイラプラグインにグローバルプロファイルの除外を追加します。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>** ** /cloud/** .java</exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

それから、Cloud FoundryをサポートするSpring Cloud StarterとSpring Cloud Connectorsライブラリーを追加する必要があります。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cloud-connectors</artifactId>
</dependency>


3クラウドファウンドリ設定

このチュートリアルを実行するには、試用版https://run.pivotal.io/[here]に登録するか、https://github.com/cloudfoundry-incubator/cfdev[Nativeの構成済み開発環境をダウンロードする必要があります。[Linux]またはhttps://docs.pivotal.io/pcf-dev/[Virtual Box]。

さらに、Cloud Foundry CLIをインストールする必要があります。手順はhttps://docs.run.pivotal.io/cf-cli/install-go-cli.html[ここ]です。

Cloud Foundryプロバイダーに登録すると、API URLが使用可能になります(左側の

Tools

オプションを使用して戻ることができます)。

アプリケーションコンテナを使用すると、サービスをアプリケーションにバインドできます。

次に、Cloud Foundry環境にログインしましょう。

cf login -a <url>

  • Cloud Foundryマーケットプレースは、データベース、メッセージング、Eメール、モニタリング、ロギングなどのサービスのカタログです。ほとんどのサービスは無料または試用プランを提供します。

マーケットプレイスで「MySQL」を検索し、アプリケーション用のサービスを作成しましょう。

cf marketplace | grep MySQL

>
cleardb     spark, boost** , amp** , shock**          Highly available MySQL for your Apps.

出力には、説明に「MySQL」と表示されているサービスがリストされています。 PCFでは、MySQLサービスは

cleardb

という名前で、フリーではないプランにはアスタリスクが付いています。

次に、以下を使用してサービスの詳細をリストします。

cf marketplace -s cleardb

>
service plan description                                                                 free or paid
spark        Great for getting started and developing your apps                             free
boost        Best for light production or staging your applications                         paid
amp          For apps with moderate data requirements                                       paid
shock        Designed for apps where you need real MySQL reliability, power and throughput  paid

それでは、

spring-bootstrap-db

という名前の無料のMySQLサービスインスタンスを作成します。

cf create-service cleardb spark spring-bootstrap-db


4アプリケーション構成

次に、

AbstractCloudConfig

を拡張して

org.baeldung.cloud.config

というパッケージ内に

__DataSource


を作成する

@ Configuration__アノテーション付きクラスを追加します。

@Configuration
@Profile("cloud")
public class CloudDataSourceConfig extends AbstractCloudConfig {

    @Bean
    public DataSource dataSource() {
        return connectionFactory().dataSource();
    }
}


@ Profile( “cloud”)

を追加すると、ローカルテストを実行するときにCloud Connectorがアクティブにならないようになります。また、統合テストに

@ ActiveProfiles(profiles = \ {“ local”})

を追加します。

その後、次のようにしてアプリケーションをビルドします。

mvn clean install spring-boot:repackage -P cloudfoundry

また、サービスをアプリケーションにバインドするために

manifest.yml

ファイルを提供する必要があります。

通常、

manifest.yml

ファイルをプロジェクトフォルダーに配置しますが、この場合は複数のクラウドネイティブプロバイダーへのデプロイをデモンストレーションするので、

cloudfoundry

フォルダーを作成します。

---
applications:
- name: spring-boot-bootstrap
  memory: 768M
  random-route: true
  path: ../target/spring-boot-bootstrap-cf.jar
  env:
    SPRING__PROFILES__ACTIVE: cloud,mysql
  services:
  - spring-bootstrap-db


5展開

アプリケーションのデプロイは、次のように簡単になりました。

cd cloudfoundry
cf push

Cloud FoundryはJavaビルドパックを使用してアプリケーションをデプロイし、アプリケーションへのランダムな経路を作成します。

ログファイルの最後の数エントリは、次のようにして表示できます。

cf logs spring-boot-bootstrap --recent

あるいは、ログファイルを調整することもできます。

cf logs spring-boot-bootstrap

最後に、アプリケーションをテストするためのルート名が必要です。

cf app spring-boot-bootstrap

>
name:              spring-boot-bootstrap
requested state:   started
routes:            spring-boot-bootstrap-delightful-chimpanzee.cfapps.io
last uploaded:     Thu 23 Aug 08:57:20 SAST 2018
stack:             cflinuxfs2
buildpacks:        java-buildpack=v4.15-offline-...

type:           web
instances:      1/1
memory usage:   768M
     state     since                  cpu    memory           disk
#0   running   2018-08-23T06:57:57Z   0.5%   290.9M of 768M   164.7M of 1G

次のコマンドを実行すると、新しい本が追加されます。

curl -i --request POST \
    --header "Content-Type: application/json" \
    --data '{"title": "The Player of Games", "author": "Iain M. Banks"}' \
    https://<app-route>/api/books
#OR
http POST https://<app-route>/api/books title="The Player of Games" author="Iain M. Banks"

そして、このコマンドはすべての本をリストします:

curl -i https://<app-route>/api/books
#OR
http https://<app-route>/api/books

>
HTTP/1.1 200 OK
[    {
        "author": "Iain M. Banks",
        "id": 1,
        "title": "Player of Games"
    },
    {
        "author": "J.R.R. Tolkien",
        "id": 2,
        "title": "The Hobbit"
    }]----

[[scaling]]

===  **  6. アプリケーションのスケーリング**

最後に、Cloud Foundryでアプリケーションを拡張するのは、__scale__コマンドを使用するのと同じくらい簡単です。

[source,bash,gutter:,true]

cf scale spring-cloud-bootstrap-cloudfoundry <options>
Options:
-i <instances>
-m <memory-allocated> # Like 512M or 1G
-k <disk-space-allocated> # Like 1G or 2G
-f # Force restart without prompt

不要になったアプリケーションは必ず削除してください。

[source,actionscript3,gutter:,true]

cf delete spring-cloud-bootstrap-cloudfoundry

[[conclusions]]

===  **  7. 結論**

この記事では、Spring Bootを使用してクラウドネイティブアプリケーションの開発を簡素化するSpring Cloudライブラリについて説明しました。 Cloud Foundry CLIを使用したデプロイメントについては、https://docs.cloudfoundry.org/cf-cli/cf-help.html[ここ]を参照してください。

CLI用の追加のプラグインはhttps://plugins.cloudfoundry.org/[プラグインレポジトリ]にあります。

ここにある私たちの例の完全なソースコードは、いつものように、https://github.com/eugenp/tutorials/tree/master/spring-boot-bootstrap[GitHubで動く]です。