1. 概述
本文介绍 Spring Boot Cloud CLI(简称 Cloud CLI)的核心功能。这个工具通过命令行增强 Spring Boot CLI,进一步抽象和简化了 Spring Cloud 的部署流程。
Cloud CLI 于 2016 年末发布,允许通过命令行、.yml 配置文件和 Groovy 脚本快速自动配置和部署标准 Spring Cloud 服务**。简单粗暴地说,就是让你告别繁琐的配置,一行命令启动微服务基础设施。
2. 安装配置
Spring Boot Cloud CLI 1.3.x 依赖 Spring Boot CLI 1.5.x。首先确保安装了最新版 Spring Boot CLI(从 Maven Central 下载,安装指南),然后从 Maven Repository 或 官方仓库 获取 Cloud CLI。
验证 Spring Boot CLI 是否安装成功:
$ spring --version
安装最新稳定版 Cloud CLI:
$ spring install org.springframework.cloud:spring-cloud-cli:1.3.2.RELEASE
验证 Cloud CLI:
$ spring cloud --version
更多高级安装选项参考官方文档!
3. 默认服务与配置
Cloud CLI 提供 7 个核心服务,支持单行命令启动:
✅ 启动 Config Server(监听 http://localhost:8888):
$ spring cloud configserver
✅ 启动 Eureka Server(监听 http://localhost:8761):
$ spring cloud eureka
✅ 启动 H2 数据库(监听 http://localhost:9095):
$ spring cloud h2
✅ 启动 Kafka 服务器(监听 http://localhost:9091):
$ spring cloud kafka
✅ 启动 Zipkin 链路追踪(监听 http://localhost:9411):
$ spring cloud zipkin
✅ 启动 DataFlow 服务器(监听 http://localhost:9393):
$ spring cloud dataflow
✅ 启动 Hystrix 仪表盘(监听 http://localhost:7979):
$ spring cloud hystrixdashboard
📌 常用操作:
- 查看正在运行的服务:
$ spring cloud --list
- 获取帮助:
$ spring help cloud
更多命令细节参考官方博客。
4. 使用 YML 自定义云服务
每个服务都支持通过同名 .yml 文件自定义配置。以 Config Server 为例:
spring:
profiles:
active: git
cloud:
config:
server:
git:
uri: https://github.com/spring-cloud-samples/config-repo
执行 spring cloud configserver
时,会自动克隆并部署指定 Git 仓库的配置。
⚠️ 关键原理:Cloud CLI 底层使用 Spring Cloud Launcher,支持大多数 Spring Boot 配置机制。完整属性列表见官方文档。
Spring Cloud 配置遵循 spring.cloud...
约定,配置服务器属性参考此处。
更高级的用法是在 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
通过这种配置,可以:
- 添加自定义服务模块
- 集成 Maven/Git 仓库资源
5. 运行自定义 Groovy 脚本
Cloud CLI 能直接编译和部署 Groovy 代码,快速构建自定义组件。下面是一个极简 REST API 示例:
@RestController
@RequestMapping('/api')
class api {
@GetMapping('/get')
def get() { [message: 'Hello'] }
}
将脚本保存为 rest.groovy,启动服务器:
$ spring run rest.groovy
访问 http://localhost:8080/api/get 返回:
{"message":"Hello"}
👉 注意:Groovy 脚本需要遵循 Spring Boot 自动配置约定。
6. 加密/解密功能
Cloud CLI 内置加密解密工具(位于 org.springframework.cloud.cli.command.*
),支持命令行直接操作或通过 Config Server 接口间接使用。
6.1 环境准备
Cloud CLI 和 Config Server 都依赖 org.springframework.security.crypto.encrypt.*
处理加密,需要安装 Oracle 的 JCE Unlimited Strength Extension。
6.2 命令行加密解密
加密字符串 my_value
:
$ spring encrypt my_value --key my_key
⚠️ 密钥处理:支持文件路径(如 RSA 公钥),用 @
前缀指定:
$ spring encrypt my_value --key @${WORKSPACE}/foos/foo.pub
加密后输出类似:
c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b
解密操作:
$ spring decrypt --key my_key
在配置文件中使用加密值(Config Server 启动时自动解密):
encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"
6.3 通过 Config Server 加密解密
Config Server 暴露 REST 接口存储密钥对(支持 Java KeyStore 或内存存储)。对称/非对称加密配置参考我们的文章或官方文档。
启动 Config Server 后:
$ curl localhost:8888/encrypt -d mysecret
//682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
$ curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
//mysecret
7. 总结
本文介绍了 Spring Cloud CLI 的核心功能,包括:
- 一键启动微服务基础设施
- YML 自定义服务配置
- Groovy 脚本快速开发
- 内置加密解密工具
更多高级用法参考官方文档。对于需要快速搭建 Spring Cloud 原型或进行本地开发的场景,这个工具能显著提升效率,强烈推荐尝试!