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