Перейти к основному содержимому

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

· 5 мин. чтения

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

1. Введение

В этой статье мы рассмотрим Spring Boot Cloud CLI (или сокращенно Cloud CLI). Инструмент предоставляет набор улучшений командной строки для интерфейса командной строки Spring Boot, которые помогают в дальнейшем абстрагировании и упрощении развертываний 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 Repository ( официальный 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 Extension, предоставляемый 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 или файле свойств, где оно будет автоматически расшифровано Cloud Config Server при загрузке:

encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"

6.3. Шифровать и расшифровывать с помощью Config Server

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

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

После настройки и запуска 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 CLI. Для получения дополнительной информации, пожалуйста, ознакомьтесь с официальной документацией .

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