Spring Cloud CLI簡介

1.簡介

在本文中,我們將介紹Spring Boot Cloud CLI(或簡稱Cloud Cloud)。該工具為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,因此請確保從Maven Central獲取最新版本的Spring Boot CLI( 安裝說明)以及從Maven存儲庫(最新的官方Spring)獲取Cloud CLI的最新版本倉庫)!

要確保已安裝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 CLI頁面上找到高級安裝功能!

3.默認服務和配置

CLI提供了七項核心服務,可以使用單行命令來運行和部署這些核心服務。

要在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

有關這些命令的更多詳細信息,請查看官方博客

4.使用YML自定義雲服務

還可以使用相應命名的.yml文件來配置通過Cloud CLI可以部署的每個服務:

spring:

 profiles:

 active: git

 cloud:

 config:

 server:

 git:

 uri: https://github.com/spring-cloud-samples/config-repo

這構成了一個簡單的配置文件,可用於啟動Cloud Config Server。

例如,我們可以將Git存儲庫指定為URI源,當我們發出'spring cloud configserver'命令時,它將自動克隆和部署。

Cloud CLI在後台使用Spring Cloud Launcher。這意味著Cloud CLI支持大多數Spring Boot配置機制。 是Spring Boot屬性的官方列表。

Spring Cloud配置符合'spring.cloud… ”的約定。可以在此鏈接中找到Spring Cloud和Spring Config Server的設置。

我們還可以直接在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腳本

自定義組件可以用Groovy編寫並有效部署,因為Cloud CLI可以編譯和部署Groovy代碼。

這是一個最小的REST API實現示例:

@RestController

 @RequestMapping('/api')

 class api {



 @GetMapping('/get')

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

 }

假設腳本保存為rest.groovy ,我們可以像這樣啟動最小服務器:

$ spring run rest.groovy

ping http://localhost:8080/api/get應該顯示:

{"message":"Hello"}

6.加密/解密

Cloud CLI還提供了用於加密和解密的工具(位於org.springframework.cloud.cli.command.*包中),可以通過命令行直接使用,也可以通過將值傳遞給Cloud Config Server端點間接使用。

讓我們進行設置,看看如何使用它。

6.1。設定

這兩種Cloud CLI以及Spring Cloud配置服務器使用org.springframework.security.crypto.encrypt.* ˚F or handli ng加密和解密的命令。

因此,兩者都需要Oracle在此處提供的JCE無限強度擴展。

6.2。通過命令加密和解密

要通過終端加密“ my_value ”,請調用:

$ spring encrypt my_value --key my_key

可以使用文件名路徑(通常用於RSA公鑰),然後使用'@'代替文件路徑(例如,上面的' my_key '):

$ 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。使用配置服務器加密和解密

Spring Cloud Config Server公開了RESTful端點,可以在其中將密鑰和加密值對存儲在Java安全性存儲或內存中。

有關如何正確設置和配置Cloud Config Server以接受symmetric或非asymmetric加密的更多信息,請查看我們的文章或官方文檔

使用' spring cloud configserver '命令配置並啟動Spring Cloud Config Server後,您將能夠調用其API:

$ curl localhost:8888/encrypt -d mysecret

 //682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda

 $ curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda

 //mysecret

7.結論

我們在這裡集中介紹了Spring Boot Cloud CLI。有關更多信息,請查閱官方文檔

本文中使用的配置和bash示例可從GitHub上獲得