Aracılığıyla paylaş


Azure Container Apps üzerinde .NET'e genel bakış

.NET uygulamasını Azure Container Apps gibi buluta özel bir ortama dağıtmak için uygulamanızın sorunsuz ve güvenli bir şekilde çalıştığından emin olmak için kararlar vermeniz gerekir. Bu kılavuz, .NET uygulamasını Azure Container Apps'e dağıtmayla ilgili temel kavramları kapsar.

Azure Container Apps, temel alınan altyapıyı yönetmeden kapsayıcılı uygulamaları çalıştırmanıza olanak tanıyan tam olarak yönetilen sunucusuz bir kapsayıcı hizmetidir. Container Apps otomatik ölçeklendirme, sistem durumu denetimleri ve aktarım katmanı güvenliği (TLS) sertifikaları gibi özellikler için yerleşik destek içerir.

Bu makalede, Azure Container Apps'te bir .NET uygulaması dağıtırken sizin için önemli olan kavramlar ve endişeler açıklanmaktadır.

Bir kaynak türü seçin

Container Apps iki tür kaynağı destekler: uygulamalar ve işler. Uygulamalar, sürekli olarak çalışan servislerdir, oysa işler, tamamlanmak üzere çalışacak şekilde tasarlanmış kısa süreli görevlerdir.

Uygulamanızı dağıtmaya hazırlanırken, davranışları .NET uygulamanızı yönetme şeklinizi etkilediğinden bu iki uygulama türü arasındaki farkları göz önünde bulundurun. Aşağıdaki tabloda uygulamalar ve işler arasındaki kullanım örnekleri arasındaki fark açıklanmaktadır.

Kullanım örneği Kaynak türü
HTTP istekleri sunan bir ASP.NET Core web API'si Uygulama
Bazı verileri işleyen ve ardından çıkan bir .NET Core konsol uygulaması İş
Kuyruktan gelen iletileri işleyen sürekli çalışan bir arka plan hizmeti Uygulama
Yalnızca büyük görüntüler bir depolama hesabına kaydedildiğinde çalışan bir görüntü iyileştirme hizmeti. İş
Hangfire, Quartz.NET veya Azure WebJobs SDK'sı gibi bir çerçeve kullanan bir uygulama Uygulama

.NET uygulamanızı kapsayıcıya alma ve dağıtma

Hem uygulamalar hem de işler için .NET uygulamanızı paketlemek için bir kapsayıcı görüntüsü oluşturmanız gerekir. Kapsayıcı görüntüsü oluşturma hakkında daha fazla bilgi için bkz . ASP.NET Core için Docker görüntüleri.

Kurulumdan sonra, aşağıdaki kılavuzları izleyerek uygulamanızı Azure Container Apps'e dağıtabilirsiniz:

HTTP girişini kullanma

Azure Container Apps, uygulamalarınızın kapsayıcı dışından gelen trafiğe maruz kalmalarını sağlamak için kullanabileceğiniz yerleşik bir HTTP girişi içerir. Container Apps girişi, uygulamanızla son kullanıcı arasında yer alır. Giriş aracı işlevi gördüğünden, son kullanıcının gördüğü her şey girişte sona erer ve uygulamanızın gördüğü her şey girişte başlar.

Giriş TLS sonlandırma ve özel etki alanlarını yönetir, bu nedenle bunları uygulamanızda el ile yapılandırmanız gerekmez. Giriş aracılığıyla, bağlantı noktası 443 HTTPS trafiği için ve isteğe bağlı olarak HTTP trafiği için bağlantı noktası 80 olarak kullanıma sunulur. Giriş istekleri hedef bağlantı noktasında uygulamanıza iletir.

Uygulamanızın özgün istekle ilgili meta verilerine ihtiyacı varsa, X-forwarded üst bilgilerini kullanabilir.

Daha fazla bilgi edinmek için Azure Container Apps'te HTTP girişi bölümüne bakın.

Hedef bağlantı noktası tanımlama

Trafik almak için girişi uygulamanızın trafiği dinlediği hedef bağlantı noktasında yapılandırın.

ASP.NET Core bir kapsayıcıda çalıştırıldığında, uygulama kapsayıcı görüntüsünde yapılandırılan bağlantı noktalarını dinler. Resmi ASP.NET Core görüntülerini kullandığınızda, uygulamanız varsayılan bir bağlantı noktasında HTTP dinleyecek şekilde yapılandırılır. Varsayılan bağlantı noktası ASP.NET Core sürümüne bağlıdır.

Çalışma Zamanı Hedef bağlantı noktası
ASP.NET Core 7 ve öncesi 80
ASP.NET Core 8 ve üzeri 8080

Girişi yapılandırdığınızda, hedef bağlantı noktasını kullandığınız kapsayıcı görüntüsüne karşılık gelen sayıya ayarlayın.

X-Forwarded başlıkları tanımla

Giriş özgün HTTP isteğini işlediğinden, uygulamanız girişi istemci olarak görür. Bazı durumlarda uygulamanızın özgün istemcinin IP adresini veya özgün protokolü (HTTP veya HTTPS) bilmesi gerekir. protokolü ve IP bilgilerine isteğin X-Forwarded-* üst bilgisi aracılığıyla erişebilirsiniz.

ForwardedHeaders nesnesine erişerek bu üstbilgi başlıklarından özgün değerleri okuyabilirsiniz.

builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders =
        ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    options.KnownNetworks.Clear();
    options.KnownProxies.Clear();
});

İstek üst bilgileriyle çalışma hakkında daha fazla bilgi için ASP.NET Core'un ara sunucular ve yük dengeleyicilerle çalışacak şekilde yapılandırılması bölümüne bakın.

Bulutta yerel .NET uygulamaları oluşturma

Container Apps'e dağıtılan uygulamalar genellikle bulutta yerel ilkelerin temellerini temel aldığınızda en iyi şekilde çalışır. Aşağıdaki bölümler, buluta özel uygulamaları çevreleyen yaygın endişelerin ayrıntılarına yardımcı olur.

Uygulama yapılandırması

.NET uygulamanızı Azure Container Apps'e dağıttığınızda, appsettings.jsonkullanmak yerine yapılandırma bilgilerini depolamak için ortam değişkenlerini kullanın. Bu uygulama, uygulamanızı farklı ortamlarda farklı şekillerde yapılandırmanıza olanak tanır. Buna ek olarak, ortam değişkenlerini kullanmak, kapsayıcı görüntünüzü yeniden derlemek ve yeniden dağıtmak zorunda kalmadan yapılandırma değerlerini yönetmeyi kolaylaştırır.

Azure Container Apps'te, uygulamanızın veya işinizin kapsayıcısını tanımlarken ortam değişkenlerini ayarlarsınız. Hassas değerleri gizli bilgi olarak depolayın ve bunlara ortam değişkenleri olarak başvurun. Gizlilik bilgilerini yönetme hakkında daha fazla bilgi edinmek için Azure Container Apps'te gizlilik bilgilerini yönetme bölümüne bakın.

Yönetilen kimlik

Azure Container Apps, uygulamanızın kimlik bilgilerini değiştirmek zorunda kalmadan diğer Azure hizmetlerine erişmesini sağlayan yönetilen kimliği destekler. Azure hizmetleri arasında güvenli bir şekilde iletişim kurma hakkında daha fazla bilgi edinmek için bkz . Azure Container Apps'te yönetilen kimlikler.

Kayıt Tutma

Bulut tabanlı bir ortamda loglama, uygulamalarınızın izlenmesi ve sorunlarının giderilmesi için çok önemlidir. Varsayılan olarak, Azure Container Apps kapsayıcılarınızdan günlükleri toplamak için Azure Log Analytics'i kullanır. Diğer günlük sağlayıcılarını yapılandırabilirsiniz. Uygulama günlüğü hakkında daha fazla bilgi edinmek için Azure Container Apps'te günlük depolama ve izleme seçenekleri bölümüne bakın.

Konsola günlük yazan bir günlük sağlayıcısı yapılandırdığınızda Azure Container Apps günlük iletilerini sizin için toplar ve depolar.

Sağlık incelemeleri

Azure Container Apps, uygulamalarınızın durumunu izlemenize olanak tanıyan sistem durumu yoklamaları için yerleşik destek içerir. Bir araştırma uygulamanızın iyi durumda olmadığını belirlerse kapsayıcınız otomatik olarak yeniden başlatılır. Daha fazla bilgi edinmek için Azure Container Apps'teki durum yoklamalarına bakın.

Uygulamanızın durumunu belirlemek için özel mantık uygulama şansı için bir sistem durumu denetimi uç noktası yapılandırabilirsiniz. Sistem durumu denetimi uç noktaları hakkında daha fazla bilgi edinmek için bkz . ASP.NET Core'da sistem durumu denetimleri.

Otomatik ölçeklendirmeyle ilgili dikkat edilmesi gerekenler

Varsayılan olarak Azure Container Apps, ASP.NET Core uygulamalarınızı gelen HTTP isteklerinin sayısına göre otomatik olarak ölçeklendirir. Cpu veya bellek kullanımı gibi diğer ölçümlere göre özel otomatik ölçeklendirme kuralları da yapılandırabilirsiniz. Ölçeklendirme hakkında daha fazla bilgi edinmek için bkz . Azure Container Apps'te ölçeklendirme kurallarını ayarlama.

.NET 8.0.4 ve sonraki sürümlerde, veri koruması kullanan ASP.NET Core uygulamaları, korumalı verilerin uygulama ölçeklendirildikçe tüm çoğaltmalar için erişilebilir olmasını sağlamak için otomatik olarak yapılandırılır. Uygulamanız ölçeklendirmeye başladığında, anahtar yöneticisi birden çok revizyon arasında anahtarların yazılmasını ve paylaşılmasını yönetir. Uygulama dağıtılırken ortam değişkeni autoConfigureDataProtection bu özelliği etkinleştirmek için true otomatik olarak olarak ayarlanır. Bu otomatik yapılandırma hakkında daha fazla bilgi için bu GitHub çekme isteğine bakın.

Otomatik ölçeklendirme, tanımladığınız kurallara göre uygulamanızın çoğaltma sayısını değiştirir. Varsayılan olarak, Container Apps gelen trafiği rastgele ASP.NET Core uygulamanızın çoğaltmalarına yönlendirir. Trafik farklı replikalar arasında bölünebildiğinden, uygulamanızın durumla ilgili sorunlarla karşılaşmaması için durumsuz olması gerekir.

Sahteciliğe karşı koruma, kimlik doğrulaması, SignalR, Blazor Sunucusu ve Razor Sayfaları gibi özellikler veri korumasına bağlıdır ve birden çok çoğaltmaya ölçeklendirilirken düzgün çalışması için ek yapılandırma gerektirir.

Veri korumayı yapılandırma

ASP.NET Core, oturum verileri ve sahteciliğe karşı koruma belirteçleri gibi verileri korumak ve korumasını kaldırmaya yönelik özel özelliklere sahiptir. Varsayılan olarak, veri koruma anahtarları buluta özel bir ortam için uygun olmayan dosya sisteminde depolanır.

Aspire uygulaması dağıtıyorsanız veri koruması sizin için otomatik olarak yapılandırılır. Diğer tüm durumlarda, veri korumayı el ile yapılandırmanız gerekir.

ASP.NET Core SignalR'ı yapılandırma

ASP.NET Core SignalR, iletileri birden çok sunucu çoğaltmasına dağıtmak için bir arka plan gerektirir. SignalR ile ASP.NET Core uygulamanızı Azure Container Apps'e dağıtırken, Azure SignalR Hizmeti veya Redis gibi desteklenen arka planlardan birini yapılandırmanız gerekir. Arka düzlemler hakkında daha fazla bilgi edinmek için bkz. ASP.NET Core SignalR barındırma ve ölçeklendirme.

Blazor Sunucusunu Yapılandırma

ASP.NET Core Blazor Server uygulamaları sunucuda durumu depolar; bu, her istemcinin oturumları sırasında aynı sunucu çoğaltmasına bağlı olması gerektiği anlamına gelir. Blazor Server uygulamanızı Azure Container Apps'e dağıttığınızda, istemcilerin aynı kopyaya yönlendirildiğinden emin olmak için yapışkan oturumları etkinleştirmeniz gerekir. Daha fazla bilgi edinmek için bkz . Azure Container Apps'te Oturum Benşimi.