Aracılığıyla paylaş


Yönetilen DevOps Havuzları ağını yapılandırma

Yönetilen DevOps Havuzları aracılarını yalıtılmış bir sanal ağda veya mevcut bir sanal ağda çalışacak şekilde yapılandırabilirsiniz. Bu makalede, sanal ağınızda aracı çalıştırmak için havuzunuzun nasıl yapılandırıldığı açıklanır.

Ağ türünüzü seçin

Yönetilen DevOps Havuzları iki tür ağ yapılandırmasını destekler:

  • Yalıtılmış sanal ağ: Her havuz, Yönetilen DevOps Havuzları hizmeti tarafından oluşturulan ve yönetilen kendi yalıtılmış sanal ağına sahiptir.
  • Mevcut sanal ağa eklenen aracılar: Kendi sanal ağınızı ve alt ağınızı getirebilirsiniz. Havuz için oluşturulan tüm sanal makineler bu alt ağı kullanır ve alt ağı başka hiçbir kaynak kullanamaz. Aşağıdaki gibi senaryolar için Yönetilen DevOps Havuzları'ndan kendi sanal ağınıza aracılar eklemek isteyebilirsiniz:
    • Sürekli tümleştirme ve sürekli teslim (CI/CD) aracılarınızın yalnızca Azure ExpressRoute gibi bir hizmet aracılığıyla şirket ağınızda kullanılabilen kaynaklara erişmesi gerekir.
    • CI/CD aracılarınızın özel uç noktalara yalıtılmış kaynaklara erişmesi gerekir.
    • Şirkete özgü güvenlik duvarı kurallarıyla kendi sanal ağınızı getirerek CI/CD altyapınızı ağdan yalıtmak istiyorsunuz.
    • Kutudan çıktığı gibi Yönetilen DevOps Havuzları ağ özellikleriyle elde edilemeyen diğer benzersiz kullanım örnekleri.

Yalıtılmış sanal ağ

Varsayılan olarak, tüm havuzlar tüm gelen trafiği kısıtlayan ve aşağıdaki giden trafik yapılandırma seçeneklerine sahip olan Microsoft tarafından sağlanan bir sanal ağ kullanır.

  1. Varsayılan giden erişim bağlantısı, Microsoft tarafından sağlanan bir IP adresi kullanarak tüm giden trafiğe izin veren geçerli varsayılan bağlantıdır. Azure'daki VM'ler için varsayılan giden erişimin kaldırılması planlanmaktadır. Varsayılan giden erişim kullanımdan kaldırıldığında havuzlar varsayılan olarak bir statik IP adresiyle yapılandırılır.
  2. Varsayılan giden erişimi kullanmak yerine havuzunuzu en fazla 16 statik giden IP adresi kullanacak şekilde yapılandırabilirsiniz. Yönetilen DevOps Havuzları, IP adreslerini sağlamak için havuzunuzla aynı bölgede bir NAT ağ geçidi oluşturur. Bu yapılandırma, işlem hatlarınızın erişmesi gereken dış hizmetlerdeki belirli IP adreslerini listelemenizi sağlar.
    • NAT ağ geçidi ek Azure maliyetlerine neden olur. Azure maliyet hesaplayıcısını kullanarak maliyetin ne kadar olacağını modelleyebilirsiniz. Daha fazla bilgi için bkz. Azure NAT Gateway fiyatlandırması.

Önemli

Havuz oluşturulduktan sonra statik IP adresi sayısını değiştirirseniz, IP adresleri değiştirilebilir ve güncelleştirme işlemi tamamlandıktan sonra yeni IP adreslerini edinmeniz ve dış hizmetlerde izin verilenler listenizi güncelleştirmeniz gerekir.

Havuz oluştururken IP Adresi Ayarlarını yapılandırmak için sekmesine gidin. Mevcut havuzu güncelleştirmek için Ayarlar>Ağ'a gidin.

Varsayılan giden erişimi kullanmak için Genel IP adresleri üzerinden yönlendirme için Yok'u seçin.

Statik giden IP adreslerini yapılandırmak ve kullanmak istediğiniz statik IP adreslerinin sayısını belirtmek için Microsoft Tarafından Sağlanan IP'leri seçin. Yönetilen DevOps Havuzları sizin için bir NAT ağ geçidi oluşturur ve IP adreslerini yönetir.

IP adresi ayarlarının ekran görüntüsü.

Uyarı

Bilinen bir sorun var: Havuzunuz yönetilen kimlikle yapılandırıldıysa, Yönetilen kimlikte DevOpsInfrastructure hizmet sorumlusuna ipAddresses rolü atanmadığı sürece API çağrıları özelliği döndürmez. Ayrıntılı adımlar için bkz . Azure portalını kullanarak Azure rolleri atama.

Statik IP adreslerinin işlevsel olması için bu rolün verilmesi gerekli değildir. Bu rol ataması olmadan, atanan IP adreslerini Azure portalındaki sayfasında görüntüleyerek bulabilirsiniz.

Var olan sanal ağa yerleştirilen ajanlar

Aşağıdaki adımları kullanarak havuzunuzun aracılarını sanal ağınızı kullanacak şekilde yapılandırabilirsiniz:

  1. Sanal ağınızı ve alt ağınızı oluşturun veya getirin.
  2. Alt ağı devret Microsoft.DevOpsInfrastructure/pools.
  3. Alt ağı havuzunuzla ilişkilendirin.

Yukarıdaki adımlar, belirli bir alt ağı havuz tarafından özel erişim için ayırır. Diğer havuzlar veya kaynaklar alt ağı kullanamaz.

Bir havuz, birden çok havuzu aynı sanal ağa bağlamak için birden çok alt ağ kullanabilir. Her bir alt ağ yetkilendirilmiş olup, kendi havuzuyla ilişkilendirilmiştir.

Sanal ağınızı ve alt ağınızı oluşturma veya getirme

Alt ağın, ilişkilendirmek istediğiniz havuzun en büyük havuz boyutuna (Azure'ın alt ağda ayırmış olduğu beş IP adresi dahil) sığması için yeterli adres alanına sahip olması gerekir.

ExpressRoute kullanıyorsanız, kaynak grubundaki yönetim kilidini geçici olarak bırakarak veya değiştirerek yazma işlemlerine izin vermeniz gerekir.

Önemli

Havuz ve sanal ağ aynı bölgede olmalıdır. Aksi takdirde, havuzu oluşturmaya veya ağ yapılandırmasını güncelleştirmeye çalıştığınızda aşağıdakine benzer bir hata alırsınız: "Sanal ağ MDPVN eastus bölgesindedir, ancak mdpnonprodsub havuzu avustralyaeast bölgesindedir. Bunlar aynı bölgede olmalıdır."

DevOpsInfrastructure hizmet sorumlusuna Okuyucu ve Ağ Katkıda Bulunanı erişimi verme

DevOpsInfrastructure sorumlusunun sanal ağ üzerinde Reader ve Network Contributor erişime sahip olduğundan emin olun.

Yerleşik rolleri kullanmak yerine, aşağıdaki izinlere sahip özel bir rol oluşturabilirsiniz:

  • 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

Hizmet İlişkilendirme bağlantısı erişimi için özel bir rol oluşturun. Aşağıdaki örnekte gösterildiği gibi , Erişim Denetimi sekmesinde kaynak grubu veya abonelik düzeyinde örnek bir rol oluşturabilirsiniz.

Özel rol izinlerini gösteren ekran görüntüsü.

DevOpsInfrastructure için asıl erişimi denetleyin

  1. Sanal ağ için Erişim denetimi (IAM) öğesini ve ardından Erişimi denetle'yi seçin.

    Alt ağ temsilcisi için sanal ağ izinlerini gösteren ekran görüntüsü.

  2. DevOpsInfrastructure öğesini arayın ve seçin.

    AzureDevOpsInfrastructure sorumlusunun nasıl seçildiğini gösteren ekran görüntüsü.

  3. Okuyucu düzeyinde erişiminiz olduğunu doğrulayın. Microsoft.Network/virtualNetworks/subnets/join/action, Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/action ve Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/write erişiminin atandığını doğrulayın. Özel rolünüz burada görünmelidir.

    Sanal ağ izinlerini gösteren ekran görüntüsü.

  4. DevOpsInfrastructure sorumlusu bu izinlere sahip değilse, bunları ekleyin. Sanal ağ için Erişim denetimi (IAM) öğesini ve ardından Bu kaynağa erişimi ver seçin.

Alt ağı Microsoft.DevOpsInfrastructure/pools'a devretme

Portalda Alt ağ özellikleri'ni açın ve Microsoft.DevOpsInfrastructure/pools altında öğesini seçin. Kaydetseçeneğini seçin.

Alt ağ temsilcisinin nasıl yapılandırıldığını gösteren ekran görüntüsü.

Bu işlem, alt ağı havuza özel kullanım erişimi için tahsis eder. Diğer havuzlar veya kaynaklar alt ağı kullanamaz. Aynı sanal ağa birden çok havuz bağlamak için birden çok alt ağ kullanmanız gerekir. Her alt ağın delege edilmesi ve kendi havuzuyla ilişkilendirilmesi gerekir. Alt ağ temsilcisine genel bakış bölümünde alt ağ temsilcisi hakkında daha fazla bilgi bulabilirsiniz.

Alt ağı Microsoft.DevOpsInfrastructure/pools için yetki verdikten sonra, bu alt ağı kullanmak için havuzu güncelleyebilirsiniz.

Alt ağı havuzunuzla ilişkilendirme

  1. Yeni havuz oluşturmak için sekmesine gidin. Mevcut havuzu güncelleştirmek için Ayarlar>Ağ'a gidin ve mevcut sanal ağa> eklenen AracılarYapılandır'ı seçin.

    Yapılandırma seçeneğini gösteren ekran görüntüsü.

  2. Abonelik, Sanal Ağ ve Alt ağ değerlerini, Microsoft.DevOpsInfrastructure/pools için yetkilendirdiğiniz değerlere göre seçin ve ardından Tamam'ı seçin.

    Alt ağın havuzla nasıl ilişkilendirildiğini gösteren ekran görüntüsü.

    Ağ güncelleştirmesi tamamlandıktan sonra havuzda yeni oluşturulan kaynak, devredilen alt ağı kullanacaktır.

Önemli

Havuzlarınızı güncellerken sanal ağa Sil kilidi koymayın. Bir havuz güncelleştirme işlemi sırasında Yönetilen DevOps Havuzları alt ağda bir hizmet ilişkilendirme bağlantısı oluşturur. Güncelleştirme başarısız olursa, Yönetilen DevOps Havuzları hizmet ilişkilendirme bağlantısını temizlemeye çalışır, ancak Silme kilidi varsa bir InUseSubnetCannotBeDeleted hata alırsınız. Yönetilen DevOps Havuzları, hizmet ilişkilendirme bağlantısını silemez ve bu da alt ağı kilitli durumda (silinemiyor) bırakır. Sorunu çözmek için Silme kilidini kaldırın ve güncelleştirme işlemini yeniden deneyin.

Daha fazla bilgi için bkz . Azure kaynaklarınıza kilit uygulamadan önce göz önünde bulundurmanız gerekenler.

Giden bağlantıyı kısıtlama

Ağınızda giden bağlantıyı kısıtlayan sistemleriniz (örneğin, ağ güvenlik grupları veya güvenlik duvarları) varsa, Yönetilen DevOps Havuzlarını tam olarak desteklemek için izin verilenler listesine belirli uç noktaları eklemeniz gerekir. Bu uç noktalar, genel olarak gerekli uç noktalara (Yönetilen DevOps Havuzları kullanan tüm makinelerde gereklidir) ve belirli senaryolar için ihtiyacınız olan uç noktalara ayrılır. Aksi belirtilmediği sürece tüm uç noktalar HTTPS'dir.

Yönetilen DevOps Havuzlarını başlatmak için gerekli uç noktalar

Bu uç noktaları izin verilenler listesine eklemezseniz, makineler Yönetilen DevOps Havuzları hizmetinin bir parçası olarak çevrimiçi olamaz ve havuzda işlem hatlarını çalıştıramazsınız:

  • *.prod.manageddevops.microsoft.com: Yönetilen DevOps Havuzları hizmetiyle iletişim kurmak için kullanılan Yönetilen DevOps Havuzları uç noktası.
  • rmprodbuilds.azureedge.net: Yönetilen DevOps Havuzları çalışan ikili dosyalarını ve başlangıç betiklerini indirmek için kullanılır. Çalışan ikili dosyaların aracı bölümü, önce rm-agent.prod.manageddevops.microsoft.com olarak bilinen ve şimdi agent.prod.manageddevops.microsoft.com üzerinden indirilen, önceki gerekli *.prod.manageddevops.microsoft.com girişine dahil edilmiştir.
  • *.queue.core.windows.net: Yönetilen DevOps Havuzları hizmetiyle iletişim kurmak için çalışan kuyruğu.

Azure DevOps'a bağlanmak için gerekli uç noktalar

Bu uç noktaları izin verilenler listesine eklemezseniz makineler çevrimiçi olabilir ve ayrılmış duruma bile gidebilir, ancak Azure DevOps ile iletişim kuramayabilir çünkü Azure DevOps Services görev aracısı bağlanamaz veya başlatılamaz.

  • download.agent.dev.azure.com: Azure DevOps aracısını indirmek için kullanılan Azure DevOps aracısının içerik teslim ağı (CDN) konumu (eski adıyla vstsagentpackage.azureedge.net; daha fazla bilgi için bkz. Azure DevOps için Edgio CDN kullanımdan kaldırılıyor).
  • dev.azure.com: Azure DevOps ile iletişimi işlemek için gereklidir.

Linux makineleri için gerekli uç noktalar

Bu uç noktaların Ubuntu makinelerini çalıştırması gerekir, ancak bir havuz yalnızca Windows kullanıyorsa gerekli değildir. Azure DevOps görev aracısını ayarladığınızda, gerekli paketler eklenir ve bir apt-get komut çalıştırılır. Aşağıdaki uç noktalar izin verilenler listesine eklenmezse bu işlem başarısız olur.

  • azure.archive.ubuntu.com: Linux sunucuları sağlama. Bu uç nokta HTTPS (bağlantı noktası 443) değil HTTP 'dir (bağlantı noktası 80).
  • www.microsoft.com: Linux sunucuları sağlama.
  • security.ubuntu.com: Linux sunucuları sağlama.
  • packages.microsoft.com: Linux sunucuları sağlama.
  • ppa.launchpad.net: Bazı belirli Linux dağıtımlarını sağlama.
  • dl.fedoraproject.org: Belirli Linux dağıtımlarını sağlama.

Bazı Azure DevOps özellikleri için gerekli uç noktalar

İşlem hatlarınızda belirli Azure DevOps özelliklerinin çalışması için bu isteğe bağlı uç noktalar gereklidir. Aşağıdaki kümede joker karakter, işlem hattınızı barındıran belirli Azure DevOps kuruluşuyla değiştirilebilir. Örneğin, kuruluşunuzun adı contoso ise, contoso.services.visualstudio.com yerine *.services.visualstudio.com kullanabilirsiniz.

  • *.services.visualstudio.com
  • *.vsblob.visualstudio.com: Yapıtları hem karşıya yüklemek hem de kullanmak için kullanılır.
  • *.vssps.visualstudio.com: Belirli özellikler için Azure DevOps ile kimlik doğrulaması için kullanılır.
  • *.visualstudio.com

Uyarı

Gerekli olan minimum alan adları yukarıdaki girdilerdir. Herhangi bir sorun yaşıyorsanız Azure DevOps izin verilen IP adresleri ve etki alanı URL'leri bölümünde gerekli etki alanlarının tam listesine bakın.

Azure sanal makineleri (VM'ler), trafiği alt ağınız üzerinden belirli Azure özelliklerine yönlendirebilir. Bu istekler için istekleri doğrudan Azure üzerinden yönlendirebilir veya ağınız üzerinden erişimi etkinleştirebilirsiniz.

  1. Azure trafiğini hizmet uç noktaları üzerinden çalışacak şekilde yapılandırın:

    Ağ güvenlik gruplarınıza veya güvenlik duvarlarınıza aktarım hızı eklememek için trafiği doğrudan Azure üzerinden yönlendirebilirsiniz. Aşağıdaki seçenekte listelenen etki alanlarını izin verilenler listesine eklemeniz gerekmez.

    Örneğin, Azure Depolama'ya ağ çağrılarını dahil etmek için veri diski özelliğini kullanabilirsiniz. Ağınızda Microsoft.Storage hizmet uç noktasını etkinleştirdiğinizde trafik doğrudan Azure üzerinden yönlendirilir ve bu da ağ kurallarınızı önler ve yükü azaltır.

  2. Hizmet uç noktaları üzerinden trafiğin yönlendirilmesini önlemek için md-*.blob.storage.azure.net etki alanını izin listenize ekleyin. Bu etki alanı, veri diski yapılandırmak için gereklidir.

Akamai CDN teslim IP'leri

1 Mayıs 2025'te Azure DevOps CDN varlıkları Akamai ve Azure Front Door tarafından sunulan bir çözüme geçirildi. Ağınızın Akamai IP aralıklarına giden erişimi olduğundan emin olun. Daha fazla bilgi için bakınız:

Azure DevOps işlem hattınızı bir kapsayıcı içinde çalışacak şekilde yapılandırırsanız, kapsayıcı görüntüsünün kaynağını (Docker veya Azure Container Registry) bir izin verilenler listesine de eklemeniz gerekir.

Uç nokta bağlantısını doğrulama

Yönetilen DevOps Havuzları ile bir alt ağı kullanabilmenizi doğrulamak için, alt ağ üzerindeki bir kaynakta aşağıdaki betiği çalıştırın. Bu adım, ağ akışının bu kullanılabilir uç noktaların tümüne ve Yönetilen DevOps denetim düzlemine ulaşacak şekilde yapılandırıldığını doğrulamanıza yardımcı olur.

Önemli

Ağ yolunun bu alt ağdan gerekli uç noktalara açık olduğunu doğrulamak için bu betiği alt ağınızdaki bir kaynakta (VM veya kapsayıcı gibi) çalıştırmanız gerekir.

Betiği PowerShell Core veya PowerShell 5 veya üzeri ile çalıştırmak için aşağıdaki betiği olarak ValidateMDPEndpoints.ps1kaydedin. Aşağıdaki PowerShell komutunu çalıştırın: .\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 $_ }
}

Azure DevOps aracısını bir ara sunucu arkasında çalışacak şekilde yapılandırma

Görüntünüzde bir ara sunucu hizmeti yapılandırdıysanız ve havuzunuzda çalışan iş yüklerinin bu ara sunucu arkasında çalışmasını istiyorsanız, görüntünüze aşağıdaki ortam değişkenlerini eklemeniz gerekir:

  • VSTS_AGENT_INPUT_PROXYURL: Arka planda çalıştırılacak yapılandırılan proxy'nin URL'si.
  • VSTS_AGENT_INPUT_PROXYUSERNAME: Ara sunucuyu kullanmak için gereken kullanıcı adı.
  • VSTS_AGENT_INPUT_PROXYPASSWORD: Ara sunucuyu kullanma parolası.

Windows için bu ortam değişkenleri sistem ortamı değişkenleri olmalıdır. Linux için bu değişkenlerin dosyada /etc/environment olması gerekir. Görüntüde bu sistem değişkenlerini yanlış veya yapılandırılmış bir ara sunucu hizmeti olmadan ayarlarsanız, yeni aracıların sağlanması ağ bağlantısı sorunlarıyla başarısız olur.

Azure Sanal Makine Ölçek Kümeleri aracılarından geçiş yapıyorsanız ve görüntünüzde zaten ara sunucu ortam değişkenlerini kullanıyorsanız herhangi bir değişiklik yapmanız gerekmez. Bu işlem Azure Sanal Makine Ölçek Kümesi aracıları: İşlem hattı aracısı yapılandırmasını özelleştirme bölümünde açıklanmıştır.