Bagikan melalui


Mengonfigurasi jaringan Kumpulan Terkelola DevOps

Anda dapat mengonfigurasi agen Kumpulan DevOps Terkelola untuk dijalankan di jaringan virtual yang terisolasi atau di jaringan virtual yang ada. Artikel ini menjelaskan cara mengonfigurasi kumpulan Anda untuk menjalankan agen di jaringan virtual Anda.

Pilih jenis jaringan Anda

Kumpulan DevOps Terkelola mendukung dua jenis konfigurasi jaringan:

  • Jaringan virtual terisolasi: Setiap kumpulan mendapatkan jaringan virtual terisolasi sendiri yang dibuat dan dikelola oleh layanan Kumpulan DevOps Terkelola.
  • Agen yang disuntikkan ke jaringan virtual yang ada: Anda dapat membawa jaringan virtual dan subnet Anda sendiri. Semua komputer virtual yang dibuat untuk kumpulan akan menggunakan subnet tersebut, dan tidak ada sumber daya lain yang dapat menggunakan subnet. Anda mungkin ingin menambahkan agen dari Kumpulan DevOps Terkelola ke jaringan virtual Anda sendiri untuk skenario seperti:
    • Agen integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) Anda perlu mengakses sumber daya yang hanya tersedia di jaringan perusahaan Anda melalui layanan seperti Azure ExpressRoute.
    • Agen CI/CD Anda perlu mengakses sumber daya yang terisolasi ke titik akhir privat.
    • Anda ingin mengisolasi jaringan infrastruktur CI/CD Anda dengan membawa jaringan virtual Anda sendiri dengan aturan firewall khusus perusahaan.
    • Setiap kasus penggunaan unik lainnya yang tidak dapat dicapai oleh fitur jaringan Kumpulan DevOps yang dikelola secara bawaan.

Jaringan virtual terisolasi

Secara default, semua kumpulan menggunakan jaringan virtual yang disediakan Microsoft, yang membatasi semua lalu lintas masuk dan memiliki opsi konfigurasi lalu lintas keluar berikut.

  1. Konektivitas akses keluar default adalah default saat ini, yang memungkinkan semua lalu lintas keluar menggunakan alamat IP yang disediakan Microsoft. Akses keluar default untuk VM di Azure dijadwalkan akan dihentikan. Ketika akses keluar default dihentikan, kumpulan akan dikonfigurasi dengan satu alamat IP statis secara default.
  2. Alih-alih menggunakan akses keluar default, Anda dapat mengonfigurasi kumpulan Anda untuk menggunakan hingga 16 alamat IP keluar statis. Kumpulan DevOps Terkelola akan membuat gateway NAT di wilayah yang sama dengan kumpulan Anda untuk menyediakan alamat IP. Konfigurasi ini memungkinkan Anda mengizinkan daftar alamat IP tertentu pada layanan eksternal yang perlu diakses alur Anda.
    • Gateway NAT dikenakan biaya Azure tambahan. Anda dapat memodelkan berapa biayanya dengan menggunakan kalkulator biaya Azure. Untuk informasi selengkapnya, lihat Harga Azure NAT Gateway.

Penting

Jika Anda mengubah jumlah alamat IP statis setelah kumpulan dibuat, alamat IP dapat berubah, dan Anda harus mendapatkan alamat IP baru dan memperbarui daftar izin Anda pada layanan eksternal setelah operasi pembaruan selesai.

Untuk mengonfigurasi Pengaturan Alamat IP saat membuat kumpulan, buka tab Jaringan . Untuk memperbarui kumpulan yang ada, buka Pengaturan>Jaringan.

Pilih Tidak untuk Merutekan melalui alamat IP publik guna menggunakan akses keluar bawaan.

Pilih IP yang Disediakan Microsoft untuk mengonfigurasi alamat IP keluar statis dan menentukan jumlah alamat IP statis yang ingin Anda gunakan. Kumpulan DevOps Terkelola membuat gateway NAT untuk Anda dan mengelola alamat IP.

Cuplikan layar pengaturan alamat IP.

Nota

Ada masalah yang diketahui: jika kumpulan Anda dikonfigurasi dengan Identitas Terkelola, panggilan API tidak akan mengembalikan ipAddresses properti kecuali principal layanan DevOpsInfrastructure diberi peran Operator Identitas Terkelola pada identitas terkelola tersebut. Untuk langkah yang lebih detail, lihat Menetapkan peran Azure dengan menggunakan portal Azure.

Memberikan peran ini tidak diperlukan agar alamat IP statis berfungsi. Tanpa penetapan peran ini, Anda masih dapat menemukan alamat IP yang ditetapkan dengan melihatnya di halaman Jaringan di portal Microsoft Azure.

Agen yang dimasukkan ke dalam jaringan virtual yang sudah ada

Anda dapat mengonfigurasi agen kumpulan Anda untuk menggunakan jaringan virtual Anda dengan menggunakan langkah-langkah berikut:

  1. Buat atau bawa jaringan virtual dan subnet Anda.
  2. Delegasikan subnet ke Microsoft.DevOpsInfrastructure/pools.
  3. Kaitkan subnet dengan kumpulan Anda.

Langkah-langkah sebelumnya mendelegasikan subnet untuk akses eksklusif oleh kumpulan. Kumpulan atau sumber daya lain tidak dapat menggunakan subnet.

Kumpulan dapat menggunakan beberapa subnet untuk menyambungkan beberapa kumpulan ke jaringan virtual yang sama. Setiap subnet didelegasikan dan dikaitkan dengan kumpulannya sendiri.

Membuat atau membawa jaringan virtual dan subnet Anda

Subnet harus memiliki ruang alamat yang cukup untuk mengakomodasi ukuran maksimum kumpulan yang ingin Anda kaitkan (termasuk lima alamat IP yang dicadangkan Azure di subnet).

Jika Anda menggunakan ExpressRoute, Anda perlu mengizinkan penulisan dengan memperlonggar sementara atau mengubah kunci manajemen pada grup sumber daya.

Penting

Kumpulan dan jaringan virtual harus berada di wilayah yang sama. Jika tidak, Anda mendapatkan kesalahan yang mirip dengan yang berikut ini ketika Anda mencoba membuat pool atau memperbarui konfigurasi jaringan: "Jaringan virtual MDPVN berada di wilayah eastus, tetapi pool mdpnonprodsub berada di wilayah australiaeast. Ini harus berada di wilayah yang sama."

Memberikan akses Pembaca dan Kontributor Jaringan ke perwakilan layanan DevOpsInfrastructure

Pastikan bahwa DevOpsInfrastructure principal memiliki Reader akses dan Network Contributor akses di jaringan virtual.

Alih-alih menggunakan peran bawaan, Anda bisa membuat peran kustom yang memiliki izin berikut:

  • Microsoft.Network/virtualNetworks/*/read
  • Microsoft.Network/virtualNetworks/subnets/join/action
  • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/action
  • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/write
  • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/delete

Buat peran kustom untuk akses Tautan Asosiasi Layanan. Anda dapat membuat peran contoh di grup sumber daya atau tingkat langganan pada tab Kontrol Akses , seperti yang diperlihatkan dalam contoh berikut.

Cuplikan layar yang memperlihatkan izin peran kustom.

Periksa akses utama untuk DevOpsInfrastructure

  1. Pilih Kontrol akses (IAM) untuk jaringan virtual, lalu pilih Periksa akses.

    Cuplikan layar yang memperlihatkan izin jaringan virtual untuk delegasi subnet.

  2. Cari dan pilih DevOpsInfrastructure.

    Cuplikan layar yang memperlihatkan cara memilih prinsipal AzureDevOpsInfrastructure.

  3. Verifikasi bahwa Anda memiliki hak akses tingkat Pembaca. Verifikasi bahwa akses Microsoft.Network/virtualNetworks/subnets/join/action, Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/action, dan Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/write sudah ditetapkan. Peran kustom Anda akan muncul di sini.

    Cuplikan layar yang memperlihatkan izin jaringan virtual.

  4. Jika prinsipal DevOpsInfrastructure tidak memiliki izin tersebut, tambahkan izin tersebut. Pilih Kontrol akses (IAM) untuk jaringan virtual, lalu pilih Berikan akses ke sumber daya ini.

Mendelegasikan subnet ke Microsoft.DevOpsInfrastructure/pools

Di portal, buka properti Subnet dan pilih Microsoft.DevOpsInfrastructure/pools di bawah Delegasi Subnet. Pilih Simpan.

Cuplikan layar yang memperlihatkan cara mengonfigurasi delegasi subnet.

Proses ini mendelegasikan subnet untuk akses eksklusif untuk kumpulan. Kumpulan atau sumber daya lain tidak dapat menggunakan subnet. Untuk menyambungkan beberapa kumpulan ke jaringan virtual yang sama, Anda harus menggunakan beberapa subnet. Setiap subnet harus didelegasikan dan dikaitkan dengan kumpulannya sendiri. Anda dapat menemukan informasi selengkapnya tentang delegasi subnet dalam gambaran umum delegasi subnet ini.

Setelah Anda mendelegasikan subnet tersebut ke Microsoft.DevOpsInfrastructure/pools, Anda dapat memperbarui kumpulan sumber daya untuk menggunakan subnet tersebut.

Kaitkan subnet dengan kumpulan Anda

  1. Untuk membuat kumpulan baru, buka tab Jaringan. Untuk memperbarui kumpulan yang ada, buka Pengaturan>Jaringan, lalu pilih Agen yang disuntikkan ke jaringan> virtual yang adaKonfigurasikan.

    Cuplikan layar yang memperlihatkan opsi konfigurasi.

  2. Pilih nilai Langganan, Jaringan Virtual, dan Subnet yang Anda delegasikan ke Microsoft.DevOpsInfrastructure/pools, lalu pilih Ok.

    Tangkapan layar yang menunjukkan cara mengasosiasikan subnet ke kumpulan.

    Setelah pembaruan jaringan selesai, sumber daya yang baru dibuat di kumpulan akan menggunakan subnet yang didelegasikan.

Penting

Jangan letakkan kunci Hapus di jaringan virtual saat Anda memperbarui kumpulan Anda. Selama operasi pembaruan kumpulan, Kumpulan DevOps Terkelola membuat tautan asosiasi layanan di subnet. Jika pembaruan gagal, Kumpulan DevOps Terkelola mencoba membersihkan tautan asosiasi layanan, tetapi jika ada kunci Hapus , Anda mendapatkan InUseSubnetCannotBeDeleted kesalahan. Kumpulan DevOps Terkelola tidak dapat menghapus tautan asosiasi layanan, yang meninggalkan subnet dalam status terkunci (tidak dapat dihapus). Untuk mengatasi masalah ini, hapus kunci Hapus dan coba lagi operasi pembaruan.

Untuk informasi selengkapnya, lihat Hal-hal yang perlu dipertimbangkan sebelum Anda menerapkan kunci ke sumber daya Azure Anda.

Membatasi konektivitas keluar

Jika Anda memiliki sistem di jaringan Anda (misalnya, kelompok keamanan jaringan atau firewall) yang membatasi konektivitas keluar, Anda perlu menambahkan titik akhir tertentu ke daftar yang diizinkan untuk sepenuhnya mendukung Kumpulan DevOps Terkelola. Titik akhir ini dibagi menjadi titik akhir yang diperlukan secara global (diperlukan pada komputer apa pun menggunakan Kumpulan DevOps Terkelola) dan titik akhir yang Anda butuhkan untuk skenario tertentu. Semua titik akhir adalah HTTPS, kecuali dinyatakan lain.

Titik akhir yang diperlukan untuk memulai Kumpulan DevOps Terkelola

Jika Anda tidak menambahkan titik akhir ini ke daftar yang diizinkan, komputer gagal online sebagai bagian dari layanan Kumpulan DevOps Terkelola, dan Anda tidak dapat menjalankan alur pada kumpulan:

  • *.prod.manageddevops.microsoft.com: Titik akhir Kumpulan DevOps Terkelola yang digunakan untuk berkomunikasi dengan layanan Kumpulan DevOps Terkelola.
  • rmprodbuilds.azureedge.net: Digunakan untuk mengunduh biner pekerja Kumpulan DevOps Terkelola dan skrip startup. Bagian agen dari biner pekerja diunduh dari rm-agent.prod.manageddevops.microsoft.com (sebelumnya diunduh dari agent.prod.manageddevops.microsoft.com), sebagaimana telah dicakup oleh entri *.prod.manageddevops.microsoft.com yang diperlukan sebelumnya.
  • *.queue.core.windows.net: Antrian pekerja untuk berkomunikasi dengan layanan Managed DevOps Pools.

Titik akhir yang diperlukan untuk menyambungkan ke Azure DevOps

Jika Anda tidak menambahkan titik akhir ini ke daftar yang diizinkan, komputer mungkin online dan bahkan mungkin masuk ke status yang dialokasikan tetapi gagal berkomunikasi dengan Azure DevOps, karena agen tugas Azure DevOps Services tidak dapat tersambung atau tidak dapat memulai.

  • download.agent.dev.azure.com: Lokasi jaringan pengiriman konten (CDN) agen Azure DevOps, digunakan untuk mengunduh agen Azure DevOps (sebelumnya vstsagentpackage.azureedge.net; untuk informasi selengkapnya, lihat CDN Edgio untuk Azure DevOps sedang dihentikan).
  • dev.azure.com: Diperlukan untuk menangani komunikasi dengan Azure DevOps.

Titik akhir yang diperlukan untuk komputer Linux

Endpoint ini diperlukan untuk menyiapkan mesin Ubuntu, tetapi tidak diperlukan jika kumpulan hanya menjalankan sistem operasi Windows. Saat Anda menyiapkan agen tugas Azure DevOps, paket yang diperlukan ditambahkan dan apt-get perintah dijalankan. Proses ini gagal jika titik akhir berikut tidak ditambahkan ke daftar yang diizinkan.

  • azure.archive.ubuntu.com: Penyediaan mesin Linux. Titik akhir ini adalah HTTP (port 80), bukan HTTPS (port 443).
  • www.microsoft.com: Penyediaan mesin Linux.
  • security.ubuntu.com: Penyediaan mesin Linux.
  • packages.microsoft.com: Penyediaan mesin Linux.
  • ppa.launchpad.net: Menyediakan beberapa distribusi Linux tertentu.
  • dl.fedoraproject.org: Menyediakan distribusi Linux tertentu.

Titik akhir yang diperlukan untuk beberapa fitur Azure DevOps

Titik akhir opsional ini diperlukan agar fitur Azure DevOps tertentu berfungsi pada alur Anda. Dalam set berikut, wildcard dapat diganti dengan organisasi Azure DevOps tertentu yang menghosting alur Anda. Misalnya, jika organisasi Anda bernama contoso, Anda dapat menggunakan contoso.services.visualstudio.com alih-alih *.services.visualstudio.com.

  • *.services.visualstudio.com
  • *.vsblob.visualstudio.com: Digunakan untuk mengunggah dan mengkonsumsi artefak.
  • *.vssps.visualstudio.com: Digunakan untuk autentikasi dengan Azure DevOps untuk fitur tertentu.
  • *.visualstudio.com

Nota

Entri sebelumnya adalah domain minimum yang diperlukan. Jika Anda memiliki masalah, lihat daftar lengkap domain yang diperlukan di alamat IP dan URL domain yang diizinkan Azure DevOps.

Komputer virtual (VM) Azure mungkin merutekan lalu lintas ke fitur Azure tertentu melalui subnet Anda. Untuk permintaan ini, Anda dapat merutekan permintaan langsung melalui Azure, atau mengaktifkan akses melalui jaringan Anda.

  1. Konfigurasikan lalu lintas Azure untuk berjalan melalui titik akhir layanan:

    Anda dapat merutekan lalu lintas langsung melalui Azure untuk menghindari penambahan throughput ke grup keamanan jaringan atau firewall Anda. Anda tidak perlu menambahkan domain yang tercantum dalam opsi berikut ke daftar yang diizinkan.

    Misalnya, Anda dapat menggunakan fitur disk data untuk melibatkan panggilan jaringan ke Azure Storage. Saat Anda mengaktifkan titik akhir layanan Microsoft.Storage di jaringan Anda, lalu lintas dirutekan langsung melalui Azure, yang menghindari aturan jaringan Anda dan mengurangi beban.

  2. Untuk menghindari perutean lalu lintas melalui titik akhir layanan, tambahkan md-*.blob.storage.azure.net domain ke daftar yang diizinkan Anda. Domain ini diperlukan untuk mengonfigurasi disk data.

IP pengiriman CDN Akamai

Pada 1 Mei 2025, aset CDN Azure DevOps beralih ke solusi yang dilayani oleh Akamai dan Azure Front Door. Pastikan jaringan Anda memiliki akses keluar ke rentang IP Akamai. Untuk informasi selengkapnya, lihat:

Jika Anda mengonfigurasi alur Azure DevOps untuk berjalan di dalam kontainer, Anda juga perlu menambahkan sumber gambar kontainer (Docker atau Azure Container Registry) ke daftar yang diizinkan.

Memvalidasi konektivitas titik akhir

Konfirmasikan bahwa Anda dapat menggunakan subnet dengan Kumpulan DevOps Terkelola dengan menjalankan skrip berikut pada sumber daya pada subnet tersebut. Langkah ini akan membantu Anda memvalidasi bahwa alur jaringan dikonfigurasi untuk menjangkau semua titik akhir yang tersedia ini dan sarana kontrol DevOps Terkelola.

Penting

Anda harus menjalankan skrip ini pada sumber daya di subnet Anda (seperti VM atau kontainer) untuk memvalidasi bahwa jalur jaringan terbuka dari subnet tersebut ke titik akhir yang diperlukan.

Untuk menjalankan skrip dengan PowerShell Core, atau PowerShell 5 atau yang lebih baru, simpan skrip berikut sebagai ValidateMDPEndpoints.ps1. Jalankan perintah PowerShell berikut: .\ValidateMDPEndpoints.ps1 -organization "<your-organization>".

# ValidateMDPEndpoints.ps1
param (
    [string]$organization
)
$azureDevOpsUris = @(
    "https://dev.azure.com",
    "https://vssps.dev.azure.com",
    "https://vsrm.dev.azure.com",
    "https://management.azure.com",
    "https://login.microsoftonline.com",
    "https://graph.microsoft.com",
    "https://aadcdn.msftauth.net",
    "https://${organization}.visualstudio.com",
    "https://${organization}.vsrm.visualstudio.com",
    "https://${organization}.vstmr.visualstudio.com",
    "https://${organization}.pkgs.visualstudio.com",
    "https://${organization}.vssps.visualstudio.com",
    "https://download.agent.dev.azure.com",
    "download.agent.dev.azure.com"
)
$managedDevOpsPoolsControlPlaneUris = @(
    # List of agent queue endpoints - maps to *.queue.core.windows.net
    "https://rmprodaedefaultcq.queue.core.windows.net",
    "https://rmprodbrsdefaultcq.queue.core.windows.net",
    "https://rmprodcncdefaultcq.queue.core.windows.net",
    "https://rmprodcusdefaultcq.queue.core.windows.net",
    "https://rmprodeus2defaultcq.queue.core.windows.net",
    "https://rmprodgwcdefaultcq.queue.core.windows.net",
    "https://rmprodincdefaultcq.queue.core.windows.net",
    "https://rmprodneudefaultcq.queue.core.windows.net",
    "https://rmprodseadefaultcq.queue.core.windows.net",
    "https://rmprodszndefaultcq.queue.core.windows.net",
    "https://rmproduksdefaultcq.queue.core.windows.net",
    "https://rmprodwus3defaultcq.queue.core.windows.net",
    # CDN for downloading the Managed DevOps Pools agent - maps to *.prod.managedevops.microsoft.com
    "rm-agent.prod.manageddevops.microsoft.com"
    # List of control plane endpoints - maps to *.manageddevops.microsoft.com
    "default.ae.prod.manageddevops.microsoft.com",
    "default.brs.prod.manageddevops.microsoft.com",
    "default.cnc.prod.manageddevops.microsoft.com",
    "default.cus.prod.manageddevops.microsoft.com",
    "default.eus2.prod.manageddevops.microsoft.com",
    "default.gwc.prod.manageddevops.microsoft.com",
    "default.inc.prod.manageddevops.microsoft.com",
    "default.neu.prod.manageddevops.microsoft.com",
    "default.sea.prod.manageddevops.microsoft.com",
    "default.szn.prod.manageddevops.microsoft.com",
    "default.uks.prod.manageddevops.microsoft.com",
    "default.wus3.prod.manageddevops.microsoft.com"
)
$unreachableUris = @()
foreach ($uri in $azureDevOpsUris) {
    try {
        $hostName = ($uri -replace "^https?://", "") -replace "/.*", ""
        $connection = Test-NetConnection -ComputerName $hostName -Port 443 -WarningAction SilentlyContinue
        if (-not $connection.TcpTestSucceeded) {
            $unreachableUris += $uri
        }
    } catch {
        $unreachableUris += $uri
    }
}
if ($unreachableUris.Count -eq 0) {
    Write-Output "All Azure DevOps endpoints are reachable."
} else {
    Write-Output "The following Azure DevOps endpoints could not be reached:"
    $unreachableUris | ForEach-Object { Write-Output $_ }
}
foreach ($uri in $managedDevOpsPoolsControlPlaneUris) {
    try {
        $hostName = ($uri -replace "^https?://", "") -replace "/.*", ""
        $connection = Test-NetConnection -ComputerName $hostName -Port 443 -WarningAction SilentlyContinue

        if (-not $connection.TcpTestSucceeded) {
            $unreachableUris += $uri
        }
    } catch {
        $unreachableUris += $uri
    }
}
if ($unreachableUris.Count -eq 0) {
    Write-Output "All Azure Managed DevOps Pools endpoints are reachable."
} else {
    Write-Output "The following Managed DevOps Pools endpoints could not be reached:"
    $unreachableUris | ForEach-Object { Write-Output $_ }
}

Mengonfigurasi agen Azure DevOps untuk berjalan di belakang proksi

Jika Anda mengonfigurasi layanan proksi pada gambar Anda dan ingin beban kerja yang berjalan di kumpulan Anda berjalan di belakang proksi ini, Anda harus menambahkan variabel lingkungan berikut pada gambar Anda:

  • VSTS_AGENT_INPUT_PROXYURL: URL proksi yang dikonfigurasi untuk dijalankan di belakang.
  • VSTS_AGENT_INPUT_PROXYUSERNAME: Nama pengguna diperlukan untuk menggunakan proksi.
  • VSTS_AGENT_INPUT_PROXYPASSWORD: Kata sandi untuk menggunakan proksi.

Untuk Windows, variabel lingkungan ini harus berupa variabel lingkungan sistem. Untuk Linux, variabel ini harus ada dalam /etc/environment file. Jika Anda salah mengatur variabel sistem ini atau tanpa layanan proksi yang dikonfigurasi pada citra sistem, penyediaan agen baru gagal karena masalah konektivitas jaringan.

Jika Anda bermigrasi dari agen Azure Virtual Machine Scale Sets dan sudah menggunakan variabel lingkungan proksi pada gambar Anda, Anda tidak perlu membuat perubahan apa pun. Proses ini dijelaskan dalam agen Azure Virtual Machine Scale Set: Menyesuaikan konfigurasi agen alur.