Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kubernetes'te, ConfigMap'lerden yapılandırma verilerini kullanacak şekilde podlar ayarlayabilirsiniz. Yapılandırma verilerini kapsayıcı görüntülerinizden ayrıştırabildiğiniz için bu uygulama uygulamalarınızın taşınabilirliğini artırır.
Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı , Uygulama Yapılandırması'nda depolanan anahtar değerlerinden ve Azure Key Vault başvurularından Kubernetes ConfigMap'leri ve Gizli Dizileri oluşturmanın bir yolunu sunar. Bu sağlayıcıyı kullandığınızda, uygulama kodunuzda değişiklik yapmadan yapılandırma verilerinizi merkezi olarak depolamak ve yönetmek için Uygulama Yapılandırması'nu kullanabilirsiniz.
ConfigMap, ortam değişkenleri ya da bağlanmış bir dosya şeklinde kullanılabilir. Bu hızlı başlangıçta AKS iş yükünüzde Azure Uygulama Yapılandırması Kubernetes Sağlayıcısını dahil edin. Sağlayıcı, Uygulama Yapılandırma deponuzdaki verilerden bir ConfigMap oluşturur. İş yükünde, ConfigMap'i bir veri birimine bağlanmış bir JSON dosyası olarak kullanan bir podda temel bir ASP.NET Core uygulaması çalıştırırsınız.
Tavsiye
Kubernetes'te barındırılan bir iş yükünden Uygulama Yapılandırması'na erişmenin diğer yolları için bkz. Uygulama Yapılandırmasına Azure Kubernetes Service erişimi.
Uyarı
Bu hızlı başlangıçta Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı'nın ayarlanmasında size yol gösterilir. İsteğe bağlı olarak, Azure kaynaklarını sağlamak ve bu hızlı başlangıçta kullanılan örnek uygulamayı dağıtmak için aşağıdaki Azure Geliştirici CLI komutlarını kullanabilirsiniz. Bu komutlar bu amaç için şablonu kullanır azure-appconfig-aks . Bu şablon hakkında daha fazla bilgi için bkz. azure-appconfig-aks GitHub deposu.
azd init -t azure-appconfig-aks
azd up
Önkoşullar
- Bir Uygulama Yapılandırma Mağazası. Mağaza oluşturma.
- Azure Container Registry örneği. Kayıt defteri oluşturun.
- Kapsayıcı kayıt defterinizden görüntü çekme iznine sahip bir AKS kümesi. AKS kümesi oluşturma.
- .NET SDK 8.0 veya üzeri.
- Azure CLI.
- Docker Desktop.
- Helm' i seçin.
- kubectl.
AKS'de çalışan bir uygulama oluşturma
Bu bölümde, AKS'de çalışan temel bir ASP.NET Core web uygulaması oluşturacaksınız. Uygulama yerel bir JSON dosyasından yapılandırma verilerini okur. Sonraki bölümde, uygulamanın uygulama kodunu değiştirmeden Uygulama Yapılandırması'ndan yapılandırma verilerini kullanmasına olanak sağlayacaksınız.
Bir dosyadan yapılandırmayı okuyan bir AKS uygulamanız varsa, bu bölümü atlayabilir ve Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı'nı kullanma bölümüne gidebilirsiniz. Bu bölümü atlarsanız, sağlayıcının oluşturduğu yapılandırma dosyasının uygulamanızın kullandığı dosya yolu ile eşleştiğinden emin olun.
Uygulama oluşturma
Aşağıdaki komutu çalıştırmak için .NET komut satırı arabirimini (CLI) kullanın. Yeni bir MyWebApp dizininde bir ASP.NET Core web uygulaması projesi oluşturur.
dotnet new webapp --output MyWebApp --framework net8.0MyWebApp dizininde Pages dizinine gidin ve Index.cshtml dosyasını açın. İçeriği aşağıdaki kodla değiş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>Projenizin kökünde bir yapılandırma dizini oluşturun. Yapılandırma dizinine aşağıdaki içeriği içeren birmysettings.json dosyası ekleyin:
{ "Settings": { "FontColor": "Black", "Message": "Message from the local configuration" } }Proje kök dizininizde Program.cs açın ve yöntemini çağırarak
AddJsonFileJSON 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 the existing code in Program.cs // ... ...
Uygulamayı kapsayıcılı hale getirme
Uygulamayı yayın modunda oluşturmak ve yayımlanan dizinde varlıkları oluşturmak için dotnet publish komutunu çalıştırın.
dotnet publish -c Release -o publishedProje 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 bir metin dosyasıdır. Kapsayıcı görüntüsü oluşturmak için bunu kullanırsınız.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime WORKDIR /app COPY published/ ./ ENTRYPOINT ["dotnet", "MyWebApp.dll"]Aşağıdaki komutu çalıştırarak adlı
aspnetappbir kapsayıcı görüntüsü oluşturun:docker build --tag aspnetapp .
Görüntüyü Container Registry'ye gönderme
Kapsayıcı kayıt defterinizde oturum açmak için az acr login komutunu çalıştırın. Aşağıdaki kod adlı
myregistrybir kayıt defterinde oturum açar. Bu kayıt defteri adını kayıt defterinizin adıyla değiştirin.az acr login --name myregistryBaşarıyla oturum açarsanız komut döndürülüyor
Login Succeeded.Görüntü için adlı
myregistry.azurecr.io/aspnetapp:v1bir etiket oluşturmak içinaspnetappdocker tag komutunu kullanın. değerini kayıt defterinizin adıyla değiştirinmyregistry.docker tag aspnetapp myregistry.azurecr.io/aspnetapp:v1Tavsiye
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 çıktıda en az iki görüntü listelenmelidir:aspnetappvemyregistry.azurecr.io/aspnetapp.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 defteri
myregistryaltındaki etiketiylev1adlıaspnetappbir depoya gönderir:docker push myregistry.azurecr.io/aspnetapp:v1
Uygulamayı dağıt
Projenizin kök dizininde bir Dağıtım dizini oluşturun.
Dağıtım tanımlamak için Deployment dizinine aşağıdaki içeriğe sahip bir deployment.yaml dosyası ekleyin. değerini
template.spec.containers.imageönceki bölümde oluşturduğunuz etiketle 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: 80Bir
LoadBalancerhizmeti tanımlamak 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-demoKubectl'nin AKS kümenize bağlanmasını mümkün kılmak için aşağıdaki komutu çalıştırın. AKS kümenizin kimlik bilgilerini indirir ve kümenizin bağlamı ile birleştirir.
az aks get-credentials --name <your-AKS-instance-name> --resource-group <your-AKS-resource-group>Uygulamayı AKS kümesine dağıtmak ve kaynakları oluşturmak için aşağıdaki komutları çalıştırın:
kubectl create namespace appconfig-demo kubectl apply -f ./Deployment -n appconfig-demoHizmet tarafından
LoadBalancerkullanıma sunulan dış IP adresini almak için aşağıdaki komutu çalıştırın:kubectl get service aspnetapp-demo-service -n appconfig-demoTarayıcı penceresinde, önceki adımda aldığınız IP adresine gidin. Web sayfası aşağıdaki ekran görüntüsüne benzer görünmelidir:
Azure Uygulama Yapılandırması Kubernetes Sağlayıcısını kullanma
AKS'de çalışan bir uygulamanız olduğuna göre, sonraki adım Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı'nı Kubernetes denetleyicisi olarak çalışmak üzere AKS kümenize dağıtmaktır. Sağlayıcı, Uygulama Yapılandırma deponuzdan verileri alır ve bir veri birimine bağlı JSON dosyası olarak kullanılabilen bir ConfigMap oluşturur.
Uygulama Yapılandırma depoyu ayarlama
Aşağıdaki anahtarları ve değerleri Uygulama Yapılandırma deposuna ekleyin. Her biri için Etiket ve İçerik Türü için varsayılan değerleri kullanın. Azure portalını veya Azure CLI'yı kullanarak bir depoya anahtar-değer ekleme hakkında daha fazla bilgi için bkz. Anahtar-değer oluşturma.
| Anahtar | Değer |
|---|---|
| Ayarlar:FontColor | Yeşil |
| Ayarlar:Mesaj | Azure Uygulama Yapılandırması'ndan merhaba |
Azure Uygulama Yapılandırması Kubernetes Sağlayıcısını ayarlama
AKS kümenize Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı yükleyin. Sağlayıcıyı AKS uzantısı olarak veya Helm grafiği kullanarak yükleyebilirsiniz. AKS uzantısı, Azure CLI, Azure Resource Manager şablonları (ARM şablonları) veya Bicep dosyaları aracılığıyla sorunsuz yükleme ve yönetim sağlar. Ayrıca AKS uzantısının kullanılması, otomatik ikincil ve yama sürümü güncelleştirmelerini kolaylaştırarak sisteminizin güncel kalmasını sağlar.
öğesini
k8s-extensionAzure CLI uzantılarınıza ekleyin.az extension add --name k8s-extensionKaynak sağlayıcısını
KubernetesConfigurationkaydedin.az provider register --namespace Microsoft.KubernetesConfigurationUygulama Yapılandırması için AKS uzantısını yükleyin.
cluster-nameveresource-groupparametresi değerlerini AKS örneğinizdeki karşılık gelen değerlerle değiştirin. Varsayılan olarak, sağlayıcı ad alanınaazappconfig-systemyüklenir.az k8s-extension create --cluster-type managedClusters \ --cluster-name <your-AKS-instance-name> \ --resource-group <your-AKS-resource-group> \ --name appconfigurationkubernetesprovider \ --extension-type Microsoft.AppConfigurationDaha fazla bilgi için bkz. Azure Uygulama Yapılandırması AKS uzantısını yükleme.
Kaynak
AzureAppConfigurationProvidertanımlamak için Dağıtım dizinine aşağıdaki içeriğe sahip bir appConfigurationProvider.yaml dosyası ekleyin.AzureAppConfigurationProviderözel bir kaynaktır. Uygulama Yapılandırma mağazasından indirebileceğiniz verileri tanımlar. Ayrıca bir ConfigMap oluşturur.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>endpointalanının değerini Azure App Configuration deponuzun uç noktasıyla değiştirin. Kimlik doğrulama bilgilerinizleauthbölümünü güncellemek için sonraki adıma geçin.Uyarı
AzureAppConfigurationProviderbildirim temelli bir API nesnesidir. Uygulama Yapılandırma deponuzdaki verilerden oluşturulan ConfigMap'in istenen durumunu tanımlar. İstenen durumun tanımı aşağıdaki davranışı belirtir:- Aynı ad alanında aynı ada sahip bir ConfigMap zaten varsa ConfigMap oluşturma işlemi başarısız olur.
- ConfigMap, başka bir yolla silinir veya değiştirilirse Uygulama Yapılandırma deponuzdaki mevcut verilere göre sıfırlanır.
- Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı kaldırılırsa ConfigMap silinir.
Uygulama Yapılandırma deponuzda kimlik doğrulaması yapmak için iş yükü kimliğini kullanma yönergelerini izleyin. appConfigurationProvider.yaml dosyasını, yönergeleri izlediğinizde alanı oluşturduğunuz hizmet hesabının adıyla değiştirerek
serviceAccountNamegüncelleştirin. Diğer kimlik doğrulama yöntemleri hakkında daha fazla bilgi için Kimlik Doğrulaması'ndaki örneklere bakın.Aşağıdaki kodda gösterildiği gibi Dağıtım dizinindekideployment.yaml dosyasını ConfigMap'i
configmap-created-by-appconfig-providerbağlı bir veri birimi olarak kullanacak şekilde güncelleştirin. DeğerinvolumeMounts.mountPathDockerfile dosyanızda belirtilen değerle ve daha önce oluşturduğunuz yapılandırma dizininde belirtilen değerle eşleşmesiWORKDIRönemlidir. Ayrıca değerinintemplate.spec.containers.imagedaha önce oluşturduğunuz görüntünün adıyla eşleştiğinden emin olun.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-providerDeğişiklikleri dağıtmak için aşağıdaki komutu çalıştırın. Mevcut AKS uygulamanızı kullanıyorsanız ad alanını güncelleştirin.
kubectl apply -f ./Deployment -n appconfig-demoTarayıcıyı yenileyin. Sayfada güncelleştirilmiş içerik gösterilir.
Sorun giderme
Uygulamanız Uygulama Yapılandırma deponuzdaki verileri okumazsa, 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 Uygulama Yapılandırması Kubernetes Sağlayıcısı Uygulama Yapılandırma deponuzdan verileri başarıyla alırsa, phase çıkışın status bölümündeki özellik aşağıdaki örnekte gösterildiği gibi olmalıdır Complete:
$ kubectl get AzureAppConfigurationProvider appconfigurationprovider-sample -n appconfig-demo -o yaml
apiVersion: azconfig.io/v1
kind: AzureAppConfigurationProvider
... ... ...
status:
lastReconcileTime: "2025-08-04T13:58:02Z"
lastSyncTime: "2025-08-04T13:58:02Z"
message: Complete sync key-values from App Configuration to target ConfigMap or
Secret.
phase: Complete
Phase özelliği değilse COMPLETE, veriler Uygulama Yapılandırma deponuzdan düzgün şekilde indirilmiyor. Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı günlüklerine erişmek 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. Yaygın sorunların çözümleri için bkz. SSS.
Sıkça Sorulan Sorular
ConfigMap veya Secret neden oluşturulmuyor?
Ayrıntılı hata bilgileri içeren günlükleri toplamak için Sorun Giderme'deki adımları izleyin. Bu sorunun bazı yaygın nedenleri şunlardır:
- YANIT 403: 403 Yasak: Yapılandırılan kimlik, Uygulama Yapılandırma deposuna erişmek için gerekli izinlere sahip değil. Kullandığınız kimlikle eşleşen örnekler için bkz. Kimlik doğrulaması.
-
Uygulama Yapılandırması'nda bir Key Vault başvurusu bulunur, ancak 'spec.secret' yapılandırılmadı: Seçilen anahtar değerlerine bir veya daha fazla Key Vault başvurusu eklenir, ancak Key Vault için kimlik doğrulama bilgileri sağlanmaz. Yapılandırmanın bütünlüğünü korumak için yapılandırmanın tamamı yüklenemiyor.
spec.secretGerekli kimlik doğrulama bilgilerini sağlamak için bölümünü yapılandırın. Örnekler ve daha fazla bilgi için bkz . Key Vault başvuruları .
Oluşturulan ConfigMap neden beklenen verileri içermiyor?
Belirttiğiniz anahtar-değer seçicilerinin beklenen veriyle eşleştiğinden emin olun. Herhangi bir seçici belirtmezseniz, etiket içermeyen tüm anahtar-değerler Uygulama Yapılandırma deponuzdan indirilir. Anahtar filtresi kullandığınızda, beklenen anahtar-değerlerinizin ön ekiyle eşleştiğinden emin olun. Anahtar değerlerinizde etiketler varsa, seçicilerde etiket filtresini belirttiğinizden emin olun. Daha fazla örnek için bkz . Anahtar-değer seçimi.
Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı yüklemesini nasıl özelleştirebilirim?
Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı'nı yüklerken fazladan Helm değerleri sağlayarak yüklemeyi özelleştirebilirsiniz. Örneğin, günlük düzeyini ayarlayabilir, sağlayıcıyı belirli bir düğümde çalışacak şekilde yapılandırabilir veya iş yükü kimliğini devre dışı bırakabilirsiniz. Daha fazla bilgi için bkz . Yükleme.
ConfigMap ve Gizli Dizi için isteğe bağlı yenilemeyi nasıl tetikleyebilirim?
Verileri otomatik olarak yenilenmek üzere yapılandırabilirsiniz. Ancak, Uygulama Yapılandırması ve Key Vault'tan en son verileri almak için isteğe bağlı yenileme tetiklemek isteyebileceğiniz zamanlar olabilir. Yenilemeyi tetiklemek için bölümünü AzureAppConfigurationProviderdeğiştirebilirsinizmetadata.annotations. Kubernetes sağlayıcısı daha sonra ConfigMap ve Secret'ı Uygulama Yapılandırma deponuzdan ve Key Vault'tan en son verilerle güncelleştirir. Örnek için bkz. İsteğe bağlı yenileme.
Kubernetes sağlayıcısı tarafından oluşturulan ConfigMap ve Gizli Dizi'yi silmenizi veya değiştirmenizi önermiyoruz. En son verilerden yenileri oluşturulur, ancak bu durum hatalar sırasında uygulamalarınız için kapalı kalma süresine neden olabilir.
Sağlayıcıyı sürüm 2.0.0'a yükselttikten sonra neden iş yükü kimliğini kullanarak Uygulama Yapılandırması ile kimlik doğrulaması yapamıyorum?
Sürüm 2.0.0'dan başlayarak, iş yükü kimliğini kullanarak Uygulama Yapılandırması ile kimlik doğrulaması için kullanıcı tarafından sağlanan bir hizmet hesabı gerekir. Bu değişiklik, ad alanı yalıtımı aracılığıyla güvenliği artırır. Daha önce bir Kubernetes sağlayıcısının hizmet hesabı tüm ad alanları için kullanılıyordu. Güncelleştirilmiş yönergeler için iş yükü kimliğini kullanma belgelerine bakın. Sürüm 2.0.0'a yükseltirken geçiş yapmak için zamana ihtiyacınız varsa, sağlayıcı yüklemesi sırasında bu ayarı geçici olarak kullanabilirsiniz workloadIdentity.globalServiceAccountEnabled=true . Sağlayıcının hizmet hesabını kullanma desteğinin gelecek bir sürümde kullanımdan kaldırılması için zamanlandığını unutmayın.
Kaynakları temizle
Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı'nı kaldırmak ancak AKS kümenizi korumak istiyorsanız sağlayıcıyı kaldırmak için aşağıdaki komutu kullanın:
az k8s-extension delete --cluster-type managedClusters \
--cluster-name <your-AKS-instance-name> \
--resource-group <your-AKS-resource-group> \
--name appconfigurationkubernetesprovider
Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.
Önemli
Bir kaynak grubunu silmek 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.
- Azure portalında oturum açın ve Kaynak grupları'nı seçin.
- Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
- Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
- Kaynak grubunu sil seçeneğini seçin.
- 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.
Uyarı
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ıç rehberinde şunları yapacaksınız:
- AKS'de çalışan bir uygulama oluşturuldu.
- Azure Uygulama Yapılandırması Kubernetes Sağlayıcısını kullanarak AKS kümenizi Uygulama Yapılandırma deponuza bağladınız.
- Uygulama Yapılandırma deponuzdaki verilerle bir ConfigMap oluşturuldu.
- Uygulama kodunuzu değiştirmeden Uygulama Yapılandırma deponuzdan yapılandırma verileriyle uygulamayı çalıştırarak.
AKS iş yüklerinizi yapılandırma verilerini dinamik olarak yenilemek üzere güncelleştirme hakkında bilgi edinmek için sonraki öğreticiye geçin.
Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı hakkında daha fazla bilgi için bkz. Azure Uygulama Yapılandırması Kubernetes Sağlayıcısı başvurusu.