Einführung in die Spring Cloud-CLI

Einführung in Spring Cloud CLI

1. Einführung

In diesem Artikel werfen wir einen Blick auf Spring Boot Cloud CLI (oder kurz Cloud CLI). Das Tool bietet eine Reihe von Befehlszeilenverbesserungen für die Spring Boot-CLI, mit denen Spring Cloud-Bereitstellungen weiter abstrahiert und vereinfacht werden können.

Die CLI wurde Ende 2016 eingeführt undallows quick auto-configuration and deployment of standard Spring Cloud services using a command line, .yml configuration files, and Groovy scripts.

2. Installieren

Für Spring Boot Cloud CLI 1.3.x ist Spring Boot CLI 1.5.x erforderlich. Stellen Sie daher sicher, dass Sie die neueste Version von Spring Boot CLI vonMaven Central (installation instructions) und die neueste Version von Cloud CLI von herunterladen Maven Repository (the official Spring repository)!

Um sicherzustellen, dass die CLI installiert und einsatzbereit ist, führen Sie einfach Folgendes aus:

$ spring --version

Installieren Sie nach der Überprüfung Ihrer Spring Boot CLI-Installation die neueste stabile Version von Cloud CLI:

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

Überprüfen Sie dann die Cloud-CLI:

$ spring cloud --version

Erweiterte Installationsfunktionen finden Sie in der offiziellen Cloud CLIpage!

3. Standarddienste und Konfiguration

Die CLI bietet sieben Kerndienste, die mit einzeiligen Befehlen ausgeführt und bereitgestellt werden können.

So starten Sie einen Cloud Config-Server aufhttp://localhost:8888:

$ spring cloud configserver

So starten Sie einen Eureka-Server aufhttp://localhost:8761:

$ spring cloud eureka

So initiieren Sie einen H2-Server aufhttp://localhost:9095:

$ spring cloud h2

So starten Sie einen Kafka-Server aufhttp://localhost:9091:

$ spring cloud kafka

So starten Sie einen Zipkin-Server aufhttp://localhost:9411:

$ spring cloud zipkin

So starten Sie einen Datenflussserver aufhttp://localhost:9393:

$ spring cloud dataflow

So starten Sie ein Hystrix-Dashboard aufhttp://localhost:7979:

$ spring cloud hystrixdashboard

Liste der aktuell ausgeführten Cloud-Dienste:

$ spring cloud --list

Der praktische Hilfebefehl:

$ spring help cloud

Weitere Informationen zu diesen Befehlen finden Sie in den offiziellenblog.

4. Anpassen von Cloud-Diensten mit YML

Jeder der Dienste, die über die Cloud-CLI bereitgestellt werden können, kann auch mithilfe von.yml-Dateien mit entsprechendem Namen konfiguriert werden:

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

Dies ist eine einfache Konfigurationsdatei, mit der wir den Cloud Config Server starten können.

Wir können beispielsweise ein Git-Repository als URI-Quelle angeben, das automatisch geklont und bereitgestellt wird, wenn wir den Befehl‘spring cloud configserver' ausgeben.

Cloud CLI verwendet den Spring Cloud Launcher unter der Haube. Dies bedeutet, dassCloud CLI supports most of the Spring Boot configuration mechanisms.Here’sdie offizielle Liste der Spring Boot-Eigenschaften ist.

Die Spring Cloud-Konfiguration entspricht der Konvention von‘spring.cloud…. Die Einstellungen für Spring Cloud und Spring Config Server finden Sie unterlink.

Wir können auch mehrere verschiedene Module und Dienste direkt incloud.yml angeben:

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

Mitcloud.yml können benutzerdefinierte Dienste oder Module hinzugefügt und Maven- und Git-Repositorys verwendet werden.

5. Ausführen von benutzerdefinierten Groovy-Skripten

Benutzerdefinierte Komponenten können in Groovy geschrieben und effizient bereitgestellt werden, da Cloud CLI Groovy-Code kompilieren und bereitstellen kann.

Hier ist ein Beispiel für eine minimale REST-API-Implementierung:

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

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

Angenommen, das Skript wird alsrest.groovy gespeichert, können wir unseren Minimalserver wie folgt starten:

$ spring run rest.groovy

Pinghttp://localhost:8080/api/get sollte Folgendes anzeigen:

{"message":"Hello"}

6. Encrypt/Decrypt

Cloud CLI bietet auch ein Tool zum Ver- und Entschlüsseln (im Paketorg.springframework.cloud.cli.command.* enthalten), das direkt über die Befehlszeile oder indirekt durch Übergeben eines Werts an einen Cloud Config Server-Endpunkt verwendet werden kann.

Lassen Sie es uns einrichten und sehen, wie es verwendet wird.

6.1. Konfiguration

Sowohl die Cloud-CLI als auch der Spring Cloud-Konfigurationsserver verwendenorg.springframework.security.crypto.encrypt.* for handling encrypt and decrypt commands.

Daher benötigen beide die von Oraclehere bereitgestellte JCE Unlimited Strength Extension.

6.2. Mit Befehl verschlüsseln und entschlüsseln

Um 'my_value' über das Terminal zu verschlüsseln, rufen Sie Folgendes auf:

$ spring encrypt my_value --key my_key

Der Schlüsselname kann durch Dateipfade ersetzt werden (z. 'my_key' oben) durch Verwendung von '@' gefolgt vom Pfad (üblicherweise für öffentliche RSA-Schlüssel verwendet):

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

'my_value' wird jetzt wie folgt verschlüsselt:

c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b

Darüber hinaus wird es unter der Taste 'my_key' gespeichert. Dies ermöglicht es uns,my_key über die Befehlszeile wieder inmy_value zu entschlüsseln:

$ spring decrypt --key my_key

Wir können den verschlüsselten Wert jetzt auch in einer Konfigurations-YAML oder einer Eigenschaftendatei verwenden, wo er beim Laden automatisch vom Cloud Config Server entschlüsselt wird:

encrypted_credential: "{cipher}c93cb36ce1d09d7d62dffd156ef742faaa56f97f135ebd05e90355f80290ce6b"

6.3. Mit Config Server verschlüsseln und entschlüsseln

Spring Cloud Config Server stellt REST-fähige Endpunkte bereit, auf denen Schlüssel und verschlüsselte Wertepaare im Java Security Store oder im Speicher gespeichert werden können.

Weitere Informationen zum korrekten Einrichten und Konfigurieren Ihres Cloud Config-Servers für die Akzeptanz der Verschlüsselung vonsymmetric oderasymmetricfinden Sie in unserenarticle oder den offiziellendocs.

Sobald der Spring Cloud Config Server mit dem Befehl 'spring cloud configserver' konfiguriert und ausgeführt wurde, können Sie seine API aufrufen:

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

7. Fazit

Wir haben uns hier auf eine Einführung in die Spring Boot Cloud CLI konzentriert. Weitere Informationen finden Sie in den offiziellendocs.

Die in diesem Artikel verwendeten Konfigurations- und Bash-Beispiele sindover on GitHub verfügbar.