Wdrażanie usługi Azure Container Apps z Azure Pipelines
Usługa Azure Container Apps umożliwia publikowanie poprawek w aplikacji kontenera przy użyciu usługi Azure Pipelines. Gdy zatwierdzenia są wypychane do repozytorium usługi Azure DevOps, potok jest wyzwalany, który aktualizuje obraz kontenera w rejestrze kontenerów. Usługa Azure Container Apps tworzy nową poprawkę na podstawie zaktualizowanego obrazu kontenera.
Zatwierdzenia w określonej gałęzi w repozytorium wyzwalają potok. Podczas tworzenia potoku decydujesz, która gałąź jest wyzwalaczem.
Zadanie Usługi Azure Pipelines dla usługi Container Apps
Zadanie obsługuje następujące scenariusze:
- Kompilowanie z pliku Dockerfile i wdrażanie w usłudze Container Apps
- Kompiluj z kodu źródłowego bez pliku Dockerfile i wdrażaj je w usłudze Container Apps. Obsługiwane języki to .NET, Java, Node.js, PHP i Python
- Wdrażanie istniejącego obrazu kontenera w usłudze Container Apps
W wersji produkcyjnej to zadanie jest dostarczane z usługą Azure DevOps i nie wymaga już jawnej instalacji. Aby uzyskać pełną dokumentację, zobacz AzureContainerApps@1 — Azure Container Apps Deploy v1 task (Wdrażanie usługi Azure Container Apps w wersji 1).
Przykłady użycia
Poniżej przedstawiono kilka typowych scenariuszy użycia zadania. Aby uzyskać więcej informacji, zobacz dokumentację zadania.
Kompilowanie i wdrażanie w usłudze Container Apps
Poniższy fragment kodu pokazuje, jak utworzyć obraz kontenera z kodu źródłowego i wdrożyć go w usłudze Container Apps.
steps:
- task: AzureContainerApps@1
inputs:
appSourcePath: '$(Build.SourcesDirectory)/src'
azureSubscription: 'my-subscription-service-connection'
acrName: 'myregistry'
containerAppName: 'my-container-app'
resourceGroup: 'my-container-app-rg'
Zadanie używa pliku Dockerfile w pliku , appSourcePath
aby skompilować obraz kontenera. Jeśli nie zostanie znaleziony plik Dockerfile, zadanie podejmie próbę skompilowania obrazu kontenera z kodu źródłowego w pliku appSourcePath
.
Wdrażanie istniejącego obrazu kontenera w usłudze Container Apps
Poniższy fragment kodu przedstawia sposób wdrażania istniejącego obrazu kontenera w usłudze Container Apps. Zadanie uwierzytelnia się w rejestrze przy użyciu połączenia z usługą. Jeśli tożsamość połączenia usługi nie jest przypisana AcrPush
do roli rejestru, podaj poświadczenia administratora rejestru przy użyciu acrUsername
parametrów wejściowych i acrPassword
.
steps:
- task: AzureContainerApps@1
inputs:
azureSubscription: 'my-subscription-service-connection'
containerAppName: 'my-container-app'
resourceGroup: 'my-container-app-rg'
imageToDeploy: 'myregistry.azurecr.io/my-container-app:$(Build.BuildId)'
Ważne
Jeśli tworzysz obraz kontenera w osobnym kroku, upewnij się, że używasz unikatowego tagu, takiego jak identyfikator kompilacji, zamiast stabilnego tagu, takiego jak latest
. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące tagów obrazów.
Uwierzytelnianie za pomocą usługi Azure Container Registry
Zadanie Azure Container Apps musi uwierzytelnić się w usłudze Azure Container Registry, aby wypchnąć obraz kontenera. Aplikacja kontenera musi również uwierzytelniać się w usłudze Azure Container Registry, aby ściągnąć obraz kontenera.
Aby wypchnąć obrazy, zadanie automatycznie uwierzytelnia się w rejestrze kontenerów określonym w acrName
programie przy użyciu połączenia z usługą podanego w pliku azureSubscription
. Jeśli tożsamość połączenia z usługą AcrPush
nie jest przypisana do roli rejestru, podaj poświadczenia administratora rejestru przy użyciu poleceń acrUsername
i acrPassword
.
Aby ściągnąć obrazy, usługa Azure Container Apps używa tożsamości zarządzanej (zalecane) lub poświadczeń administratora do uwierzytelniania w usłudze Azure Container Registry. Aby korzystać z tożsamości zarządzanej, docelowa aplikacja kontenera dla zadania musi być skonfigurowana do używania tożsamości zarządzanej. Aby uwierzytelnić się przy użyciu poświadczeń administratora rejestru, ustaw dane wejściowe i acrPassword
zadania acrUsername
podrzędnego.
Konfigurowanie
Wykonaj następujące kroki, aby skonfigurować potok usługi Azure DevOps do wdrożenia w usłudze Azure Container Apps.
- Tworzenie repozytorium usługi Azure DevOps dla aplikacji
- Tworzenie aplikacji kontenera z włączoną tożsamością zarządzaną
AcrPull
Przypisywanie roli usługi Azure Container Registry do tożsamości zarządzanej aplikacji kontenera- Instalowanie zadania usługi Azure Container Apps z witryny Azure DevOps Marketplace
- Konfigurowanie połączenia usługi Azure DevOps dla subskrypcji platformy Azure
- Tworzenie potoku usługi Azure DevOps
Wymagania wstępne
Wymaganie | Instrukcje |
---|---|
Konto platformy Azure | Jeśli go nie masz, utwórz bezpłatne konto. Aby kontynuować, musisz mieć uprawnienie Współautor lub Właściciel w subskrypcji platformy Azure. Aby uzyskać szczegółowe informacje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal . |
Projekt usługi Azure DevOps | Przejdź do usługi Azure DevOps i wybierz pozycję Rozpocznij bezpłatnie. Następnie utwórz nowy projekt. |
Interfejs wiersza polecenia platformy Azure | Zainstaluj interfejs wiersza polecenia platformy Azure. |
Tworzenie repozytorium usługi Azure DevOps i klonowanie kodu źródłowego
Przed utworzeniem potoku kod źródłowy aplikacji musi znajdować się w repozytorium.
Zaloguj się do usługi Azure DevOps i przejdź do projektu.
Otwórz stronę Repozytoria.
Na górnym pasku nawigacyjnym wybierz listę rozwijaną repozytoria i wybierz pozycję Importuj repozytorium.
Wprowadź następujące informacje i wybierz pozycję Importuj:
Pole Wartość Typ repozytorium Usługa Git Klonowanie adresu URL https://github.com/Azure-Samples/containerapps-albumapi-csharp.git
Nazwa/nazwisko my-container-app
Wybierz pozycję Klonuj , aby wyświetlić adres URL repozytorium i skopiować go.
Otwórz terminal i uruchom następujące polecenie:
git clone <REPOSITORY_URL> my-container-app
Zastąp skopiowany
<REPOSITORY_URL>
adres URL.
Tworzenie aplikacji kontenera i konfigurowanie tożsamości zarządzanej
Utwórz aplikację kontenera az containerapp up
przy użyciu polecenia , wykonując następujące kroki. To polecenie tworzy zasoby platformy Azure, kompiluje obraz kontenera, przechowuje obraz w rejestrze i wdraża go w aplikacji kontenera.
Po utworzeniu aplikacji możesz dodać tożsamość zarządzaną do aplikacji i przypisać tożsamość AcrPull
roli, aby umożliwić tożsamości ściąganie obrazów z rejestru.
Przejdź do folderu src sklonowanego repozytorium.
cd my-container-app cd src
Utwórz zasoby platformy Azure i wdróż aplikację kontenera za
az containerapp up
pomocą polecenia .az containerapp up \ --name my-container-app \ --source . \ --ingress external
W danych wyjściowych polecenia zanotuj nazwę usługi Azure Container Registry.
Pobierz pełny identyfikator zasobu rejestru kontenerów.
az acr show --name <ACR_NAME> --query id --output tsv
Zastąp ciąg
<ACR_NAME>
nazwą rejestru.Włącz tożsamość zarządzaną dla aplikacji kontenera.
az containerapp identity assign \ --name my-container-app \ --resource-group my-container-app-rg \ --system-assigned
Zanotuj identyfikator podmiotu zabezpieczeń tożsamości zarządzanej w danych wyjściowych polecenia.
AcrPull
Przypisz rolę usługi Azure Container Registry do tożsamości zarządzanej aplikacji kontenera.az role assignment create \ --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \ --role AcrPull \ --scope <ACR_RESOURCE_ID>
Zastąp
<MANAGED_IDENTITY_PRINCIPAL_ID>
element identyfikatorem podmiotu zabezpieczeń tożsamości zarządzanej i<ACR_RESOURCE_ID>
identyfikatorem zasobu usługi Azure Container Registry.Skonfiguruj aplikację kontenera, aby używała tożsamości zarządzanej do ściągania obrazów z usługi Azure Container Registry.
az containerapp registry set \ --name my-container-app \ --resource-group my-container-app-rg \ --server <ACR_NAME>.azurecr.io \ --identity system
Zastąp
<ACR_NAME>
ciąg nazwą usługi Azure Container Registry.
Tworzenie połączenia usługi Azure DevOps
Aby wdrożyć usługę Azure Container Apps, musisz utworzyć połączenie usługi Azure DevOps dla subskrypcji platformy Azure.
W Azure DevOps wybierz pozycję Ustawienia projektu.
Wybierz pozycję Połączenia z usługą.
Wybierz pozycję Nowe połączenie z usługą.
Wybierz pozycję Azure Resource Manager.
Wybierz pozycję Jednostka usługi (automatyczna) i wybierz pozycję Dalej.
Wprowadź następujące informacje i wybierz pozycję Zapisz:
Pole Wartość Subskrypcja Wybierz subskrypcję platformy Azure. Grupa zasobów: Wybierz grupę zasobów ( my-container-app-rg
), która zawiera aplikację kontenera i rejestr kontenerów.Nazwa połączenia z usługą my-subscription-service-connection
Aby dowiedzieć się więcej o połączeniach z usługami, zobacz Nawiązywanie połączenia z platformą Microsoft Azure.
Tworzenie potoku YAML usługi Azure DevOps
W projekcie usługi Azure DevOps wybierz pozycję Potoki.
Wybierz pozycję Nowy potok.
Wybierz pozycję Azure Repos Git.
Wybierz repozytorium zawierające kod źródłowy (
my-container-app
).Wybierz pozycję Potok startowy.
W edytorze zastąp zawartość pliku następującym kodem YAML:
trigger: branches: include: - main pool: vmImage: ubuntu-latest steps: - task: AzureContainerApps@1 inputs: appSourcePath: '$(Build.SourcesDirectory)/src' azureSubscription: '<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>' acrName: '<ACR_NAME>' containerAppName: 'my-container-app' resourceGroup: 'my-container-app-rg'
Zastąp
<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>
ciąg nazwą połączenia usługi Azure DevOps (my-subscription-service-connection
) utworzonego w poprzednim kroku i<ACR_NAME>
nazwą usługi Azure Container Registry.Wybierz pozycję Zapisz i uruchom.
Uruchomienie usługi Azure Pipelines rozpoczyna tworzenie i wdrażanie aplikacji kontenera. Aby sprawdzić postęp, przejdź do pozycji Potoki i wybierz przebieg. Podczas pierwszego uruchomienia potoku może zostać wyświetlony monit o autoryzację potoku do korzystania z połączenia z usługą.
Aby wdrożyć nową wersję aplikacji, wypchnij nowe zatwierdzenie do gałęzi głównej.