Udostępnij za pośrednictwem


Kompilowanie i publikowanie obrazów platformy Docker w usłudze Azure Container Registry

Azure DevOps Services | Azure DevOps Server 2022

Za pomocą usługi Azure Pipelines można skonfigurować przepływ pracy potoku w celu kompilowania i publikowania obrazów platformy Docker w usłudze Azure Container Registry. Z tego artykułu dowiesz się, jak wykonywać następujące działania:

  • Tworzenie rejestru Azure Container Registry
  • Konfigurowanie własnego agenta na maszynie wirtualnej platformy Azure
  • Konfigurowanie tożsamości usługi zarządzanej
  • Tworzenie połączenia usługi Rejestru platformy Docker
  • Kompilowanie i publikowanie obrazu w usłudze Azure Container Registry

Wymagania wstępne

Uzyskiwanie kodu

Rozwidlenie lub sklonowanie przykładowej aplikacji, aby wykonać czynności opisane w tym samouczku.

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Tworzenie rejestru Azure Container Registry

  1. Przejdź do witryny Azure Portal.

  2. Wybierz pozycję Utwórz zasób z panelu nawigacji po lewej stronie, a następnie wybierz pozycję Kontenery, a następnie pozycję Container Registry.

  3. Wybierz swoją subskrypcję, a następnie wybierz grupę zasobów lub utwórz nową.

  4. Wprowadź nazwę rejestru dla rejestru kontenerów. Nazwa rejestru musi być unikatowa na platformie Azure i musi zawierać co najmniej 5 znaków.

  5. Wybierz preferowaną lokalizację i jednostkę SKU , a następnie wybierz pozycję Przejrzyj i utwórz.

  6. Przejrzyj ustawienia, a następnie wybierz pozycję Utwórz po zakończeniu.

Konfigurowanie maszyny wirtualnej własnego agenta

Aby używać tożsamości usługi zarządzanej z usługą Azure Pipelines do publikowania obrazów platformy Docker w usłudze Azure Container Registry, musimy skonfigurować własnego agenta na maszynie wirtualnej platformy Azure.

Tworzenie maszyny wirtualnej

  1. Przejdź do witryny Azure Portal.

  2. Wybierz pozycję Utwórz zasób z panelu nawigacji po lewej stronie, a następnie wybierz pozycję Maszyna wirtualna -> Utwórz.

  3. Wybierz subskrypcję, a następnie wybierz grupę zasobów użytą do utworzenia rejestru kontenerów.

  4. Nadaj maszynie wirtualnej nazwę i wybierz pozycję Obraz.

  5. Wprowadź nazwę użytkownika i hasło, a następnie wybierz pozycję Przejrzyj i utwórz.

  6. Przejrzyj ustawienia, a następnie wybierz pozycję Utwórz po zakończeniu.

  7. Gdy wdrożenie zostanie ukończone, wybierz pozycję Przejdź do zasobu.

Tworzenie puli agentów

  1. W projekcie usługi Azure DevOps wybierz ikonę ikona koła zębatego koła zębatego, aby przejść do ustawień projektu.

  2. Wybierz pozycję Pule agentów, a następnie wybierz pozycję Dodaj pulę.

  3. Wybierz pozycję Nowy, a następnie wybierz pozycję Self-hosted z menu rozwijanego Typ puli.

  4. Nadaj puli nazwę, a następnie zaznacz pole wyboru Udziel uprawnień dostępu do wszystkich potoków .

  5. Po zakończeniu wybierz pozycję Utwórz .

  6. Teraz wybierz utworzoną pulę, a następnie wybierz pozycję Nowy agent.

  7. Użyjemy instrukcji w tym oknie, aby skonfigurować agenta na utworzonej wcześniej maszynie wirtualnej. Wybierz przycisk Kopiuj, aby skopiować link pobierania do schowka.

    Zrzut ekranu przedstawiający sposób konfigurowania agenta.

Tworzenie osobistego tokenu dostępu

  1. W projekcie usługi Azure DevOps wybierz pozycję Ustawienia użytkownika, a następnie wybierz pozycję Osobiste tokeny dostępu.

  2. Wybierz pozycję Nowy token, aby utworzyć nowy osobisty token dostępu.

  3. Wprowadź nazwę identyfikatora pat, a następnie wybierz datę wygaśnięcia.

  4. Wybierz pozycję Niestandardowe zdefiniowane w obszarze Zakresy, a następnie wybierz pozycję Pokaż wszystkie zakresy.

  5. Wybierz pozycję Pule agentów —> odczyt i zarządzaj nimi, a grupy wdrożeń —> odczyt i zarządzanie.

  6. Wybierz pozycję Utwórz po zakończeniu i zapisz swój identyfikator dostępu w bezpiecznej lokalizacji.

Konfigurowanie własnego agenta

  1. W witrynie Azure Portal nawiąż połączenie z maszyną wirtualną.

  2. W wierszu polecenia programu PowerShell z podwyższonym poziomem uprawnień uruchom następujące polecenie, aby pobrać agenta.

    Invoke-WebRequest -URI <YOUR_AGENT_DOWNLOAD_LINK> -UseBasicParsing  -OutFile <FILE_PATH> 
    ##Example: Invoke-WebRequest -URI https://vstsagentpackage.azureedge.net/agent/2.213.2/vsts-agent-win-x64-2.213.2.zip -OutFile C:\vsts-agent-win-x64-2.213.2.zip
    
  3. Uruchom następujące polecenie, aby wyodrębnić i utworzyć agenta.

    mkdir agent ; cd agent
    Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("<FILE_PATH>", "$PWD")
    
  4. Uruchom następujące polecenie, aby rozpocząć konfigurowanie agenta.

    .\config.cmd
    
  5. Wprowadź adres URL serwera po wyświetleniu monitu o podanie danych wejściowych. Przykład: https://dev.azure.com/fabrikamFiber

  6. Naciśnij Enter po wyświetleniu monitu o typ uwierzytelniania, aby wybrać uwierzytelnianie przy użyciu tokenu pat .

  7. Wklej utworzony wcześniej osobisty token dostępu, a następnie naciśnij Enter.

  8. Wprowadź nazwę puli agentów, a następnie wprowadź nazwę agenta.

  9. Pozostaw wartość domyślną folderu roboczego, a następnie wprowadź wartość Y , jeśli chcesz uruchomić agenta jako usługę.

    Zrzut ekranu przedstawiający sposób konfigurowania agenta na maszynie wirtualnej platformy Azure.

  10. Teraz, gdy agent jest gotowy do rozpoczęcia nasłuchiwania zadań, zainstalujmy platformę Docker na naszej maszynie wirtualnej. Uruchom następujące polecenie, aby pobrać platformę Docker.

    Invoke-WebRequest -URI https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe -OutFile <DOWNLOAD_PATH>
    
  11. Przejdź do ścieżki pobierania, a następnie uruchom następujące polecenie, aby zainstalować i uruchomić platformę Docker.

    Start-Process 'Docker%20Desktop%20Installer.exe' -Wait install
    
  12. Teraz wróć do folderu agenta i uruchom plik cmd, aby uruchomić agenta na maszynie wirtualnej platformy Azure.

    .\run.cmd
    
  13. Agent powinien być teraz wymieniony w puli agentów —> Agenci w portalu usługi Azure DevOps.

    Zrzut ekranu przedstawiający agenta dostępnego na karcie agenci.

Konfigurowanie tożsamości zarządzanej

  1. W witrynie Azure Portal przejdź do utworzonej wcześniej maszyny wirtualnej.

  2. Wybierz pozycję Tożsamość z panelu nawigacji po lewej stronie, a następnie włącz tożsamość przypisaną przez system.

  3. Po zakończeniu wybierz pozycję Zapisz , a następnie potwierdź wybór.

    Zrzut ekranu przedstawiający sposób włączania tożsamości przypisanej przez system.

  4. Wybierz pozycję Przypisania ról platformy Azure, a następnie wybierz pozycję Dodaj przypisanie roli.

  5. Wybierz pozycję Grupa zasobów z menu rozwijanego Zakres .

  6. Wybierz swoją subskrypcję i grupę zasobów, a następnie wybierz rolę AcrPush.

  7. Powtórz kroki 5 i 6, aby dodać rolę AcrPull .

    Zrzut ekranu przedstawiający sposób konfigurowania ról acrpull i wypychania.

Tworzenie połączenia usługi rejestru platformy Docker

  1. W projekcie usługi Azure DevOps wybierz ikonę ikona koła zębatego koła zębatego, aby przejść do ustawień projektu.

  2. Wybierz pozycję Połączenia z usługą w okienku po lewej stronie.

  3. Wybierz pozycję Nowe połączenie z usługą, a następnie wybierz pozycję Rejestr platformy Docker, a następnie pozycję Dalej.

  4. Wybierz pozycję Azure Container Registry, a następnie wybierz pozycję Tożsamość usługi zarządzanej jako typ uwierzytelniania.

  5. Wprowadź nazwę subskrypcji identyfikatora subskrypcji i serwer logowania rejestru kontenerów platformy Azure. Wklej identyfikator dzierżawy przypisanej przez system maszyny wirtualnej utworzony w poprzednim kroku w polu tekstowym Identyfikator dzierżawy.

  6. Wprowadź nazwę połączenia z usługą, a następnie zaznacz pole wyboru Udziel uprawnień dostępu do wszystkich potoków . Aby wybrać tę opcję, musisz mieć rolę administratora połączenia z usługą.

  7. Po zakończeniu wybierz pozycję Zapisz .

    Zrzut ekranu przedstawiający sposób konfigurowania tożsamości usługi rejestru platformy Docker.

Kompilowanie i publikowanie w usłudze Azure Container Registry

  1. W projekcie usługi Azure DevOps wybierz pozycję Potoki , a następnie wybierz pozycję Utwórz potok.

  2. Wybierz usługę hostująca kod źródłowy (Azure Repos, GitHub itp.).

  3. Wybierz repozytorium, a następnie wybierz pozycję Potok startowy.

  4. Usuń domyślny potok yaml i użyj następującego fragmentu kodu:

    trigger:
    - main
    
    variables:
      dockerRegistryServiceConnection: '<SERVICE_CONNECTION_NAME>'
      imageRepository: '<IMAGE_NAME>'
      dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
      tag: '$(Build.BuildId)'
    
    stages:
    - stage: Build
      displayName: Build and publish stage
      jobs:
      - job: Build
        displayName: Build job
        pool:
          name: '<YOUR_AGENT_POOL_NAME>'
        steps:
        - task: DockerInstaller@0
          inputs:
            dockerVersion: '17.09.0-ce'
    
        - task: Docker@2
          displayName: Build and publish image to Azure Container Registry
          inputs:
            command: buildAndPush
            containerRegistry: $(dockerRegistryServiceConnection)
            repository: $(imageRepository)
            dockerfile: $(dockerfilePath)
            tags: |
              $(tag)
    
  5. Po zakończeniu przebiegu potoku możesz zweryfikować obraz na platformie Azure. Przejdź do usługi Azure Container Registry w witrynie Azure Portal, a następnie wybierz pozycję Repozytoria.

    Zrzut ekranu przedstawiający obraz w witrynie Azure Portal.

Czyszczenie zasobów

Jeśli nie planujesz kontynuować korzystania z tej aplikacji, usuń grupę zasobów, aby uniknąć naliczania bieżących opłat.

az group delete --name myapp-rg