SpringCloudCLIの概要
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でから入手できます。