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
Konto usługi GitHub. zarejestruj się bezpłatnie, jeśli jeszcze go nie masz.
Organizacja usługi Azure DevOps.
Projekt usługi Azure DevOps.
Rola administratorów dla połączeń usług w projekcie usługi Azure DevOps.
Konto platformy Azure z aktywną subskrypcją. Zarejestruj się bezpłatnie , jeśli jeszcze go nie masz.
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
Przejdź do witryny Azure Portal.
Wybierz pozycję Utwórz zasób z panelu nawigacji po lewej stronie, a następnie wybierz pozycję Kontenery, a następnie pozycję Container Registry.
Wybierz swoją subskrypcję, a następnie wybierz grupę zasobów lub utwórz nową.
Wprowadź nazwę rejestru dla rejestru kontenerów. Nazwa rejestru musi być unikatowa na platformie Azure i musi zawierać co najmniej 5 znaków.
Wybierz preferowaną lokalizację i jednostkę SKU , a następnie wybierz pozycję Przejrzyj i utwórz.
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
Przejdź do witryny Azure Portal.
Wybierz pozycję Utwórz zasób z panelu nawigacji po lewej stronie, a następnie wybierz pozycję Maszyna wirtualna -> Utwórz.
Wybierz subskrypcję, a następnie wybierz grupę zasobów użytą do utworzenia rejestru kontenerów.
Nadaj maszynie wirtualnej nazwę i wybierz pozycję Obraz.
Wprowadź nazwę użytkownika i hasło, a następnie wybierz pozycję Przejrzyj i utwórz.
Przejrzyj ustawienia, a następnie wybierz pozycję Utwórz po zakończeniu.
Gdy wdrożenie zostanie ukończone, wybierz pozycję Przejdź do zasobu.
Tworzenie puli agentów
W projekcie usługi Azure DevOps wybierz ikonę koła zębatego, aby przejść do ustawień projektu.
Wybierz pozycję Pule agentów, a następnie wybierz pozycję Dodaj pulę.
Wybierz pozycję Nowy, a następnie wybierz pozycję Self-hosted z menu rozwijanego Typ puli.
Nadaj puli nazwę, a następnie zaznacz pole wyboru Udziel uprawnień dostępu do wszystkich potoków .
Po zakończeniu wybierz pozycję Utwórz .
Teraz wybierz utworzoną pulę, a następnie wybierz pozycję Nowy agent.
Użyjemy instrukcji w tym oknie, aby skonfigurować agenta na utworzonej wcześniej maszynie wirtualnej. Wybierz przycisk Kopiuj, aby skopiować link pobierania do schowka.
Tworzenie osobistego tokenu dostępu
W projekcie usługi Azure DevOps wybierz pozycję Ustawienia użytkownika, a następnie wybierz pozycję Osobiste tokeny dostępu.
Wybierz pozycję Nowy token, aby utworzyć nowy osobisty token dostępu.
Wprowadź nazwę identyfikatora pat, a następnie wybierz datę wygaśnięcia.
Wybierz pozycję Niestandardowe zdefiniowane w obszarze Zakresy, a następnie wybierz pozycję Pokaż wszystkie zakresy.
Wybierz pozycję Pule agentów —> odczyt i zarządzaj nimi, a grupy wdrożeń —> odczyt i zarządzanie.
Wybierz pozycję Utwórz po zakończeniu i zapisz swój identyfikator dostępu w bezpiecznej lokalizacji.
Konfigurowanie własnego agenta
W witrynie Azure Portal nawiąż połączenie z maszyną wirtualną.
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
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")
Uruchom następujące polecenie, aby rozpocząć konfigurowanie agenta.
.\config.cmd
Wprowadź adres URL serwera po wyświetleniu monitu o podanie danych wejściowych. Przykład: https://dev.azure.com/fabrikamFiber
Naciśnij Enter po wyświetleniu monitu o typ uwierzytelniania, aby wybrać uwierzytelnianie przy użyciu tokenu pat .
Wklej utworzony wcześniej osobisty token dostępu, a następnie naciśnij Enter.
Wprowadź nazwę puli agentów, a następnie wprowadź nazwę agenta.
Pozostaw wartość domyślną folderu roboczego, a następnie wprowadź wartość Y , jeśli chcesz uruchomić agenta jako usługę.
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>
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
Teraz wróć do folderu agenta i uruchom plik cmd, aby uruchomić agenta na maszynie wirtualnej platformy Azure.
.\run.cmd
Agent powinien być teraz wymieniony w puli agentów —> Agenci w portalu usługi Azure DevOps.
Konfigurowanie tożsamości zarządzanej
W witrynie Azure Portal przejdź do utworzonej wcześniej maszyny wirtualnej.
Wybierz pozycję Tożsamość z panelu nawigacji po lewej stronie, a następnie włącz tożsamość przypisaną przez system.
Po zakończeniu wybierz pozycję Zapisz , a następnie potwierdź wybór.
Wybierz pozycję Przypisania ról platformy Azure, a następnie wybierz pozycję Dodaj przypisanie roli.
Wybierz pozycję Grupa zasobów z menu rozwijanego Zakres .
Wybierz swoją subskrypcję i grupę zasobów, a następnie wybierz rolę AcrPush.
Powtórz kroki 5 i 6, aby dodać rolę AcrPull .
Tworzenie połączenia usługi rejestru platformy Docker
W projekcie usługi Azure DevOps wybierz ikonę koła zębatego, aby przejść do ustawień projektu.
Wybierz pozycję Połączenia z usługą w okienku po lewej stronie.
Wybierz pozycję Nowe połączenie z usługą, a następnie wybierz pozycję Rejestr platformy Docker, a następnie pozycję Dalej.
Wybierz pozycję Azure Container Registry, a następnie wybierz pozycję Tożsamość usługi zarządzanej jako typ uwierzytelniania.
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.
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ą.
Po zakończeniu wybierz pozycję Zapisz .
Kompilowanie i publikowanie w usłudze Azure Container Registry
W projekcie usługi Azure DevOps wybierz pozycję Potoki , a następnie wybierz pozycję Utwórz potok.
Wybierz usługę hostująca kod źródłowy (Azure Repos, GitHub itp.).
Wybierz repozytorium, a następnie wybierz pozycję Potok startowy.
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)
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.
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