Введение в Spring Cloud CLI

Введение в Spring Cloud CLI

1. Вступление

В этой статье мы рассмотрим CLI Spring Boot Cloud (или Cloud CLI для краткости). Инструмент предоставляет набор улучшений командной строки для Spring Boot CLI, который помогает в дальнейшем абстрагировании и упрощении развертываний Spring Cloud.

Интерфейс командной строки был представлен в конце 2016 года иallows quick auto-configuration and deployment of standard Spring Cloud services using a command line, .yml configuration files, and Groovy scripts.

2. Настроить

Spring Boot Cloud CLI 1.3.x требует Spring Boot CLI 1.5.x, поэтому обязательно загрузите последнюю версию Spring Boot CLI изMaven Central (installation instructions) и самую последнюю версию Cloud CLI из Maven Repository (the official Spring repository)!

Чтобы убедиться, что CLI установлен и готов к использованию, просто запустите:

$ spring --version

После проверки установки Spring Boot CLI установите последнюю стабильную версию Cloud CLI:

$ spring install org.springframework.cloud:spring-cloud-cli:1.3.2.RELEASE

Затем проверьте CLI Cloud:

$ spring cloud --version

Дополнительные функции установки можно найти в официальном Cloud CLIpage!

3. Службы и конфигурация по умолчанию

CLI предоставляет семь основных служб, которые можно запускать и развертывать с помощью однострочных команд.

Чтобы запустить сервер Cloud Config наhttp://localhost:8888:

$ spring cloud configserver

Чтобы запустить сервер Eureka на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

Дополнительные сведения об этих командах см. В официальномblog.

4. Настройка облачных сервисов с помощью YML

Каждую из служб, развертываемых через облачный интерфейс командной строки, также можно настроить с помощью файлов.yml с соответствующим именем:

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 supports most of the Spring Boot configuration mechanisms.Here’s официальный список свойств Spring Boot.

Конфигурация Spring Cloud соответствует соглашению‘spring.cloud…. Настройки для Spring Cloud и Spring Config Server можно найти в этомlink.

Мы также можем указать несколько различных модулей и сервисов непосредственно в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

cloud.yml позволяет добавлять пользовательские службы или модули и использовать репозитории Maven и Git.

5. Запуск собственных сценариев Groovy

Пользовательские компоненты могут быть написаны на 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"}

6. Encrypt/Decrypt

Cloud CLI также предоставляет инструмент для шифрования и дешифрования (находится в пакетеorg.springframework.cloud.cli.command.*), который можно использовать напрямую через командную строку или косвенно, передав значение в конечную точку Cloud Config Server.

Давайте настроим его и посмотрим, как им пользоваться.

6.1. Настроить

И Cloud CLI, и Spring Cloud Config Server используютorg.springframework.security.crypto.encrypt.* for handling encrypt and decrypt commands.

Таким образом, оба требуют расширения JCE Unlimited Strength Extension, предоставляемого Oraclehere.

6.2. Шифрование и дешифрование по команде

Чтобы зашифровать «my_value» через терминал, вызовите:

$ spring encrypt my_value --key my_key

Пути к файлам могут быть заменены на имя ключа (например, «my_key» выше), используя «@», за которым следует путь (обычно используется для открытых ключей RSA):

$ spring encrypt my_value --key @${WORKSPACE}/foos/foo.pub

my_value‘ теперь будет зашифрован примерно так:

c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b

Кроме того, он будет сохранен в памяти под ключом «my_key». Это позволяет нам расшифровать «my_key» обратно в «my_value» через командную строку:

$ spring decrypt --key my_key

Теперь мы также можем использовать зашифрованное значение в файле конфигурации YAML или в файле свойств, где оно будет автоматически расшифровано сервером Cloud Config при загрузке:

encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"

6.3. Шифрование и дешифрование с помощью сервера конфигурации

Сервер Spring Cloud Config предоставляет конечные точки RESTful, где ключи и зашифрованные пары значений могут храниться в хранилище безопасности Java или в памяти.

Для получения дополнительной информации о том, как правильно установить и настроить сервер Cloud Config Server для приема шифрованияsymmetric илиasymmetric, ознакомьтесь с нашимиarticle или официальнымdocs.

После настройки и запуска Spring Cloud Config Server с помощью команды «spring cloud configserver» вы сможете вызывать его API:

$ curl localhost:8888/encrypt -d mysecret
//682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
$ curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
//mysecret

7. Заключение

Здесь мы сосредоточились на введении в интерфейс командной строки Spring Boot Cloud. Для получения дополнительной информации посетите официальныйdocs.

Примеры конфигурации и bash, использованные в этой статье, доступныover on GitHub.