Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Każdy zespół programistyczny ma unikatowe wymagania, które mogą utrudnić implementację wydajnego procesu wdrażania w obrębie dowolnej usługi chmurowej. W tym artykule przedstawiono trzy główne składniki wdrażania w usłudze Azure App Service: źródła wdrożenia, potoki kompilacji i mechanizmy wdrażania. W tym artykule opisano również niektóre najlepsze rozwiązania i porady dotyczące określonych stosów językowych.
Składniki wdrażania
W tej sekcji opisano trzy główne składniki wdrażania w App Service.
Źródło wdrożenia
Źródłem wdrożenia jest lokalizacja kodu aplikacji. W przypadku aplikacji produkcyjnych źródło wdrożenia jest zwykle repozytorium hostowane przez oprogramowanie do kontroli wersji, takie jak GitHub, Bitbucket lub Azure Repos. W przypadku scenariuszy tworzenia i testowania źródło wdrożenia może być projektem na komputerze lokalnym.
Pipeline budowania
Po podjęciu decyzji o źródle wdrożenia następnym krokiem jest wybranie potoku kompilacji. Potok kompilacji odczytuje kod źródłowy ze źródła wdrożenia i uruchamia szereg kroków w celu uzyskania aplikacji w stanie możliwych do uruchomienia.
Kroki mogą obejmować kompilowanie kodu, minimalizowanie kodu HTML i języka JavaScript, uruchamianie testów i tworzenie pakietów składników. Określone polecenia uruchamiane przez potok kompilacji zależą od technologicznego zestawu językowego. Te operacje można uruchamiać na serwerze kompilacji, takim jak usługa Azure Pipelines lub lokalnie.
Mechanizm wdrażania
Mechanizm wdrażania to akcja używana do umieszczenia stworzonej aplikacji w katalogu /home/site/wwwroot Twojej aplikacji internetowej. Katalog /wwwroot jest zamontowaną lokalizacją magazynu udostępnioną dla wszystkich wystąpień aplikacji webowej. Gdy system wdrażania umieszcza aplikację w tym katalogu, instancje otrzymują powiadomienie w celu zsynchronizowania nowych plików.
Usługa App Service obsługuje następujące mechanizmy wdrażania:
- Punkty końcowe Kudu: Kudu to narzędzie zwiększające produktywność deweloperów typu open source, które działa jako oddzielny proces w usłudze Windows App Service. Działa jako drugi kontener w usłudze App Service systemu Linux. Usługa Kudu obsługuje ciągłe wdrożenia i udostępnia punkty końcowe HTTP do wdrożenia, takie jak zipdeploy/.
- FTP i WebDeploy: przy użyciu poświadczeń witryny lub użytkownika można przekazywać pliki za pośrednictwem protokołu FTP lub narzędzia WebDeploy. Mechanizmy te nie przechodzą przez Kudu.
Narzędzia wdrażania, takie jak Azure Pipelines, Jenkins i wtyczki edytora, używają jednego z tych mechanizmów wdrażania.
Korzystanie z miejsc wdrożenia
Jeśli to możliwe, podczas wdrażania nowej kompilacji produkcyjnej użyj slotów wdrożeniowych. W Planie usługi App Service warstwy Standard lub wyższej możesz wdrożyć swoją aplikację w środowisku przejściowym, zweryfikować swoje zmiany i przeprowadzić testy wstępne. Gdy będziesz gotowy, zamień sloty przejściowe i produkcyjne. Operacja zamiany rozgrzewa wystąpienia procesów roboczych niezbędne do dopasowania do skali produkcyjnej, co eliminuje przestoje.
Ciągłe wdrażanie kodu
Jeśli projekt ma gałęzie wyznaczone do testowania, kontroli jakości i etapowania, każda z tych gałęzi powinna być stale wdrażana na etapie wstępnym. Takie podejście jest nazywane projektem gitflow. Ten projekt umożliwia interesariuszom łatwe ocenianie i testowanie wdrożonej gałęzi.
Ciągłe wdrażanie nigdy nie powinno być włączone dla slotu produkcyjnego. Zamiast tego gałąź produkcyjna (często główna) powinna zostać wdrożona w miejscu nieprodukcyjnym. Gdy wszystko będzie gotowe do przeniesienia gałęzi głównej, przenieś ją do środowiska produkcyjnego. Zamiana na środowisko produkcyjne zamiast wdrażania w środowisku produkcyjnym zapobiega przestojom i umożliwia cofnięcie zmian, ponownie wykonując zamianę.
Ciągłe wdrażanie kontenerów
W przypadku niestandardowych kontenerów z platformy Docker lub innych rejestrów kontenerów wdróż obraz w gnieździe testowym i przenieś do środowiska produkcyjnego, aby zapobiec przestojom. Automatyzacja jest bardziej złożona niż wdrażanie kodu. Musisz wypchnąć obraz do rejestru kontenerów i zaktualizować tag obrazu w aplikacji internetowej.
Dla każdej gałęzi, którą chcesz wdrożyć na miejscu, skonfiguruj automatyzację do wykonywania tych zadań przy każdym zatwierdzeniu w gałęzi.
- Zbuduj i oznacz obraz. W ramach potoku kompilacji otaguj obraz identyfikatorem zatwierdzenia git, znacznikiem czasu lub innymi łatwo rozpoznawalnymi informacjami. Najlepiej nie używać domyślnego tagu najnowszego . W przeciwnym razie trudno jest prześledzić, jaki kod jest obecnie wdrożony, co sprawia, że debugowanie jest trudniejsze.
- Prześlij otagowany obraz. Po skompilowania i oznakowaniu obrazu potok wypycha obraz do rejestru kontenerów. W następnym kroku slot wdrożeniowy pobiera oznaczony obraz kontenera z rejestru kontenerów.
- Zaktualizuj miejsce wdrożenia z nowym tagiem obrazu. Po zaktualizowaniu tej właściwości witryna zostanie automatycznie ponownie uruchomiona i ściągnie nowy obraz kontenera.
Ten artykuł zawiera przykłady typowych struktur automatyzacji.
Korzystanie z usługi Azure DevOps
Usługa App Service posiada zintegrowaną obsługę ciągłego dostarczania kontenerów za pośrednictwem Centrum wdrażania. Przejdź do aplikacji w witrynie Azure Portal. W obszarze Wdrożenie wybierz pozycję Centrum wdrażania. Postępuj według instrukcji, aby wybrać swoje repozytorium i gałąź. To podejście umożliwia skonfigurowanie potoku kompilacji i wydania metodyki DevOps w celu automatycznego kompilowania, tagowania i wdrażania kontenera po wypchnięciu nowych zatwierdzeń do wybranej gałęzi.
Korzystanie z funkcji GitHub Actions
Wdrożenie kontenera można również zautomatyzować za pomocą funkcji GitHub Actions. Plik przepływu pracy kompiluje i taguje kontener za pomocą identyfikatora zatwierdzenia, wypycha go do rejestru kontenerów i aktualizuje określoną aplikację internetową, wykorzystując nowy tag obrazu.
on:
push:
branches:
- <your-branch-name>
name: Linux_Container_Node_Workflow
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- uses: azure/docker-login@v1
with:
login-server: contoso.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t contoso.azurecr.io/nodejssampleapp:${{ github.sha }}
docker push contoso.azurecr.io/nodejssampleapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'node-rnc'
publish-profile: ${{ secrets.azureWebAppPublishProfile }}
images: 'contoso.azurecr.io/nodejssampleapp:${{ github.sha }}'
Korzystanie z innych dostawców automatyzacji
Wymienione wcześniej kroki dotyczą innych narzędzi automatyzacji, takich jak CircleCI lub Travis CI. Jednak w ostatnim kroku należy użyć Azure CLI, aby zaktualizować sloty wdrożeniowe przy użyciu nowych tagów obrazów. Aby użyć interfejsu wiersza polecenia platformy Azure w skrypcie automatyzacji, wygeneruj Principal usługi przy użyciu następującego polecenia.
az ad sp create-for-rbac --name "myServicePrincipal" --role contributor \
--scopes /subscriptions/{subscription}/resourceGroups/{resource-group} \
--sdk-auth
W skrypcie zaloguj się, używając az login --service-principal
, podając podstawowe informacje. Następnie można użyć az webapp config container set
polecenia , aby ustawić nazwę kontenera, tag, adres URL rejestru i hasło rejestru. Aby uzyskać więcej informacji, zobacz Jak zalogować się do interfejsu wiersza polecenia platformy Azure w środowisku Circle CI.
Zagadnienia specyficzne dla języka
Należy pamiętać o następujących zagadnieniach dotyczących implementacji języków Java, Node i .NET.
Jawa
Użyj interfejsu API zipdeploy Kudu do wdrażania aplikacji JAR. Użyj narzędzia wardeploy dla aplikacji WAR. Jeśli używasz narzędzia Jenkins, możesz użyć tych interfejsów API bezpośrednio w fazie wdrażania. Aby uzyskać więcej informacji, zobacz Wdrażanie do usługi Azure App Service za pomocą Jenkins.
Węzeł
Domyślnie Kudu uruchamia kroki kompilacji aplikacji Node (npm install
). Jeśli używasz usługi kompilacji, takiej jak Azure DevOps, kompilacja Kudu jest niepotrzebna. Aby wyłączyć kompilację Kudu, utwórz ustawienie aplikacji , SCM_DO_BUILD_DURING_DEPLOYMENT
z wartością false
.
.SIEĆ
Domyślnie Kudu uruchamia kroki kompilacji dla aplikacji .NET (dotnet build
). Jeśli używasz usługi kompilacji, takiej jak Azure DevOps, kompilacja Kudu jest niepotrzebna. Aby wyłączyć kompilację Kudu, utwórz ustawienie aplikacji , SCM_DO_BUILD_DURING_DEPLOYMENT
z wartością false
.
Inne zagadnienia dotyczące wdrażania
Inne zagadnienia obejmują lokalną pamięć podręczną oraz wysokie zużycie CPU lub pamięci.
Lokalna pamięć podręczna
Zawartość usługi Azure App Service jest przechowywana w usłudze Azure Storage i jest trwale udostępniana jako współdzielona zawartość. Jednak niektóre aplikacje potrzebują tylko magazynu zawartości o wysokiej wydajności, którymi można zarządzać z wysoką dostępnością. Te aplikacje mogą korzystać z lokalnej pamięci podręcznej. Aby uzyskać więcej informacji, zobacz Omówienie lokalnej pamięci podręcznej usługi Azure App Service.
Uwaga
Lokalna pamięć podręczna nie jest zalecana w przypadku witryn zarządzania zawartością, takich jak WordPress.
Aby zapobiec przestojom, zawsze używaj lokalnej pamięci podręcznej wraz ze slotami wdrożeniowymi. Aby uzyskać informacje na temat używania tych funkcji razem, zobacz Najlepsze rozwiązania.
Wysokie obciążenie procesora lub pamięci
Jeśli plan usługi App Service korzysta z ponad 90% dostępnego procesora CPU lub pamięci, podstawowa maszyna wirtualna może mieć problemy z przetwarzaniem wdrożenia. W takiej sytuacji tymczasowo zwiększ liczbę wystąpień, aby wykonać wdrożenie. Po zakończeniu wdrażania można zwrócić liczbę wystąpień do poprzedniej wartości.
Aby uzyskać więcej informacji, odwiedź Diagnostykę usługi App Service, aby poznać konkretne zalecenia i najlepsze praktyki dotyczące danego zasobu.
Przejdź do aplikacji internetowej w witrynie Azure Portal.
Wybierz pozycję Diagnozuj i rozwiąż problemy w obszarze nawigacji po lewej stronie, co spowoduje otwarcie diagnostyki usługi App Service.
Wybierz pozycję Dostępność i wydajność lub zapoznaj się z innymi opcjami, takimi jak Analiza wysokiego użycia procesora CPU.
Wyświetl bieżący stan aplikacji w odniesieniu do tych najlepszych rozwiązań.
Możesz również użyć tego linku, aby bezpośrednio otworzyć diagnostykę usługi App Service dla zasobu: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot
.