Udostępnij przez


Konfigurowanie przyczepek w usłudze Azure App Service

Ten artykuł zawiera praktyczne kroki włączania i konfigurowania przyczepek w aplikacji usługi App Service.

Tworzenie przyczepki w witrynie Azure Portal

  1. Przejdź do zasobu usługi App Service w witrynie Azure Portal.
  2. Wybierz pozycję Centrum wdrażania i przejdź do karty Kontenery .
  3. Kliknij pozycję Dodaj kontener , aby dodać przyczepkę.
  4. Wprowadź nazwę obrazu, uwierzytelnianie rejestru (w razie potrzeby) i zmienne środowiskowe.
  5. Zapisz zmiany. Przyczepka zostanie wdrożona obok głównego kontenera aplikacji.

Włącz obsługę sidecar dla własnych kontenerów systemu Linux

W przypadku kontenera niestandardowego należy jawnie włączyć obsługę przyczepki. W portalu możesz dokonać wyboru w kreatorze tworzenia usługi App Service. Możesz również włączyć tę funkcję dla istniejącej aplikacji na stronie Deployment Center> istniejącej aplikacji, jak przedstawiono na poniższym zrzucie ekranu:

Zrzut ekranu przedstawiający ustawienia niestandardowej aplikacji kontenerowej z wyróżnionym przyciskiem Aktualizacja.

Za pomocą interfejsu wiersza polecenia platformy Azure przekonwertuj sitecontainers aplikację internetową na użycie konfiguracji. Przykład:

az webapp sitecontainers convert --mode sitecontainers --name <YourWebAppName> --resource-group <YourResourceGroup>

Spowoduje to zaktualizowanie LinuxFxVersion elementu i sitecontainers włączenie obsługi wzorca przyczepki.

Przywracanie do klasycznego trybu kontenera niestandardowego (Docker)

Jeśli musisz przełączyć się z powrotem z konfiguracji z obsługą przyczepki do klasycznej konfiguracji opartej na platformie Docker, uruchom następujące polecenie:

az webapp sitecontainers convert \
  --mode docker \
  --name <app-name> \
  --resource-group <resource-group>

To polecenie usuwa wszystkie kontenery przyczepki i resetuje aplikację do korzystania z konfiguracji stylu klasycznego DOCKER|<image> . Aby uzyskać szczegółowe informacje, zobacz dokumentację interfejsu wiersza polecenia platformy Azure dla programu az webapp sitecontainers convert.

Aby uzyskać więcej informacji, zobacz Jakie są różnice w przypadku kontenerów niestandardowych z obsługą przyczepki?

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.

Definiowanie sidecara przy użyciu szablonu ARM

Microsoft.Web/sites/sitecontainers Dodaj typ zasobu do aplikacji. Aby ściągnąć obraz przyczepki z usługi ACR przy użyciu tożsamości zarządzanej przypisanej przez użytkownika, określ authType jako UserAssigned i podaj wartość userManagedIdentityClientId:

{
  "type": "Microsoft.Web/sites/sitecontainers",
  "apiVersion": "2024-04-01",
  "name": "<app-name>/<sidecar-name>",
  "properties": {
    "image": "<acr-name>.azurecr.io/<image-name>:<version>",
    "isMain": false,
    "authType": "UserAssigned",
    "userManagedIdentityClientId": "<client-id>",
    "environmentVariables": [
      { "name": "MY_ENV_VAR", "value": "my-value" }
    ]
  }
}

Ważne

Tylko główny kontener ("isMain": true) odbiera ruch zewnętrzny. W niestandardowej aplikacji kontenera systemu Linux z włączoną obsługą przyczepki główny kontener ma isMain ustawioną wartość true. Wszystkie kontenery przyczepki powinny mieć wartość "isMain": false.

Aby uzyskać więcej informacji, zobacz Microsoft.Web sites/sitecontainers.

Tworzenie przyczepek przy użyciu interfejsu wiersza polecenia platformy Azure

Utwórz aplikację z obsługą sidecar za pomocą az webapp create. Przykład:

az webapp create --name <app-name> --resource-group <group-name> --sitecontainers-app

Utwórz kontener typu sidecar za pomocą polecenia az webapp sitecontainers create. Przykład:

az webapp sitecontainers create --name <app-name> --resource-group <group-name> --container-name <container> --image <image> --target-port <port>

Utwórz kontener przyczepki z plikiem JSON:

az webapp sitecontainers create --name <app-name> --resource-group <group-name> --sitecontainers-spec-file <file-path>

Aby uzyskać wszystkie polecenia przyczepki, zobacz az webapp sitecontainers.

Ustawianie zmiennych środowiskowych

W aplikacji systemu Linux wszystkie kontenery (główne i przyczepki) współdzielą zmienne środowiskowe. Aby zastąpić określoną zmienną dla przyczepki, dodaj ją w konfiguracji przyczepki.

  • W szablonach ARM (Azure Resource Manager) użyj tablicy environmentVariables we właściwościach sidecaru.
  • W portalu dodaj zmienne środowiskowe w interfejsie użytkownika konfiguracji kontenera.
  • Zmienne środowiskowe mogą odwoływać się do ustawień aplikacji poprzez nazwę; wartość zostanie ustalona w czasie wykonywania.

Dodawanie rozszerzenia przyczepki Redis

W Azure Portal możesz dodać rozszerzenie sidecar Redis do aplikacji do buforowania. Redis sidecar jest przeznaczony tylko do lekkiego buforowania, a nie jako zamiennik dla Azure Cache for Redis.

Aby użyć przyczepki Redis:

  • W kodzie aplikacji ustaw łańcuch połączenia Redis na localhost:6379.
  • Skonfiguruj usługę Redis w kodzie uruchamiania aplikacji.
  • Używanie wzorców buforowania do przechowywania i pobierania danych.
  • Przetestuj, korzystając z aplikacji i sprawdzając dzienniki, aby potwierdzić użycie pamięci podręcznej.

Dodaj rozszerzenie sidecar Datadog

W Azure Portal można dodać rozszerzenie Datadog sidecar w celu zbierania dzienników, metryk i śladów dla obserwowalności bez modyfikowania kodu aplikacji. Po dodaniu rozszerzenia określasz informacje o koncie usługi Datadog, aby rozszerzenie sidecar mogło bezpośrednio wysyłać dane telemetryczne do Datadog.

W przypadku aplikacji opartych na kodzie:

  1. startup.sh Utwórz skrypt do pobrania i zainicjowania modułu śledzenia usługi Datadog. Poniższy skrypt jest przykładem aplikacji .NET:

    #!/bin/bash
    
    # Create log directory. This should correspond to the "Datadog Trace Log Directory" extension setting
    mkdir -p /home/LogFiles/dotnet
    
    # Download the Datadog tracer tarball
    wget -O /datadog/tracer/datadog-dotnet-apm-2.49.0.tar.gz https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.49.0/datadog-dotnet-apm-2.49.0.tar.gz
    
    # Navigate to the tracer directory, extract the tarball, and return to the original directory
    mkdir -p /datadog/tracer
    pushd /datadog/tracer
    tar -zxf datadog-dotnet-apm-2.49.0.tar.gz
    popd
    
    dotnet /home/site/wwwroot/<yourapp>.dll
    
  2. Ustaw polecenie uruchamiania w usłudze App Service, aby uruchomić ten skrypt.

  3. Uruchom aplikację i potwierdź, że dane telemetryczne są wysyłane, logując się do pulpitu nawigacyjnego usługi Datadog.

W przypadku aplikacji opartych na kontenerach:

Przed dodaniem rozszerzenia typu sidecar Datadog, skonfiguruj moduł śledzenia w pliku Dockerfile, podobnie jak w skryptach dla aplikacji opartych na kodzie.

Dodaj rozszerzenie przyczepki Phi-3/Phi-4

W portalu Azure możesz dodać do aplikacji rozszerzenie boczne Phi-3 lub Phi-4, aby zapewnić lokalny model inferencji dla obciążeń związanych z AI. Aplikacja musi znajdować się w warstwie cenowej, która obsługuje potrzeby przetwarzania danych. Dla nieobsługiwanych poziomów nie widzisz opcji rozszerzeń modułu Phi-3/Phi-4.

  • Przyczepka Phi-3/Phi-4 uwidacznia interfejs API uzupełniania czatu na stronie http://localhost:11434/v1/chat/completions.
  • Po dodaniu przyczepki początkowe uruchamianie może być powolne z powodu ładowania modelu.
  • Aby wywołać interfejs API, wyślij żądania POST do tego punktu końcowego w tym samym stylu co API uzupełniania czatu OpenAPI.

Aby zapoznać się ze szczegółowymi procesami, zobacz:

Dostęp do sidecara z głównego kontenera lub z innego sidecara

Kontenery sidecar dzielą ten sam host sieciowy co główny kontener. Główny kontener i inne przyczepki mogą dotrzeć do dowolnego portu na przyczepce przy użyciu polecenia localhost:<port>. Jeśli na przykład przyczepka nasłuchuje na porcie 4318, główna aplikacja może uzyskać do niej dostęp pod adresem localhost:4318.

Pole Port w portalu jest tylko metadanymi i nie jest używane przez usługę App Service do routingu.

Dodawanie punktów montowania woluminów

Domyślnie wolumin domyślny /home jest instalowany dla wszystkich kontenerów, chyba że jest wyłączony. Dodatkowe zamontowania woluminów można skonfigurować dla przyczepek.

Montowanie woluminów umożliwia udostępnianie nietrwałych plików i katalogów między kontenerami w aplikacji webowej.

  • Ścieżka podrzędna woluminu: Ścieżka katalogu logicznego utworzona przez usługę App Service. Kontenery z tą samą ścieżką podrzędną współużytkują pliki.
  • Ścieżka montowania kontenera: Ścieżka katalogu wewnątrz kontenera przypisana do podrzędnej ścieżki woluminu.

Przykładowa konfiguracja:

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
  • Jeśli kontener1 utworzy /container1Vol/myfile.txt, kontener Container2 może go odczytać za pomocą polecenia /container2Vol/myfile.txt.
  • Jeśli Container1 utworzy /container1Vol/directory3/myfile.txt, Container2 może go odczytać za pomocą /container2Vol/directory3/myfile.txt, a Container3 może odczytywać/zapisywać za pomocą /container3Vol/myfile.txt.
  • Kontener4 nie udostępnia woluminu innym osobom.

Uwaga / Notatka

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

Więcej zasobów