Рубрики
Без рубрики

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

Узнайте о CLI Spring Boot Cloud, который предоставляет набор улучшений командной строки для CLI Spring Boot.

Автор оригинала: Zeger Hendrikse.

1. введение

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

CLI был представлен в конце 2016 года и позволяет быстро настраивать и развертывать стандартные облачные сервисы Spring с помощью командной строки, файлов конфигурации .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

Затем проверьте облачный CLI:

$ spring cloud --version

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

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

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

Чтобы запустить сервер облачной конфигурации на http://localhost:8888 :

$ spring cloud configserver

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

$ spring cloud eureka

Чтобы инициировать сервер H2 на http://localhost:9095 :

$ spring cloud h2

Чтобы запустить сервер Кафки на http://localhost:9091 :

$ spring cloud kafka

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

$ spring cloud zipkin

Чтобы запустить сервер потока данных на http://localhost:9393:

$ spring cloud dataflow

Чтобы запустить панель мониторинга Hystrix на http://localhost:7979 :

$ spring cloud hystrixdashboard

Список запущенных в настоящее время облачных сервисов:

$ spring cloud --list

Удобная команда справки:

$ spring help cloud

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

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

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

spring:
  profiles:
    active: git
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo

Это представляет собой простой файл конфигурации, который мы можем использовать для запуска сервера Cloud Config.

Например, мы можем указать репозиторий Git в качестве источника URI, который будет автоматически клонирован и развернут при выполнении команды ‘spring cloud configserver’ .

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

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

6.1. Настройка

Как Облачный CLI, так и сервер конфигурации Spring Cloud используют org.springframework.security.crypto.encrypt.* f или handli ng команды шифрования и дешифрования.

Как таковые, оба требуют расширения неограниченной силы JCE, предоставляемого Oracle здесь .

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 или свойствах, где оно будет автоматически расшифровано сервером облачной конфигурации при загрузке:

encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"

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

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

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

Как только Spring Cloud Config Server будет настроен и запущен с помощью команды ” spring cloud config server “, вы сможете вызвать его API:

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

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

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

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