Rövid útmutató: Azure-alkalmazás-konfiguráció használata az Azure Kubernetes Service-ben
A Kubernetesben podokat állít be a konfiguráció ConfigMapsből való felhasználásához. Lehetővé teszi a konfiguráció leválasztása a tárolólemezképektől, így az alkalmazások egyszerűen hordozhatók. Azure-alkalmazás konfigurációs Kubernetes-szolgáltató konfigurálási térképeket és titkos kulcsokat hozhat létre a kulcsértékekből és a Key Vault-hivatkozásokból Azure-alkalmazás konfigurációban. Lehetővé teszi Azure-alkalmazás konfiguráció használatát a konfiguráció központosított tárolásához és kezeléséhez az alkalmazáskód módosítása nélkül.
A ConfigMap környezeti változóként vagy csatlakoztatott fájlként is használható. Ebben a rövid útmutatóban Azure-alkalmazás Konfigurációs Kubernetes-szolgáltatót egy Azure Kubernetes Service-számítási feladatba építi be, ahol egy egyszerű ASP.NET Core-alkalmazást futtat egy JSON-fájlból.
Tipp.
A Kubernetesben üzemeltetett számítási feladatok beállításainak megtekintése Azure-alkalmazás konfiguráció eléréséhez.
Feljegyzés
Ez a rövid útmutató végigvezeti a Azure-alkalmazás Konfigurációs Kubernetes-szolgáltató beállításán. A sablonnal azure-appconfig-aks
együtt az alábbi Azure Developer CLI-parancsokat is használhatja az Azure-erőforrások kiépítéséhez és az ebben a rövid útmutatóban használt mintaalkalmazás üzembe helyezéséhez. A sablonról további információt a GitHub azure-appconfig-aks adattárában talál.
azd init -t azure-appconfig-aks
azd up
Előfeltételek
- Alkalmazáskonfigurációs áruház. Hozzon létre egy áruházat.
- Egy Azure Container Registry. Hozzon létre egy beállításjegyzéket.
- Egy Azure Kubernetes Service- (AKS-) fürt, amely engedélyt kap lemezképek lekérésére az Azure Container Registryből. AKS-fürt létrehozása.
- .NET SDK 6.0 vagy újabb
- Azure CLI
- Docker Desktop
- kormányrúd
- kubectl
Az AKS-ben futó alkalmazás létrehozása
Ebben a szakaszban egy egyszerű ASP.NET Core-webalkalmazást fog létrehozni, amely az Azure Kubernetes Service-ben (AKS) fut. Az alkalmazás egy helyi JSON-fájlból olvassa be a konfigurációt. A következő szakaszban engedélyezheti, hogy az alkalmazáskód módosítása nélkül használja fel Azure-alkalmazás konfigurációját. Ha már rendelkezik olyan AKS-alkalmazással, amely beolvassa a konfigurációt egy fájlból, hagyja ki ezt a szakaszt, és lépjen az Alkalmazáskonfigurációs Kubernetes-szolgáltató használatára. Csak azt kell biztosítania, hogy a szolgáltató által létrehozott konfigurációs fájl megegyezik az alkalmazás által használt elérési úttal.
Alkalmazás létrehozása
A .NET parancssori felület (CLI) használatával hozzon létre egy új ASP.NET Core-webalkalmazás-projektet egy új MyWebApp-címtárban :
dotnet new webapp --output MyWebApp --framework net6.0
Nyissa meg az Index.cshtml fájlt a Pages könyvtárban, és frissítse a tartalmat a következő kóddal.
@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>
Hozzon létre egy konfigurációs könyvtárat a projekt gyökerében, és adjon hozzá egy mysettings.json fájlt a következő tartalommal.
{ "Settings": { "FontColor": "Black", "Message": "Message from the local configuration" } }
Nyissa meg a program.cs , és adja hozzá a JSON-fájlt a konfigurációs forráshoz a
AddJsonFile
metódus meghívásával.// 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 // ... ...
Az alkalmazás tárolóba helyezése
Futtassa a dotnet publish parancsot az alkalmazás kiadási módban való létrehozásához, és hozza létre az eszközöket a közzétett címtárban.
dotnet publish -c Release -o published
Hozzon létre egy Dockerfile nevű fájlt a projektkönyvtár gyökerénél, nyissa meg egy szövegszerkesztőben, és írja be a következő tartalmat. A Dockerfile olyan szövegfájl, amely nem rendelkezik kiterjesztéssel, és tárolórendszerkép létrehozásához használatos.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime WORKDIR /app COPY published/ ./ ENTRYPOINT ["dotnet", "MyWebApp.dll"]
Hozzon létre egy aspnetapp nevű tárolórendszerképet az alábbi parancs futtatásával.
docker build --tag aspnetapp .
A rendszerkép leküldése az Azure Container Registrybe
Futtassa az az acr bejelentkezési parancsot a tárolóregisztrációs adatbázisba való bejelentkezéshez. Az alábbi példa egy myregistry nevű beállításjegyzékbe jelentkezik be. Cserélje le a beállításjegyzék nevét a sajátjaira.
az acr login --name myregistry
A parancs a
Login Succeeded
sikeres bejelentkezés után ad vissza.A docker-címkével hozzon létre egy myregistry.azurecr.io/aspnetapp:v1 a kép aspnetapphoz.
docker tag aspnetapp myregistry.azurecr.io/aspnetapp:v1
Tipp.
A meglévő Docker-rendszerképek és címkék listájának áttekintéséhez futtassa a következőt
docker image ls
: . Ebben a forgatókönyvben legalább két képnek kell megjelennie:aspnetapp
ésmyregistry.azurecr.io/aspnetapp
.A docker push használatával töltse fel a lemezképet a tárolóregisztrációs adatbázisba. Az alábbi parancs például leküldi a lemezképet egy aspnetapp nevű adattárba, amelynek v1-es címkéje van a regisztrációs adatbázis myregisztria alatt.
docker push myregistry.azurecr.io/aspnetapp:v1
Az alkalmazás üzembe helyezése
Hozzon létre egy üzembehelyezési könyvtárat a projekt gyökérkönyvtárában.
Az üzembe helyezés létrehozásához adjon hozzá egy deployment.yaml fájlt az üzembehelyezési könyvtárhoz az alábbi tartalommal. Cserélje le a kép értékét
template.spec.containers.image
az előző lépésben létrehozott képre.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
Adjon hozzá egy service.yaml fájlt az üzembehelyezési könyvtárhoz a következő tartalommal egy LoadBalancer-szolgáltatás létrehozásához.
apiVersion: v1 kind: Service metadata: name: aspnetapp-demo-service spec: type: LoadBalancer ports: - port: 80 selector: app: aspnetapp-demo
Futtassa az alábbi parancsot az alkalmazás az AKS-fürtben való üzembe helyezéséhez.
kubectl create namespace appconfig-demo kubectl apply -f ./Deployment -n appconfig-demo
Futtassa a következő parancsot, és kérje le a LoadBalancer szolgáltatás által közzétett külső IP-címet.
kubectl get service aspnetapp-demo-service -n appconfig-demo
Nyisson meg egy böngészőablakot, és keresse meg az előző lépésben beszerzett IP-címet. A weblap a következőképpen néz ki:
Alkalmazáskonfigurációs Kubernetes-szolgáltató használata
Most, hogy egy alkalmazás fut az AKS-ben, üzembe helyezi az alkalmazáskonfigurációs Kubernetes-szolgáltatót a Kubernetes-vezérlőként futó AKS-fürtön. A szolgáltató adatokat kér le az alkalmazáskonfigurációs tárolóból, és létrehoz egy konfigurációtérképet, amely egy adatkötetbe csatlakoztatott JSON-fájlként használható.
A Azure-alkalmazás Konfigurációs tár beállítása
Adja hozzá a következő kulcsértékeket az Alkalmazáskonfigurációs áruházhoz, és hagyja meg a címke és a tartalomtípus alapértelmezett értékeit. Ha többet szeretne tudni arról, hogyan adhat hozzá kulcsértékeket egy áruházhoz az Azure Portal vagy a parancssori felület használatával, lépjen a Kulcs-érték létrehozása elemre.
Kulcs | Érték |
---|---|
Beállítások:FontColor | Zöld |
Beállítások:Üzenet | Hello from Azure-alkalmazás Configuration |
Az alkalmazáskonfigurációs Kubernetes-szolgáltató beállítása
Futtassa a következő parancsot az AKS-fürt hozzáférési hitelesítő adatainak lekéréséhez. Cserélje le a paraméterek értékét
resource-group
azname
AKS-példányra:az aks get-credentials --name <your-aks-instance-name> --resource-group <your-aks-resource-group>
Telepítse Azure-alkalmazás Configuration Kubernetes Providert az AKS-fürtre a következő használatával
helm
:helm install azureappconfiguration.kubernetesprovider \ oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \ --namespace azappconfig-system \ --create-namespace
Tipp.
Az alkalmazáskonfigurációs Kubernetes-szolgáltató AKS-bővítményként is elérhető. Ez az integráció zökkenőmentes telepítést és felügyeletet tesz lehetővé az Azure CLI- és ARM-sablonokon vagy Bicep-sablonokon keresztül. Az AKS-bővítmény használata megkönnyíti az alverziók és javítások automatikus frissítését, biztosítva, hogy a rendszer mindig naprakész legyen. A részletes telepítési utasításokért tekintse meg az Azure Kubernetes Service Azure-alkalmazás Configuration bővítményét.
Adjon hozzá egy appConfigurationProvider.yaml fájlt az üzembehelyezési könyvtárhoz az alábbi tartalommal egy
AzureAppConfigurationProvider
erőforrás létrehozásához.AzureAppConfigurationProvider
egy egyéni erőforrás, amely meghatározza, hogy milyen adatokat töltsön le egy Azure-alkalmazás konfigurációs tárból, és létrehoz egy ConfigMap-et.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: managedIdentityClientId: <your-managed-identity-client-id>
Cserélje le a
endpoint
mező értékét a Azure-alkalmazás Konfigurációs tár végpontjára. Kövesse a számítási feladat identitásának használatának lépéseit, és frissítse aauth
szakaszt a létrehozott felhasználó által hozzárendelt felügyelt identitás ügyfélazonosítójával.Feljegyzés
AzureAppConfigurationProvider
deklaratív API-objektum. Az alkalmazáskonfigurációs áruház adataiból létrehozott ConfigMap kívánt állapotát határozza meg a következő viselkedéssel:- A ConfigMap létrehozása sikertelen lesz, ha egy azonos nevű ConfigMap már létezik ugyanabban a névtérben.
- A ConfigMap alaphelyzetbe áll az Alkalmazáskonfigurációs áruházban lévő jelenlegi adatok alapján, ha azokat más módon törölték vagy módosították.
- A ConfigMap törlődik, ha az alkalmazáskonfigurációs Kubernetes-szolgáltató el lett távolítva.
Frissítse a deployment.yaml fájlt az üzembehelyezési könyvtárban, hogy a ConfigMap
configmap-created-by-appconfig-provider
csatlakoztatott adatkötetként legyen használva. Fontos, hogy avolumeMounts.mountPath
dockerfile-ban megadott és a korábban létrehozott konfigurációs könyvtár egyezzenWORKDIR
.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
Futtassa a következő parancsot a módosítások üzembe helyezéséhez. Cserélje le a névteret, ha a meglévő AKS-alkalmazást használja.
kubectl apply -f ./Deployment -n appconfig-demo
Frissítse a böngészőt. A lapon a frissített tartalom látható.
Hibaelhárítás
Ha nem látja, hogy az alkalmazás felveszi az adatokat az Alkalmazáskonfigurációs áruházból, futtassa a következő parancsot annak ellenőrzéséhez, hogy a ConfigMap megfelelően van-e létrehozva.
kubectl get configmap configmap-created-by-appconfig-provider -n appconfig-demo
Ha a ConfigMap nincs létrehozva, futtassa az alábbi parancsot az adatlekérési állapot lekéréséhez.
kubectl get AzureAppConfigurationProvider appconfigurationprovider-sample -n appconfig-demo -o yaml
Ha a Azure-alkalmazás konfigurációs Kubernetes-szolgáltató sikeresen lekért adatokat az Alkalmazáskonfigurációs tárolóból, a phase
kimenet állapotszakaszában lévő tulajdonságnak kell lennieCOMPLETE
, ahogyan az az alábbi példában látható.
$ 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
Ha a fázis nem COMPLETE
, az adatok nem töltődnek le megfelelően az Alkalmazáskonfigurációs áruházból. Futtassa a következő parancsot a Azure-alkalmazás Konfigurációs Kubernetes-szolgáltató naplóinak megjelenítéséhez.
kubectl logs deployment/az-appconfig-k8s-provider -n azappconfig-system
További hibaelhárításhoz használja a naplókat. Ha például azt látja, hogy az Alkalmazáskonfigurációs áruházba érkező kérelmek a 403: 403 Tiltott válaszsal válaszolnak, az azt jelezheti, hogy az alkalmazáskonfigurációs Kubernetes-szolgáltató nem rendelkezik a szükséges engedélyekkel az Alkalmazáskonfigurációs áruház eléréséhez. Kövesse a számítási feladat identitásának használati utasításait, és győződjön meg arról, hogy a társított felügyelt identitás megfelelő engedélyhez van rendelve.
Az erőforrások eltávolítása
Távolítsa el az alkalmazáskonfigurációs Kubernetes-szolgáltatót az AKS-fürtből, ha meg szeretné tartani az AKS-fürtöt.
helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system
Ha nem szeretné folytatni a cikkben létrehozott erőforrások használatát, törölje az itt létrehozott erőforráscsoportot a díjak elkerülése érdekében.
Fontos
Az erőforráscsoport törlése nem vonható vissza. Az erőforráscsoport és a benne lévő összes erőforrás véglegesen törlődik. Győződjön meg arról, hogy nem véletlenül törli a rossz erőforráscsoportot vagy erőforrásokat. Ha a cikk erőforrásait olyan erőforráscsoporton belül hozta létre, amely más megtartani kívánt erőforrásokat tartalmaz, törölje az egyes erőforrásokat a megfelelő panelről az erőforráscsoport törlése helyett.
- Jelentkezzen be az Azure Portalra, és válassza ki az Erőforráscsoportokat.
- A Szűrés név szerint mezőbe írja be az erőforráscsoport nevét.
- Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
- Válassza az Erőforráscsoport törlése elemet.
- A rendszer az erőforráscsoport törlésének megerősítését kéri. Adja meg a megerősítéshez az erőforráscsoport nevét, és válassza a Törlés lehetőséget.
Néhány pillanat múlva az erőforráscsoport és annak összes erőforrása törlődik.
Feljegyzés
Ha az Azure Developer CLI használatával állítja be az erőforrásokat, a parancs futtatásával törölheti a azd down
sablon által létrehozott összes erőforrást azure-appconfig-aks
.
Következő lépések
Ebben a rövid útmutatóban a következőket hajtja végre:
- Létrehozott egy, az Azure Kubernetes Service-ben (AKS) futó alkalmazást.
- Az AKS-fürtöt az Alkalmazáskonfigurációs tárhoz csatlakoztatta az alkalmazáskonfigurációs Kubernetes-szolgáltatóval.
- Létrehozott egy konfigurációtérképet az Alkalmazáskonfigurációs áruház adataival.
- Futtatta az alkalmazást konfigurációval az Alkalmazáskonfigurációs áruházból az alkalmazáskód módosítása nélkül.
Ha szeretné megtudni, hogyan frissítheti az AKS-számítási feladatokat a konfiguráció dinamikus frissítésére, folytassa a következő oktatóanyagban.
A Azure-alkalmazás Konfigurációs Kubernetes-szolgáltatóról további információt Azure-alkalmazás Konfigurációs Kubernetes-szolgáltató hivatkozásában talál.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: