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
- bir Uygulama Yapılandırması mağazası. Mağaza oluşturma.
- An Azure Container Registry. Kayıt defteri oluşturun.
- Azure Container Registry'nizden görüntü çekme izni verilen bir Azure Kubernetes Service (AKS) kümesi. AKS kümesi oluşturma.
- .NET SDK 6.0 veya üzeri
- Azure CLI
- Docker Desktop
- dümen
- kubectl
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
.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
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>
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" } }
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
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
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"]
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
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
.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
vemyregistry.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 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
Projenizin kök dizininde bir Dağıtım dizini oluşturun.
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
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
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
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
Bir tarayıcı penceresi açın ve önceki adımda elde edilen IP adresine gidin. Web sayfası şöyle görünür:
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
AKS kümenizin erişim kimlik bilgilerini almak için aşağıdaki komutu çalıştırın. ve
resource-group
parametrelerininname
değerini AKS örneğinle değiştirin:az aks get-credentials --name <your-aks-instance-name> --resource-group <your-aks-resource-group>
kullanarak
helm
AKS 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ı.
Kaynak oluşturmak
AzureAppConfigurationProvider
için aşağıdaki içeriğe sahip bir appConfigurationProvider.yaml dosyasını Dağıtım dizinine ekleyin.AzureAppConfigurationProvider
Azure 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.
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. ÖğesininvolumeMounts.mountPath
Dockerfile'ınızda belirtilenle ve daha önce oluşturulan yapılandırma diziniyle eşleştiğindenWORKDIR
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
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
Tarayıcıyı yenileyin. Sayfada güncelleştirilmiş içerik gösterilir.
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.
- 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'i 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.
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin