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 原型或进行本地开发的场景,这个工具能显著提升效率,强烈推荐尝试!


原始标题:Introduction to Spring Cloud CLI | Baeldung