Praca z kontenerami i Azure Functions
W tym artykule przedstawiono obsługę zapewnianą przez Azure Functions pracę z aplikacjami funkcji działającymi w kontenerach systemu Linux. Wybierz środowisko hostingu dla konteneryzowanej aplikacji funkcji w górnej części artykułu.
Jeśli chcesz przejść bezpośrednio, w poniższym artykule pokazano, jak utworzyć pierwszą funkcję działającą w kontenerze systemu Linux i wdrożyć obraz z rejestru kontenerów w obsługiwanej usłudze hostingu platformy Azure:
Tworzenie pierwszego konteneryzowanego Azure Functions w usłudze Azure Container Apps
Aby dowiedzieć się więcej na temat wdrożeń w usłudze Azure Container Apps, zobacz Hostowanie usługi Azure Container Apps Azure Functions.
Tworzenie konteneryzowanych aplikacji funkcji
Usługa Functions obsługuje zestaw obrazów podstawowych specyficznych dla środowiska lanuage , których można użyć do generowania aplikacji funkcji konteneryzowanych. Podczas tworzenia projektu usługi Functions przy użyciu narzędzi Azure Functions Core Tools i dołączania --docker
opcji narzędzia Core Tools również generuje element . Plik Dockerfile używany do tworzenia kontenera na podstawie poprawnego obrazu podstawowego.
Aktualizowanie obrazu w rejestrze
Po wprowadzeniu zmian w projekcie kodu funkcji należy ponownie skompilować kontener lokalnie i ponownie opublikować zaktualizowany obraz do wybranego rejestru kontenerów. Następujące polecenie ponownie kompiluje obraz z folderu głównego przy użyciu zaktualizowanego numeru wersji i wypycha go do rejestru:
az acr build --registry <REGISTRY_NAME> --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.1 .
Zastąp <REGISTRY_NAME>
element wystąpieniem usługi Container Registry i <LOGIN_SERVER>
nazwą serwera logowania.
Na tym etapie należy zaktualizować wdrożenie, aby używało nowego obrazu. Poniższy przykład aktualizuje aplikację funkcji, aby korzystała z nowego obrazu:
az functionapp config container set --image <IMAGE_NAME> --registry-password <SECURE_PASSWORD>--registry-username <USER_NAME> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
W tym przykładzie <IMAGE_NAME>
jest pełna nazwa nowego obrazu z wersją. Rejestry prywatne wymagają podania nazwy użytkownika i hasła. Bezpieczne przechowywanie tych poświadczeń.
Należy również rozważyć włączenie ciągłego wdrażania.
Praca z obrazami w Azure Functions
Po wdrożeniu kontenera aplikacji funkcji z rejestru usługa Functions przechowuje informacje o obrazie źródłowym. Użyj następujących poleceń, aby pobrać dane dotyczące obrazu lub zmienić używany obraz wdrożenia:
az functionapp config container show
: zwraca informacje o obrazie używanym do wdrożenia.az functionapp config container set
: zmień ustawienia rejestru lub zaktualizuj obraz używany do wdrożenia, jak pokazano w poprzednim przykładzie.
Ustawienia aplikacji
Azure Functions umożliwia pracę z ustawieniami aplikacji dla konteneryzowanych aplikacji funkcji w standardowy sposób. Aby uzyskać więcej informacji, zobacz Używanie ustawień aplikacji.
Włączanie ciągłego wdrażania na platformie Azure
Możesz włączyć Azure Functions, aby automatycznie aktualizować wdrożenie obrazu przy każdej aktualizacji obrazu w rejestrze.
Użyj następującego polecenia, aby włączyć ciągłe wdrażanie i uzyskać adres URL elementu webhook:
az functionapp deployment container config --enable-cd --query CI_CD_URL --output tsv --name <APP_NAME> --resource-group AzureFunctionsContainers-rg
Polecenie
az functionapp deployment container config
umożliwia ciągłe wdrażanie i zwraca adres URL elementu webhook wdrożenia. Ten adres URL można pobrać w dowolnym późniejszym czasie za pomocąaz functionapp deployment container show-cd-url
polecenia .Tak jak poprzednio zastąp
<APP_NAME>
ciąg nazwą aplikacji funkcji.Skopiuj adres URL elementu webhook wdrożenia do schowka.
Otwórz Docker Hub, zaloguj się i wybierz pozycję Repozytoria na pasku nawigacyjnym. Znajdź i wybierz obraz, wybierz kartę Elementy webhook , określ nazwę elementu webhook, wklej adres URL w adresie URL elementu webhook, a następnie wybierz pozycję Utwórz.
Po ustawieniu elementu webhook Azure Functions ponownie wdrożyć obraz przy każdej aktualizacji w Docker Hub.
Włączanie połączeń SSH
Protokół SSH umożliwia bezpieczną komunikację między kontenerem i klientem. Po włączeniu protokołu SSH możesz nawiązać połączenie z kontenerem przy użyciu narzędzi App Service Advanced Tools (Kudu). Aby łatwo nawiązać połączenie z kontenerem przy użyciu protokołu SSH, Azure Functions udostępnia obraz podstawowy, który ma już włączony protokół SSH. Wystarczy edytować plik Dockerfile, a następnie ponownie skompilować i wdrożyć obraz. Następnie możesz nawiązać połączenie z kontenerem za pomocą narzędzi Zaawansowanych (Kudu).
W pliku Dockerfile dołącz ciąg
-appservice
do obrazu podstawowego wFROM
instrukcji, jak w poniższym przykładzie:FROM mcr.microsoft.com/azure-functions/node:4-node18-appservice
W tym przykładzie użyto wersji podstawowej z obsługą protokołu SSH Node.js w wersji 18. Odwiedź Azure Functions repozytoria obrazu podstawowego, aby sprawdzić, czy używasz najnowszej wersji obrazu podstawowego z obsługą protokołu SSH.
Skompiluj obraz przy użyciu
docker build
polecenia , zastąp element<DOCKER_ID>
identyfikatorem konta Docker Hub, jak w poniższym przykładzie.docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
Wypchnij zaktualizowany obraz do Docker Hub, co powinno zająć znacznie mniej czasu niż pierwsze wypchnięcie. Teraz należy przekazać tylko zaktualizowane segmenty obrazu.
docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0
Azure Functions automatycznie ponownie wdraża obraz w aplikacji funkcji; proces odbywa się w mniej niż minutę.
W przeglądarce otwórz
https://<app_name>.scm.azurewebsites.net/
plik i zastąp<app_name>
unikatową nazwą. Ten adres URL to punkt końcowy narzędzi zaawansowanych (Kudu) dla kontenera aplikacji funkcji.Zaloguj się do konta platformy Azure, a następnie wybierz protokół SSH , aby nawiązać połączenie z kontenerem. Nawiązywanie połączenia może potrwać kilka chwil, jeśli platforma Azure nadal aktualizuje obraz kontenera.
Po nawiązaniu połączenia z kontenerem uruchom
top
polecenie , aby wyświetlić aktualnie uruchomione procesy.
Następne kroki
Następujące artykuły zawierają więcej informacji na temat wdrażania kontenerów i zarządzania nimi: