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上獲得。