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.