Introduction à Spring Cloud CLI

Introduction à Spring Cloud CLI

1. introduction

Dans cet article, nous examinons Spring Boot Cloud CLI (ou Cloud CLI en abrégé). L'outil fournit un ensemble d'améliorations à la ligne de commande de la CLI Spring Boot qui permet de mieux résumer et simplifier les déploiements Spring Cloud.

La CLI a été introduite fin 2016 etallows quick auto-configuration and deployment of standard Spring Cloud services using a command line, .yml configuration files, and Groovy scripts.

2. Installer

Spring Boot Cloud CLI 1.3.x nécessite Spring Boot CLI 1.5.x, alors assurez-vous de récupérer la dernière version de Spring Boot CLI à partir deMaven Central (installation instructions) et la version la plus récente de Cloud CLI à partir de Maven Repository (the official Spring repository)!

Pour vous assurer que la CLI est installée et prête à être utilisée, exécutez simplement:

$ spring --version

Après avoir vérifié votre installation de la CLI Spring Boot, installez la dernière version stable de Cloud CLI:

$ spring install org.springframework.cloud:spring-cloud-cli:1.3.2.RELEASE

Ensuite, vérifiez le Cloud CLI:

$ spring cloud --version

Les fonctionnalités d'installation avancées sont disponibles sur le Cloud CLIpage officiel!

3. Services et configuration par défaut

La CLI fournit sept services de base pouvant être exécutés et déployés avec des commandes à une seule ligne.

Pour lancer un serveur Cloud Config surhttp://localhost:8888:

$ spring cloud configserver

Pour démarrer un serveur Eureka surhttp://localhost:8761:

$ spring cloud eureka

Pour lancer un serveur H2 surhttp://localhost:9095:

$ spring cloud h2

Pour lancer un serveur Kafka surhttp://localhost:9091:

$ spring cloud kafka

Pour démarrer un serveur Zipkin surhttp://localhost:9411:

$ spring cloud zipkin

Pour lancer un serveur Dataflow surhttp://localhost:9393:

$ spring cloud dataflow

Pour démarrer un tableau de bord Hystrix surhttp://localhost:7979:

$ spring cloud hystrixdashboard

Liste des services cloud en cours d'exécution:

$ spring cloud --list

La commande d'aide pratique:

$ spring help cloud

Pour plus de détails sur ces commandes, veuillez consulter lesblog officiels.

4. Personnalisation des services cloud avec YML

Chacun des services déployables via l'interface de ligne de commande Cloud peut également être configuré à l'aide des fichiers.yml nommés en conséquence:

spring:
  profiles:
    active: git
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo

Ceci constitue un simple fichier de configuration que nous pouvons utiliser pour lancer le serveur Cloud Config.

Nous pouvons, par exemple, spécifier un référentiel Git comme source d'URI qui sera automatiquement cloné et déployé lorsque nous émettrons la commande‘spring cloud configserver'.

Cloud CLI utilise Spring Cloud Launcher sous le capot. Cela signifie queCloud CLI supports most of the Spring Boot configuration mechanisms.Here’sest la liste officielle des propriétés de Spring Boot.

La configuration de Spring Cloud est conforme à la convention‘spring.cloud…. Les paramètres de Spring Cloud et Spring Config Server se trouvent dans celink.

Nous pouvons également spécifier plusieurs modules et services différents directement dans lescloud.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

Lecloud.yml permet d'ajouter des services ou des modules personnalisés et d'utiliser les référentiels Maven et Git.

5. Exécution de scripts Groovy personnalisés

Les composants personnalisés peuvent être écrits dans Groovy et déployés efficacement puisque Cloud CLI peut compiler et déployer du code Groovy.

Voici un exemple d'implémentation minimale d'API REST:

@RestController
@RequestMapping('/api')
class api {

    @GetMapping('/get')
    def get() { [message: 'Hello'] }
}

En supposant que le script est enregistré sousrest.groovy, nous pouvons lancer notre serveur minimal comme ceci:

$ spring run rest.groovy

Le pinghttp://localhost:8080/api/get devrait révéler:

{"message":"Hello"}

6. Encrypt/Decrypt

Cloud CLI fournit également un outil de chiffrement et de déchiffrement (qui se trouve dans le packageorg.springframework.cloud.cli.command.*) qui peut être utilisé directement via la ligne de commande ou indirectement en passant une valeur à un point de terminaison Cloud Config Server.

Configurons-le et voyons comment l'utiliser.

6.1. Installer

Cloud CLI ainsi que Spring Cloud Config Server utilisentorg.springframework.security.crypto.encrypt.* for handling encrypt and decrypt commands.

En tant que tels, tous deux nécessitent l'extension JCE Unlimited Strength fournie par Oraclehere.

6.2. Crypter et décrypter par commande

Pour crypter «my_value» via le terminal, appelez:

$ spring encrypt my_value --key my_key

Les chemins de fichiers peuvent être substitués au nom de la clé (par exemple «my_key» ci-dessus) en utilisant «@» suivi du chemin (couramment utilisé pour les clés publiques RSA):

$ spring encrypt my_value --key @${WORKSPACE}/foos/foo.pub

«my_value» sera désormais chiffré en quelque chose comme:

c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b

De plus, il sera stocké en mémoire sous la clé «my_key». Cela nous permet de déchiffrer «my_key» en «my_value» via la ligne de commande:

$ spring decrypt --key my_key

Nous pouvons également maintenant utiliser la valeur chiffrée dans un fichier de configuration YAML ou de propriétés, où elle sera automatiquement déchiffrée par le serveur Cloud Config lors du chargement:

encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"

6.3. Crypter et décrypter avec Config Server

Spring Cloud Config Server expose les points de terminaison RESTful où les clés et les paires de valeurs chiffrées peuvent être stockées dans le magasin Java Security Store ou en mémoire.

Pour plus d'informations sur la manière de configurer et de configurer correctement votre serveur Cloud Config pour accepter le cryptagesymmetric ouasymmetric, veuillez consulter nosarticle ou lesdocs officiels.

Une fois que Spring Cloud Config Server est configuré et opérationnel à l'aide de la commande «spring cloud configserver», vous pourrez appeler son API:

$ curl localhost:8888/encrypt -d mysecret
//682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
$ curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
//mysecret

7. Conclusion

Nous nous sommes concentrés ici sur une introduction à Spring Boot Cloud CLI. Pour plus d'informations, veuillez consulter lesdocs officiels.

Les exemples de configuration et de bash utilisés dans cet article sont disponiblesover on GitHub.