Megosztás a következőn keresztül:


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

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

  1. 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
    
  2. 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>
    
  3. 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"
      }
    }
    
  4. 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

  1. 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
    
  2. 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"]
    
  3. 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

  1. 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.

  2. 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 és myregistry.azurecr.io/aspnetapp.

  3. 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

  1. Hozzon létre egy üzembehelyezési könyvtárat a projekt gyökérkönyvtárában.

  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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:

    Képernyőkép a Kubernetes Providerről a konfigurációtérkép használata előtt.

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

  1. 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 az name AKS-példányra:

    az aks get-credentials --name <your-aks-instance-name> --resource-group <your-aks-resource-group>
    
  2. Telepítse Azure-alkalmazás Configuration Kubernetes Providert az AKS-fürtre a következő használatávalhelm:

    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.

  3. 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. AzureAppConfigurationProvideregy 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 a auth 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.
  4. 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 a volumeMounts.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
    
  5. 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
    
  6. Frissítse a böngészőt. A lapon a frissített tartalom látható.

    Képernyőkép a Kubernetes-szolgáltatóról a konfigurációtérkép használata után.

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.

  1. Jelentkezzen be az Azure Portalra, és válassza ki az Erőforráscsoportokat.
  2. A Szűrés név szerint mezőbe írja be az erőforráscsoport nevét.
  3. Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
  4. Válassza az Erőforráscsoport törlése elemet.
  5. 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.