Rychlý start: Použití konfigurace Aplikace Azure ve službě Azure Kubernetes Service
V Kubernetes nastavíte pody tak, aby spotřebováovaly konfiguraci z objektů ConfigMap. Umožňuje oddělit konfiguraci od imagí kontejnerů a snadno přenášet aplikace. Aplikace Azure zprostředkovatel konfigurace Kubernetes může v konfiguraci Aplikace Azure Configuration vytvářet objekty ConfigMap a tajné kódy z hodnot klíčů a odkazů služby Key Vault. Umožňuje využít výhod konfigurace Aplikace Azure pro centralizované úložiště a správu konfigurace bez jakýchkoli změn kódu aplikace.
Objekt ConfigMap lze použít jako proměnné prostředí nebo připojený soubor. V tomto rychlém startu zahrnete do úlohy Azure Kubernetes Service zprostředkovatele Aplikace Azure Konfigurace Kubernetes Service, kde spustíte jednoduchou konfiguraci ASP.NET Core využívající konfiguraci ze souboru JSON.
Tip
Viz možnosti pro úlohy hostované v Kubernetes pro přístup ke konfiguraci Aplikace Azure.
Poznámka:
Tento rychlý start vás provede nastavením poskytovatele Aplikace Azure Configuration Kubernetes. Volitelně můžete pomocí následujících příkazů Azure Developer CLI se šablonou azure-appconfig-aks
zřídit prostředky Azure a nasadit ukázkovou aplikaci používanou v tomto rychlém startu. Další informace o této šabloně najdete v úložišti azure-appconfig-aks na GitHubu.
azd init -t azure-appconfig-aks
azd up
Požadavky
- App Configuration Store. Vytvořte úložiště.
- An Azure Container Registry. Vytvořte registr.
- Cluster Azure Kubernetes Service (AKS), který má udělené oprávnění k načítání imagí z vašeho služby Azure Container Registry. Vytvořte cluster AKS.
- .NET SDK 6.0 nebo novější
- Azure CLI
- Docker Desktop
- kormidlo
- kubectl
Vytvoření aplikace spuštěné v AKS
V této části vytvoříte jednoduchou webovou aplikaci ASP.NET Core běžící ve službě Azure Kubernetes Service (AKS). Aplikace čte konfiguraci z místního souboru JSON. V další části ji umožníte využívat konfiguraci z Aplikace Azure Konfigurace beze změny kódu aplikace. Pokud už máte aplikaci AKS, která čte konfiguraci ze souboru, přeskočte tuto část a přejděte na Použití zprostředkovatele Kubernetes konfigurace aplikace. Musíte zajistit, aby konfigurační soubor vygenerovaný poskytovatelem odpovídal cestě k souboru používanému vaší aplikací.
Vytvoření aplikace
Pomocí rozhraní příkazového řádku .NET (CLI) a spuštěním následujícího příkazu vytvořte nový projekt webové aplikace ASP.NET Core v novém adresáři MyWebApp :
dotnet new webapp --output MyWebApp --framework net6.0
Otevřete soubor Index.cshtml v adresáři Pages a aktualizujte obsah následujícím kódem.
@page @model IndexModel @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration @{ ViewData["Title"] = "Home page"; } <style> h1 { color: @Configuration["Settings:FontColor"]; } </style> <div class="text-center"> <h1>@Configuration["Settings:Message"]</h1> </div>
V kořenovém adresáři projektu vytvořte konfigurační adresář a přidejte do něj mysettings.json soubor s následujícím obsahem.
{ "Settings": { "FontColor": "Black", "Message": "Message from the local configuration" } }
Otevřete program.cs a přidejte soubor JSON do zdroje konfigurace voláním
AddJsonFile
metody.// Existing code in Program.cs // ... ... // Add a JSON configuration source builder.Configuration.AddJsonFile("config/mysettings.json", reloadOnChange: true, optional: false); var app = builder.Build(); // The rest of existing code in program.cs // ... ...
Kontejnerizace aplikace
Spuštěním příkazu dotnet publish sestavte aplikaci v režimu vydání a vytvořte prostředky v publikovaném adresáři.
dotnet publish -c Release -o published
Vytvořte soubor s názvem Dockerfile v kořenovém adresáři projektu, otevřete ho v textovém editoru a zadejte následující obsah. Soubor Dockerfile je textový soubor, který nemá příponu a slouží k vytvoření image kontejneru.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime WORKDIR /app COPY published/ ./ ENTRYPOINT ["dotnet", "MyWebApp.dll"]
Spuštěním následujícího příkazu sestavte image kontejneru s názvem aspnetapp .
docker build --tag aspnetapp .
Nahrání image do služby Azure Container Registry
Spuštěním příkazu az acr login se přihlaste do registru kontejneru. Následující příklad se přihlásí do registru s názvem myregistry. Nahraďte název registru vaším názvem.
az acr login --name myregistry
Příkaz se vrátí
Login Succeeded
po úspěšném přihlášení.Značka Dockeru slouží k vytvoření značky myregistry.azurecr.io/aspnetapp:v1 pro image aspnetapp.
docker tag aspnetapp myregistry.azurecr.io/aspnetapp:v1
Tip
Pokud chcete zkontrolovat seznam existujících imagí a značek Dockeru, spusťte
docker image ls
příkaz . V tomto scénáři byste měli vidět alespoň dva obrázky:aspnetapp
amyregistry.azurecr.io/aspnetapp
.Pomocí docker push nahrajte image do registru kontejneru. Například následující příkaz nasdílí image do úložiště s názvem aspnetapp se značkou v1 pod registrem myregistry.
docker push myregistry.azurecr.io/aspnetapp:v1
Nasazení aplikace
Vytvořte adresář nasazení v kořenovém adresáři projektu.
Přidejte do adresáře nasazení soubor deployment.yaml s následujícím obsahem pro vytvoření nasazení. Nahraďte hodnotu
template.spec.containers.image
obrázkem, který jste vytvořili v předchozím kroku.apiVersion: apps/v1 kind: Deployment metadata: name: aspnetapp-demo labels: app: aspnetapp-demo spec: replicas: 1 selector: matchLabels: app: aspnetapp-demo template: metadata: labels: app: aspnetapp-demo spec: containers: - name: aspnetapp image: myregistry.azurecr.io/aspnetapp:v1 ports: - containerPort: 80
Do adresáře nasazení přidejte soubor service.yaml s následujícím obsahem pro vytvoření služby LoadBalancer.
apiVersion: v1 kind: Service metadata: name: aspnetapp-demo-service spec: type: LoadBalancer ports: - port: 80 selector: app: aspnetapp-demo
Spuštěním následujícího příkazu nasaďte aplikaci do clusteru AKS.
kubectl create namespace appconfig-demo kubectl apply -f ./Deployment -n appconfig-demo
Spusťte následující příkaz a získejte externí IP adresu vystavenou službou LoadBalancer.
kubectl get service aspnetapp-demo-service -n appconfig-demo
Otevřete okno prohlížeče a přejděte na IP adresu získanou v předchozím kroku. Webová stránka vypadá takto:
Použití zprostředkovatele Kubernetes pro konfiguraci aplikací
Teď, když máte aplikaci spuštěnou v AKS, nasadíte zprostředkovatele Kubernetes konfigurace aplikace do clusteru AKS spuštěného jako kontroler Kubernetes. Zprostředkovatel načte data z úložiště App Configuration Store a vytvoří objekt ConfigMap, který je použitelný jako soubor JSON připojený ke svazku dat.
Nastavení úložiště konfigurace Aplikace Azure
Přidejte následující hodnoty klíč-hodnoty do obchodu App Configuration a ponechte popisek a typ obsahu s jejich výchozími hodnotami. Další informace o tom, jak přidat hodnoty klíčů do úložiště pomocí webu Azure Portal nebo rozhraní příkazového řádku, najdete v tématu Vytvoření hodnoty klíče.
Klíč | Hodnota |
---|---|
Nastavení:FontColor | Zelený |
Nastavení:Zpráva | Dobrý den z konfigurace Aplikace Azure |
Nastavení zprostředkovatele Kubernetes konfigurace aplikace
Spuštěním následujícího příkazu získejte přihlašovací údaje pro přístup ke clusteru AKS. Nahraďte hodnotu
name
aresource-group
parametry vaší instancí AKS:az aks get-credentials --name <your-aks-instance-name> --resource-group <your-aks-resource-group>
Nainstalujte do clusteru AKS poskytovatele Aplikace Azure Configuration Kubernetes pomocí
helm
:helm install azureappconfiguration.kubernetesprovider \ oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \ --namespace azappconfig-system \ --create-namespace
Tip
Poskytovatel Kubernetes konfigurace aplikace je také k dispozici jako rozšíření AKS. Tato integrace umožňuje bezproblémovou instalaci a správu prostřednictvím Azure CLI, šablon ARM nebo šablon Bicep. Použití rozšíření AKS usnadňuje automatické aktualizace podverze/opravy a zajišťuje tak, aby byl váš systém vždy aktuální. Podrobné pokyny k instalaci najdete v rozšíření konfigurace Aplikace Azure pro Azure Kubernetes Service.
Do adresáře nasazení přidejte soubor appConfigurationProvider.yaml s následujícím obsahem pro vytvoření
AzureAppConfigurationProvider
prostředku.AzureAppConfigurationProvider
je vlastní prostředek, který definuje, jaká data se mají stáhnout z úložiště konfigurace Aplikace Azure a vytvoří objekt ConfigMap.apiVersion: azconfig.io/v1 kind: AzureAppConfigurationProvider metadata: name: appconfigurationprovider-sample spec: endpoint: <your-app-configuration-store-endpoint> target: configMapName: configmap-created-by-appconfig-provider configMapData: type: json key: mysettings.json auth: workloadIdentity: serviceAccountName: <your-service-account-name>
Nahraďte hodnotu
endpoint
pole koncovým bodem vašeho úložiště konfigurace Aplikace Azure. Přejděte k dalšímu kroku a aktualizujteauth
oddíl ověřovacími údaji.Poznámka:
AzureAppConfigurationProvider
je deklarativní objekt rozhraní API. Definuje požadovaný stav objektu ConfigMap vytvořeného z dat v obchodě App Configuration Store s následujícím chováním:- Objekt ConfigMap se nepodaří vytvořit, pokud objekt ConfigMap se stejným názvem již existuje ve stejném oboru názvů.
- Objekt ConfigMap se resetuje na základě aktuálních dat v obchodě App Configuration Store, pokud se odstraní nebo upraví jiným způsobem.
- Konfigurační mapa se odstraní, pokud se odinstaluje zprostředkovatel Kubernetes konfigurace aplikace.
Podle pokynů použijte identitu úlohy k ověření ve službě App Configuration Store. Aktualizujte soubor appConfigurationProvider.yaml nahrazením
serviceAccountName
pole názvem účtu služby, který jste vytvořili. Další informace o jiných metodách ověřování najdete v příkladech v části Ověřování .Aktualizujte soubor deployment.yaml v adresáři nasazení tak, aby jako připojený datový svazek používal ConfigMap
configmap-created-by-appconfig-provider
. Je důležité zajistit, abyvolumeMounts.mountPath
odpovídaly zadanémuWORKDIR
souboru Dockerfile a konfiguračnímu adresáři vytvořenému dříve.apiVersion: apps/v1 kind: Deployment metadata: name: aspnetapp-demo labels: app: aspnetapp-demo spec: replicas: 1 selector: matchLabels: app: aspnetapp-demo template: metadata: labels: app: aspnetapp-demo spec: containers: - name: aspnetapp image: myregistry.azurecr.io/aspnetapp:v1 ports: - containerPort: 80 volumeMounts: - name: config-volume mountPath: /app/config volumes: - name: config-volume configMap: name: configmap-created-by-appconfig-provider
Spuštěním následujícího příkazu nasaďte změny. Pokud používáte stávající aplikaci AKS, nahraďte obor názvů.
kubectl apply -f ./Deployment -n appconfig-demo
Aktualizujte prohlížeč. Stránka zobrazuje aktualizovaný obsah.
Řešení problému
Pokud nevidíte, že vaše aplikace vyzvedne data z obchodu App Configuration Store, spuštěním následujícího příkazu ověřte, že je objekt ConfigMap vytvořen správně.
kubectl get configmap configmap-created-by-appconfig-provider -n appconfig-demo
Pokud objekt ConfigMap není vytvořen, spuštěním následujícího příkazu získejte stav načtení dat.
kubectl get AzureAppConfigurationProvider appconfigurationprovider-sample -n appconfig-demo -o yaml
Pokud poskytovatel kubernetes konfigurace Aplikace Azure úspěšně načetl data z úložiště App Configuration Store, phase
měla by COMPLETE
být vlastnost v části stavu výstupu , jak je znázorněno v následujícím příkladu.
$ kubectl get AzureAppConfigurationProvider appconfigurationprovider-sample -n appconfig-demo -o yaml
apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
... ... ...
status:
lastReconcileTime: "2023-04-06T06:17:06Z"
lastSyncTime: "2023-04-06T06:17:06Z"
message: Complete sync settings to ConfigMap or Secret
phase: COMPLETE
Pokud fáze není COMPLETE
, data se nestáhnou z vašeho obchodu App Configuration správně. Spuštěním následujícího příkazu zobrazte protokoly poskytovatele Aplikace Azure Configuration Kubernetes.
kubectl logs deployment/az-appconfig-k8s-provider -n azappconfig-system
Protokoly použijte k dalšímu řešení potíží. Běžné problémy najdete v části Nejčastější dotazy .
Často kladené dotazy
Proč se negeneruje objekt ConfigMap nebo tajný klíč?
Podrobné informace o chybách najdete v průvodci odstraňováním potíží a shromáždit protokoly. Tady jsou některé běžné příčiny.
- ODPOVĚĎ 403: 403 Zakázáno: Nakonfigurovaná identita nemá potřebná oprávnění pro přístup ke službě App Configuration Store. Příklady, které odpovídají identitě, kterou používáte, najdete v části Ověřování .
- Referenční informace ke službě Key Vault se nacházejí v konfiguraci aplikace, ale "spec.secret" nebyla nakonfigurována: Do vybraných hodnot klíčů jsou zahrnuty některé odkazy služby Key Vault, ale nezadá se ověřovací informace pro trezory klíčů. Kvůli zachování integrity konfigurace se celá konfigurace nenačte. Nakonfigurujte oddíl tak
spec.secret
, aby poskytoval potřebné ověřovací informace. Příklady a další informace najdete v referenčních informacích ke službě Key Vault .
Proč vygenerovaný objekt ConfigMap neobsahuje očekávaná data?
Ujistěte se, že zadáte správné selektory klíč-hodnota tak, aby odpovídaly očekávaným datům. Pokud nejsou zadány žádné selektory, všechny hodnoty klíčů bez popisku se stáhnou z obchodu App Configuration Store. Pokud používáte filtr klíčů, ověřte, že odpovídá předponě očekávaných hodnot klíče. Pokud mají hodnoty klíčů popisky, nezapomeňte v selektorech zadat filtr popisků. Další příklady najdete v dokumentaci k výběru klíč-hodnota.
Jak můžu přizpůsobit instalaci poskytovatele kubernetes konfigurace Aplikace Azure?
Instalaci můžete přizpůsobit poskytnutím dalších hodnot Helm při instalaci poskytovatele Aplikace Azure Configuration Kubernetes. Můžete například nastavit úroveň protokolu, nakonfigurovat zprostředkovatele tak, aby běžel na konkrétním uzlu, nebo zakázat identitu úlohy. Další informace najdete v průvodci instalací.
Aktivace aktualizace objektu ConfigMap a tajného kódu na vyžádání
I když můžete nastavit automatickou aktualizaci dat, může docházet k tomu, že budete chtít aktivovat aktualizaci na vyžádání, abyste získali nejnovější data ze služby App Configuration a Key Vaultu. K tomu můžete restartovat nasazení kontroleru poskytovatele Aplikace Azure Konfigurace Kubernetes. Zprostředkovatel Kubernetes pak odsouhlasí a aktualizuje objekt ConfigMap a Tajný kód nejnovějšími daty z úložiště app Configuration Store a služby Key Vault.
Nedoporučuje se odstranit ani upravit objekt ConfigMap a tajný klíč vygenerovaný poskytovatelem Kubernetes. I když se z nejnovějších dat vygenerují nové, může to způsobit výpadky aplikací v případě jakýchkoli selhání.
Proč se po upgradu zprostředkovatele na verzi 2.0.0 nemůžu ověřit pomocí konfigurace Aplikace Azure pomocí identity úloh?
Od verze 2.0.0 se pro ověřování pomocí konfigurace Aplikace Azure pomocí identity úlohy vyžaduje účet služby poskytovaný uživatelem. Tato změna zlepšuje zabezpečení prostřednictvím izolace oboru názvů. Dříve se pro všechny obory názvů použil účet služby poskytovatele Kubernetes. Aktualizované pokyny najdete v dokumentaci k používání identity úloh. Pokud potřebujete čas na migraci při upgradu na verzi 2.0.0, můžete během instalace zprostředkovatele dočasně nastavit workloadIdentity.globalServiceAccountEnabled=true
. Upozorňujeme, že podpora použití účtu služby poskytovatele bude v budoucí verzi zastaralá.
Vyčištění prostředků
Pokud chcete zachovat cluster AKS, odinstalujte z clusteru AKS zprostředkovatele Kubernetes služby App Configuration.
helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system
Pokud nechcete dál používat prostředky vytvořené v tomto článku, odstraňte skupinu prostředků, kterou jste tady vytvořili, abyste se vyhnuli poplatkům.
Důležité
Odstranění skupiny prostředků je nevratné. Skupina prostředků a všechny prostředky v ní se trvale odstraní. Ujistěte se, že omylem neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste vytvořili prostředky pro tento článek ve skupině prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte jednotlivé prostředky z příslušného podokna místo odstranění skupiny prostředků.
- Přihlaste se k webu Azure Portal a vyberte skupiny prostředků.
- Do pole Filtrovat podle názvu zadejte název vaší skupiny prostředků.
- V seznamu výsledků vyberte název skupiny prostředků, abyste zobrazili přehled.
- Vyberte Odstranit skupinu prostředků.
- Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Potvrďte název skupiny prostředků a vyberte Odstranit.
Po chvíli se skupina prostředků a všechny její prostředky odstraní.
Poznámka:
Pokud k nastavení prostředků použijete Azure Developer CLI, můžete spuštěním azd down
příkazu odstranit všechny prostředky vytvořené šablonou azure-appconfig-aks
.
Další kroky
V tomto rychlém startu:
- Vytvořili jste aplikaci spuštěnou ve službě Azure Kubernetes Service (AKS).
- Připojili jste cluster AKS ke službě App Configuration Store pomocí zprostředkovatele Kubernetes konfigurace aplikace.
- Vytvořili jste objekt ConfigMap s daty z obchodu App Configuration Store.
- Spustili jste aplikaci s konfigurací z app Configuration Storu beze změny kódu aplikace.
Pokud chcete zjistit, jak aktualizovat úlohy AKS na dynamickou aktualizaci konfigurace, pokračujte dalším kurzem.
Další informace o poskytovateli Aplikace Azure Konfigurace Kubernetes najdete v tématu Aplikace Azure Referenční informace o poskytovateli konfigurace Kubernetes.