Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure Functions na Azure Container Apps oferuje w pełni zarządzane bezserwerowe środowisko hostingu, które łączy możliwości oparte na zdarzeniach Azure Functions z niezawodnymi funkcjami usługi Container Apps. Ta integracja obejmuje zaawansowane funkcje, takie jak orkiestracja oparta na platformie Kubernetes, wbudowane skalowanie automatyczne obsługiwane przez KEDA (oparte na platformie Kubernetes autoskalowanie oparte na zdarzeniach), integrację dapr (rozproszonego środowiska uruchomieniowego aplikacji), obsługę obciążeń procesora GPU, obsługę przyczepki, łączność sieci wirtualnej (VNet) i zarządzanie poprawkami.
Takie podejście jest przydatne, gdy chcesz, aby funkcje działały razem z innymi konteneryzowanymi aplikacjami, takimi jak mikrousługi, interfejsy API lub witryny internetowe. Ponadto konteneryzowanie aplikacji funkcji może pomóc, gdy potrzebujesz niestandardowych zależności lub chcesz skorzystać ze skalowania do zera w celu uzyskania oszczędności kosztów. Jeśli uruchamiasz zadania z dużym obciążeniem obliczeniowym, takie jak wnioskowanie sztucznej inteligencji, usługa Container Apps obsługuje również hosting oparty na procesorze GPU za pośrednictwem bezserwerowego procesora GPU i profilów dedykowanych obciążeń.
Jako zintegrowana funkcja w Azure Container Apps, można wdrażać obrazy Azure Functions bezpośrednio na Azure Container Apps przy użyciu dostawcy zasobów Microsoft.App poprzez ustawienie kind=functionapp podczas wywoływania az containerapp create. Aplikacje utworzone w ten sposób mają dostęp do wszystkich funkcji Azure Container Apps. W przypadku wdrażania za pośrednictwem portalu Azure można włączyć opcję Optimize dla aplikacji usługi Functions podczas instalacji. Aby uzyskać więcej informacji, zobacz sekcję dotyczącą wdrażania i konfigurowania , aby uzyskać więcej informacji.
Najważniejsze korzyści
Model hostingu usługi Container Apps opiera się na elastyczności konteneryzowanych obciążeń i charakteru sterowanego zdarzeniami Azure Functions. Oferuje ona następujące kluczowe zalety:
- Uruchom Azure Functions jako kontenery z niestandardowymi zależnościami i stosami języków.
- Skalowanie do zera i zwiększanie do 1000 wystąpień przy użyciu KEDA.
- Zabezpieczanie sieci przy użyciu pełnej integracji z siecią wirtualną.
- Zaawansowane funkcje aplikacji kontenerowej, takie jak wiele wersji, podział ruchu, integracja Dapr i komponenty do obserwowalności.
- Obsługa bezserwerowych i dedykowanych procesorów GPU dla obciążeń intensywnie korzystających z obliczeń.
- Ujednolicone środowisko usługi Container Apps do uruchamiania funkcji wraz z mikrousługami, interfejsami API i zadaniami w tle.
Poniższa tabela ułatwia porównanie funkcji usługi Functions w usłudze Container Apps z planem Flex Consumption.
| Funkcja | Container Apps | Plan elastycznej konsumpcji |
|---|---|---|
| Skalowanie do zera | ✅ Tak (za pośrednictwem KEDA) | ✅ Tak |
| Maksymalne skalowanie w poziomie | 1000 (domyślnie 10, konfigurowalne) | 1 000 |
| Zawsze włączone instancje |
✅ Tak (za pośrednictwem minReplicas) |
✅ Tak (za pośrednictwem wystąpień zawsze gotowych) |
| Integracja z VNetem | ✅ Tak | ✅ Tak |
| Obsługa kontenerów niestandardowych | ✅ Tak (przynieś własny obraz) | ❌ Ograniczone (bez własnego kontenera) |
| Obsługa procesora GPU | ✅ Tak (za pośrednictwem profilu dedykowanego obciążenia procesora GPU bezserwerowego) | ❌ Nie |
| Wbudowane funkcje | Obsługa funkcji usługi Container Apps. Na przykład KEDA, Dapr, multi-revisions, mTLS, przyczepki, kontrolka ruchu przychodzącego i nie tylko | Funkcje dostępne wyłącznie dla funkcji |
| Model rozliczania | Cennik usługi Container Apps: plan zużycia (procesor wirtualny, pamięć, żądania) i plan dedykowany (oparty na profilu obciążenia) | Czas wykonania i zawsze dostępne wystąpienia |
Aby uzyskać pełne porównanie usługi Functions on Container Apps w porównaniu do Flex Consumption i wszystkich innych typów planów i hostingu, zobacz Opcje skalowania i hostingu usługi Functions.
Scenariusze
Funkcje Azure w Container Apps są idealne dla szerokiej gamy zastosowań, szczególnie w przypadku wykonania sterowanego zdarzeniami, elastyczności kontenerów lub bezpiecznej integracji z innymi usługami.
- Line-of-business APIs: Pakietowanie niestandardowych bibliotek, pakietów oraz interfejsów API z Azure Functions dla aplikacji biznesowych.
- Migracja i modernizacja: Migracja lokalnych starszych i/lub monolitycznych aplikacji do natywnych mikrousług w chmurze w kontenerach.
- Przetwarzanie sterowane zdarzeniami: Obsługa zdarzeń z usługi Event Grid, Service Bus, Event Hubs i innych źródeł zdarzeń z łatwością modelu programowania Functions.
- Obciążenia sztucznej inteligencji i procesora GPU: Przetwarzanie bezserwerowych obciążeń wideo, obrazów, transkrypcji lub innych zadań intensywnie korzystających z przetwarzania wymaganych zasobów obliczeniowych procesora GPU. Aby uzyskać więcej informacji, zobacz Korzystanie z bezserwerowych GPU w Azure Container Apps.
- Microservices: Integrowanie Azure Functions z innymi usługami hostowanymi w Container Apps.
- Kontenery niestandardowe: Funkcje pakietowe z niestandardowymi środowiskami uruchomieniowymi lub kontenerami bocznymi.
- Aplikacje prywatne: Zabezpiecz Funkcje przeznaczone wyłącznie do użytku wewnętrznego używając sieci wirtualnej i wejścia wewnętrznego.
- .NET Aspire: Integracja .NET Aspire z Azure Functions umożliwia tworzenie, debugowanie i organizowanie projektu Azure Functions .NET w ramach hosta aplikacji .NET Aspire. Przeczytaj więcej na temat Azure Functions z .NET Aspire
- Ogólne funkcje: Uruchom wszystkie obsługiwane standardowe scenariusze Azure Functions (na przykład czasomierze, przetwarzanie plików, wyzwalacze bazy danych).
Wdrażanie i konfigurowanie
Aby wdrożyć Azure Functions na Azure Container Apps, należy spakować aplikację usługi Functions jako niestandardowy obraz kontenera i wdrożyć ją tak jak każda inna aplikacja kontenera z jedną kluczową różnicą. Należy ustawić właściwość kind=functionapp podczas korzystania z szablonów Azure CLI lub ARM/Bicep. Aby uzyskać szczegółowe instrukcje i przykłady, zapoznaj się z oficjalną dokumentacją wprowadzającą.
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
To polecenie zwraca adres URL aplikacji usługi Functions. Skopiuj ten adres URL i wklej go w przeglądarce internetowej.
W portalu Azure wybierz opcję Optymalizuj dla Azure Functions podczas tworzenia aplikacji kontenerowej, aby usprawnić konfigurację.
Obsługiwane są wszystkie standardowe metody wdrażania, w tym:
- Azure CLI
- Portal Azure
- Szablony ARM /Bicep
- Potoki CI/CD (na przykład GitHub Actions, Azure Pipelines)
Aby uzyskać szczegółowe instrukcje i przykłady, zapoznaj się z oficjalną dokumentacją wprowadzającą.
Ceny i rozliczenia
Funkcje Azure na Azure Container Apps korzystają z tego samego modelu cenowego co Azure Container Apps. Rozliczenia są oparte na typie planu wybranym dla danego środowiska, który może być typem Zużycia lub Dedykowanym.
- Plan zużycia: ta bezserwerowa opcja obliczeniowa rozlicza tylko za zasoby używane przez aplikacje podczas ich działania.
- Dedykowany plan: ta opcja zapewnia dostosowane zasoby obliczeniowe, rozliczanie wystąpień przydzielonych do każdego profilu obciążenia.
Wybór planu określa sposób wykonywania obliczeń rozliczeniowych. Różne aplikacje w środowisku mogą używać różnych planów.
Najważniejsze kwestie do zanotowania:
- Brak dodatkowych opłat za korzystanie z modelu programowania Azure Functions w usłudze Container Apps.
- Durable Functions i inne zaawansowane wzorce są obsługiwane i rozliczane w ramach tego samego modelu cen usługi Container Apps. Szczegółowe informacje dotyczące mechaniki rozliczeń i przykładów można znaleźć w dokumentacji Billing w Azure Container Apps.
Skalowanie oparte na zdarzeniach
Azure Functions w usłudze Container Apps obsługują wszystkie główne środowiska uruchomieniowe językowe dostępne w Azure Functions, w tym C#, JavaScript / TypeScript (Node.js), Python, Java, PowerShell i Kontenery niestandardowe (przynieś swój własny obraz).
Azure Functions działające na Azure Container Apps automatycznie konfigurują reguły skalowania na podstawie źródła zdarzeń, eliminując konieczność ręcznego definiowania reguł skalowania KEDA. Dlatego przycisk "Dodaj reguły skalowania" w portalu Azure jest wyłączony dla usługi Functions w usłudze Container Apps. Jednak nadal można zdefiniować minimalną i maksymalną liczbę replik, aby ustanowić granice skalowania i zachować kontrolę nad alokacją zasobów.
Platforma automatycznie tłumaczy parametry wyzwalania funkcji (z atrybutów konfiguracji lub wyzwalania host.json) na odpowiednie parametry skalera KEDA. Aby uzyskać szczegółowe informacje na temat mapowania konfiguracji wyzwalania Azure Functions na parametry skalowania KEDA, zobacz Azure Functions KEDA scaling mappings.
Wszystkie standardowe wyzwalacze i powiązania Azure Functions są obsługiwane w usłudze Container Apps z następującymi wyjątkami:
- Wyzwalacz automatycznego skalowania dla Blob Storage: działa tylko w przypadku używania usługi Event Grid jako źródła. Dowiedz się więcej o wywoływaniu funkcji Azure w kontenerach danych BLOB przy użyciu subskrypcji zdarzeń
- Durable Functions skalowanie automatyczne: obsługuje tylko dostawców magazynu MSSQL (Microsoft SQL Server) i DTS (Durable Task Scheduler). Zobacz więcej wskazówek dotyczących wdrażania funkcji Durable Functions za pomocą programu MSSQL
- Skalowanie automatyczne nie jest obsługiwane w następujących celach:
- Azure Cache for Redis
- Azure SQL
Tożsamości zarządzane są obsługiwane w przypadku wyzwalaczy i powiązań, które to umożliwiają. Są one również dostępne dla:
- Domyślne konto przechowywania (AzureWebJobsStorage)
- Azure Container Registry (ACR)
- Nawiązywanie połączenia ze źródłami wyzwalaczy
W przypadku nieobsługiwanych wyzwalaczy użyj stałych liczników replik (tj. ustaw wartość minReplicas > 0) w Azure Functions na Azure Container Apps. Aby uzyskać więcej informacji, zobacz Przewodnik dla deweloperów usługi Functions.
Skalowanie i wydajność
Azure Functions w usłudze Container Apps są skalowane automatycznie na podstawie zdarzeń przy użyciu usługi KEDA, bez konieczności ręcznego konfigurowania reguł skalowania. Nadal można ustawić minimalną/maksymalną liczbę replik, aby kontrolować zachowanie skalowania.
- Skalowanie oparte na zdarzeniach: automatyczne skalowanie na podstawie wyzwalaczy, takich jak Event Grid, Service Bus lub HTTP.
- Skalowanie do zera: bezczynne aplikacje są skalowane do zera, aby zaoszczędzić koszty.
- Kontrola zimnego startu: Dowiedz się, jak zmniejszyć czas zimnego startu na Azure Container Apps.
- Współbieżność: każde wystąpienie może przetwarzać wiele zdarzeń równolegle.
- Skalowanie na dużą skalę: skalowanie w poziomie do 1000 wystąpień na aplikację (wartość domyślna to 10).
- Obsługa procesora GPU: uruchamianie obciążeń wymagających obliczeń, takich jak wnioskowanie sztucznej inteligencji przy użyciu węzłów opartych na procesorze GPU.
Dzięki temu usługa Container Apps jest idealna zarówno w przypadku obciążeń nagłych, jak i obciążeń ze stałym stanem. Aby dowiedzieć się więcej, zobacz Ustawianie reguł skalowania w Azure Container Apps
Sieć i zabezpieczenia
Azure Functions w usłudze Container Apps korzystają z niezawodnych funkcji networking i zabezpieczenia w celu zapewnienia bezpiecznych, skalowalnych wdrożeń:
- Integracja z siecią wirtualną: bezpieczne uzyskiwanie dostępu do zasobów prywatnych za pośrednictwem wewnętrznych punktów końcowych i prywatnych baz danych.
- Zarządzana tożsamość: Uwierzytelnianie za pomocą usług Azure przy użyciu tożsamości przypisanych przez system/użytkownika — brak wymaganych wpisów tajnych ani parametrów połączenia.
- Obsługa Dapr: włącz pub/sub, zarządzanie stanem i bezpieczne wywoływanie usług za pomocą sidecarów Dapr. Aby uzyskać więcej informacji, zobacz Interfejsy API mikrousług obsługiwane przez język Dapr.
- Wejście i TLS: Udostępniaj bezpieczne punkty końcowe HTTP przy użyciu TLS/mTLS, domen niestandardowych lub zachowaj je wewnętrzne.
- Izolacja środowiska: funkcje współdzielą granice środowiska usługi Container Apps w celu zapewnienia bezpiecznej, ograniczonej komunikacji.
Dzięki tym funkcjom funkcje hostowane w usłudze Container Apps idealnie nadają się do obsługi aplikacji bezserwerowych klasy korporacyjnej.
Monitorowanie i rejestrowanie
Azure Functions w usłudze Container Apps bezproblemowo integrują się z narzędziami Azure do śledzenia wydajności i diagnozowania problemów:
- Application Insights: Udostępnia telemetrię dla żądań, zależności, wyjątków i niestandardowych śladów. Aby uzyskać więcej informacji, zobacz Monitor Azure Functions.
-
Log Analytics: Przechwytuje cykl życia kontenera i zdarzenia skalowania (na przykład wpisy FunctionsScalerInfo). Aby uzyskać więcej informacji, zobacz
Application Logging in Azure Container Apps (Rejestrowanie aplikacji w Azure Container Apps - Rejestrowanie niestandardowe: Obsługuje standardowe struktury, takie jak ILogger i rejestrowanie konsoli dla danych wyjściowych ze strukturą.
- Scentralizowane monitorowanie: Środowisko Container Apps oferuje ujednolicone pulpity nawigacyjne i alerty we wszystkich aplikacjach.
Zmienne środowiskowe
Azure Functions uruchomione w usłudze Container Apps mają dostęp do zmiennych środowiskowych udostępnianych przez system. Zmienna środowiskowa CONTAINER_NAME jest automatycznie ustawiana na nazwę repliki dla aplikacji funkcji. Ta zmienna służy do rejestrowania, korelacji i debugowania w scenariuszach z wieloma replikami.
Aby uzyskać pełną listę zmiennych środowiskowych dostarczanych przez system, zobacz Zmienne środowiskowe w aplikacjach Azure Container.
Rozważania
Podczas korzystania z Azure Functions w Azure Container Apps należy pamiętać o innych kwestiach:
- Wymagania dotyczące usługi Ingress dla automatycznego skalowania: aby włączyć automatyczne skalowanie na podstawie zdarzeń, należy włączyć usługę Ingress — publicznie lub w środowisku wewnętrznym usługi Container Apps.
- Obowiązkowe konto magazynu: każda aplikacja funkcji wdrożona za pomocą Container Apps musi być połączona z kontem magazynu. Jest to wymagane do zarządzania wyzwalaczami, dziennikami i stanem. Zapoznaj się ze wskazówkami dotyczącymi konta magazynu , aby uzyskać najlepsze rozwiązania.
- Magazyn z wieloma poprawkami: podczas wdrażania z wieloma aktywnymi poprawkami przypisz dedykowane konto magazynu do każdej poprawki. Użycie dedykowanego konta przechowywania pomaga zapobiegać konfliktom i zapewnia właściwą izolację. Alternatywnie, jeśli nie potrzebujesz równoczesnych poprawek, rozważ użycie domyślnego trybu pojedynczej poprawki w celu uproszczonego zarządzania.
- Wyzwalacze wielowersyjne: jeśli używasz trybu wielowersyjnego z wyzwalaczem opartym na ściąganiu, użyj innego źródła zdarzeń dla każdej wersji, aby uniknąć konfliktów związanych z konkurencyjnymi konsumentami. Funkcje korzystające z wyzwalaczy Azure Queue Storage, Azure Event Hubs, Azure Service Bus lub Durable Functions to przykłady wyzwalaczy opartych na ściąganiu.
- Opóźnienie zimnego startu: Gdy aplikacja kontenerowa jest skalowana do zera w okresach bezczynności, pierwsze żądanie po tym okresie doświadcza zimnego startu. Dowiedz się więcej na temat zmniejszania czasów uruchamiania na zimno.
- Integracja usługi Application Insights: aby uzyskać niezawodne monitorowanie i diagnostykę, połącz aplikację usługi Functions z usługą Application Insights. Aby uzyskać więcej informacji, zobacz Integracja usługi App Insights z usługą Functions.
- Proxy funkcji: nieobsługiwane. W przypadku scenariuszy korzystania z bramy API, zamiast tego integracja powinna odbywać się z Azure API Management.
- Miejsca wdrożenia: miejsca przejściowe i produkcyjne nie są dostępne. Używaj strategii niebiesko-zielonego wdrażania dla wdrożeń bez przestojów.
- Klucze dostępu do usługi Functions: generowanie kluczy dostępu usługi Functions za pomocą portalu nie jest obsługiwane. Rozważ użycie Azure Key Vault do przechowywania kluczy. Możesz również użyć następujących opcji, aby zabezpieczyć punkty końcowe HTTP w środowisku produkcyjnym:
- Limity przydziału i zasobów: środowiska usługi Container Apps mają domyślne limity dotyczące pamięci, procesora CPU i liczby wystąpień na region. Aby uzyskać więcej informacji, zobacz limity środowiska i domyślne limity przydziału. Jeśli obciążenie wymaga większej ilości zasobów, możesz zażądać zwiększenia limitu przydziału.
- Konfigurowanie reguły skalowania ręcznego: W portalu Azure przycisk "Dodaj reguły skalowania" jest wyłączony dla Azure Functions hostowanych w aplikacjach Container Apps, ponieważ reguły skalowania są konfigurowane automatycznie na podstawie źródła zdarzeń. Ręczne definicje reguł KEDA nie są wymagane w tej konfiguracji.
Prześlij opinię
Prześlij problem lub żądanie funkcji do repozytorium Azure Container Apps GitHub.
Następne kroki / dalsze zasoby
Aby kontynuować naukę i tworzenie z Azure Functions w Container Apps, zapoznaj się z następującymi zasobami:
- Getting started: Przewodnik krok po kroku dotyczący wdrażania i konfigurowania Azure Functions w Azure Container Apps.
- Azure Container Apps Dokumentacja: pełna dokumentacja funkcji usługi Container Apps, w tym skalowanie, sieciowanie, Dapr i profile obciążeń.
- Azure Container Apps cennik: Szczegóły dotyczące rozliczeń opartych na użyciu i kosztów planu dedykowanego.
- Azure Functions opcje hostingu: Porównanie planów hostingu, w tym usługi Container Apps, Flex Consumption, Premium i Dedicated.
- Azure Functions przewodnik dla deweloperów: szczegółowe omówienie wyzwalaczy, powiązań, zachowania środowiska uruchomieniowego i konfiguracji.