Teilen über


Tutorial: Herstellen einer Verbindung mit einer verwalteten Instanz von Config Server für Spring in Azure Container Apps

Config Server für Spring bietet einen zentralen Speicherort, um Konfigurationsdaten für mehrere Anwendungen verfügbar zu machen. In diesem Artikel erfahren Sie, wie Sie eine in Azure Container Apps gehostete App mit einer Java-Instanz von Config Server für Spring verbinden.

Die Java-Komponente für Config Server für Spring verwendet ein GitHub-Repository als Quelle für Konfigurationseinstellungen. Konfigurationswerte werden Ihrer Container-App über eine Bindung zwischen der Komponente und der Container-App zur Verfügung gestellt. Wenn sich die Werte auf dem Konfigurationsserver ändern, fließen sie automatisch zu Ihrer Anwendung, ohne dass Sie die Anwendung erneut kompilieren oder erneut bereitstellen müssen.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer Java-Komponente für Config Server für Spring
  • Binden von Config Server für Spring an Ihre Container-App
  • Beobachten von Konfigurationswerten vor und nach dem Verbinden des Konfigurationsservers mit Ihrer Anwendung
  • Verschlüsseln und Entschlüsseln von Konfigurationswerten mit einem symmetrischen Schlüssel

Wichtig

In diesem Tutorial werden Dienste verwendet, die sich auf Ihre Azure-Rechnung auswirken können. Wenn Sie sich dafür entscheiden, Schritt für Schritt vorzugehen, sollten Sie die in diesem Artikel verwendeten Ressourcen löschen, um unerwartete Abrechnungen zu vermeiden.

Voraussetzungen

Zum Abschließen dieses Projekts benötigen Sie die folgenden Elemente:

Anforderung Anweisungen
Azure-Konto Ein aktives Abonnement ist erforderlich. Falls Sie keins haben, können Sie kostenlos eins erstellen.
Azure CLI Installieren Sie die Azure CLI.

Überlegungen

Beachten Sie bei der Ausführung in Config Server für Spring in Azure Container Apps die folgenden Details:

Artikel Erklärung
Umfang Config Server für Spring wird in derselben Umgebung wie die verbundene Container-App ausgeführt.
Skalieren Um eine einzelne Wahrheitsinstanz (Single Source Of Truth) aufrechtzuerhalten, wird Config Server für Spring nicht skaliert. Die Skalierungseigenschaften minReplicas und maxReplicas sind beide auf 1.
Ressourcen Die Containerressourcenzuordnung für Config Server für Spring ist fest, die Anzahl der CPU-Kerne beträgt 0,5 und die Speichergröße 1 Gi.
Preise Die Abrechnung für Config Server für Spring erfolgt verbrauchsabhängig. Ressourcen, die von verwalteten Java-Komponenten verbraucht werden, werden in den Aktiven/Leerlaufraten abgerechnet. Sie können Komponenten löschen, die nicht mehr zum Beenden der Abrechnung verwendet werden.
Binding Die Container-App stellt über eine Bindung eine Verbindung mit Config Server für Spring her. Die Bindung fügt Konfigurationen in Container-App-Umgebungsvariablen ein. Sobald eine Bindung eingerichtet wurde, kann die Container-App Konfigurationswerte aus Umgebungsvariablen lesen.

Setup

Bevor Sie mit Config Server für Spring arbeiten, müssen Sie zuerst die erforderlichen Ressourcen erstellen.

Führen Sie die folgenden Befehle aus, um Ihre Ressourcengruppe und die Container Apps-Umgebung zu erstellen.

  1. Erstellen Sie Variablen, um Ihre Anwendungskonfiguration zu unterstützen. Diese Werte werden Ihnen im Rahmen dieser Lerneinheit bereitgestellt.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-services-resource-group
    export ENVIRONMENT=my-environment
    export JAVA_COMPONENT_NAME=configserver
    export APP_NAME=my-config-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-config-client:latest"
    export URI="https://github.com/Azure-Samples/azure-spring-cloud-config-java-aca.git"
    
    Variable Beschreibung
    LOCATION Der Standort der Azure-Region, an dem Sie Ihre Container-App und die Java-Komponente erstellen
    ENVIRONMENT Der Name der Azure Container Apps-Umgebung für Ihre Demoanwendung.
    RESOURCE_GROUP Der Name der Azure-Ressourcengruppe für Ihre Demoanwendung
    JAVA_COMPONENT_NAME Der Name der für Ihre Container-App erstellten Java-Komponente. In diesem Fall erstellen Sie eine Java-Komponente für Config Server für Spring.
    IMAGE Das in Ihrer Container-App verwendete Containerimage
    URI Sie können den URI durch die URL zum Git-Repository ersetzen, falls er privat ist, und die zugehörigen Authentifizierungskonfigurationen wie spring.cloud.config.server.git.username und spring.cloud.config.server.git.password hinzufügen.
  2. Melden Sie sich über die Azure-Befehlszeilenschnittstelle bei Azure an.

    az login
    
  3. Erstellen Sie eine Ressourcengruppe.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Erstellen Sie die Container Apps-Umgebung.

    az containerapp env create \
      --name $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION
    

Diese Umgebung wird verwendet, um sowohl die Java-Komponente für Config Server für Spring als auch Ihre Container-App zu hosten.

Erstellen der Java-Komponente für Config Server für Spring

Sie verfügen nun über eine Container Apps-Umgebung und können jetzt Ihre Container-App erstellen und an eine Java-Komponente für Config Server für Spring binden. Wenn Sie Ihre Container-App binden, werden Konfigurationswerte automatisch von der Config Server-Komponente mit Ihrer Anwendung synchronisiert.

  1. Erstellen Sie die Java-Komponente für Config Server für Spring:

    az containerapp env java-component config-server-for-spring create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME \
      --min-replicas 1 \
      --max-replicas 1 \
      --configuration spring.cloud.config.server.git.uri=$URI
    
  2. Aktualisieren Sie die Java-Komponente für Config Server für Spring:

    az containerapp env java-component config-server-for-spring update \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME \
      --min-replicas 2 \
      --max-replicas 2 \
      --configuration spring.cloud.config.server.git.uri=$URI spring.cloud.config.server.git.refresh-rate=60
    

    Hier teilen Sie der Komponente über die Eigenschaft uri mit, wo sie das Repository mit Ihren Konfigurationsinformationen finden kann. Die refresh-rate-Eigenschaft teilt Container Apps mit, wie oft nach Änderungen in Ihrem Git-Repository gesucht werden soll.

Binden Ihrer Container-App an die Java-Komponente „Config Server für Spring“

  1. Erstellen Sie die Container-App, die Konfigurationsdaten verwendet.

    az containerapp create \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $ENVIRONMENT \
      --image $IMAGE \
      --min-replicas 1 \
      --max-replicas 1 \
      --ingress external \
      --target-port 8080 \
      --query properties.configuration.ingress.fqdn
    

    Dieser Befehl gibt die URL Ihrer Container-App zurück, die Konfigurationsdaten verwendet. Kopieren Sie die URL in einen Text-Editor, damit Sie sie in einem nächsten Schritt verwenden können.

    Wenn Sie Ihre App in einem Browser aufrufen, ist der zurückgegebene connectTimeout-Wert der Standardwert 0.

  2. Erstellen Sie die Bindung mit Config Server für Spring.

    Nachdem die Container-App und die Config Server-Instanz erstellt wurden, binden Sie sie zusammen mit dem Befehl update an Ihre Container-App.

    az containerapp update \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --bind $JAVA_COMPONENT_NAME
    

    Der Parameter --bind $JAVA_COMPONENT_NAME erstellt die Verknüpfung zwischen Ihrer Container-App und der Konfigurationskomponente.

Sobald die Container-App und die Config Server-Komponente miteinander verbunden wurden, werden Konfigurationsänderungen automatisch mit der Container-App synchronisiert.

Wenn Sie die URL der App erneut aufrufen, lautet der Wert von connectTimeout jetzt 10000. Dieser Wert stammt aus dem Git-Repository, das in der Variablen $URI ursprünglich als Quelle der Konfigurationskomponente festgelegt wurde. Konkret wird dieser Wert aus der connectionTimeout-Eigenschaft in der Datei application.yml des Repositorys abgerufen.

Die Bindungsanforderung fügt die Konfigurationseinstellung als Umgebungsvariablen in die Anwendung ein. Diese Werte sind jetzt für den Anwendungscode verfügbar, der beim Abrufen von Konfigurationseinstellungen vom Konfigurationsserver verwendet werden soll.

In diesem Fall stehen der Anwendung die folgenden Umgebungsvariablen zur Verfügung:

SPRING_CLOUD_CONFIG_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CLOUD_CONFIG_COMPONENT_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CONFIG_IMPORT=optional:configserver:$SPRING_CLOUD_CONFIG_URI

Wenn Sie Ihr eigenes SPRING_CONFIG_IMPORT-Element anpassen möchten, können Sie auf die Umgebungsvariable SPRING_CLOUD_CONFIG_COMPONENT_URI verweisen. Beispielsweise können Sie sie durch Befehlszeilenargumente wie Java -Dspring.config.import=optional:configserver:${SPRING_CLOUD_CONFIG_COMPONENT_URI}?fail-fast=true außer Kraft setzen.

Sie können auch eine Bindung aus Ihrer Anwendung entfernen.

(Optional) Lösen Sie Ihre Container-App aus der Java-Komponente von Config Server für Spring.

Verwenden Sie die Option --unbind, um eine Bindung aus einer Container-App zu entfernen.

az containerapp update \
  --name $APP_NAME \
  --unbind $JAVA_COMPONENT_NAME \
  --resource-group $RESOURCE_GROUP

Wenn Sie die URL der App erneut aufrufen, lautet der Wert von connectTimeout wieder 0.

Bereinigen von Ressourcen

Die in diesem Tutorial erstellten Ressourcen wirken sich auf Ihre Azure-Abrechnung aus. Führen Sie den folgenden Befehl aus, um alle in diesem Tutorial erstellten Ressourcen zu entfernen, wenn Sie diese Dienste nicht langfristig verwenden werden.

az group delete \
  --resource-group $RESOURCE_GROUP

Nächste Schritte