spring-cloud-cli.md 8.1 KB
Newer Older
茶陵後's avatar
茶陵後 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
# Spring 引导云 CLI

Spring Boot CLI 为[Spring Boot](https://projects.spring.io/spring-boot)提供了[Spring Cloud](https://github.com/spring-cloud)命令行功能。你可以编写 Groovy 脚本来运行 Spring Cloud组件应用程序(例如`@EnableEurekaServer`)。你还可以轻松地进行加密和解密等操作,以支持具有秘密配置值的云配置客户机。通过 Launcher CLI,你可以方便地从命令行同时启动像 Eureka、Zipkin、Config Server 这样的服务(在开发时非常有用)。

|   |Spring Cloud是在非限制性的 Apache2.0 许可下发布的。如果你想对文档的这一部分做出贡献,或者你发现了一个错误,请在[github](https://github.com/spring-cloud/spring-cloud-cli)上找到项目中的源代码和问题追踪器。|
|---|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

## [安装](#_installation)

要安装,请确保你有[Spring Boot CLI](https://github.com/spring-projects/spring-boot)(2.0.0 或更好):

```
$ spring version
Spring CLI v2.2.3.RELEASE
```

例如,对于 SDKMAN 个用户

```
$ sdk install springboot 2.2.3.RELEASE
$ sdk use springboot 2.2.3.RELEASE
```

并安装 Spring Cloud插件

```
$ mvn install
$ spring install org.springframework.cloud:spring-cloud-cli:2.2.0.RELEASE
```

|   |**先决条件:**要使用加密和解密功能<br/>,你需要在你的 JVM 中安装全强度 JCE(默认情况下不存在)。<br/>你可以从 Oracle 下载“Java Cryptography Extension(JCE)Unlimited Strength Juridictory Policy Files”<br/>,并遵循安装说明(基本上将 JRElib/security 目录中的 2 个策略文件<br/>替换为你下载的文件)。|
|---|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

## [Running Spring Cloud Services in Development](#_running_spring_cloud_services_in_development)

启动器 CLI 可用于从命令行运行公共服务,如 Eureka、Config Server 等。要列出你可以执行`spring cloud --list`的可用服务,并仅启动`spring cloud`的默认服务集。要选择要部署的服务,只需在命令行中列出它们,例如。

```
$ spring cloud eureka configserver h2 kafka stubrunner zipkin
```

支持的可部署程序摘要:

|  Service   |      Name      |                                           Address                                           |说明|
|------------|----------------|---------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|   eureka   | Eureka Server  |                       [http://localhost:8761](http://localhost:8761)                        |服务注册和发现的 Eureka 服务器。默认情况下,所有其他服务都会显示在其目录中。|
|configserver| Config Server  |                       [http://localhost:8888](http://localhost:8888)                        |Spring 运行在“本机”配置文件中的云配置服务器和来自本地目录的服务配置。/Launcher|
|     h2     |  H2 Database   |[http://localhost:9095](http://localhost:9095) (console), jdbc:h2:tcp://localhost:9096/{data}|关系数据库服务。在连接时使用`{data}`的文件路径(例如`./target/test`)。请记住,你可以添加`;MODE=MYSQL``;MODE=POSTGRESQL`以与其他服务器类型的兼容性连接。|
|   kafka    |  Kafka Broker  |     [http://localhost:9091](http://localhost:9091) (actuator endpoints), localhost:9092     |                                                                                                                                                                                                                      |
|  dataflow  |Dataflow Server |                       [http://localhost:9393](http://localhost:9393)                        |Spring 带有 ui at/admin-ui 的云数据流服务器。将 DataFlow Shell 连接到根路径上的目标。|
|   zipkin   | Zipkin Server  |                       [http://localhost:9411](http://localhost:9411)                        |Zipkin 服务器与 UI 可视化的痕迹。存储在内存中的跨数据,并通过 JSON 数据的 HTTP POST 接受它们。|
| stubrunner |Stub Runner Boot|                       [http://localhost:8750](http://localhost:8750)                        |下载 WiRemock 存根,启动 WiRemock,并用存储的存根向启动的服务器提供信息。传递`stubrunner.ids`以传递存根坐标,然后转到`[http://localhost:8750/stubs](http://localhost:8750/stubs)`。|

这些应用程序中的每一个都可以使用同名的本地 YAML 文件进行配置(在当前工作目录或名为“config”的子目录中或在`~/.spring-cloud`中)。例如,在`configserver.yml`中,你可能想做这样的事情来为后端定位一个本地 Git 存储库:

configserver.yml

```
spring:
  profiles:
    active: git
  cloud:
    config:
      server:
        git:
          uri: file://${user.home}/dev/demo/config-repo
```

例如,在 Stub Runner 应用程序中,你可以通过以下方式从本地`.m2`获取 stub。

Stubrunner.yml

```
stubrunner:
  workOffline: true
  ids:
    - com.example:beer-api-producer:+:9876
```

### [添加其他应用程序](#_adding_additional_applications)

可以将其他应用程序添加到`./config/cloud.yml`(而不是`./config.yml`,因为这将替换默认值),例如使用

config/cloud.yml

```
spring:
  cloud:
    launcher:
      deployables:
        source:
          coordinates: maven://com.example:source:0.0.1-SNAPSHOT
          port: 7000
        sink:
          coordinates: maven://com.example:sink:0.0.1-SNAPSHOT
          port: 7001
```

当你列出应用程序时:

```
$ spring cloud --list
source sink configserver dataflow eureka h2 kafka stubrunner zipkin
```

(请注意列表开头的附加应用)。

## [编写 Groovy 脚本并运行应用程序](#_writing_groovy_scripts_and_running_applications)

Spring Cloud CLI 具有对 Spring Cloud的大多数声明性功能的支持,例如`@Enable*`类的注释。例如,这里有一个功能齐全的 Eureka 服务器

App.Groovy

```
@EnableEurekaServer
class Eureka {}
```

你可以像这样从命令行运行它

```
$ spring run app.groovy
```

要包含额外的依赖关系,通常只需添加适当的支持特性的注释就足够了,例如`@EnableConfigServer``@EnableOAuth2Sso``@EnableEurekaClient`。要手动包含依赖项,你可以使用`@Grab`和特殊的“ Spring 引导”短样式工件坐标,即只使用工件 ID(不需要组或版本信息),例如,设置一个客户端应用程序,以便在 AMQP 上监听来自 Spring Cloud总线的管理事件:

App.Groovy

```
@Grab('spring-cloud-starter-bus-amqp')
@RestController
class Service {
  @RequestMapping('/')
  def home() { [message: 'Hello'] }
}
```

## [加密和解密](#_encryption_and_decryption)

Spring cloud cli 带有一个“加密”和一个“解密”命令。两者都接受相同形式的参数,其中一个键被指定为强制性的“--key”,例如。

```
$ spring encrypt mysecret --key foo
682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
$ spring decrypt --key foo 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
mysecret
```

要在文件中使用密钥(例如,用于 encyption 的 RSA 公钥),请在键值前加上“@”并提供文件路径。

```
$ spring encrypt mysecret --key @${HOME}/.ssh/id_rsa.pub
AQAjPgt3eFZQXwt8tsHAVv/QHiY5sI2dRcR+...
茶陵後's avatar
茶陵後 已提交
154
```