Azure Container Apps'da Azure İşlevleri genel bakış

Azure Container Apps'da Azure İşlevleri, Azure İşlevleri olay odaklı özelliklerini Container Apps'in sağlam özellikleriyle bir araya getiren tam olarak yönetilen sunucusuz bir barındırma ortamı sunar. Bu tümleştirme Kubernetes tabanlı düzenleme, KEDA (Kubernetes tabanlı Olay Odaklı Otomatik Ölçeklendirme), Dapr (Dağıtılmış Uygulama Çalışma Zamanı) tümleştirmesi, GPU iş yükü desteği, sepet desteği, sanal ağ (VNet) bağlantısı ve düzeltme yönetimi ile desteklenen yerleşik otomatik ölçeklendirme gibi gelişmiş özellikleri içerir.

İşlevlerinizin mikro hizmetler, API'ler veya web siteleri gibi diğer kapsayıcılı uygulamalarla birlikte çalışmasını istediğinizde bu yaklaşım kullanışlıdır. Ayrıca işlev uygulamalarınızı kapsayıcıya almak, özel bağımlılıklara ihtiyacınız olduğunda veya maliyet tasarrufu için sıfıra ölçek avantajından yararlanmak istediğinizde yardımcı olabilir. Yapay zeka çıkarımı gibi yoğun işlem gücü içeren görevler çalıştırıyorsanız, Container Apps sunucusuz GPU teklifi ve Ayrılmış iş yükü profilleri aracılığıyla GPU tabanlı barındırmayı da destekler.

Azure Container Apps üzerinde tümleşik bir özellik olarak, Microsoft.App çağrılırken kind=functionapp ayarlayarak az containerapp create kaynak sağlayıcısını kullanarak Azure İşlevleri görüntülerini doğrudan Azure Container Apps'e dağıtabilirsiniz. Bu şekilde oluşturulan uygulamaların tüm Azure Container Apps özelliklerine erişimi vardır. Azure portalı aracılığıyla dağıtıyorsanız kurulum sırasında İşlevler için Optimize uygulaması seçeneğini etkinleştirebilirsiniz. Daha fazla bilgi için dağıtım ve kurulum bölümüne bakın.

Ana faydalar

Container Apps barındırma modeli, kapsayıcılı iş yüklerinin esnekliğini ve Azure İşlevleri olay odaklı doğasını kullanır. Aşağıdaki önemli avantajları sunar:

  • Azure İşlevleri'ı özel bağımlılıklar ve dil yığınlarıyla kapsayıcı olarak çalıştırın.
  • KEDA kullanarak sıfıra kadar ölçekleyin ve 1000 örneğe kadar ölçeklendirin.
  • Güvenli ağ tam VNet tümleşimi ile.
  • Çoklu düzeltmeler, trafik bölme, Dapr tümleştirmesi ve gözlemlenebilirlik bileşenleri gibi gelişmiş Container App özellikleri.
  • Yoğun işlem gerektiren iş yükleri için sunucusuz ve Ayrılmış GPU desteği.
  • İşlevleri mikro hizmetler, API'ler ve arka plan işleri ile birlikte çalıştırmak için Birleştirilmiş Container Apps ortamı.

Aşağıdaki tablo, Container Apps'te İşlevler'in özelliklerini Flex tüketim planıyla karşılaştırmanıza yardımcı olur.

Özellik Konteyner Uygulamaları Esnek Tüketim Planı
Sıfıra ölçeklendirin ✅ Evet (KEDA aracılığıyla) ✅ Evet
Maksimum ölçek genişletme 1.000 (varsayılan 10, yapılandırılabilir) 1,000
Her zaman açık örnekler ✅ Evet (aracılığıyla minReplicas) ✅ Evet (her zaman hazır örnekler aracılığıyla)
Sanal ağ tümleştirmesi ✅ Evet ✅ Evet
Özel kapsayıcı desteği ✅ Evet (kendi resminizi getirin) ❌ Sınırlı (kendi konteynerinizi getiremezsiniz)
GPU desteği ✅ Evet (sunucusuz GPU ayrılmış iş yükü profili aracılığıyla) ❌ Hayır
Yerleşik özellikler Container Apps özellik desteği. Örneğin, KEDA, Dapr, çoklu revizyonlar, mTLS, sidecar, giriş denetimi ve daha fazlası Yalnızca işlevlere özgü özellikler
Faturalama modeli Container Apps fiyatlandırması: Tüketim planı (vCPU, bellek, istekler) ve Ayrılmış plan (iş yükü profili tabanlı) Yürütme süresi + her zaman hazır örnekler

Container Apps'te İşlevler ile Flex Consumption planı ve diğer tüm plan ve barındırma türlerinin tam karşılaştırması için bkz . İşlev ölçeklendirme ve barındırma seçenekleri.

Senaryo

Container Apps'te Azure İşlevleri, özellikle olay odaklı yürütme, kapsayıcı esnekliği veya diğer hizmetlerle güvenli tümleştirmeye ihtiyacınız olduğunda çok çeşitli kullanım örnekleri için idealdir:

  • İş kolu API'leri: İş kolu uygulamaları için özel kitaplıkları, paketleri ve API'leri Azure İşlevleri paketleyin.
  • Geçiş ve modernleştirme: Şirket içi eski ve/veya monolith uygulamalarının kapsayıcılardaki buluta özel mikro hizmetlere geçirilmesi.
  • Olay temelli işleme: Event Grid, Service Bus, Event Hubs ve diğer olay kaynaklarından gelen olayların, İşlevler programlama modeli kolaylığıyla işlenmesi.
  • AI ve GPU iş yükleri: Gpu işlem kaynakları gerektiren videoların, görüntülerin, transkriptlerin veya yoğun işlem gücü gerektiren diğer görevlerin sunucusuz iş yükü işlemesi. Daha fazla bilgi için bkz. Azure Container Apps'da sunucusuz GPU'ları kullanın.
  • Mikroservisler: Azure İşlevleri'ın diğer Container Apps barındırılan hizmetlerle tümleştirilmesi.
  • Özel kapsayıcılar: İşlevleri özel çalışma zamanları veya yan arabirimlerle paketleme.
  • Özel uygulamalar: Sanal ağ ve iç giriş kullanarak yalnızca iç işlevlerin güvenliğini sağlayın.
  • .NET Aspire: .NET Aspire ile Azure İşlevleri tümleştirmesi, .NET Aspire uygulama konağı kapsamında bir Azure İşlevleri .NET projesi geliştirmenizi, hata ayıklamanızı ve düzenlemenizi sağlar. Azure İşlevleri ile .NET Aspire hakkında daha fazla bilgi edinin
  • Genel İşlevler: Desteklenen standart Azure İşlevleri senaryolarını çalıştırın (örneğin, zamanlayıcılar, dosya işleme, veritabanı tetikleyicileri).

Dağıtım ve kurulum

Azure Container Apps'da Azure İşlevleri dağıtmak için İşlevler uygulamanızı özel bir kapsayıcı görüntüsü olarak paketleyin ve tek bir anahtar farkı olan diğer kapsayıcı uygulamaları gibi dağıtın. Azure CLI veya ARM/Bicep şablonlarını kullanırken kind=functionapp özelliğini ayarlamanız gerekir. Ayrıntılı adımlar ve örnekler için resmi başlangıç belgelerine bakın.

az containerapp create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name $CONTAINER_APP_NAME \
  --environment $ENVIRONMENT_NAME \
  --image mcr.microsoft.com/k8se/quickstart-functions:latest \
  --ingress external \
  --target-port 80 \
  --kind functionapp \
  --query properties.outputs.fqdn

Bu komut İşlevler uygulamanızın URL'sini döndürür. Bu URL'yi kopyalayın ve bir web tarayıcısına yapıştırın.

Azure portalında, kapsayıcı uygulaması oluştururken kurulumu basitleştirmek için Azure İşlevleri için Optimize Et seçeneğini belirleyin.

Azure İşlevleri için önceden yapılandırılmış bir kapsayıcı uygulaması oluşturduğunuzda Azure portalının ekran görüntüsü.

Tüm standart dağıtım yöntemleri desteklenir, örneğin:

Ayrıntılı adımlar ve örnekler için resmi başlangıç belgelerine bakın.

Fiyatlandırma ve faturalama

Azure Container Apps üzerindeki Azure İşlevleri, Azure Container Apps ile aynı fiyatlandırma modelini izler. Faturalama, ortamınız için seçtiğiniz plan türüne göre belirlenir ve faturalama türü Tüketim veya Ayrılmış olarak seçilebilir.

  • Tüketim planı: Bu sunucusuz işlem seçeneği sizi yalnızca uygulamalarınızın çalışırken kullandığı kaynaklar için faturalar.
  • Ayrılmış plan: Bu seçenek özelleştirilmiş işlem kaynakları sağlar ve her iş yükü profiline ayrılan örnekler için sizi faturalar.

Plan seçiminiz faturalama hesaplamalarının nasıl yapılacağını belirler. Bir ortamdaki farklı uygulamalar farklı planlar kullanabilir.

Önemli noktalar şunlardır:

  • Container Apps'te Azure İşlevleri programlama modelini kullanmak için ek ücret alınmaz.
  • Dayanıklı İşlevler ve diğer gelişmiş desenler aynı Container Apps fiyatlandırma modeli altında desteklenir ve faturalandırılır. Ayrıntılı faturalama mekaniği ve örnekleri için Azure Container Apps'te Faturalama belgelerine bakın.

Olay temelli ölçeklendirme

Container Apps'teki Azure İşlevleri, Azure İşlevleri'ta bulunan C#, JavaScript / TypeScript (Node.js), Python, Java, PowerShell ve Özel kapsayıcılar (kendi görüntünüzü getirin) dahil olmak üzere tüm büyük dil çalışma zamanlarını destekler.

Azure Container Apps üzerinde çalışan Azure İşlevleri, olay kaynağına göre ölçeklendirme kurallarını otomatik olarak yapılandırır ve elle KEDA ölçek kuralı tanımları gerektirmez. Bu nedenle Azure portalındaki "Ölçek kuralları ekle" düğmesi Container Apps'te İşlevler için devre dışı bırakılır. Ancak, ölçeklendirme sınırları oluşturmak ve kaynak ayırma üzerinde denetimi korumak için en düşük ve en yüksek çoğaltma sayısını tanımlamaya devam edebilirsiniz.

Platform, İşlevler tetikleyici parametrelerinizi (yapılandırma veya tetikleyici özniteliklerinden host.json ) otomatik olarak uygun KEDA ölçeklendirici parametrelerine çevirir. İşlev tetikleme yapılandırmalarının KEDA ölçeklendirme parametreleriyle nasıl eşleştiğine dair ayrıntılı bir referans için Azure İşlevleri KEDA ölçeklendirme eşlemeleri başvurusuna bakın.

Tüm standart Azure İşlevleri tetikleyicileri ve bağlamaları, Container Apps'te aşağıdaki istisnalar ile desteklenir:

  • Blob Depolama Otomatik ölçeklendirmeyi tetikleme: Yalnızca kaynak olarak Event Grid kullanılırken çalışır. Blob kapsayıcılarında olay aboneliği kullanarak Azure İşlevlerini tetikleme hakkında daha fazla bilgi edinin
  • otomatik ölçeklendirme Dayanıklı İşlevler: Yalnızca MSSQL (Microsoft SQL Server) ve DTS (Dayanıklı Görev Zamanlayıcı) depolama sağlayıcılarını destekler. MSSQL ile Dayanıklı işlevleri dağıtma hakkında daha fazla kılavuza bakın
  • Otomatik ölçeklendirme şu nedenler için desteklenmez:
    • Redis için Azure Önbellek
    • Azure SQL

Yönetilen kimlikler , buna izin veren tetikleyiciler ve bağlamalar için desteklenir. Bunlar ayrıca şunların için de kullanılabilir:

Desteklenmeyen tetikleyiciler için, Azure Container Apps üzerinde çalışan Azure İşlevleri'da sabit çoğaltma sayıları kullanın. Yani, minReplicas değerini 0 olarak ayarlayın. Daha fazla bilgi için İşlevler geliştirici kılavuzuna bakın.

Ölçeklendirme ve performans

Container Apps'te Azure İşlevleri, KEDA kullanan olaylara göre otomatik olarak ölçeklendirilir ve ölçek kurallarını el ile yapılandırmanız gerekmez. Ölçeklendirme davranışını denetlemek için en düşük/en yüksek çoğaltmaları yine de ayarlayabilirsiniz.

  • Event temelli ölçeklendirme: Event Grid, Service Bus veya HTTP gibi tetikleyicilere göre otomatik olarak ölçeklendirilir.
  • Sıfıra ölçeklendirin: Boşta kalan uygulamalar maliyetten tasarruf etmek için ölçeği sıfıra daraltır.
  • Soğuk başlatma kontrolü: Azure Container Apps üzerinde soğuk başlatma süresini azaltma hakkında bilgi edinin.
  • Eşzamanlılık: Her örnek birden çok olayı paralel olarak işleyebilir.
  • Yüksek ölçek: Uygulama başına ölçeği 1.000 örneğe genişletme (varsayılan değer 10'dur).
  • GPU desteği: GPU destekli düğümleri kullanarak yapay zeka çıkarımı gibi işlem yoğunluklu iş yüklerini çalıştırın.

Bu, Container Apps'i hem ani artış gösteren hem de sabit durumlu iş yükleri için ideal hale getirir. Daha fazla bilgi edinmek için bkz. Azure Container Apps

Ağ ve güvenlik

Container Apps'te Azure İşlevleri, güvenli, ölçeklenebilir dağıtımlar için Container Apps'in sağlam networking ve güvenlik özelliklerinden yararlanır:

  • Sanal ağ tümleştirmesi: İç uç noktalar ve özel veritabanları aracılığıyla özel kaynaklara güvenli bir şekilde erişin.
  • Yönetilen kimlik: Sistem/kullanıcı tarafından atanan kimlikleri kullanarak Azure hizmetleriyle kimlik doğrulaması yapın; gizli diziler veya bağlantı dizeleri gerekmez.
  • Dapr desteği: Dapr yan araçları aracılığıyla yayın/abone, durum yönetimi ve güvenli hizmet çağrısını etkinleştirin. Daha fazla bilgi için bkz. Dapr tarafından desteklenen mikro hizmet API'leri.
  • Giriş ve TLS: TLS/mTLS, özel alan adları ile güvenli HTTP uç noktalarını kullanıma sunma veya dahili tutma.
  • Ortam Yalıtımı: İşlevler güvenli, kapsamlı iletişim için Container Apps ortam sınırlarını paylaşır.

Bu özellikler, Container Apps tarafından barındırılan İşlevler'i kurumsal düzeyde, güvenli sunucusuz uygulamalar için ideal hale getirir.

İzleme ve Kayıt

Container Apps'te Azure İşlevleri, performans izleme ve sorun tanılama için Azure gözlemlenebilirlik araçlarıyla sorunsuz bir şekilde tümleştirilir:

  • Application Insights: İstekler, bağımlılıklar, özel durumlar ve özel izlemeler için telemetri sağlar. Daha fazla bilgi için bkz. Monitor Azure İşlevleri.
  • Log Analytics: Kapsayıcı yaşam döngüsünü ve ölçeklendirme olaylarını (örneğin, FunctionsScalerInfo girişleri) yakalar. Daha fazla bilgi için bkz. Application Logging in Azure Container Apps.
  • Özel günlük kaydı: Yapılandırılmış çıkış için ILogger ve konsol günlüğü gibi standart çerçeveleri destekler.
  • Merkezi izleme: Container Apps ortamı tüm uygulamalarda birleşik panolar ve uyarılar sunar.

Ortam değişkenleri

Container Apps üzerinde çalışan Azure İşlevleri sistem tarafından sağlanan ortam değişkenlerine erişimi vardır. İşlev uygulamanız için ortam CONTAINER_NAME değişkeni, replika adına otomatik olarak ayarlanır. Çok çoğaltmalı senaryolarda günlüğe kaydetme, bağıntı ve hata ayıklama için bu değişkeni kullanın.

Sistem tarafından sağlanan ortam değişkenlerinin tam listesi için, Azure Container Apps'teki Ortam değişkenleri bölümüne bakın.

Değerlendirmeler

Azure İşlevleri'ı Azure Container Apps üzerinde kullanırken diğer dikkat edilmesi gereken noktaları göz önünde bulundurun:

  • Otomatik Ölçeklendirme için Giriş Gereksinimi: Olaylara göre otomatik ölçeklendirmeyi etkinleştirmek için giriş genel olarak veya Container Apps iç ortamında etkinleştirilmelidir.
  • Zorunlu Depolama Hesabı: Container Apps'te dağıtılan her İşlev uygulaması bir depolama hesabına bağlanmalıdır. Bu, tetikleyicileri, günlükleri ve durumu yönetmek için gereklidir. En iyi yöntemler için depolama hesabı kılavuzunu gözden geçirin.
  • Çok düzeltmeli depolama: Birden çok etkin düzeltmeyle dağıtım yaparken, her düzeltmeye ayrılmış bir depolama hesabı atayın. Ayrılmış depolama hesabı kullanmak çakışmaları önlemeye yardımcı olur ve düzgün yalıtım sağlar. Alternatif olarak, eşzamanlı düzeltmelere ihtiyacınız yoksa, basitleştirilmiş yönetim için varsayılan tek düzeltme modunu kullanmayı göz önünde bulundurun.
  • Çoklu düzeltme tetikleyicileri: Çekme tabanlı bir tetikleyiciyle çoklu düzeltme modu kullanıyorsanız, rakip tüketicilerle ilgili çakışmaları önlemek için her düzeltme için farklı bir olay kaynağı kullanın. Azure Kuyruk Depolama, Azure Event Hubs, Azure Service Bus veya Dayanıklı İşlevler tetikleyicileri kullanan işlevler, çekme tabanlı tetikleyicilere örnek olarak verilebilir.
  • Soğuk başlatma gecikmesi: Kapsayıcı uygulamanız boşta kalma dönemlerinde sıfıra ölçeklendirildiğinde, işlem yapılmadığında ilk istek soğuk bir başlangıçla karşılaşır. Soğuk başlangıç sürelerini azaltma hakkında daha fazla bilgi edinin.
  • Application Insights tümleştirmesi: Güçlü izleme ve tanılama için İşlevler uygulamanızı Application Insights'a bağlayın. Daha fazla bilgi için bkz. İşlevlerle App Insights tümleştirmesi.
  • İşlev proxy'leri: Desteklenmez. API ağ geçidi senaryoları için bunun yerine Azure API Management ile tümleştirin.
  • Dağıtım slotları: Hazırlık ve üretim slotları mevcut değil. Kesintisiz sürümler için mavi-yeşil dağıtım stratejilerini kullanın.
  • İşlev erişim anahtarları: İşlev erişim anahtarları oluşturmak için portalın kullanılması desteklenmez. Anahtarları depolamak için Azure Key Vault kullanmayı göz önünde bulundurun. Üretimde HTTP uç noktalarının güvenliğini sağlamak için aşağıdaki seçenekleri de kullanabilirsiniz:
  • Kota ve kaynak sınırları: Container Apps ortamlarının bellek, CPU ve bölge başına örnek sayısı için varsayılan sınırları vardır. Daha fazla bilgi için ortam sınırlarına ve varsayılan kotalara bakın. İş yükünüz daha fazla kaynak gerektiriyorsa kota artışı isteyebilirsiniz.
  • Manual scale rule configuration: Ölçeklendirme kuralları olay kaynağına göre otomatik olarak yapılandırıldığından, kapsayıcı uygulamalarında barındırılan Azure İşlevleri için Azure portalındaki "Ölçek kuralları ekle" düğmesi devre dışı bırakılır. Bu kurulumda el ile KEDA kural tanımları gerekli değildir.

Geri Bildirim Gönder

Azure Container Apps GitHub deposuna bir sorun veya özellik isteği gönderin.

Sonraki Adımlar / Diğer Kaynaklar

Container Apps'te Azure İşlevleri ile öğrenmeye ve oluşturmaya devam etmek için aşağıdaki kaynakları keşfedin: