Aracılığıyla paylaş


Hızlı Başlangıç: Azure Kubernetes Service'te Azure Uygulaması Yapılandırması kullanma

Kubernetes'te, ConfigMap'lerden yapılandırmayı kullanacak şekilde podlar ayarlarsınız. Yapılandırmayı kapsayıcı görüntülerinizden ayırmanıza olanak sağlayarak uygulamalarınızı kolayca taşınabilir hale getirir. Azure Uygulaması Yapılandırma Kubernetes Sağlayıcısı, Azure Uygulaması Yapılandırmasında anahtar-değerlerinizden ve Key Vault başvurularından ConfigMap'ler ve Gizli Diziler oluşturabilir. Uygulama kodunuzda herhangi bir değişiklik yapmadan yapılandırmanızın merkezi depolaması ve yönetimi için Azure Uygulaması Yapılandırması'nı kullanmanıza olanak tanır.

ConfigMap ortam değişkenleri veya bağlı bir dosya olarak kullanılabilir. Bu hızlı başlangıçta, Azure Uygulaması Yapılandırma Kubernetes Sağlayıcısını bir JSON dosyasından yapılandırma kullanan basit bir ASP.NET Core uygulaması çalıştırdığınız bir Azure Kubernetes Service iş yüküne dahil edin.

İpucu

Azure Uygulaması Yapılandırmasına erişmek için Bkz. Kubernetes'te barındırılan iş yükleri için seçenekler.

Not

Bu hızlı başlangıç, Azure Uygulaması Yapılandırma Kubernetes Sağlayıcısını ayarlama işleminde size yol gösterecektir. İsteğe bağlı olarak, şablonla birlikte azure-appconfig-aks aşağıdaki Azure Geliştirici CLI komutlarını kullanarak Azure kaynaklarını sağlayabilir ve bu hızlı başlangıç tarafından kullanılan örnek uygulamayı dağıtabilirsiniz. Bu şablon hakkında daha fazla bilgi için GitHub'da azure-appconfig-aks deposunu ziyaret edin.

azd init -t azure-appconfig-aks
azd up

Önkoşullar

AKS'de çalışan bir uygulama oluşturma

Bu bölümde, Azure Kubernetes Service'te (AKS) çalışan basit bir ASP.NET Core web uygulaması oluşturacaksınız. Uygulama yerel bir JSON dosyasından yapılandırmayı okur. Sonraki bölümde, uygulama kodunu değiştirmeden yapılandırmayı Azure Uygulaması Yapılandırması'ndan tüketmesini sağlayacaksınız. Bir dosyadan yapılandırmayı okuyan bir AKS uygulamanız zaten varsa, bu bölümü atlayın ve Kubernetes Sağlayıcısı Uygulama Yapılandırması kullanma bölümüne gidin. Yalnızca sağlayıcı tarafından oluşturulan yapılandırma dosyasının uygulamanız tarafından kullanılan dosya yolu ile eşleştiğinden emin olmanız gerekir.

Uygulama oluşturma

  1. .NET komut satırı arabirimini (CLI) kullanın ve yeni bir MyWebApp dizininde yeni bir ASP.NET Core web uygulaması projesi oluşturmak için aşağıdaki komutu çalıştırın:

    dotnet new webapp --output MyWebApp --framework net6.0
    
  2. Pages dizininde Index.cshtml dosyasını açın ve içeriği aşağıdaki kodla güncelleştirin.

    @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. Projenizin kökünde bir yapılandırma dizini oluşturun ve aşağıdaki içeriğe sahip bir mysettings.json dosyası ekleyin.

    {
      "Settings": {
        "FontColor": "Black",
        "Message": "Message from the local configuration"
      }
    }
    
  4. program.cs açın ve yöntemini çağırarak AddJsonFile JSON dosyasını yapılandırma kaynağına ekleyin.

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

Uygulamayı kapsayıcılı hale getirme

  1. Uygulamayı yayın modunda derlemek ve yayımlanan dizinde varlıkları oluşturmak için dotnet publish komutunu çalıştırın.

    dotnet publish -c Release -o published
    
  2. Proje dizininizin kökünde Dockerfile adlı bir dosya oluşturun, dosyayı bir metin düzenleyicisinde açın ve aşağıdaki içeriği girin. Dockerfile, uzantısı olmayan ve kapsayıcı görüntüsü oluşturmak için kullanılan bir metin dosyasıdır.

    FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
    WORKDIR /app
    COPY published/ ./
    ENTRYPOINT ["dotnet", "MyWebApp.dll"]
    
  3. Aşağıdaki komutu çalıştırarak aspnetapp adlı bir kapsayıcı görüntüsü oluşturun.

    docker build --tag aspnetapp .
    

Görüntüyü Azure Container Registry'ye gönderme

  1. Kapsayıcı kayıt defterinizde oturum açmak için az acr login komutunu çalıştırın. Aşağıdaki örnek myregistry adlı bir kayıt defterinde oturum açar. Kayıt defteri adını sizinkiyle değiştirin.

    az acr login --name myregistry
    

    Oturum açma işlemi başarılı olduktan sonra komut döndürülüyor Login Succeeded .

  2. Docker etiketini kullanarak aspnetapp görüntüsü için bir etiket myregistry.azurecr.io/aspnetapp:v1 oluşturun.

    docker tag aspnetapp myregistry.azurecr.io/aspnetapp:v1
    

    İpucu

    Mevcut docker görüntülerinizin ve etiketlerinizin listesini gözden geçirmek için komutunu çalıştırın docker image ls. Bu senaryoda en az iki görüntü görmeniz gerekir: aspnetapp ve myregistry.azurecr.io/aspnetapp.

  3. Görüntüyü kapsayıcı kayıt defterine yüklemek için docker push komutunu kullanın. Örneğin, aşağıdaki komut görüntüyü kayıt defterim kayıt defteri altında v1 etiketine sahip aspnetapp adlı bir depoya gönderir.

    docker push myregistry.azurecr.io/aspnetapp:v1
    

Uygulamayı dağıtma

  1. Projenizin kök dizininde bir Dağıtım dizini oluşturun.

  2. Dağıtım oluşturmak için dağıtım dizinine aşağıdaki içeriğe sahip bir deployment.yaml dosyası ekleyin. değerini template.spec.containers.image önceki adımda oluşturduğunuz görüntüyle değiştirin.

    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. LoadBalancer hizmeti oluşturmak için Dağıtım dizinine aşağıdaki içeriğe sahip bir service.yaml dosyası ekleyin.

    apiVersion: v1
    kind: Service
    metadata:
      name: aspnetapp-demo-service
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: aspnetapp-demo
    
  4. Uygulamayı AKS kümesine dağıtmak için aşağıdaki komutu çalıştırın.

    kubectl create namespace appconfig-demo
    kubectl apply -f ./Deployment -n appconfig-demo
    
  5. Aşağıdaki komutu çalıştırın ve LoadBalancer hizmeti tarafından kullanıma sunulan Dış IP adresini alın.

    kubectl get service aspnetapp-demo-service -n appconfig-demo
    
  6. Bir tarayıcı penceresi açın ve önceki adımda elde edilen IP adresine gidin. Web sayfası şöyle görünür:

    configMap'i kullanmadan önce Kubernetes Sağlayıcısını gösteren ekran görüntüsü.

kubernetes sağlayıcısı Uygulama Yapılandırması kullanma

AKS'de çalışan bir uygulamanız olduğuna göre, kubernetes denetleyicisi olarak çalışan aks kümenize Uygulama Yapılandırması Kubernetes Sağlayıcısı'nı dağıtacaksınız. Sağlayıcı, Uygulama Yapılandırması deponuzdan verileri alır ve bir veri birimine bağlı JSON dosyası olarak kullanılabilen bir ConfigMap oluşturur.

Azure Uygulaması Yapılandırma depounu ayarlama

Uygulama Yapılandırması deposuna aşağıdaki anahtar değerlerini ekleyin ve Etiket ve İçerik Türü değerlerini varsayılan değerleriyle bırakın. Azure portalını veya CLI'yı kullanarak bir depoya anahtar-değer ekleme hakkında daha fazla bilgi için Anahtar-değer oluşturma bölümüne gidin.

Anahtar Value
Ayarlar:FontColor Yeşil
Ayarlar:İleti Azure Uygulaması Yapılandırmasından Merhaba

Uygulama Yapılandırması Kubernetes Sağlayıcısını ayarlama

  1. AKS kümenizin erişim kimlik bilgilerini almak için aşağıdaki komutu çalıştırın. ve resource-group parametrelerinin name değerini AKS örneğinle değiştirin:

    az aks get-credentials --name <your-aks-instance-name> --resource-group <your-aks-resource-group>
    
  2. kullanarak helmAKS kümenize Azure Uygulaması Yapılandırma Kubernetes Sağlayıcısı yükleyin:

    helm install azureappconfiguration.kubernetesprovider \
         oci://mcr.microsoft.com/azure-app-configuration/helmchart/kubernetes-provider \
         --namespace azappconfig-system \
         --create-namespace
    

    İpucu

    Uygulama Yapılandırması Kubernetes Sağlayıcısı, AKS uzantısı olarak da kullanılabilir. Bu tümleştirme, Azure CLI, ARM şablonları veya Bicep şablonları aracılığıyla sorunsuz yükleme ve yönetim sağlar. AKS uzantısının kullanımı, otomatik ikincil/yama sürümü güncelleştirmelerini kolaylaştırarak sisteminizin her zaman güncel olmasını sağlar. Ayrıntılı yükleme yönergeleri için bkz. Azure Kubernetes Service için Azure Uygulaması Yapılandırma uzantısı.

  3. Kaynak oluşturmak AzureAppConfigurationProvider için aşağıdaki içeriğe sahip bir appConfigurationProvider.yaml dosyasını Dağıtım dizinine ekleyin. AzureAppConfigurationProviderAzure Uygulaması Yapılandırma deposundan hangi verilerin indirildiğini tanımlayan ve bir ConfigMap oluşturan özel bir kaynaktır.

    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>
    

    alanının değerini endpoint Azure Uygulaması Yapılandırma deponuzun uç noktasıyla değiştirin. İş yükü kimliğini kullanma adımlarını izleyin ve bölümünü oluşturduğunuz kullanıcı tarafından atanan yönetilen kimliğin istemci kimliğiyle güncelleştirinauth.

    Not

    AzureAppConfigurationProvider bildirim temelli bir API nesnesidir. Uygulama Yapılandırması deponuzdaki verilerden oluşturulan ConfigMap'in istenen durumunu aşağıdaki davranışla tanımlar:

    • Aynı ad alanında aynı ada sahip bir ConfigMap zaten varsa ConfigMap oluşturulamaz.
    • ConfigMap, Uygulama Yapılandırması deponuzdaki mevcut veriler başka bir yolla silinir veya değiştirilirse sıfırlanır.
    • Uygulama Yapılandırması Kubernetes Sağlayıcısı kaldırılırsa ConfigMap silinir.
  4. ConfigMap'i configmap-created-by-appconfig-provider bağlı bir veri birimi olarak kullanmak için Dağıtım dizinindeki deployment.yaml dosyasını güncelleştirin. Öğesinin volumeMounts.mountPath Dockerfile'ınızda belirtilenle ve daha önce oluşturulan yapılandırma diziniyle eşleştiğinden WORKDIR emin olmak önemlidir.

    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. Değişiklikleri dağıtmak için aşağıdaki komutu çalıştırın. Mevcut AKS uygulamanızı kullanıyorsanız ad alanını değiştirin.

    kubectl apply -f ./Deployment -n appconfig-demo
    
  6. Tarayıcıyı yenileyin. Sayfada güncelleştirilmiş içerik gösterilir.

    configMap'i kullandıktan sonra Kubernetes Sağlayıcısını gösteren ekran görüntüsü.

Sorun giderme

Uygulamanızın Uygulama Yapılandırması deponuzdan verileri toplandığını görmüyorsanız, ConfigMap'in düzgün oluşturulduğunu doğrulamak için aşağıdaki komutu çalıştırın.

kubectl get configmap configmap-created-by-appconfig-provider -n appconfig-demo

ConfigMap oluşturulmamışsa, veri alma durumunu almak için aşağıdaki komutu çalıştırın.

kubectl get AzureAppConfigurationProvider appconfigurationprovider-sample -n appconfig-demo -o yaml

Azure Uygulaması Yapılandırma Kubernetes Sağlayıcısı Uygulama Yapılandırması deponuzdan verileri başarıyla aldıysa, phase aşağıdaki örnekte gösterildiği gibi çıkışın durum bölümünün altındaki özellik olmalıdırCOMPLETE.

$ 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

Aşama değilseCOMPLETE, veriler Uygulama Yapılandırması deponuzdan düzgün şekilde indirilmemiştir. Azure Uygulaması Yapılandırma Kubernetes Sağlayıcısı günlüklerini göstermek için aşağıdaki komutu çalıştırın.

kubectl logs deployment/az-appconfig-k8s-provider -n azappconfig-system

Daha fazla sorun giderme için günlükleri kullanın. Örneğin, Uygulama Yapılandırması deponuza yönelik isteklerin YANıT 403: 403 Yasak ile yanıtlendiğini görürseniz, Uygulama Yapılandırması Kubernetes Sağlayıcısının Uygulama Yapılandırması deponuza erişmek için gerekli izne sahip olmadığını gösterebilir. İlişkili yönetilen kimliğe uygun izin atandığından emin olmak için iş yükü kimliğini kullanma yönergelerini izleyin.

Kaynakları temizleme

AKS kümesini korumak istiyorsanız AKS kümenizden Uygulama Yapılandırması Kubernetes Sağlayıcısı'nı kaldırın.

helm uninstall azureappconfiguration.kubernetesprovider --namespace azappconfig-system

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Not

Kaynakları ayarlamak için Azure Geliştirici CLI'sini kullanırsanız, şablonun azd down oluşturduğu azure-appconfig-aks tüm kaynakları silmek için komutunu çalıştırabilirsiniz.

Sonraki adımlar

Bu hızlı başlangıçta:

  • Azure Kubernetes Service'te (AKS) çalışan bir uygulama oluşturuldu.
  • Uygulama Yapılandırması Kubernetes Sağlayıcısı'nı kullanarak AKS kümenizi Uygulama Yapılandırması deponuza bağladınız.
  • Uygulama Yapılandırması deponuzdaki verileri içeren bir ConfigMap oluşturuldu.
  • Uygulama kodunuzu değiştirmeden Uygulama Yapılandırması deponuzdan yapılandırmayla uygulamayı çalıştırmıştı.

AKS iş yüklerinizi yapılandırmayı dinamik olarak yenilemek üzere nasıl güncelleştireceğinizi öğrenmek için sonraki öğreticiye geçin.

Azure Uygulaması Yapılandırma Kubernetes Sağlayıcısı hakkında daha fazla bilgi edinmek için bkz. Azure Uygulaması Yapılandırma Kubernetes Sağlayıcısı başvurusu.