Spring Cloud CLI簡介

1.簡介

在本文中,我們將介紹Spring Boot Cloud CLI(或簡稱Cloud CLI)。該工具爲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資源庫中的最新版本的Cloud CLI (官方Spring存儲庫)!

本文中使用的是spring-boot-cli 1.5.18.RELEASE,spring-cloud-cli 1.3.2.RELEASE。

1、首先安裝Spring Boot CLI並可以使用,驗證只需運行:

$ spring --version

2、然後安裝最新的穩定版Cloud CLI:

$ spring installorg.springframework.cloud:spring-cloud-cli:1.3.2.RELEASE

3、最後驗證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服務器:

1 $ 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的設置。

我們還可以直接在下面的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

該yml允許通過使用Maven或Git庫,添加自定義的服務或模塊。

5.運行自定義Groovy腳本

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

這是一個非常簡單的REST API實現示例:

@RestController
@RequestMapping('/api')
class api {
    @GetMapping('/get')
    def get() { [message: 'Hello'] }
}

假設腳本保存爲restapi.groovy,我們可以像這樣啓動我們的服務:

$ spring run restapi.groovy

訪問http://localhost:8080/api/get應該顯示:

{"message":"Hello"}

6.加密/解密

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

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

6.1 安裝

Cloud CLI和Spring Cloud Config Server都使用org.springframework.security.crypto.encrypt.* 來處理加密和解密的命令。

因此,都需要通過Oracle提供的JCE Unlimited Strength Extension,可在這裏找到。

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

可通過命令行進行解密:

$ spring decrypt --key my_key c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b

我們現在還可以在配置YAML或屬性文件中使用加密值,在加載時它將由Cloud Config Server自動解密:

encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"

6.3 使用Config Server加密和解密

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

有關如何正確設置和配置Cloud Config Server以接受對稱或非對稱加密的詳細信息,請查看官方文檔

使用“ 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的介紹。有關更多的信息,請查看官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章