Cloud FoundryへのSpring Bootアプリケーションのデプロイ

Cloud FoundryへのSpring Bootアプリケーションの展開

1. 概要

クラウドファウンドリーへの春のブートアプリケーションをデプロイすると、簡単な運動です。 このチュートリアルでは、その方法を説明します。

2. SpringCloudの依存関係

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


    
        
            org.springframework.cloud
            spring-cloud-dependencies
            Finchley.SR1
            pom
            import
        
    

Maven Centralspring-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です。