Dela via


Självstudie: Ansluta till en hanterad konfigurationsserver för Spring i Azure Container Apps

Config Server for Spring tillhandahåller en central plats för att göra konfigurationsdata tillgängliga för flera program. I den här artikeln lär du dig att ansluta en app som finns i Azure Container Apps till en Java Config Server for Spring-instans.

Komponenten Config Server for Spring Java använder en GitHub-lagringsplats som källa för konfigurationsinställningar. Konfigurationsvärden görs tillgängliga för containerappen via en bindning mellan komponenten och containerappen. När värdena ändras på konfigurationsservern flödar de automatiskt till ditt program, allt utan att du behöver kompilera om eller distribuera om programmet.

I den här självstudien får du lära dig att:

  • Skapa en konfigurationsserver för Spring Java-komponenten
  • Binda konfigurationsservern för Spring till din containerapp
  • Observera konfigurationsvärden före och efter anslutning av konfigurationsservern till ditt program
  • Kryptera och dekryptera konfigurationsvärden med en symmetrisk nyckel

Viktigt!

I den här självstudien används tjänster som kan påverka din Azure-faktura. Om du bestämmer dig för att följa med steg för steg ska du ta bort resurserna i den här artikeln för att undvika oväntad fakturering.

Förutsättningar

För att slutföra det här projektet behöver du följande:

Krav Instruktioner
Azure-konto En aktiv prenumeration krävs. Om du inte har någon sådan nu kan du skapa en kostnadsfritt.
Azure CLI Installera Azure CLI.

Att tänka på

När du kör i Config Server for Spring i Azure Container Apps bör du vara medveten om följande information:

Artikel Förklaring
Definitionsområde Konfigurationsservern för Spring körs i samma miljö som den anslutna containerappen.
Skalning För att upprätthålla en enda sanningskälla skalas inte Config Server for Spring. Skalningsegenskaperna minReplicas och maxReplicas är båda inställda på 1.
Resurser Containerresursallokeringen för Config Server for Spring är fast, antalet CPU-kärnor är 0,5 och minnesstorleken är 1Gi.
Prissättning Config Server for Spring-faktureringen faller under förbrukningsbaserad prissättning. Resurser som används av hanterade Java-komponenter debiteras enligt aktiva/inaktiva priser. Du kan ta bort komponenter som inte längre används för att stoppa faktureringen.
Bindande Containerappen ansluter till en Config Server for Spring via en bindning. Bindningen matar in konfigurationer i miljövariabler för containerappar. När en bindning har upprättats kan containerappen läsa konfigurationsvärden från miljövariabler.

Ställ in

Innan du börjar arbeta med Config Server for Spring måste du först skapa nödvändiga resurser.

Kör följande kommandon för att skapa resursgruppen och Container Apps-miljön.

  1. Skapa variabler som stöd för programkonfigurationen. Dessa värden tillhandahålls för dig i den här lektionen.

    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"
    
    Olika beskrivning
    LOCATION Den Plats i Azure-regionen där du skapar din containerapp och Java-komponent.
    ENVIRONMENT Miljönamnet för Azure Container Apps för ditt demoprogram.
    RESOURCE_GROUP Namnet på Azure-resursgruppen för demoprogrammet.
    JAVA_COMPONENT_NAME Namnet på Java-komponenten som skapats för containerappen. I det här fallet skapar du en Config Server for Spring Java-komponent.
    IMAGE Containeravbildningen som används i containerappen.
    URI Du kan ersätta URI:n med din git-lagringsplats-URL, om den är privat lägger du till relaterade autentiseringskonfigurationer som spring.cloud.config.server.git.username och spring.cloud.config.server.git.password.
  2. Logga in på Azure med Azure CLI.

    az login
    
  3. Skapa en resursgrupp.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Skapa din containerappmiljö.

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

Den här miljön används för att vara värd för både komponenten Config Server for Spring java och din containerapp.

Skapa komponenten Config Server for Spring Java

Nu när du har en Container Apps-miljö kan du skapa din containerapp och binda den till en Config Server for Spring java-komponent. När du binder containerappen synkroniseras konfigurationsvärden automatiskt från komponenten Config Server till ditt program.

  1. Skapa komponenten Config Server for Spring Java.

    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. Uppdatera komponenten Config Server for Spring Java.

    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
    

    Här berättar du för komponenten var du hittar lagringsplatsen som innehåller konfigurationsinformationen uri via egenskapen . Egenskapen refresh-rate anger hur ofta Container Apps ska söka efter ändringar i git-lagringsplatsen.

Binda din containerapp till komponenten Config Server for Spring Java

  1. Skapa containerappen som använder konfigurationsdata.

    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
    

    Det här kommandot returnerar URL:en för din containerapp som använder konfigurationsdata. Kopiera URL:en till en textredigerare så att du kan använda den i ett kommande steg.

    Om du besöker din app i en webbläsare är det connectTimeout värde som returneras standardvärdet 0.

  2. Bind till konfigurationsservern för Spring.

    Nu när containerappen och konfigurationsservern har skapats binder du dem tillsammans med kommandot till containerappen update .

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

    Parametern --bind $JAVA_COMPONENT_NAME skapar länken mellan containerappen och konfigurationskomponenten.

När containerappen och komponenten Config Server har bundits samman synkroniseras konfigurationsändringar automatiskt till containerappen.

När du besöker appens URL igen är värdet connectTimeout för nu 10000. Det här värdet kommer från git-lagringsplatsen i variabeln $URI som ursprungligen angavs som källa för konfigurationskomponenten. Mer specifikt hämtas det här värdet från connectionTimeout egenskapen i lagringsplatsens application.yml-fil .

Bindningsbegäran matar in konfigurationsinställningen i programmet som miljövariabler. Dessa värden är nu tillgängliga för programkoden som ska användas vid hämtning av konfigurationsinställningar från konfigurationsservern.

I det här fallet är följande miljövariabler tillgängliga för programmet:

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

Om du vill anpassa din egen SPRING_CONFIG_IMPORTkan du referera till miljövariabeln SPRING_CLOUD_CONFIG_COMPONENT_URI, till exempel kan du åsidosätta med kommandoradsargument, till exempel Java -Dspring.config.import=optional:configserver:${SPRING_CLOUD_CONFIG_COMPONENT_URI}?fail-fast=true.

Du kan också ta bort en bindning från ditt program.

(Valfritt) Avbind din containerapp från komponenten Config Server for Spring Java

Om du vill ta bort en bindning från en containerapp använder du alternativet --unbind .

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

När du besöker appens URL igen ändras värdet connectTimeout för tillbaka till 0.

Rensa resurser

De resurser som skapas i den här självstudien påverkar din Azure-faktura. Om du inte ska använda dessa tjänster på lång sikt kör du följande kommando för att ta bort allt som skapats i den här självstudien.

az group delete \
  --resource-group $RESOURCE_GROUP

Nästa steg