Cloud FoundryへのSpring Bootアプリケーションの展開
1. 概要
クラウドファウンドリーへの春のブートアプリケーションをデプロイすると、簡単な運動です。 このチュートリアルでは、その方法を説明します。
2. SpringCloudの依存関係
このプロジェクトではSpringCloudプロジェクトに新しい依存関係が必要になるため、SpringCloudの依存関係BOMを追加します。
org.springframework.cloud
spring-cloud-dependencies
Finchley.SR1
pom
import
Maven Centralでspring-cloud-dependenciesライブラリの最新バージョンを見つけることができます。
ここで、Cloud Foundryの個別のビルドを維持したいので、Mavenpom.xml.にcloudfoundryという名前のプロファイルを作成します。
また、コンパイラの除外とSpring Bootプラグインを追加して、パッケージの名前を構成します。
src/main/resources
**/logback.xml
org.springframework.boot
spring-boot-maven-plugin
${project.name}-cf
org.apache.maven.plugins
maven-compiler-plugin
**/cloud/config/*.java
また、クラウド固有のファイルを通常のビルドから除外するため、Mavenコンパイラプラグインにグローバルプロファイル除外を追加します。
org.apache.maven.plugins
maven-compiler-plugin
**/cloud/*.java
次に、Cloud Foundryのサポートを提供するSpring Cloud StarterおよびSpring Cloud Connectorsライブラリを追加する必要があります。
org.springframework.cloud
spring-cloud-starter
org.springframework.boot
spring-boot-starter-cloud-connectors
3. CloudFoundryの構成
このチュートリアルを実行するには、トライアルhereに登録するか、Native LinuxまたはVirtual Box用に事前構成された開発環境をダウンロードする必要があります。
さらに、Cloud Foundry CLIをインストールする必要があります。 命令はhereです。
Cloud Foundryプロバイダーに登録すると、API URLが利用可能になります(左側のToolsオプションに従ってアクセスできます)。
アプリケーションコンテナにより、サービスをアプリケーションにバインドできます。 次に、CloudFoundry環境にログインしましょう。
cf login -a
データベース、メッセージング、電子メール、監視、ロギングなどのThe Cloud Foundry Marketplace is a catalog of services。 ほとんどのサービスは無料または試用プランを提供します。
マーケットプレイスで「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.example.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:///api/books
#OR
http POST https:///api/books title="The Player of Games" author="Iain M. Banks"
そして、このコマンドはすべての本をリストします:
curl -i https:///api/books
#OR
http https:///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:
-i
-m # Like 512M or 1G
-k # Like 1G or 2G
-f # Force restart without prompt
アプリケーションが不要になったら、忘れずに削除してください。
cf delete spring-cloud-bootstrap-cloudfoundry
7. 結論
この記事では、Spring Bootを使用したクラウドネイティブアプリケーションの開発を簡素化するSpring Cloudライブラリを取り上げました。 Cloud Foundry CLIを使用したデプロイメントは、十分に文書化されたhereです。
CLI用の追加のプラグインはplugin repositoryで利用できます。
ここでの例の完全なソースコードは、いつものように、over on GitHubです。