1. 序章

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

CLIは2016年後半に導入され、は、コマンドライン、.yml構成ファイル、およびGroovyスクリプトを使用して、標準のSpringCloudサービスの迅速な自動構成と展開を可能にします。

2. 設定

Spring Boot CloudCLI1.3.xにはSpringBootCLI 1.5.xが必要です。そのため、 Maven Central インストール手順)から最新バージョンのSpringBootCLIを入手してください。 Mavenリポジトリ公式のSpringリポジトリ)からのCloud CLIのバージョン!

CLIがインストールされ、使用できる状態になっていることを確認するには、次のコマンドを実行します。

$ spring --version

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

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

次に、CloudCLIを確認します。

$ spring cloud --version

高度なインストール機能は、公式のCloudCLIページにあります。

3. デフォルトのサービスと構成

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

http:// localhost:8888でCloudConfigサーバーを起動するには:

$ 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

http:// localhost:9393でDataflowサーバーを起動するには:

$ 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

これは、CloudConfigServerの起動に使用できる単純な構成ファイルを構成します。

たとえば、‘spring cloudconfigserver’コマンドを発行したときに自動的に複製およびデプロイされるURIソースとしてGitリポジトリを指定できます。

Cloud CLIは、内部でSpringCloudLauncherを使用します。 つまり、CloudCLIはほとんどのSpring Boot構成メカニズムをサポートします。ここにSpring Bootプロパティの公式リストがあります。

Spring Cloudの構成は、の「spring.cloud…」規則に準拠しています。 SpringCloudおよびSpringConfigServerの設定は、このリンクにあります。

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で記述し、効率的にデプロイできます。

最小限のRESTAPI実装の例を次に示します。

@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は、暗号化と復号化のためのツール(パッケージorg.springframework.cloud.cli.command。*にあります)も提供します。このツールは、コマンドラインから直接使用することも、値をCloudConfigServerエンドポイント。

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

6.1. 設定

CloudCLIとSpringCloudConfig Serverはどちらも、org.springframework.security.crypto.encrypt。* fまたはhandli [ X149X] ngコマンドの暗号化と復号化。

そのため、どちらもOracle hereが提供するJCEUnlimitedStrengthExtensionが必要です。

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またはプロパティファイルで使用できるようになりました。このファイルは、読み込まれるとCloudConfigServerによって自動的に復号化されます。

encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"

6.3. ConfigServerを使用した暗号化と復号化

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

対称または非対称暗号化を受け入れるようにCloudConfigサーバーを正しくセットアップおよび構成する方法の詳細については、記事または公式をご覧ください。 ]docs

Spring Cloud Config Serverが構成され、「 spring cloud configserver 」コマンドを使用して稼働すると、そのAPIを呼び出すことができます。

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

7. 結論

ここでは、Spring BootクラウドCLIの概要に焦点を当てました。 詳細については、公式のドキュメントをご覧ください。

この記事で使用されている構成とbashの例は、GitHubから入手できます。