Автор оригинала: 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 .