Введение в 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.