Managed DevOps Pools in Azure: voordelen en implementatie

Blog

Het beheren van DevOps agents kost vaak veel tijd en moeite. Managed DevOps Pools (MDP) nemen dit werk grotendeels uit handen, waardoor teams sneller en efficiënter kunnen werken. Tegelijkertijd bieden ze meer grip op de inrichting van pipelines, schaalbare en betrouwbare agents en de flexibiliteit om te werken met zowel standaard- als eigen images. In deze blog lees je hoe je Managed DevOps Pools implementeert met Bicep-sjablonen, hoe je vNet-integratie toepast en welke instellingen je kunt gebruiken om agents optimaal af te stemmen op jouw scenario.

In Azure DevOps zijn momenteel verschillende soorten agents beschikbaar, namelijk:

  • Microsoft-Hosted Agents (Azure Pipelines)
  • Self-Hosted Agents (Private Agents)
  • Azure VM Scale Set (VMSS) agents

Een vierde optie is Managed DevOps Pools. Managed DevOps Pools (MDP) is een volledig beheerde service waarbij de agents niet meer in je eigen Azure-abonnement draaien, maar in dat van Microsoft.

Voordelen van Managed DevOps Pools

Laten we eens kijken naar de voordelen van het maken, configureren en beheren van Azure DevOps-agentpools in de cloud:

  • Managed Service: minder operationeel onderhoud.
  • Ondersteuning voor afbeeldingen: aangepaste afbeeldingen en standaardafbeeldingen van Microsoft.
  • vNet-integratie: connectiviteit vanuit je interne netwerk.
  • Agentstatus: keuze tussen stateless en stateful, plus standby agent-modus.
  • Langlopende workflows: ondersteunt workflows tot twee dagen.
  • Kostenoptimalisatie: optimaliseert kosten op basis van gebruikspatronen en vereisten.
  • Schaalbaarheid: kan worden opgeschaald naar duizenden agents die tegelijkertijd actief zijn.

Meer informatie vind je hier in de Microsoft-documentatie, maar laten we eerst even naar de implementatiedetails kijken.

Voorwaarden voor implementatie

Voordat je een Managed DevOps Pool kunt inrichten, moet je voldoen aan een aantal voorwaarden:

  • Azure Subscription, waarbij de resourceprovider voor Managed DevOps Pools is geregistreerd (bij de implementatie kan de pool dit ook registreren, als het account dat voor de implementatie wordt gebruikt voldoende machtigingen heeft).
  • Azure DevOps-organisatie verbonden met de Microsoft-tenant.
  • Machtigingen om beheerde DevOps Pools te maken/beheren in de Azure DevOps-organisatie.
  • Controle quota voor SKU's.

Als je vNet-integratie gaat gebruiken, dan moet je ook het vNet configureren:

  • Vereiste machtigingen voor de standaardidentiteit 'DevOpsInfrastructure' van de tenant.
  • Een leeg subnet met geconfigureerde delegatie van “Microsoft.DevOpsInfrastructure/pools”.

Zodra aan de vereisten is voldaan, kunnen we beginnen met de eerste implementatiebron: het Dev Center.

Dev Center implementeren

Meerdere Managed DevOps Pools kunnen hetzelfde Dev Center gebruiken. Je hebt een Dev Center en een Dev Center Project nodig (we maken het project aan met de MDP). Hieronder zie je een voorbeeld van een bicep-sjabloon voor een Dev Center:

// Example for DevCenter

param devCenterName string
param location string = resourceGroup().location
 
resource devCenter 'Microsoft.DevCenter/devcenters@2024-02-01' = {
  name: devCenterName
  location: location
}

Netwerken met vNet-integratie

Kies je voor vNet-integratie, dan heb je een bestaand vNet nodig. Hieronder ziet u een voorbeeld van een bicep-sjabloon voor een virtueel netwerk:

// Example for Networking

param virtualNetworkName string
param subnetName string
param location string = resourceGroup().location
  
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2024-05-01' = {
  name: virtualNetworkName
  location: location
  properties: {
      addressSpace: {
        addressPrefixes: [
          '10.0.0.0/24'
        ]
      }
    subnets: [
      {
        name: subnetName
        properties: {
          addressPrefix: '10.0.0.0/28'
          delegations: [
            {
              name: 'devOpsPoolDelegation'
              properties: {
                serviceName: 'Microsoft.DevOpsInfrastructure/pools'
              }
            }
          ]
        }
      } 
    ]
  }
}

Implementatie van een Managed DevOps-pool

Zoals eerder vermeld, maken we het Dev Center-project aan met onze MDP, maar dit kan op beide manieren. Hieronder zie je een voorbeeld van een Bicep-sjabloon om een Managed DevOps Pool te implementeren:

// Example for Managed DevOps Pool

param devCenterProjectName string
param devCenterId string
param location string = resourceGroup().location
param managedDevOpsPoolName string
param azureDevOpsOrgName string
param subnetId string

resource devCenterProject 'Microsoft.DevCenter/projects@2025-02-01' = {
  name: devCenterProjectName
  location: location
  properties: {
    devCenterId: devCenterId
  }
}

resource managedDevOpsPool 'Microsoft.DevOpsInfrastructure/pools@2025-01-21' = {
  name: managedDevOpsPoolName
  location: location
  properties: {
    organizationProfile: {
      organizations: [
        {
          url: 'https://dev.azure.com/${azureDevOpsOrgName}'
          parallelism: 1
          openAccess: true
        }
      ]
      permissionProfile: {
        kind: 'CreatorOnly'
        }
      kind: 'AzureDevOps'
    }
    devCenterProjectResourceId: devCenterProject.id
    maximumConcurrency: 1
    agentProfile: {
      kind: 'Stateless'
      resourcePredictionsProfile: {
        kind: 'Automatic'
        predictionPreference: 'Balanced'
      }
    }
    fabricProfile: {
      sku: {
        name: 'Standard_D2ads_v5'
      }
      images: [
        {
          wellKnownImageName: 'ubuntu-24.04'
        }
      ]
      osProfile: {
        logonType: 'Service'
        }
      storageProfile: {
        osDiskStorageAccountType: 'StandardSSD'
      }
      networkProfile: {
        subnetId: subnetId
      }
      kind: 'Vmss'
    }
  }
}

Je beschikt nu over een Managed DevOps Pool om te bouwen en te implementeren. Je kunt de pool bekijken via Azure DevOps:

afb Blog Managed DevOps Pools 2 screenshots.jpg

Conclusie

Het gebruik van een Managed DevOps Pool biedt talloze voordelen, het is een aantrekkelijke keuze voor organisaties die hun softwareontwikkelingscyclus willen stroomlijnen. Het biedt kant-en-klare, vooraf geconfigureerde omgevingen die tijd besparen en de complexiteit van installatie en onderhoud verminderen. Dit stelt teams in staat zich meer te richten op codering en innovatie in plaats van op het beheer van infrastructuur.

Bovendien bieden Managed Pools schaalbaarheid, betrouwbaarheid en beveiligingsfuncties die worden beheerd door experts, wat zorgt voor consistente prestaties en naleving van best practices. Door gebruik te maken van een MDP kunnen bedrijven de levering versnellen, de samenwerking tussen teams verbeteren en uiteindelijk de kwaliteit van hun softwareproducten verbeteren, terwijl ze tegelijkertijd resources en kosten optimaliseren.

Ik hoop dat de tips in deze blog nuttig zijn voor iedereen die Managed DevOps Pool wil gebruiken. Wil je meer weten over deze service? Neem gerust contact met ons op.

Heb je plezier in het oplossen van complexe Azure-vraagstukken en wil je verschillende organisaties helpen om hun DevOps-omgeving slimmer in te richten? Kom dan werken in ons Azure-team en deel je expertise met collega’s en klanten.

Deel deze pagina:
Pravin
Auteur
Pravin
Engineer

Heb je vragen over dit onderwerp of zou je Pravin willen inhuren voor een vergelijkbare opdracht?

Neem contact met ons op

Heb je een Azure-expert nodig?

Neem contact met ons op

Werken in ons Azure-team?

Klik hier
Cookies beheren