Udostępnij za pośrednictwem


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.

  1. Zaloguj się do usługi Azure DevOps i przejdź do projektu.

  2. Otwórz stronę Repozytoria.

  3. Na górnym pasku nawigacyjnym wybierz listę rozwijaną repozytoria i wybierz pozycję Importuj repozytorium.

  4. 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
  5. Wybierz pozycję Klonuj , aby wyświetlić adres URL repozytorium i skopiować go.

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

  1. Przejdź do folderu src sklonowanego repozytorium.

    cd my-container-app
    cd src
    
  2. 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 
    
  3. W danych wyjściowych polecenia zanotuj nazwę usługi Azure Container Registry.

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

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

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

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

  1. W Azure DevOps wybierz pozycję Ustawienia projektu.

  2. Wybierz pozycję Połączenia z usługą.

  3. Wybierz pozycję Nowe połączenie z usługą.

  4. Wybierz pozycję Azure Resource Manager.

  5. Wybierz pozycję Jednostka usługi (automatyczna) i wybierz pozycję Dalej.

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

  1. W projekcie usługi Azure DevOps wybierz pozycję Potoki.

  2. Wybierz pozycję Nowy potok.

  3. Wybierz pozycję Azure Repos Git.

  4. Wybierz repozytorium zawierające kod źródłowy (my-container-app).

  5. Wybierz pozycję Potok startowy.

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

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