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的介绍。有关更多的信息,请查看官方文档

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容