Udostępnij za pomocą


Obsługa kontenerów systemu Linux w usłudze Azure Functions

Podczas planowania i opracowywania poszczególnych funkcji do uruchamiania w usłudze Azure Functions zwykle koncentrujesz się na samym kodzie. Usługa Azure Functions ułatwia wdrażanie samego projektu kodu w aplikacji funkcji w Azure. Podczas wdrażania projektu w aplikacji funkcji systemu Linux kod jest uruchamiany w kontenerze utworzonym automatycznie i bezproblemowo integruje się z narzędziami do zarządzania funkcjami.

Funkcje obsługują również wdrożenia aplikacji funkcji konteneryzowanych. W przypadku wdrożenia konteneryzowanego utworzysz własne wystąpienie aplikacji funkcjonalnej w lokalnym kontenerze Docker z obsługiwanego obrazu bazowego. Następnie możesz wdrożyć tę konteneryzowaną aplikację funkcji w środowisku hostingu na platformie Azure. Tworzenie własnego kontenera aplikacji funkcji umożliwia dostosowanie lub kontrolowanie natychmiastowego środowiska uruchomieniowego kodu funkcji.

Important

Podczas tworzenia własnych kontenerów musisz dbać o aktualizację podstawowego obrazu kontenera do najnowszej obsługiwanej wersji. Obsługiwane obrazy podstawowe dla usługi Azure Functions są specyficzne dla języka. Zobacz repozytoria obrazów podstawowych usługi Azure Functions.

Zespół Functions zobowiązuje się do publikowania comiesięcznych aktualizacji tych obrazów podstawowych. Regularne aktualizacje obejmują najnowsze aktualizacje wersji pomocniczej i poprawki zabezpieczeń dla środowiska uruchomieniowego i języków usługi Functions. Należy regularnie aktualizować kontener z najnowszego obrazu podstawowego i ponownie wdrożyć zaktualizowaną wersję kontenera. Aby uzyskać więcej informacji, zobacz Obsługa kontenerów niestandardowych.

Opcje hostingu kontenerów

Istnieje kilka opcji hostowania konteneryzowanych aplikacji funkcji na platformie Azure:

Opcja hostingu Benefits
Azure Container Apps Usługa Azure Functions zapewnia zintegrowaną obsługę tworzenia, wdrażania i zarządzania konteneryzowanymi aplikacjami funkcji w usłudze Azure Container Apps. Ta integracja umożliwia zarządzanie aplikacjami przy użyciu tych samych narzędzi i stron usługi Functions w witrynie Azure Portal. Usługa Azure Container Apps umożliwia hostowanie kontenera aplikacji funkcji w tym samym środowisku co inne mikrousługi, interfejsy API, witryny internetowe, przepływy pracy lub inne programy hostowane w kontenerze. Hosting usługi Container Apps umożliwia uruchamianie funkcji w zarządzanym środowisku opartym na platformie Kubernetes z wbudowaną obsługą monitorowania typu open source, mTLS, Dapr i KEDA. Obsługuje skalowanie do zera i zapewnia bezserwerowy model hostingu z płatnością zgodnie z rzeczywistym użyciem. Możesz również zażądać dedykowanego sprzętu, nawet procesorów GPU, przy użyciu profilów obciążeń. Zalecana opcja hostingu dla konteneryzowanych aplikacji funkcji w Platformie Azure.
Klastry Kubernetes z obsługą Azure Arc (wersja zapoznawcza) Aplikacje funkcji można hostować w klastrach Kubernetes z obsługą usługi Azure Arc jako wdrożenie wyłącznie kodu lub w niestandardowym kontenerze systemu Linux. Usługa Azure Arc umożliwia dołączanie klastrów Kubernetes w celu zarządzania nimi i konfigurowania ich na platformie Azure. Hostowanie kontenerów usługi Azure Functions w klastrach Kubernetes z obsługą usługi Azure Arc jest obecnie dostępne w wersji zapoznawczej. Aby uzyskać więcej informacji, zobacz Praca z kontenerami i usługą Azure Functions.
Azure Functions Aplikacje funkcji konteneryzowanych można hostować w usłudze Azure Functions, uruchamiając kontener w ramach planu Elastic Premium lub App Service (dedykowane). Korzystanie z hostingu usługi Container Apps w celu uzyskania rozbudowanej obsługi kontenerów z usługi Container Apps. Hosting planu Premium zapewnia korzyści wynikające ze skalowania dynamicznego. Możesz użyć hostingu planu dedykowanego, aby skorzystać z istniejących nieużywanych zasobów planu usługi App Service.
Kubernetes Ponieważ środowisko uruchomieniowe usługi Azure Functions zapewnia elastyczność hostingu, gdzie i w jaki sposób chcesz, możesz hostować kontenery aplikacji funkcji i zarządzać nimi bezpośrednio w klastrach Kubernetes. KEDA (oparte na platformie Kubernetes autoskalowanie oparte na zdarzeniach) bezproblemowo współpracuje ze środowiskiem uruchomieniowym i narzędziami usługi Azure Functions, aby zapewnić skalowanie sterowane zdarzeniami na platformie Kubernetes. Ważny: Platforma Kubernetes hostująca aplikacje funkcji konteneryzowanych za pomocą usługi KEDA lub wdrożenia bezpośredniego to nakład pracy typu open source, który można bezpłatnie wykorzystać. Najlepsze wsparcie dla tego scenariusza hostingu jest zapewniane tylko przez współautorów i przez społeczność. Jesteś odpowiedzialny za utrzymanie swoich kontenerów aplikacji funkcji w klastrze, nawet gdy wdrażasz je w usłudze Azure Kubernetes Service (AKS).

Porównanie wsparcia funkcji

Stopień, w jakim różne funkcje i zachowania usługi Azure Functions są obsługiwane podczas uruchamiania aplikacji funkcji w kontenerze, zależy od wybranej opcji hostingu kontenerów.

Feature/behavior Container Apps (zintegrowane) Aplikacje kontenerowe (bezpośrednie) Plan Premium Dedykowany plan Kubernetes
Pomoc techniczna dotycząca produktów Yes No Yes Yes No
Integracja portalu usługi Functions No No Yes Yes No
Skalowanie sterowane zdarzeniami Yes5 Tak (reguły skalowania) Yes No No
Maksymalna skala (wystąpienia) 10001  10001  1002  10-303  Różni się w zależności od klastra
Skalowanie do zera wystąpień Yes Yes No No KEDA
Limit czasu wykonywania Unbounded6 Unbounded6 Unbounded7 Unbounded8 None
Wdrażanie podstawowych narzędzi No No No No func kubernetes 
Revisions Yes  Yes No No No
Miejsca wdrożenia  No No Yes Yes No
Dzienniki przesyłania strumieniowego  Yes  Yes  Yes Yes No
Dostęp do konsoli  Yes  Yes Tak (przy użyciu Kudu) Tak (przy użyciu Kudu) Tak (w zasobnikach przy użyciu kubectl)
Ograniczenie ryzyka zimnego startu Minimalna liczba replik Reguły skalowania  Zawsze gotowe/wstępnie rozgrzane instancje  n/a n/a
Uwierzytelnianie usługi App Service  Yes  Yes Yes Yes No
Niestandardowe nazwy domen  Yes  Yes Yes Yes No
Certyfikaty kluczy prywatnych  Yes  Yes Yes Yes No
Sieci wirtualne Yes  Yes Yes Yes Yes
Strefy dostępności Yes  Yes Yes Yes Yes
Diagnostics Yes  Yes Yes  Yes  No
Dedykowany sprzęt Tak (profile obciążeń roboczych) Tak (profile obciążeń roboczych) No Yes Yes
Dedykowane procesory GPU Tak (profile obciążeń roboczych) Tak (profile obciążeń roboczych) No No Yes
Konfigurowalna liczba pamięci/procesora CPU Yes Yes No No Yes
Opcja "Bezpłatna dotacja" Yes Yes No No No
Szczegóły cennika Rozliczenia usługi Container Apps Rozliczenia usługi Container Apps Rozliczenia planu Premium Rozliczenia planu dedykowanego Cennik usługi AKS
Wymagania dotyczące nazwy usługi 2–32 znaki: ograniczone do małych liter, cyfr i łączników. Musi zaczynać się literą i kończyć znakiem alfanumerycznym. 2–32 znaki: ograniczone do małych liter, cyfr i łączników. Musi zaczynać się literą i kończyć znakiem alfanumerycznym. Mniej niż 64 znaki: ograniczone do znaków alfanumerycznych i łączników. Nie można zaczynać ani kończyć łącznikiem. Mniej niż 64 znaki: ograniczone do znaków alfanumerycznych i łączników. Nie można zaczynać ani kończyć łącznikiem. Mniej niż 253 znaki: ograniczone do znaków alfanumerycznych i łączników. Musi zaczynać się i kończyć znakiem alfanumerycznym.
  1. W usłudze Container Apps wartość domyślna to 10 wystąpień, ale można ustawić maksymalną liczbę replik, która ma maksymalnie 1000 wystąpień. Ustawienie to jest honorowane, o ile istnieje wystarczający limit rdzeni. Podczas tworzenia aplikacji funkcji w portalu Azure jesteś ograniczony do 300 instancji.
  2. W niektórych regionach aplikacje systemu Linux w planie Premium mogą być skalowane do 100 wystąpień. Aby uzyskać więcej informacji, zobacz artykuł Dotyczący planu Premium.
  3. Aby uzyskać szczegółowe limity dla różnych opcji planu usługi App Service, zobacz Limity planu usługi App Service.
  4. Wymaga KEDA; obsługiwane przez większość wyzwalaczy. Aby dowiedzieć się, które wyzwalacze obsługują skalowanie sterowane zdarzeniami, zobacz Zagadnienia dotyczące hostingu usługi Container Apps.
  5. Gdy minimalna liczba replik jest ustawiona na zero, domyślny limit czasu zależy od określonych wyzwalaczy używanych w aplikacji.
  6. Nie jest wymuszany maksymalny czas trwania limitu czasu wykonywania. Jednak okres karencji dla wykonywania funkcji wynosi 60 minut w czasie skalowania, a okres 10 minut karencji obowiązuje podczas aktualizacji platformy.
  7. Wymaga ustawienia planu usługi App Service na zawsze włączone. Okres karencji wynoszący 10 minut jest przewidziany podczas aktualizacji platformy.

Obsługa kontenerów niestandardowych

Podczas tworzenia własnych kontenerów musisz zachować obraz bazowy kontenera zaktualizowany do najnowszej obsługiwanej wersji. Obsługiwane obrazy podstawowe dla usługi Azure Functions są specyficzne dla języka i znajdują się w repozytoriach obrazów podstawowych usługi Azure Functions.

Zespół Functions zobowiązuje się do publikowania comiesięcznych aktualizacji tych obrazów podstawowych. Regularne aktualizacje obejmują najnowsze aktualizacje wersji pomocniczej i poprawki zabezpieczeń dla środowiska uruchomieniowego i języków usługi Functions. Należy regularnie aktualizować kontener z najnowszego obrazu podstawowego i ponownie wdrożyć zaktualizowaną wersję kontenera.

Wybierz obraz podstawowy na podstawie stosu języka używanego w aplikacji funkcji. Poniższa tabela zawiera przykłady dla każdego stacka. Ogólnie rzecz biorąc, tag powinien zaczynać się od 4- , aby wskazać środowisko uruchomieniowe usługi Functions w wersji 4. Po wydaniu nowych wersji pomocniczych ten tag zostanie zaktualizowany tak, aby wskazywał nową wersję. W miarę okresowego ponownego kompilowania obrazu niestandardowego należy ściągnąć nowe wersje za pomocą tego samego tagu, co pozwala aplikacji na korzystanie z tych samych aktualizacji. Nie należy używać tagów określających mniejsze wersje środowiska uruchomieniowego, ponieważ nie będą one otrzymywać aktualizacji, a aplikacja pozostanie potencjalnie w nieaktualizowanej wersji niezależnie od tego, jak często kompilujesz obraz niestandardowy.

Stos języka Przykładowe zalecane podstawowe tagi obrazów
.NET (izolowany model procesu roboczego) mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0 lub
mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated8.0-appservice

(Te przykłady dotyczą platformy .NET 8. Wybierz odpowiedni obraz dla potrzebnej wersji platformy .NET).
.NET (starszy model wewnętrznego procesu) mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0 lub
mcr.microsoft.com/azure-functions/dotnet:4-dotnet8.0-appservice

(Wsparcie zostanie zakończone dla modelu procesu 10 listopada 2026 r. Należy przeprowadzić migrację do izolowanego modelu procesu roboczego tak szybko, jak to możliwe).
Java mcr.microsoft.com/azure-functions/java:4-java21 lub
mcr.microsoft.com/azure-functions/java:4-java21-appservice

(Te przykłady dotyczą środowiska Java 21. Wybierz odpowiedni obraz dla potrzebnej wersji języka Java).
Node.js (JavaScript lub TypeScript) mcr.microsoft.com/azure-functions/node:4-node22 lub
mcr.microsoft.com/azure-functions/node:4-node22-appservice

(Te przykłady dotyczą Node.js 22. Wybierz odpowiedni obraz dla potrzebnej wersji Node.js).
PowerShell mcr.microsoft.com/azure-functions/powershell:4-powershell7.4 lub
mcr.microsoft.com/azure-functions/powershell:4-powershell7.4-appservice

(Te przykłady dotyczą programu PowerShell 7.4. Wybierz odpowiedni obraz dla potrzebnej wersji programu PowerShell).
Python mcr.microsoft.com/azure-functions/python:4-python3.12 lub
mcr.microsoft.com/azure-functions/python:4-python3.12-appservice

(Te przykłady dotyczą języka Python w wersji 3.12. Wybierz odpowiedni obraz dla potrzebnej wersji języka Python).
Niestandardowe mechanizmy obsługi / inne mcr.microsoft.com/azure-functions/base:4 lub
mcr.microsoft.com/azure-functions/base:4-appservice

Podstawowe obrazy kończące się -appservice umożliwiają SSH oraz zdalne debugowanie za pomocą platformy. Jeśli nie potrzebujesz tych możliwości, możesz użyć obrazów podstawowych bez sufiksu -appservice .

Important

Nie wystarczy mieć tylko jednego z powyższych tagów w pliku Dockerfile. Musisz regularnie pobierać najnowszy obraz z tego tagu, aby można było ponownie zbudować obraz niepowtarzalny, który będzie zawierał najnowsze aktualizacje. Jeśli nie ściągniesz najnowszego obrazu i ponownie skompilujesz go, aplikacja będzie nadal działać na starym obrazie podstawowym.

Podczas tworzenia lub wdrażania własnej konteneryzowanej aplikacji przy użyciu obrazu niestandardowego odpowiadasz za upewnienie się, że niestandardowy obraz pozostanie up-to-date z naszymi opublikowanymi obrazami podstawowymi. Oprócz nowych funkcji i ulepszeń te aktualizacje obrazu podstawowego mogą również obejmować aktualizacje zabezpieczeń, które mają krytyczne znaczenie dla aplikacji. Aby upewnić się, że aplikacja jest chroniona, upewnij się, że jesteś na bieżąco. Należy regularnie ściągać najnowszą wersję obrazu podstawowego, ponownie skompilować niestandardowy obraz kontenera i ponownie wdrożyć aplikację, aby jej używać.

W niektórych przypadkach musimy wprowadzić zmiany na poziomie platformy, które mogą oznaczać, że aplikacja w kontenerze niestandardowym przy użyciu starego obrazu podstawowego może przestać działać prawidłowo. W przypadku takich istotnych zmian wprowadzamy zaktualizowane obrazy z wyprzedzeniem, dzięki czemu aplikacje, które przyjmują regularne aktualizacje, nie mają negatywnego wpływu. Aby uniknąć potencjalnych problemów z aplikacjami uruchamianymi w kontenerach niestandardowych, upewnij się, że nie jesteś zbyt daleko w tyle za najnowszą wydaną wersją drugorzędną. Jeśli podczas zgłoszenia do pomocy technicznej ustalimy, że aplikacja ma problemy, ponieważ jest w starszej lub nieobsługiwanej wersji, prosimy o zaktualizowanie kontenera do najnowszej wersji obrazu podstawowego przed kontynuowaniem obsługi.

Wprowadzenie

Skorzystaj z tych linków, aby rozpocząć pracę z usługą Azure Functions w kontenerach systemu Linux:

Chcę... Zobacz artykuł:
Tworzenie moich pierwszych funkcji konteneryzowanych Utwórz aplikację funkcji w lokalnym kontenerze systemu Linux
Tworzenie i wdrażanie funkcji w usłudze Azure Container Apps Tworzenie pierwszych konteneryzowanych funkcji w usłudze Azure Container Apps
Tworzenie i wdrażanie funkcji konteneryzowanych w usłudze Azure Functions Tworzenie pierwszej konteneryzowanej usługi Azure Functions