Udostępnij za pośrednictwem


Samouczek: konfigurowanie kontenera pomocniczego dla niestandardowej aplikacji kontenerowej

W tym samouczku pokazano, jak dodać kontener zbierający OpenTelemetry jako kontener boczny do niestandardowej aplikacji kontenerowej w systemie Linux w usłudze Azure App Service.

Kontenery boczne w usłudze App Service umożliwiają wdrażanie dodatkowych usług i funkcji w aplikacjach Linux bez ścisłego wiązania ich z wbudowanym lub niestandardowym głównym kontenerem. Kontenery boczne działają obok głównego kontenera aplikacji w tym samym planie usługi App Service.

Możesz dodać do dziewięciu kontenerów pomocniczych dla każdej aplikacji Linux w usłudze App Service. Można na przykład dodać monitorowanie, rejestrowanie, konfigurację i usługi sieciowe jako kontenery przyczepki. Przyczepka modułu zbierającego OpenTelemetry jest jednym z przykładów monitorowania.

Aby uzyskać dostęp do własnych aplikacji systemu Linux, zobacz Samouczek: konfigurowanie kontenera przyczepki dla aplikacji systemu Linux w usłudze aplikacja systemu Azure Service.

Wymagania wstępne

  • Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

  • Polecenia w tym samouczku można uruchamiać przy użyciu usługi Azure Cloud Shell— interaktywnej powłoki używanej w przeglądarce do pracy z usługami platformy Azure. Aby użyć usługi Cloud Shell:

    1. Wybierz przycisk Uruchom Cloud Shell lub przejdź do https://shell.azure.com, aby otworzyć Cloud Shell w przeglądarce.

    2. Zaloguj się do platformy Azure w razie potrzeby i upewnij się, że jesteś w środowisku Bash Cloud Shell w Azure.

    3. Wybierz pozycję Kopiuj w dowolnym bloku kodu, wklej kod do usługi Cloud Shell i uruchom go.

      Polecenia azd w tym samouczku korzystają z interfejsu wiersza polecenia dla deweloperów platformy Azure, narzędzia typu open source, które przyspiesza aprowizowanie i wdrażanie zasobów aplikacji na platformie Azure.

1. Konfigurowanie zasobów samouczka

Aby sklonować przykładowe repozytorium i utworzyć zasoby na potrzeby tego samouczka, uruchom następujące polecenia w usłudze Cloud Shell. Po wyświetleniu monitu wybierz subskrypcję platformy Azure i region świadczenia usługi Azure, którego chcesz użyć.

git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs
cd app-service-sidecar-tutorial-prereqs
azd env new my-sidecar-env
azd provision

Polecenie azd provision używa dołączonych szablonów do utworzenia grupy zasobów platformy Azure o nazwie my-sidecar-env_group zawierającej następujące zasoby platformy Azure:

Po zakończeniu wdrażania powinny zostać wyświetlone dane wyjściowe podobne do następującego przykładu:

Success!

APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=aaaaaaaa-0b0b-1c1c-2d2d-333333333333;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/;ApplicationId=00001111-aaaa-2222-bbbb-3333cccc4444
Azure container registry name = acro2lc774l6vjgg
Managed identity resource ID = /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-sidecar-env_group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id-my-sidecar-env_group
Managed identity client ID = 00aa00aa-bb11-cc22-dd33-44ee44ee44ee

Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-sidecar-env_group

Skopiuj i zapisz wartość APPLICATIONINSIGHTS_CONNECTION_STRING, aby użyć jej później w tym samouczku.

Wybierz link Open resource group in the portal , aby otworzyć aprowizowaną grupę zasobów w witrynie Azure Portal.

2. Tworzenie aplikacji z obsługą przyczepki

W grupie zasobów w witrynie Azure Portal utwórz niestandardową aplikację kontenera systemu Linux z obsługą przyczepki i skonfiguruj główny kontener.

  1. Na stronie grupy zasobów w witrynie Azure Portal wybierz pozycję Utwórz.

  2. Na stronie Marketplace wyszukaj aplikację internetową, wybierz strzałkę w dół obok pozycji Utwórz na kafelku Aplikacja internetowa , a następnie wybierz pozycję Aplikacja internetowa.

    Zrzut ekranu przedstawiający stronę witryny Azure Marketplace z wyszukiwaną aplikacją internetową i wyróżnionym przyciskiem utwórz aplikację internetową.

  3. Na karcie Podstawy na stronie Tworzenie aplikacji internetowej podaj następujące informacje:

    • Nazwa: wprowadź unikatową nazwę aplikacji internetowej.
    • Publikuj: wybierz pozycję Kontener.
    • System operacyjny: wybierz pozycję Linux.
    • Region: wybierz ten sam region, który został wybrany dla elementu azd provision.
    • Plan systemu Linux: wybierz podany (nowy) plan usługi App Service.

    Zrzut ekranu przedstawiający ustawienia podstawowe dla niestandardowej aplikacji internetowej kontenera systemu Linux.

  4. Pozostaw pozostałe ustawienia tak, jak są, i wybierz kartę Kontener w górnej części strony.

  5. Na karcie Kontener podaj następujące informacje:

    • Obsługa przyczepki: ustaw wartość Konfiguracja rozszerzona z obsługą przyczepki.
    • źródło obrazu: Wybierz Azure Container Registry.
    • Nazwa: Upewnij się, że główny się pojawia.
    • Rejestr: wybierz rejestr utworzony przez program azd provision.
    • Uwierzytelnianie: wybierz pozycję Tożsamość zarządzana.
    • Tożsamość: wybierz tożsamość zarządzaną utworzoną przez azd provision.
    • Obraz: Wprowadź nginx.
    • Tag: wprowadź najnowszy.
    • Port: wprowadź wartość 80 , jeśli jeszcze nie ustawiono.

    Zrzut ekranu przedstawiający ustawienia kontenera dla niestandardowej aplikacji internetowej kontenera systemu Linux.

    Uwaga

    Te ustawienia są konfigurowane inaczej w aplikacjach z obsługą przyczepki niż w aplikacjach, które nie są włączone dla przyczepek. Aby uzyskać więcej informacji, zobacz Co to są różnice w przypadku kontenerów niestandardowych z obsługą przyczepki.

  6. Wybierz pozycję Przejrzyj i utwórz, a po zakończeniu walidacji wybierz pozycję Utwórz.

  7. Po zakończeniu wdrażania wybierz pozycję Przejdź do zasobu.

  8. Na stronie aplikacji otwórz adres URL obok pozycji Domena domyślna, na nowej karcie przeglądarki, https://<app-name>.azurewebsites.netaby wyświetlić domyślną stronę serwera nginx .

3. Dodawanie kontenera przyczepki do aplikacji

Dodaj kontener sidecar do niestandardowej linuxowej aplikacji kontenerowej.

  1. Na stronie aplikacji w witrynie Azure Portal wybierz pozycję Centrum wdrażania w obszarze Wdrożenie w menu nawigacji po lewej stronie. Na stronie Centrum wdrażania są wyświetlane wszystkie kontenery w aplikacji, obecnie tylko główny kontener.

  2. Wybierz Dodaj>niestandardowy kontener.

  3. W okienku Dodawanie kontenera wypełnij następujące informacje:

    • Nazwa: wprowadź otel-collector.
    • Źródło obrazu: wybierz pozycję Azure Container Registry.
    • Rejestr: wybierz rejestr utworzony przez azd provisionprogram.
    • Uwierzytelnianie: wybierz pozycję Tożsamość zarządzana.
    • Tożsamość: w obszarze Przypisane przez użytkownika wybierz tożsamość zarządzaną utworzoną przez azd provision.
    • Obraz: Wprowadź otel-collector.
    • Tag obrazu: wprowadź najnowszy.
    • Port: wprowadź 4317.
  4. Wybierz Zastosuj.

    Zrzut ekranu przedstawiający sposób konfigurowania kontenera przyczepki w centrum wdrażania aplikacji internetowej.

Istnieją teraz dwa kontenery w centrum wdrażania z etykietą Main i Sidecar. Aplikacja musi mieć jeden główny kontener i może mieć wiele kontenerów sidecar.

4. Konfigurowanie zmiennych środowiskowych

W przykładowym scenariuszu przyczepka otel-collector jest skonfigurowana do eksportowania danych OpenTelemetry do usługi Azure Monitor przy użyciu parametrów połączenia jako zmiennej środowiskowej. Aby uzyskać więcej informacji, zobacz plik konfiguracji OpenTelemetry dla obrazu otel-collector.

Skonfiguruj zmienną środowiskową dla kontenera, konfigurując ustawienia aplikacji dla aplikacji. Ustawienia aplikacji są dostępne dla wszystkich kontenerów w aplikacji.

  1. Na stronie aplikacji w witrynie Azure Portal wybierz pozycję Zmienne środowiskowe w obszarze Ustawienia w menu nawigacji po lewej stronie.

  2. Na karcie Ustawienia aplikacji na stronie Zmienne środowiskowe wybierz pozycję Dodaj.

  3. W okienku ustawienia Dodaj/Edytuj aplikację wprowadź następujące wartości:

    • Nazwa: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Wartość: wartość APPLICATIONINSIGHTS_CONNECTION_STRING z danych wyjściowych elementu azd provision. Wartość tę znajdziesz również jako Parametry połączenia na stronie Podsumowanie zasobu usługi Application Insights grupy zasobów.
  4. Wybierz pozycję Zastosuj, a następnie ponownie wybierz pozycję Zastosuj , a następnie wybierz pozycję Potwierdź. Ustawienie aplikacji APPLICATIONINSIGHTS_CONNECTION_STRING jest teraz wyświetlane na karcie Ustawienia aplikacji .

    Zrzut ekranu przedstawiający stronę Konfiguracja aplikacji internetowej z dodanymi dwoma ustawieniami aplikacji.

Uwaga

Niektóre ustawienia aplikacji nie mają zastosowania do aplikacji z obsługą przyczepki. Aby uzyskać więcej informacji, zobacz Co to są różnice w przypadku kontenerów niestandardowych z obsługą przyczepki.

5. Sprawdź w usłudze Application Insights

Przyczepka otel-collector powinna teraz eksportować dane do usługi Application Insights.

  1. Przejdź do aplikacji na nowej karcie przeglądarki i odśwież stronę kilka razy, aby wygenerować niektóre żądania internetowe.

  2. Na stronie grupy zasobów w witrynie Azure Portal wybierz zasób usługi Application Insights . Na stronie Przegląd usługi Application Insights powinny być teraz widoczne pewne dane na wykresach domyślnych.

    Zrzut ekranu przedstawiający stronę usługi Application Insights z danymi na wykresach domyślnych.

Uwaga

W tym typowym scenariuszu monitorowania usługa Application Insights jest tylko jednym z obiektów docelowych OpenTelemetry, których można użyć, takich jak Jaeger, Prometheus i Zipkin.

6. Czyszczenie zasobów

Jeśli nie potrzebujesz już środowiska utworzonego na potrzeby tego samouczka, możesz usunąć grupę zasobów, która usuwa usługę App Service i wszystkie powiązane zasoby. Uruchom następujące polecenie w sklonowanym repozytorium w usłudze Cloud Shell.

azd down

Najczęściej zadawane pytania

Jakie są różnice w przypadku kontenerów niestandardowych z obsługą przyczepki?

Aplikacje obsługujące sidecar są konfigurowane inaczej niż aplikacje, które nie obsługują sidecar.

  • Aplikacje z funkcją Sidecar są oznaczane za pomocą LinuxFxVersion=sitecontainers i konfigurowane z zasobami sitecontainers.
  • Aplikacje, które nie mają aktywowanego trybu sidecar, konfigurują nazwę kontenera i typ bezpośrednio za pomocą LinuxFxVersion=DOCKER|<image-details>.

Aby uzyskać więcej informacji, zobacz az webapp config set --linux-fx-version.

Aplikacje, które nie są kompatybilne z architekturą sidecar, konfigurują główny kontener przy użyciu ustawień aplikacji, takich jak:

  • DOCKER_REGISTRY_SERVER_URL
  • DOCKER_REGISTRY_SERVER_USERNAME
  • DOCKER_REGISTRY_SERVER_PASSWORD
  • WEBSITES_PORT

Te ustawienia nie mają zastosowania do aplikacji z obsługą przyczepki.

Jak kontenery przyczepki obsługują komunikację wewnętrzną?

Kontenery pomocnicze współdzielą tę samą przestrzeń sieciową co główny kontener, więc główny kontener i inne kontenery pomocnicze mogą uzyskać dostęp do dowolnego portu na kontenerze pomocniczym za pomocą localhost:<port>. Przykładowy startup.sh używa localhost:4318 do uzyskiwania dostępu do portu 4318 na kontenerze pomocniczym otel-collector.

W oknie dialogowym Edytowanie kontenera ustawienie Port nie jest obecnie używane przez usługę App Service. Można go użyć w ramach metadanych przyczepki, takich jak wskazanie, na którym porcie nasłuchuje przyczepka.

Czy kontener przyczepki może odbierać żądania internetowe?

Nie. Usługa App Service kieruje żądania internetowe tylko do głównego kontenera. W przypadku aplikacji Linux opartych na kodzie, wbudowany kontener Linux jest głównym kontenerem, a każdy sidecar sitecontainers powinien zostać dodany przy użyciu IsMain=false.

W przypadku kontenerów niestandardowych wszystkie z wyjątkiem jednego z elementów sitecontainers powinny mieć wartość IsMain=false. Aby uzyskać więcej informacji na temat konfigurowania IsMain, zobacz Microsoft.Web sites/sitecontainers.

Jak korzystać z montowania woluminów?

Funkcja montowania woluminów umożliwia udostępnianie nietrwałych plików i katalogów między kontenerami w aplikacji internetowej. Aby dodać lub skonfigurować montowanie woluminów, użyj montowania woluminów na stronie Dodawanie kontenera lub Edytowanie kontenera.

Zrzut ekranu przedstawiający konfigurację montażu woluminu dla kontenera bocznego.

  • Ścieżka podrzędna woluminu to automatycznie utworzona ścieżka katalogu logicznego, do której nie odwołuje się kontener. Kontenery skonfigurowane za pomocą tej samej ścieżki podrzędnej woluminu mogą udostępniać pliki i katalogi.
  • Ścieżka montowania kontenera to ścieżka katalogu, do której odwołujesz się w kontenerze. Ścieżka instalacji kontenera jest mapowana na ścieżkę podrzędną woluminu.

Załóżmy na przykład, że konfigurujesz następujące punkty montowania woluminów:

Nazwa przyczepki Ścieżka podrzędna woluminu Ścieżka instalacji kontenera Tylko do odczytu
Kontener1 /directory1/directory2 /container1Vol Nieprawda
Kontener2 /directory1/directory2 /container2Vol Prawda
Kontener3 /directory1/directory2/directory3 /container3Vol Nieprawda
Kontener 4 /directory4 /container1Vol Nieprawda

Na podstawie tych ustawień obowiązują następujące warunki:

  • Jeśli kontener1 tworzy /container1Vol/myfile.txt, kontener2 może odczytać plik za pośrednictwem /container2Vol/myfile.txt.
  • Jeśli kontener1 tworzy /container1Vol/directory3/myfile.txt, kontener2 może odczytać plik za pośrednictwem /container2Vol/directory3/myfile.txt, a kontener3 może odczytywać i zapisywać w pliku za pośrednictwem /container3Vol/myfile.txt.
  • Kontener4 nie współdzieli zamontowanego woluminu z żadnym z innych kontenerów.

Uwaga

W przypadku aplikacji systemu Linux opartych na kodzie wbudowany kontener systemu Linux nie może używać instalacji woluminów.