Udostępnij za pośrednictwem


Praca z kontenerami i usługą Azure Functions

W tym artykule przedstawiono obsługę, którą usługa Azure Functions zapewnia do pracy z konteneryzowanymi aplikacjami funkcji działającymi w środowisku usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Hostowanie usługi Azure Container Apps w usłudze Azure Functions.

W tym artykule przedstawiono obsługę, którą usługa Azure Functions zapewnia do pracy z aplikacjami funkcji działającymi w kontenerach systemu Linux.

Wybierz środowisko hostingu dla aplikacji funkcji konteneryzowanej 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 konteneryzowanych aplikacji funkcji

Funkcje ułatwiają wdrażanie i uruchamianie aplikacji funkcji jako kontenerów systemu Linux, które tworzysz i konserwujesz. Usługa Functions obsługuje zestaw obrazów podstawowych specyficznych dla języka, których można używać podczas tworzenia konteneryzowanych aplikacji funkcji.

Ważne

Podczas tworzenia własnych kontenerów należy zachować obraz podstawowy kontenera zaktualizowany do najnowszego obsługiwanego obrazu podstawowego. 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ół usługi Functions zobowiązuje się do publikowania comiesięcznych aktualizacji dla 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.

Pełny przykład tworzenia lokalnej konteneryzowanej aplikacji funkcji z poziomu wiersza polecenia i publikowania obrazu w rejestrze kontenerów można znaleźć w temacie Create a function app in a local container container (Tworzenie aplikacji funkcji w kontenerze lokalnym).

Generowanie pliku Dockerfile

Narzędzia usługi Functions udostępnia opcję platformy Docker, która generuje plik Dockerfile z projektem kodu funkcji. Możesz użyć tego pliku z platformą Docker, aby utworzyć funkcje w kontenerze pochodzącym z poprawnego obrazu podstawowego (języka i wersji).

Sposób tworzenia pliku Dockerfile zależy od sposobu tworzenia projektu.

  • Podczas tworzenia projektu usługi Functions przy użyciu narzędzi Azure Functions Core Tools dołącz --docker opcję podczas uruchamiania func init polecenia, jak w poniższym przykładzie:

    func init --docker
    
  • Możesz również dodać plik Dockerfile do istniejącego projektu, używając --docker-only opcji podczas uruchamiania func init polecenia w istniejącym folderze projektu, jak w poniższym przykładzie:

    func init --docker-only
    

Pełny przykład można znaleźć w temacie Create a function app in a local container (Tworzenie aplikacji funkcji w kontenerze lokalnym).

Tworzenie aplikacji funkcji w kontenerze

Korzystając z pliku Dockerfile wygenerowanego przez funkcje w projekcie kodu, możesz użyć platformy Docker do utworzenia konteneryzowanej aplikacji funkcji na komputerze lokalnym. Następujące docker build polecenie tworzy obraz funkcji konteneryzowanych z projektu w katalogu lokalnym:

docker build --tag <DOCKER_ID>/<IMAGE_NAME>:v1.0.0 .

Aby zapoznać się z przykładem tworzenia kontenera, zobacz Kompilowanie obrazu kontenera i weryfikowanie go lokalnie.

Aktualizowanie obrazu w rejestrze

Po wprowadzeniu zmian w projekcie kodu funkcji lub konieczności zaktualizowania do najnowszego obrazu podstawowego 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 ze zaktualizowanym numerem 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.

W tym momencie należy zaktualizować istniejące wdrożenie, aby użyć nowego obrazu. Możesz zaktualizować aplikację funkcji, aby użyć nowego obrazu przy użyciu interfejsu wiersza polecenia platformy Azure lub w witrynie Azure Portal:

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łną nazwą 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.

Tworzenie witryny Azure Portal przy użyciu kontenerów

Podczas tworzenia aplikacji funkcji w witrynie Azure Portal możesz wdrożyć aplikację funkcji na podstawie obrazu w rejestrze kontenerów. Aby dowiedzieć się, jak utworzyć konteneryzowaną aplikację funkcji w rejestrze kontenerów, zobacz Tworzenie aplikacji funkcji w kontenerze.

Poniższe kroki umożliwiają utworzenie i wdrożenie istniejącej konteneryzowanej aplikacji funkcji z rejestru kontenerów.

  1. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Utwórz zasób.

  2. Na stronie Nowy wybierz pozycję Aplikacja funkcji obliczeniowej>.

  3. W obszarze Wybierz opcję hostingu wybierz pozycję Plan>Premium Wybierz.

    Spowoduje to utworzenie aplikacji funkcji hostowanej przez usługę Azure Functions w planie Premium, która obsługuje dynamiczne skalowanie. Możesz również uruchomić plan usługi App Service, ale w tym rodzaju dedykowanym planie musisz zarządzać skalowaniem aplikacji funkcji.

  4. Na stronie Podstawowe użyj ustawień aplikacji funkcji, jak określono w poniższej tabeli:

    Ustawienie Sugerowana wartość opis
    Subskrypcja Twoja subskrypcja Subskrypcja, w której tworzysz aplikację funkcji.
    Grupa zasobów myResourceGroup Nazwa nowej grupy zasobów, w której tworzysz aplikację funkcji. Należy utworzyć grupę zasobów, ponieważ istnieją znane ograniczenia podczas tworzenia nowych aplikacji funkcji w istniejącej grupie zasobów.
    Nazwa aplikacji funkcji Unikatowa nazwa* Nazwa identyfikująca nową aplikację funkcji. Prawidłowe znaki to a-z (bez uwzględniania wielkości liter), 0-9i -.
    Czy chcesz wdrożyć kod lub obraz kontenera? Obraz kontenera Wdrażanie konteneryzowanej aplikacji funkcji z rejestru. Aby utworzyć aplikację funkcji w rejestrze, zobacz Tworzenie aplikacji funkcji w kontenerze lokalnym.
    Region Preferowany region Wybierz region, który znajduje się blisko Ciebie lub w pobliżu innych usług, do których mogą uzyskiwać dostęp funkcje.
    Plan systemu Linux Nowy plan (domyślny) Tworzy nowy plan Premium do hostowania aplikacji. Możesz również wybrać istniejący plan Premium.
    Plan cenowy Elastic Premium EP1 EP1 jest najbardziej przystępnym cenowo planem. Jeśli chcesz, możesz wybrać większy plan.
    Nadmiarowość strefy Disabled Ta funkcja nie jest potrzebna w aplikacji nieprodukcyjnej.

    *Nazwa aplikacji musi być globalnie unikatowa we wszystkich aplikacjach hostowanych w usłudze Azure Functions.

  5. Zaakceptuj domyślne opcje tworzenia nowego konta magazynu na karcie Magazyn i nowe wystąpienie usługi Application Insight na karcie Monitorowanie . Możesz również użyć istniejącego konta magazynu lub wystąpienia usługi Application Insights.

  6. Wybierz pozycję Przejrzyj i utwórz , aby przejrzeć wybrane opcje konfiguracji aplikacji.

  7. Na stronie Przeglądanie i tworzenie przejrzyj ustawienia, a następnie wybierz pozycję Utwórz, aby aprowizować aplikację funkcji przy użyciu domyślnego obrazu podstawowego.

  8. Po utworzeniu zasobu aplikacji funkcji wybierz pozycję Przejdź do zasobu, a na stronie aplikacji funkcji wybierz pozycję Centrum wdrażania.

  9. W centrum wdrażania możesz połączyć rejestr kontenerów jako źródło obrazu. Można również włączyć funkcję GitHub Actions lub Azure Pipelines w celu bardziej niezawodnego ciągłego wdrażania aktualizacji kontenera w rejestrze.

Tworzenie witryny Azure Portal przy użyciu kontenerów

Podczas tworzenia aplikacji funkcji hostowanej przez usługę Container Apps w witrynie Azure Portal możesz wdrożyć aplikację funkcji na podstawie obrazu w rejestrze kontenerów. Aby dowiedzieć się, jak utworzyć konteneryzowaną aplikację funkcji w rejestrze kontenerów, zobacz Tworzenie aplikacji funkcji w kontenerze.

Poniższe kroki umożliwiają utworzenie i wdrożenie istniejącej konteneryzowanej aplikacji funkcji z rejestru kontenerów.

  1. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Utwórz zasób.

  2. Na stronie Nowy wybierz pozycję Aplikacja funkcji obliczeniowej>.

  3. W obszarze Wybierz opcję hostingu wybierz pozycję Środowisko>aplikacji kontenera Wybierz.

  4. Na stronie Podstawowe użyj ustawień aplikacji funkcji, jak określono w poniższej tabeli:

    Ustawienie Sugerowana wartość opis
    Subskrypcja Twoja subskrypcja Subskrypcja, w której tworzysz aplikację funkcji.
    Grupa zasobów myResourceGroup Nazwa nowej grupy zasobów, w której tworzysz aplikację funkcji. Należy utworzyć grupę zasobów, ponieważ istnieją znane ograniczenia podczas tworzenia nowych aplikacji funkcji w istniejącej grupie zasobów.
    Nazwa aplikacji funkcji Unikatowa nazwa* Nazwa identyfikująca nową aplikację funkcji. Prawidłowe znaki to a-z (bez uwzględniania wielkości liter), 0-9i -.
    Region Preferowany region Wybierz region, który znajduje się blisko Ciebie lub w pobliżu innych usług, do których mogą uzyskiwać dostęp funkcje.

    *Nazwa aplikacji musi być unikatowa w środowisku usługi Azure Container Apps.

  5. Nadal na stronie Podstawy zaakceptuj sugerowane nowe środowisko dla środowiska usługi Azure Container Apps. Aby zminimalizować koszty, nowe domyślne środowisko jest tworzone w profilu Zużycie i dedykowane z domyślnym profilem obciążenia i bez nadmiarowości strefy. Aby uzyskać więcej informacji, zobacz Hostowanie usługi Azure Container Apps w usłudze Azure Functions.

    Możesz również użyć istniejącego środowiska usługi Container Apps. Aby utworzyć środowisko niestandardowe, zamiast tego wybierz pozycję Utwórz nowe. Na stronie Tworzenie środowiska usługi Container Apps można dodać niezdefinicyjne profile obciążeń lub włączyć nadmiarowość strefy. Aby dowiedzieć się więcej o środowiskach, zobacz Środowiska usługi Azure Container Apps.

  6. Wybierz kartę Wdrożenie i usuń zaznaczenie pozycji Użyj obrazu Szybkiego startu. W przeciwnym razie aplikacja funkcji zostanie wdrożona z obrazu podstawowego dla języka aplikacji funkcji.

  7. Wybierz typ obrazu, publiczny lub prywatny. Wybierz pozycję Prywatny , jeśli używasz usługi Azure Container Registry lub innego rejestru prywatnego. Podaj nazwę obrazu, w tym prefiks rejestru. Jeśli używasz rejestru prywatnego, podaj poświadczenia uwierzytelniania rejestru obrazów. Ustawienie Publiczne obsługuje tylko obrazy przechowywane publicznie w usłudze Docker Hub.

  8. W obszarze Alokacja zasobów kontenera wybierz żądaną liczbę rdzeni procesora CPU i dostępną pamięć. Jeśli środowisko ma dodane inne profile obciążeń, możesz wybrać profil obciążenia bez definicji. Opcje na tej stronie wpływają na koszt hostingu aplikacji. Zobacz stronę cennika usługi Container Apps, aby oszacować potencjalne koszty.

  9. Wybierz pozycję Przejrzyj i utwórz , aby przejrzeć wybrane opcje konfiguracji aplikacji.

  10. Na stronie Przeglądanie i tworzenie przejrzyj ustawienia, a następnie wybierz pozycję Utwórz, aby aprowizować aplikację funkcji i wdrożyć obraz kontenera z rejestru.

Praca z obrazami w usłudze 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:

Profile obciążeń usługi Container Apps

Profile obciążeń to funkcja usługi Container Apps, która umożliwia lepszą kontrolę nad zasobami wdrażania. Usługa Azure Functions w usłudze Azure Container Apps obsługuje również profile obciążeń. Aby uzyskać więcej informacji, zobacz Profile obciążeń w usłudze Azure Container Apps.

Możesz również ustawić ilość zasobów procesora CPU i pamięci przydzielonych do aplikacji.

Profile obciążeń i alokacje zasobów można tworzyć i zarządzać nimi przy użyciu interfejsu wiersza polecenia platformy Azure lub w witrynie Azure Portal.

Profile obciążeń są włączane podczas tworzenia środowiska aplikacji kontenera. Aby zapoznać się z przykładem, zobacz Tworzenie aplikacji kontenera w profilu.

Profile można dodawać, edytować i usuwać w swoim środowisku. Aby zapoznać się z przykładem, zobacz Dodawanie profilów.

Podczas tworzenia konteneryzowanej aplikacji funkcji w środowisku z włączonymi profilami obciążeń należy również określić profil, w którym ma zostać uruchomione. Profil należy określić przy użyciu --workload-profile-name parametru az functionapp create polecenia, na przykład w tym przykładzie:

az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime <LANGUAGE_STACK> --image <IMAGE_URI> --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE> 

W poleceniu az functionapp create --environment parametr określa środowisko Container Apps, a --image parametr określa obraz do użycia dla aplikacji funkcji. W tym przykładzie zastąp <STORAGE_NAME> ciąg nazwą użytą w poprzedniej sekcji dla konta magazynu. Zastąp również <APP_NAME> globalnie unikatową nazwą odpowiednią dla Ciebie.

Aby ustawić zasoby przydzielone do aplikacji, zastąp <CPU_COUNT> wartość żądaną liczbą wirtualnych procesorów CPU co najmniej 0,5 maksymalnie dozwoloną przez profil. W polu <MEMORY_SIZE>wybierz dedykowaną ilość pamięci z 1 GB do maksymalnej dozwolonej przez profil.

Za pomocą az functionapp container set polecenia można zarządzać przydzielonych zasobów i profilem obciążenia używanym przez aplikację.

az functionapp container set --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --workload-profile-name  <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE> 

Ustawienia aplikacji

Usługa 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

W przypadku hostowania konteneryzowanej aplikacji funkcji w usłudze Azure Container Apps istnieją dwa sposoby konfigurowania ciągłego wdrażania z repozytorium kodu źródłowego:

Obecnie nie można stale wdrażać kontenerów na podstawie zmian obrazu w rejestrze kontenerów. Zamiast tego należy używać tych potoków ciągłego wdrażania opartego na kodzie źródłowym.

Włączanie ciągłego wdrażania na platformie Azure

Ważne

Wdrożenie oparte na elementach webhook nie jest obecnie obsługiwane podczas uruchamiania kontenera w planie Elastic Premium. Jeśli musisz użyć metody ciągłego wdrażania opisanej w tej sekcji, zamiast tego wdróż kontener w planie usługi App Service. W przypadku uruchamiania w ramach planu Elastic Premium należy ręcznie ponownie uruchomić aplikację za każdym razem, gdy wprowadzisz aktualizacje do kontenera w repozytorium.

Możesz również skonfigurować ciągłe wdrażanie z repozytorium kodu źródłowego przy użyciu usługi Azure Pipelines lub GitHub Actions.

Usługa Azure Functions umożliwia automatyczne aktualizowanie wdrożenia obrazu przy każdej aktualizacji obrazu w rejestrze.

  1. 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.

  2. Skopiuj adres URL elementu webhook wdrożenia do schowka.

  3. Otwórz usługę 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.

    Zrzut ekranu przedstawiający sposób dodawania elementu webhook w oknie usługi Docker Hub.

  4. Po ustawieniu elementu webhook usługa Azure Functions ponownie wdraża obraz za każdym razem, gdy zaktualizujesz go w usłudze 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 zaawansowanych usługi App Service (Kudu). Aby łatwo nawiązać połączenie z kontenerem przy użyciu protokołu SSH, usługa 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).

  1. W pliku Dockerfile dołącz ciąg -appservice do obrazu podstawowego w instrukcji FROM , 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ź repozytoria obrazów podstawowych usługi Azure Functions, aby sprawdzić, czy używasz najnowszej wersji obrazu podstawowego z obsługą protokołu SSH.

  2. Skompiluj docker build obraz przy użyciu polecenia , zastąp element <DOCKER_ID> identyfikatorem konta usługi Docker Hub, jak w poniższym przykładzie.

    docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
    
  3. Wypchnij zaktualizowany obraz do usługi Docker Hub, co powinno zająć znacznie mniej czasu niż pierwsze wypychanie. Teraz należy przekazać tylko zaktualizowane segmenty obrazu.

    docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0
    
  4. Usługa Azure Functions automatycznie ponownie wdraża obraz w aplikacji funkcji; proces odbywa się w mniej niż minutę.

  5. W przeglądarce otwórz https://<app_name>.scm.azurewebsites.net/ i zastąp <app_name> unikatową nazwą. Ten adres URL to punkt końcowy narzędzi zaawansowanych (Kudu) dla kontenera aplikacji funkcji.

  6. 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.

  7. Po nawiązaniu połączenia z kontenerem uruchom top polecenie , aby wyświetlić aktualnie uruchomione procesy.

    Zrzut ekranu przedstawiający najważniejsze polecenie systemu Linux uruchomione w sesji SSH.

Następujące artykuły zawierają więcej informacji na temat wdrażania kontenerów i zarządzania nimi: