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.
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
ochspring.cloud.config.server.git.password
.Logga in på Azure med Azure CLI.
az login
Skapa en resursgrupp.
az group create --name $RESOURCE_GROUP --location $LOCATION
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.
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
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 . Egenskapenrefresh-rate
anger hur ofta Container Apps ska söka efter ändringar i git-lagringsplatsen.
Binda din containerapp till komponenten Config Server for Spring Java
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ärdet0
.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_IMPORT
kan 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