Udostępnij za pośrednictwem


Łączenie kontenerów i rozwiązań bezserwerowych

Napiwek

Ta zawartość jest fragmentem książki eBook, Architekting Cloud Native .NET Applications for Azure, dostępnej na platformie .NET Docs lub jako bezpłatny plik PDF do pobrania, który można odczytać w trybie offline.

Miniatury natywnych aplikacji platformy .NET w chmurze dla książki eBook platformy Azure.

Aplikacje natywne dla chmury zwykle implementują usługi wykorzystujące kontenery i aranżację. Często istnieją możliwości uwidocznienia niektórych usług aplikacji jako usługi Azure Functions. Jednak w przypadku aplikacji natywnej dla chmury wdrożonej na platformie Kubernetes warto korzystać z usługi Azure Functions w tym samym zestawie narzędzi. Na szczęście możesz opakować usługę Azure Functions wewnątrz kontenerów platformy Docker i wdrożyć je przy użyciu tych samych procesów i narzędzi, co pozostała część aplikacji opartej na platformie Kubernetes.

Kiedy warto używać kontenerów bezserwerowych?

Funkcja platformy Azure nie ma wiedzy na temat platformy, na której została wdrożona. W przypadku niektórych scenariuszy może istnieć określone wymagania i trzeba dostosować środowisko, w którym zostanie uruchomiony kod funkcji. Potrzebny będzie obraz niestandardowy, który obsługuje zależności lub konfigurację, która nie jest obsługiwana przez obraz domyślny. W takich przypadkach warto wdrożyć funkcję w niestandardowym kontenerze platformy Docker.

Kiedy należy unikać używania kontenerów z usługą Azure Functions?

Jeśli chcesz użyć rozliczeń użycia, nie możesz uruchomić funkcji w kontenerze. Co więcej, jeśli wdrożysz funkcję w klastrze Kubernetes, nie będziesz już korzystać z wbudowanego skalowania oferowanego przez usługę Azure Functions. Musisz użyć funkcji skalowania platformy Kubernetes opisanych wcześniej w tym rozdziale.

Jak łączyć kontenery bezserwerowe i docker

Aby opakowować funkcję platformy Azure w kontenerze platformy Docker, zainstaluj narzędzia Azure Functions Core Tools , a następnie uruchom następujące polecenie:

func init ProjectName --worker-runtime dotnet --docker

Po utworzeniu projektu będzie on zawierać plik Dockerfile i środowisko uruchomieniowe procesu roboczego skonfigurowane na .dotnet Teraz możesz utworzyć i przetestować funkcję lokalnie. Skompiluj docker build i uruchom go przy użyciu poleceń i docker run . Aby uzyskać szczegółowe instrukcje umożliwiające rozpoczęcie tworzenia usługi Azure Functions z obsługą platformy Docker, zobacz samouczek Tworzenie funkcji w systemie Linux przy użyciu obrazu niestandardowego.

Jak połączyć rozwiązania bezserwerowe i Kubernetes z usługą KEDA

W tym rozdziale pokazano, że platforma usługi Azure Functions automatycznie skaluje się w poziomie, aby zaspokoić zapotrzebowanie. Jednak podczas wdrażania funkcji konteneryzowanych w usłudze AKS utracisz wbudowaną funkcję skalowania. Na ratunek przychodzi platforma Kubernetes oparta na zdarzeniach (KEDA). Umożliwia precyzyjne skalowanie automatyczne dla event-driven Kubernetes workloadsprogramu , w tym funkcje konteneryzowane.

Usługa KEDA zapewnia funkcję skalowania opartego na zdarzeniach w środowisku uruchomieniowym usługi Functions w kontenerze platformy Docker. KEDA może skalować z zera wystąpień (jeśli nie występują żadne zdarzenia) na n instanceswartość , na podstawie obciążenia. Umożliwia skalowanie automatyczne przez uwidacznianie metryk niestandardowych w narzędziu Kubernetes autoscaler (Horizontal Pod Autoscaler). Używanie kontenerów usługi Functions z usługą KEDA umożliwia replikowanie funkcji bezserwerowych w dowolnym klastrze Kubernetes.

Warto zauważyć, że projekt KEDA jest teraz zarządzany przez Cloud Native Computing Foundation (CNCF).