Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A .NET-alkalmazások natív felhőbeli környezetben, például az Azure Container Appsben való üzembe helyezéséhez olyan döntéseket kell hoznia, amelyek biztosítják, hogy az alkalmazás zökkenőmentesen és biztonságosan fusson. Ez az útmutató a .NET-alkalmazások Azure Container Appsben való üzembe helyezésének főbb fogalmait ismerteti.
Az Azure Container Apps egy teljes mértékben felügyelt kiszolgáló nélküli tárolószolgáltatás, amely lehetővé teszi a tárolóalapú alkalmazások futtatását a mögöttes infrastruktúra kezelése nélkül. A Container Apps beépített támogatást nyújt az olyan funkciókhoz, mint az automatikus skálázás, az állapotellenőrzés és a átviteli réteg biztonsági (TLS) tanúsítványai.
Ez a cikk a .NET-alkalmazások Azure Container Appsen való üzembe helyezése során fontos fogalmakat és szempontokat ismerteti.
Erőforrástípus kiválasztása
A Container Apps kétféle erőforrást támogat: alkalmazásokat és feladatokat. Az alkalmazások folyamatosan futtatják a szolgáltatásokat, míg a feladatok rövid élettartamú feladatok, amelyek a befejezésig futnak.
Az alkalmazás üzembe helyezésének előkészítésekor vegye figyelembe a két alkalmazástípus közötti különbségeket, mivel azok viselkedése befolyásolja a .NET-alkalmazás kezelését. Az alábbi táblázat az alkalmazások és a feladatok közötti használati esetek különbségét ismerteti.
| Használati eset | Erőforrás típusa |
|---|---|
| HTTP-kéréseket kiszolgáló ASP.NET Core webes API | Alkalmazás |
| Egy .NET Core-konzolalkalmazás, amely feldolgoz néhány adatot, majd kilép | Állás |
| Folyamatosan futó háttérszolgáltatás, amely üzeneteket dolgoz fel egy üzenetsorból | Alkalmazás |
| Képoptimalizálási szolgáltatás, amely csak akkor fut, ha a rendszer nagy méretű képeket ment egy tárfiókba. | Állás |
| Olyan keretrendszert használó alkalmazás, mint a Hangfire, a Quartz.NET vagy az Azure WebJobs SDK | Alkalmazás |
A .NET-alkalmazás tárolóba helyezése és üzembe helyezése
Alkalmazásokhoz és feladatokhoz is létre kell készítenie egy tárolórendszerképet a .NET-alkalmazás csomagolásához. A tárolórendszerképek készítéséről további információt a ASP.NET Core Docker-rendszerképében talál.
A beállítás után az alábbi útmutatókat követve telepítheti az alkalmazást az Azure Container Appsben:
- Oktatóanyag: Üzembe helyezés az Azure Container Appsben a Visual Studióval
- Rövid útmutató: Adattárból az Azure Container Appsbe történő buildelés és üzembe helyezés
- Feladat létrehozása az Azure Container Apps használatával
A HTTP belépési pont használata
Az Azure Container Apps tartalmaz egy beépített HTTP-bejövő forgalmat, amellyel elérhetővé teheti az alkalmazásokat a tárolón kívülről érkező forgalom számára. A Container Apps belépési pont az alkalmazás és a végfelhasználó között helyezkedik el. Mivel a bejárat közvetítőként működik, bármi, amit a végfelhasználó lát, a bejáratnál végződik, és amit az alkalmazás lát, az a bejáratnál kezdődik.
Az ingress kezeli a TLS kapcsolat bontását és az egyéni domaineket, így nem kell manuálisan konfigurálnia őket az alkalmazásban. A bejövő forgalomon keresztül a port 443 a HTTPS-forgalom számára lesz elérhető, és opcionálisan a HTTP-forgalom portja 80 is. A bejövő forgalom a célporton továbbítja a kéréseket az alkalmazásnak.
Ha az alkalmazásnak metaadatokra van szüksége az eredeti kérelemről, használhat X-továbbított fejléceket.
További információ: HTTP-bejövő forgalom az Azure Container Apps szolgáltatásaiban.
Célport definiálása
A forgalom fogadásához konfigurálja a bejövő forgalmat egy célporton, ahol az alkalmazás figyeli a forgalmat.
Amikor ASP.NET Core egy tárolóban fut, az alkalmazás a tároló lemezképében konfigurált portokat figyeli. Ha a hivatalos ASP.NET Core-lemezképeket használja, az alkalmazás úgy van konfigurálva, hogy egy alapértelmezett porton hallgassa meg a HTTP-t. Az alapértelmezett port a ASP.NET Core-verziótól függ.
| Futtatás | Célport |
|---|---|
| ASP.NET Core 7 és korábbi verziók | 80 |
| ASP.NET Core 8 és újabb verziók | 8080 |
A bejövő forgalom konfigurálásakor állítsa a célportot a használt tárolólemezképnek megfelelő számra.
X-továbbított fejlécek definiálása
Mivel az ingressz kezeli az eredeti HTTP-kérést, az alkalmazás ügyfélként tekint az ingresszre. Bizonyos esetekben az alkalmazásnak ismernie kell az eredeti ügyfél IP-címét vagy az eredeti protokollt (HTTP vagy HTTPS). A protokoll- és IP-adatokat a kérelem fejlécénX-Forwarded-*
Az ForwardedHeaders objektum elérésével ezekből az élőfejekből olvashatja le az eredeti értékeket.
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
});
A kérelemfejlécek használatával kapcsolatos további információkért lásd : ASP.NET Core konfigurálása proxykiszolgálókkal és terheléselosztókkal való együttműködéshez.
Natív felhőbeli .NET-alkalmazások létrehozása
A Container Appsben üzembe helyezett alkalmazások gyakran akkor működnek a legjobban, ha a natív felhőbeli alapelvek alapjaira épít. Az alábbi szakaszok a natív felhőbeli alkalmazásokkal kapcsolatos gyakori problémákat ismertetik.
Alkalmazáskonfiguráció
Amikor üzembe helyezi a .NET-alkalmazást az Azure Container Appsben, környezeti változókkal tárolhatja a konfigurációs információkat aappsettings.jsonhasználata helyett. Ez a gyakorlat lehetővé teszi, hogy az alkalmazást különböző módokon konfigurálja különböző környezetekben. Emellett a környezeti változók használata megkönnyíti a konfigurációs értékek kezelését anélkül, hogy újra kellene építenie és újra üzembe kellene helyeznie a tárolólemezképet.
Az Azure Container Appsben környezeti változókat állíthat be az alkalmazás vagy feladat tárolójának meghatározásakor. Bizalmas értékeket tárol titkos kulcsokban, és környezeti változókként hivatkozik rájuk. A titkos kódok kezelésével kapcsolatos további információkért lásd : Titkos kódok kezelése az Azure Container Appsben.
Felügyelt identitás
Az Azure Container Apps támogatja a felügyelt identitást, amely lehetővé teszi az alkalmazás számára, hogy hitelesítő adatok cseréje nélkül hozzáférjen más Azure-szolgáltatásokhoz. Az Azure-szolgáltatások közötti biztonságos kommunikációval kapcsolatos további információkért lásd : Felügyelt identitások az Azure Container Appsben.
Naplózás
Natív felhőkörnyezetben a naplózás kulcsfontosságú az alkalmazások monitorozásához és hibaelhárításához. Az Azure Container Apps alapértelmezés szerint az Azure Log Analytics használatával gyűjt naplókat a tárolókból. Más naplózási szolgáltatókat is konfigurálhat. Az alkalmazásnaplózásról további információt az Azure Container Apps naplótárolási és monitorozási lehetőségei című témakörben talál.
Amikor olyan naplózási szolgáltatót konfigurál, amely naplókat ír a konzolra, az Azure Container Apps összegyűjti és tárolja a naplóüzeneteket.
Egészségügyi szondák
Az Azure Container Apps beépített támogatást nyújt az állapotadat-mintavételekhez, amelyek lehetővé teszik az alkalmazások állapotának monitorozását. Ha egy mintavétel megállapítja, hogy az alkalmazás állapota nem megfelelő, akkor a tároló automatikusan újraindul. További információkért az állapotvizsgálatokról, tekintse meg az Azure Container Apps állapotvizsgálat részt.
Ha egyéni logikát szeretne implementálni az alkalmazás állapotának meghatározásához, konfigurálhat állapotellenőrzési végpontot. Az állapot-ellenőrzési végpontokkal kapcsolatos további információkért lásd : Állapotellenőrzések a ASP.NET Core-ban.
Automatikus skálázási szempontok
Az Azure Container Apps alapértelmezés szerint automatikusan skálázza a ASP.NET Core-alkalmazásokat a bejövő HTTP-kérések száma alapján. Az egyéni automatikus skálázási szabályokat más metrikák, például a CPU vagy a memóriahasználat alapján is konfigurálhatja. A skálázással kapcsolatos további információkért lásd: Méretezési szabályok beállítása az Azure Container Appsben.
A .NET 8.0.4-ben és újabb verzióiban a ASP.NET védelmet használó Core-alkalmazások automatikusan úgy vannak konfigurálva, hogy az alkalmazás méretezése során a védett adatok minden replika számára elérhetők legyenek. Az alkalmazás méretezésének megkezdésekor a kulcskezelő több változatban kezeli az írási és megosztási kulcsokat. Az alkalmazás üzembe helyezésekor a környezeti változó autoConfigureDataProtection automatikusan úgy van beállítva, hogy true engedélyezze ezt a funkciót. Az automatikus konfigurációval kapcsolatos további információkért tekintse meg ezt a GitHub-lekéréses kérelmet.
Az automatikus skálázás a megadott szabályok alapján módosítja az alkalmazás replikáinak számát. Alapértelmezés szerint a Container Apps véletlenszerűen irányítja a bejövő forgalmat a ASP.NET Core-alkalmazás replikáihoz. Mivel a forgalom különböző replikák között osztható fel, az alkalmazásnak állapot nélkülinek kell lennie, hogy az alkalmazás ne tapasztaljon állapottal kapcsolatos problémákat.
Az olyan funkciók, mint a hamisítás elleni védelem, a hitelesítés, a SignalR, a Blazor Server és a Razor Pages, az adatvédelemtől függenek, és további konfigurációt igényelnek a több replikára való skálázáskor.
Az adatvédelem konfigurálása
ASP.NET Core speciális funkciókkal rendelkezik az adatok védelmére és visszafejtésére, például a munkamenet-adatokra és a hamisítás elleni tokenekre. Alapértelmezés szerint az adatvédelmi kulcsok a fájlrendszerben vannak tárolva, ami nem alkalmas natív felhőbeli környezetekhez.
Aspire-alkalmazás üzembe helyezésekor a rendszer automatikusan konfigurálja az adatvédelemmel kapcsolatos beállításokat. Minden más helyzetben manuálisan kell konfigurálnia az adatvédelmet.
ASP.NET Core SignalR konfigurálása
ASP.NET Core SignalR egy háttérsíkot igényel az üzenetek több kiszolgálóreplika közötti elosztásához. Ha a ASP.NET Core-alkalmazást a SignalR használatával telepíti az Azure Container Appsbe, konfigurálnia kell az egyik támogatott háttérsíkot, például az Azure SignalR Szolgáltatást vagy a Redist. A háttérsíkokkal kapcsolatos további információkért tekintse meg ASP.NET Core SignalR üzemeltetését és skálázását.
A Blazor-kiszolgáló konfigurálása
ASP.NET Core Blazor Server-alkalmazások a kiszolgálón tárolják az állapotot, ami azt jelenti, hogy minden ügyfélnek ugyanahhoz a kiszolgálóreplikához kell csatlakoznia a munkamenet során. Amikor a Blazor Server-alkalmazást az Azure Container Appsben helyezi üzembe, engedélyeznie kell a ragadós munkameneteket, hogy az ügyfelek ugyanarra a replikára legyenek irányítva. További információ: Munkamenet-affinitás az Azure Container Appsben.