Introdução ao Spring Cloud CLI

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.