Introdução ao Spring Cloud CLI
1. Introdução
Neste artigo, vamos dar uma olhada no Spring Boot Cloud CLI (ou Cloud CLI, abreviado). A ferramenta fornece um conjunto de aprimoramentos da linha de comando para o Spring Boot CLI que ajuda a abstrair e simplificar ainda mais as implantações do Spring Cloud.
O CLI foi introduzido no final de 2016 eallows quick auto-configuration and deployment of standard Spring Cloud services using a command line, .yml configuration files, and Groovy scripts.
2. Configuração
Spring Boot Cloud CLI 1.3.x requer Spring Boot CLI 1.5.x, então certifique-se de pegar a versão mais recente do Spring Boot CLI deMaven Central (installation instructions) e a versão mais recente do Cloud CLI de Maven Repository (the official Spring repository)!
Para garantir que a CLI esteja instalada e pronta para uso, basta executar:
$ spring --version
Após verificar a instalação da sua CLI do Spring Boot, instale a versão estável mais recente do Cloud CLI:
$ spring install org.springframework.cloud:spring-cloud-cli:1.3.2.RELEASE
Em seguida, verifique a CLI da nuvem:
$ spring cloud --version
Os recursos de instalação avançada podem ser encontrados no Cloud CLIpage oficial!
3. Serviços e configuração padrão
A CLI fornece sete serviços principais que podem ser executados e implementados com comandos de linha única.
Para iniciar um servidor Cloud Config emhttp://localhost:8888:
$ spring cloud configserver
Para iniciar um servidor Eureka emhttp://localhost:8761:
$ spring cloud eureka
Para iniciar um servidor H2 emhttp://localhost:9095:
$ spring cloud h2
Para iniciar um servidor Kafka emhttp://localhost:9091:
$ spring cloud kafka
Para iniciar um servidor Zipkin emhttp://localhost:9411:
$ spring cloud zipkin
Para iniciar um servidor Dataflow emhttp://localhost:9393:
$ spring cloud dataflow
Para iniciar um painel Hystrix emhttp://localhost:7979:
$ spring cloud hystrixdashboard
Lista serviços em nuvem atualmente em execução:
$ spring cloud --list
O prático comando de ajuda:
$ spring help cloud
Para mais detalhes sobre esses comandos, verifique oblog oficial.
4. Personalização de serviços em nuvem com YML
Cada um dos serviços implantáveis por meio do Cloud CLI também pode ser configurado usando arquivos.yml com nomes correspondentes:
spring:
profiles:
active: git
cloud:
config:
server:
git:
uri: https://github.com/spring-cloud-samples/config-repo
Isso constitui um arquivo de configuração simples que podemos usar para iniciar o Cloud Config Server.
Podemos, por exemplo, especificar um repositório Git como a fonte de URI que será automaticamente clonado e implantado quando emitirmos o comando‘spring cloud configserver'.
O Cloud CLI usa o Spring Cloud Launcher sob o capô. Isso significa queCloud CLI supports most of the Spring Boot configuration mechanisms.Here’s é a lista oficial de propriedades do Spring Boot.
A configuração do Spring Cloud está em conformidade com a convenção‘spring.cloud…. As configurações para Spring Cloud e Spring Config Server podem ser encontradas nestelink.
Também podemos especificar vários módulos e serviços diferentes diretamente nocloud.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
Ocloud.yml permite que serviços personalizados ou módulos sejam adicionados e o uso de repositórios Maven e Git sejam usados.
5. Execução de scripts Groovy personalizados
Componentes personalizados podem ser gravados no Groovy e implantados com eficiência, pois o Cloud CLI pode compilar e implantar o código do Groovy.
Aqui está um exemplo de implementação mínima da API REST:
@RestController
@RequestMapping('/api')
class api {
@GetMapping('/get')
def get() { [message: 'Hello'] }
}
Supondo que o script seja salvo comorest.groovy, podemos iniciar nosso servidor mínimo desta forma:
$ spring run rest.groovy
Pingarhttp://localhost:8080/api/get deve revelar:
{"message":"Hello"}
6. Encrypt/Decrypt
O Cloud CLI também fornece uma ferramenta para criptografia e descriptografia (encontrada no pacoteorg.springframework.cloud.cli.command.*) que pode ser usada diretamente por meio da linha de comando ou indiretamente, passando um valor para um endpoint do Cloud Config Server.
Vamos configurar e ver como usá-lo.
6.1. Configuração
Tanto o Cloud CLI quanto o Spring Cloud Config Server usamorg.springframework.security.crypto.encrypt.* for handling encrypt and decrypt commands.
Como tal, ambos requerem a extensão JCE Unlimited Strength fornecida pela Oraclehere.
6.2. Criptografar e descriptografar por comando
Para criptografar ‘my_value’ por meio do terminal, invoque:
$ spring encrypt my_value --key my_key
Os caminhos do arquivo podem ser substituídos pelo nome da chave (por exemplo, ‘my_key‘ acima) usando ‘@’ seguido pelo caminho (normalmente usado para chaves públicas RSA):
$ spring encrypt my_value --key @${WORKSPACE}/foos/foo.pub
‘my_value’ agora será criptografado para algo como:
c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b
Além disso, será armazenado na memória com a chave ‘my_key’. Isso nos permite descriptografar 'my_key' de volta para 'my_value' via linha de comando:
$ spring decrypt --key my_key
Agora também podemos usar o valor criptografado em um YAML de configuração ou arquivo de propriedades, onde será descriptografado automaticamente pelo Cloud Config Server quando carregado:
encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"
6.3. Criptografar e descriptografar com o servidor de configuração
O Spring Cloud Config Server expõe pontos de extremidade RESTful onde chaves e pares de valores criptografados podem ser armazenados no Java Security Store ou na memória.
Para obter mais informações sobre como instalar e configurar corretamente seu Cloud Config Server para aceitar a criptografiasymmetric ouasymmetric, verifique nossoarticle ou odocs oficial.
Depois que o Spring Cloud Config Server estiver configurado e funcionando usando o comando ‘spring cloud configserver’, você poderá chamar sua API:
$ curl localhost:8888/encrypt -d mysecret
//682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
$ curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
//mysecret
7. Conclusão
Focamos aqui em uma introdução ao Spring Boot Cloud CLI. Para obter mais informações, verifique odocs oficial.
Os exemplos de configuração e bash usados neste artigo estão disponíveisover on GitHub.