SpringBootアプリケーションをCloudFoundryにデプロイする
1. 概要
SpringBootアプリケーションをCloudFoundryにデプロイするのは簡単な演習です。 このチュートリアルでは、その方法を説明します。
2. 春のクラウドの依存関係
このプロジェクトではSpring Cloudプロジェクトに新しい依存関係が必要になるため、Spring Cloud依存関係BOMを追加します。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwhich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
spring-cloud-dependencies ライブラリの最新バージョンは、 MavenCentralにあります。
ここで、Cloud Foundryの個別のビルドを維持したいので、Mavenpom.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>
次に、CloudFoundryのサポートを提供するSpringCloudStarterおよびSpringCloudConnectorsライブラリを追加する必要があります。
<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. CloudFoundryの構成
このチュートリアルを実行するには、試用版ここに登録するか、 NativeLinuxまたはVirtualBox用に事前構成された開発環境をダウンロードする必要があります。
さらに、CloudFoundryCLIをインストールする必要があります。 手順はこちらです。
Cloud Foundryプロバイダーに登録すると、API URLが利用可能になります(左側の Tools オプションに従ってアクセスできます)。
アプリケーションコンテナを使用すると、サービスをアプリケーションにバインドできます。 次に、CloudFoundry環境にログインしましょう。
cf login -a <url>
Cloud Foundry Marketplaceは、データベース、メッセージング、メール、モニタリング、ロギングなどのサービスのカタログです。 ほとんどのサービスは、無料または試用プランを提供します。
マーケットプレイスで「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を拡張する@Configurationアノテーション付きクラスを追加して、org.baeldung.cloud.configという名前のパッケージにDataSourceを作成します。 ]:
@Configuration
@Profile("cloud")
public class CloudDataSourceConfig extends AbstractCloudConfig {
@Bean
public DataSource dataSource() {
return connectionFactory().dataSource();
}
}
@Profile(“ cloud”)を追加すると、ローカルテストを実行するときにCloudConnectorがアクティブにならないようになります。 また、統合テストに @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"
}
]
6. アプリケーションのスケーリング
最後に、Cloud Foundryでのアプリケーションのスケーリングは、scaleコマンドを使用するのと同じくらい簡単です。
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
アプリケーションが不要になったら、忘れずに削除してください。
cf delete spring-cloud-bootstrap-cloudfoundry
7. 結論
この記事では、SpringBootを使用してクラウドネイティブアプリケーションの開発を簡素化するSpringCloudライブラリについて説明しました。 Cloud Foundry CLIを使用したデプロイについては、ここで詳しく説明されています。
CLI用の追加のプラグインは、プラグインリポジトリで入手できます。
ここでの例の完全なソースコードは、いつものように、GitHub上にあります。