Spring Cloud CLIの紹介
1. 前書き
この記事では、Spring Boot Cloud CLI(または略してCloud CLI)を見ていきます。 このツールは、Spring BootのCLIに一連のコマンドライン拡張機能を提供し、Spring Cloudの展開をさらに抽象化および簡素化するのに役立ちます。
CLIは2016年後半に導入され、allows quick auto-configuration and deployment of standard Spring Cloud services using a command line, .yml configuration files, and Groovy scripts.
2. セットアップ
Spring Boot Cloud CLI1.3.xにはSpringBoot CLI 1.5.xが必要なので、必ず最新バージョンのSpring Boot CLIをMaven Central(installation instructions)から取得し、最新バージョンのCloudCLIをから取得してください。 Maven Repository(the official Spring repository)!
CLIがインストールされ、使用できる状態になっていることを確認するには、次を実行します。
$ spring --version
Spring Boot CLIのインストールを確認したら、Cloud CLIの最新の安定バージョンをインストールします。
$ spring install org.springframework.cloud:spring-cloud-cli:1.3.2.RELEASE
次に、Cloud CLIを確認します。
$ spring cloud --version
高度なインストール機能は、公式のCloud CLIpageにあります。
3. デフォルトのサービスと設定
CLIは、1行のコマンドで実行および展開できる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
http://localhost:9393でDataflowサーバーを起動するには:
$ spring cloud dataflow
http://localhost:7979でHystrixダッシュボードを開始するには:
$ spring cloud hystrixdashboard
現在実行中のクラウドサービスのリスト:
$ spring cloud --list
便利なヘルプコマンド:
$ spring help cloud
これらのコマンドの詳細については、公式のblogを確認してください。
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の起動に使用できる単純な構成ファイルを構成します。
たとえば、‘spring cloud configserver'コマンドを発行したときに自動的に複製およびデプロイされるURIソースとしてGitリポジトリを指定できます。
Cloud CLIは、内部でSpring Cloud Launcherを使用します。 これは、Cloud CLI supports most of the Spring Boot configuration mechanisms.Here’sがSpringBootプロパティの公式リストであることを意味します。
Spring Cloud構成は、‘spring.cloud…の規則に準拠しています。 SpringCloudおよびSpringConfig Serverの設定は、この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でカスタムコンポーネントを記述し、効率的にデプロイできます。
最小限の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. Encrypt/Decrypt
Cloud CLIは、暗号化と復号化のためのツール(パッケージorg.springframework.cloud.cli.command.*にあります)も提供します。このツールは、コマンドラインから直接使用することも、Cloud ConfigServerエンドポイントに値を渡すことによって間接的に使用することもできます。
設定して、使い方を見てみましょう。
6.1. セットアップ
CloudCLIとSpringCloud Config Serverの両方がorg.springframework.security.crypto.encrypt.* for handling encrypt and decrypt commands.を使用します
そのため、どちらもOraclehereが提供するJCE Unlimited StrengthExtensionが必要です。
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. ConfigServerを使用した暗号化と復号化
Spring Cloud Config Serverは、キーと暗号化された値のペアをJavaセキュリティストアまたはメモリに保存できるRESTfulエンドポイントを公開します。
symmetricまたはasymmetric暗号化を受け入れるようにCloud Config Serverを正しくセットアップおよび構成する方法の詳細については、articleまたは公式の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 CloudCLIの概要に焦点を当てました。 詳細については、公式のdocsを確認してください。
この記事で使用されている構成とbashの例は、over on GitHubで入手できます。