«1. Введение

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

Интерфейс командной строки был представлен в конце 2016 года и позволяет быстро выполнять автоматическую настройку и развертывание стандартных сервисов Spring Cloud с помощью командной строки, файлов конфигурации .yml и сценариев Groovy.

2. Настройка

Для Spring Boot Cloud CLI 1.3.x требуется Spring Boot CLI 1.5.x, поэтому обязательно скачайте последнюю версию Spring Boot CLI из Maven Central (инструкции по установке) и самую последнюю версию Cloud CLI из репозитория Maven (официальный репозиторий Spring)!

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

$ spring --version

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

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

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

$ spring cloud --version

Расширенные функции установки можно найти на официальной странице Cloud CLI!

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

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

Для запуска сервера 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

Для получения более подробной информации об этих командах, пожалуйста, посетите официальный блог.

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

Каждую из сервисов, которые можно развернуть с помощью Cloud CLI, также можно настроить с помощью файлов .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 поддерживает большинство механизмов конфигурации Spring Boot. Вот официальный список свойств Spring Boot.

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

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

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

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

6.1. Настройка

И Cloud CLI, и Spring Cloud Config Server используют org.springframework.security.crypto.encrypt.* для обработки команд шифрования и дешифрования.

Таким образом, для обоих требуется расширение JCE Unlimited Strength, предоставленное Oracle здесь.

6.2. Зашифровать и расшифровать с помощью команды

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

$ spring encrypt my_value --key my_key

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

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

«

c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b

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

$ spring decrypt --key my_key

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

encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"

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

6.3. Шифрование и дешифрование с помощью Config Server

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

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

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

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

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

Мы здесь основное внимание уделяется введению в Spring Boot Cloud CLI. Для получения дополнительной информации, пожалуйста, ознакомьтесь с официальной документацией.