Spring Cloud CLI简单介绍

 更新时间:2018年12月21日 09:20:17   作者:peterwanghao  
本文我们将介绍Spring Boot Cloud CLI(或简称Cloud CLI)。该工具为Spring Boot CLI提供了一组命令行增强功能,有助于进一步抽象和简化Spring Cloud部署。感兴趣的小伙伴们可以参考一下

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服务器:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • ActiveMQ简单入门(新手必看篇)

    ActiveMQ简单入门(新手必看篇)

    下面小编就为大家带来一篇ActiveMQ简单入门(新手必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • RocketMQ顺序消息的原理与特点

    RocketMQ顺序消息的原理与特点

    RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等,本篇我们了解如何实现顺序消息的原理与特点
    2023-02-02
  • Java API方式调用Kafka各种协议的方法

    Java API方式调用Kafka各种协议的方法

    本篇文章主要介绍了Java API方式调用Kafka各种协议的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java锁机制Lock用法示例

    Java锁机制Lock用法示例

    这篇文章主要介绍了Java锁机制Lock用法,结合具体实例形式分析了Java锁机制的相关上锁、释放锁、隐式锁、显式锁等概念与使用技巧,需要的朋友可以参考下
    2018-08-08
  • 高效数据传输的秘密武器Protobuf的使用教程

    高效数据传输的秘密武器Protobuf的使用教程

    Protobuf(Protocol Buffers)是由 Google 开发的一种轻量级、高效的数据交换格式,它被用于结构化数据的序列化、反序列化和传输,本文主要介绍了它的具体使用方法,需要的可以参考一下
    2023-05-05
  • Java中的 CyclicBarrier详解

    Java中的 CyclicBarrier详解

    这篇文章主要介绍了Java中的 CyclicBarrier详解,CyclicBarrier没有显示继承哪个父类或者实现哪个父接口, 所有AQS和重入锁不是通过继承实现的,而是通过组合实现的,下文相关内容需要的小伙伴可以参考一下
    2022-04-04
  • Java8中流的性能及流的几个特性

    Java8中流的性能及流的几个特性

    流(Stream)是Java8为了实现最佳性能而引入的一个全新的概念。接下来通过本文给大家分享Java8中流的性能,需要的朋友参考下吧
    2017-11-11
  • 一篇文章带你入门java面向对象

    一篇文章带你入门java面向对象

    这篇文章主要介绍了Java语言面向对象编程思想之类与对象实例详解,还是十分不错的,这里给大家分享下,需要的朋友可以参考,希望能帮到你
    2021-08-08
  • SpringBoot @Autowired注解注入规则介绍

    SpringBoot @Autowired注解注入规则介绍

    这篇文章主要介绍了SpringBoot @Autowired注解注入规则介绍,具有很好的参考价值,希望对大家有所帮助。
    2021-11-11
  • Java使用JMeter进行高并发测试

    Java使用JMeter进行高并发测试

    软件的压力测试是一种保证软件质量的行为,本文主要介绍了Java使用JMeter进行高并发测试,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论