1前書き

この記事では、Spring Boot Cloud CLI(またはCloud CLIと略して)について説明します。このツールは、Spring Boot CLIに対する一連のコマンドラインの機能強化を提供し、Spring Cloudの展開をさらに抽象化および簡素化するのに役立ちます。

CLIは2016年後半に導入され、コマンドライン、

.yml

設定ファイル、およびGroovyスクリプトを使用して、標準のSpring Cloudサービスを迅速に自動設定およびデプロイすることができます。


2セットアップ

Spring Boot Cloud CLI 1.3.xにはSpring Boot CLI 1.5.xが必要です。https://search.maven.org/classic/#search%7Cga%7C1%7Ca%3AからSpring Boot CLIの最新バージョンを入手してください。 %22spring-boot-cli%22[Maven Central](https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started-installation-spring-boot.html#getting-started -manual-cli-installation[インストール手順])とhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22spring-cloud-cli%からのクラウドCLIの最新バージョン22[Mavenリポジトリ](https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-cli/[春の公式リポジトリ])!

CLIがインストールされ使用可能になっていることを確認するには、単に実行します。

$ spring --version

Spring Boot CLIのインストールを確認したら、最新の安定バージョンのCloud CLIをインストールします。

$ spring install org.springframework.cloud:spring-cloud-cli:1.3.2.RELEASE

その後、クラウドCLIを確認します。

$ spring cloud --version

高度なインストール機能は、公式のクラウドCLI

page

にあります。


3デフォルトのサービスと設定

CLIは、単一行コマンドで実行および展開できる7つのコアサービスを提供します。



http://localhost:8888


でCloud Configサーバーを起動するには

$ spring cloud configserver



http://localhost:8761


でEurekaサーバーを起動するには

$ spring cloud eureka



http://localhost:9095


でH2サーバーを起動するには

$ spring cloud h2



http://localhost:9091


でKafkaサーバーを起動するには

$ spring cloud kafka



http://localhost:9411


でZipkinサーバーを起動するには

$ spring cloud zipkin

$ spring cloud dataflow



http://localhost:7979


でHystrixダッシュボードを起動するには

$ spring cloud hystrixdashboard

現在実行中のクラウドサービスを一覧表示します。

$ spring cloud --list

便利なヘルプコマンド:

$ spring help cloud


4 YML

によるクラウドサービスのカスタマイズ

Cloud CLIを介してデプロイ可能な各サービスは、対応する名前の

.yml

ファイルを使用して設定することもできます。

spring:
  profiles:
    active: git
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo

これは、Cloud Config Serverを起動するために使用できる簡単な設定ファイルです。

たとえば、__「春のクラウド設定サーバー」コマンドを発行したときに自動的に複製されデプロイされるURIソースとしてGitリポジトリを指定できます。

Cloud CLIは内部でSpring Cloud Launcherを使用しています。つまり、** Cloud CLIはSpring Boot設定メカニズムの大部分をサポートしています。 Spring Bootのプロパティのリスト。

Spring Cloudの設定は、「spring.cloud …​」の規約に準拠しています。

Spring CloudとSpring Config Serverの設定はhttp://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.3.RELEASE/single/spring-cloud-config.htmlにあります。 #

environment

repository[link]


cloud.yml

に直接いくつかの異なるモジュールとサービスを指定することもできます:

spring:
  cloud:
    launcher:
      deployables:
        - name: configserver
          coordinates: maven://...:spring-cloud-launcher-configserver:1.3.2.RELEASE
          port: 8888
          waitUntilStarted: true
          order: -10
        - name: eureka
          coordinates: maven:/...:spring-cloud-launcher-eureka:1.3.2.RELEASE
          port: 8761


cloud.yml

を使用すると、カスタムサービスやモジュールを追加したり、MavenとGitのリポジトリを使用したりできます。


5カスタムGroovyスクリプトの実行

Cloud CLIはGroovyコードをコンパイルおよびデプロイできるので、カスタムコンポーネントをGroovyで作成して効率的にデプロイできます。

これが最小のREST API実装の例です。

@RestController
@RequestMapping('/api')
class api {

    @GetMapping('/get')
    def get() {[message: 'Hello']}
}

スクリプトが

rest.groovy

として保存されていると仮定すると、次のように最小限のサーバーを起動できます。

$ spring run rest.groovy



http://localhost:8080/api/get


をpingすると、次のことがわかります。

{"message":"Hello"}


6. 暗号化/復号化

Cloud CLIには、コマンドラインから直接使用することも、Cloud Config Serverエンドポイントに値を渡すことによって間接的に使用することもできる暗号化と復号化のためのツール(

org.springframework.cloud.cli.command。**

にあります)もあります。

設定して、使い方を見てみましょう。


6.1. セットアップ

Cloud CLIとSpring Cloud Config Serverはどちらも____を使用しています

そのため、どちらもOracleが提供するJCE Unlimited Strength Extension(http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)が必要です。


6.2. コマンドによる暗号化と復号化

端末経由で「

my

value__」を暗号化するには、次のコマンドを呼び出します。

$ spring encrypt my__value --key my__key

ファイル名はキー名の代わりに使うことができます(例:上記の「

my

key__」)。その後にパスを続けます(一般的にRSA公開キーに使われます)。

$ spring encrypt my__value --key @${WORKSPACE}/foos/foo.pub



my

value__’が暗号化され、次のようになります。

c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b

さらに、キー ‘

my

key

‘の下のメモリに保存されます。これにより、コマンドラインで「

my

key

」を復号化して「my

value

」に戻すことができます。

$ spring decrypt --key my__key

暗号化された値を設定YAMLファイルまたはプロパティファイルで使用することもできます。この場合、ロード時にCloud Config Serverによって自動的に復号化されます。

encrypted__credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"


6.3. Config Server

で暗号化および復号化する

Spring Cloud Config Serverは、キーと暗号化された値のペアをJavaセキュリティストアまたはメモリに格納できるRESTfulエンドポイントを公開します。

Cloud Configサーバーを正しく設定して

symmetric

または

asymmetric

暗号化を受け入れるように設定する方法の詳細については、/spring-cloud-configuration[article]または公式のhttp://cloud.spring.io/を参照してください。 spring-cloud-static/spring-cloud-config/1.3.3.RELEASE/single/spring-cloud-config.html#

encryption

and__decryption[docs]。

Spring Cloud Config Serverが設定され、「

cloud cloud configserver

」コマンドを使用して実行されると、そのAPIを呼び出すことができます。

$ curl localhost:8888/encrypt -d mysecret//682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
$ curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda//mysecret


7. 結論

ここでは、Spring Boot Cloud CLIの紹介に焦点を絞りました。詳細については、公式のhttp://cloud.spring.io/spring-cloud-static/spring-cloud-cli/1.3.2.RELEASE/[docs]をご覧ください。

この記事で使われている設定とbashの例はhttps://github.com/eugenp/tutorials/tree/master/spring-cloud-cli[GitHubで利用可能]です。