Delen via


Zelfstudie: Zelf-hostende CI/CD-runners en agents implementeren met Azure Container Apps-taken

Met GitHub Actions en Azure Pipelines kunt u CI/CD-werkstromen uitvoeren met zelf-hostende runners en agents. U kunt zelf-hostende runners en agents uitvoeren met behulp van gebeurtenisgestuurde Azure Container Apps-taken.

Zelf-hostende hardlopers zijn handig wanneer u werkstromen moet uitvoeren die toegang nodig hebben tot lokale resources of hulpprogramma's die niet beschikbaar zijn voor een in de cloud gehoste runner. Met een zelf-hostende runner in een Container Apps-taak heeft uw werkstroom bijvoorbeeld toegang tot resources in het virtuele netwerk van de taak dat niet toegankelijk is voor een in de cloud gehoste runner.

Door zelf-hostende hardlopers uit te voeren als gebeurtenisgestuurde taken, kunt u profiteren van de serverloze aard van Azure Container Apps. Taken worden automatisch uitgevoerd wanneer een werkstroom wordt geactiveerd en afgesloten wanneer de taak is voltooid.

U betaalt alleen voor de tijd dat de taak wordt uitgevoerd.

In deze zelfstudie leert u hoe u GitHub Actions-runners uitvoert als een gebeurtenisgestuurde Container Apps-taak.

  • Een Container Apps-omgeving maken om uw zelf-hostende runner te implementeren
  • Een GitHub-opslagplaats maken voor het uitvoeren van een werkstroom die gebruikmaakt van een zelf-hostende runner
  • Een containerinstallatiekopieën bouwen waarop een GitHub Actions-runner wordt uitgevoerd
  • De runner implementeren als een taak in de Container Apps-omgeving
  • Een werkstroom maken die gebruikmaakt van de zelf-hostende runner en controleren of deze wordt uitgevoerd

Belangrijk

Zelf-hostende hardlopers worden alleen aanbevolen voor privéopslagplaatsen . Als u ze gebruikt met openbare opslagplaatsen, kan gevaarlijke code worden uitgevoerd op uw zelf-hostende runner. Zie Zelf-hostende runnerbeveiliging voor meer informatie.

In deze zelfstudie leert u hoe u Azure Pipelines-agents uitvoert als een gebeurtenisgestuurde Container Apps-taak.

  • Een Container Apps-omgeving maken om uw zelf-hostende agent te implementeren
  • Een Azure DevOps-organisatie en -project maken
  • Een containerinstallatiekopieën bouwen waarop een Azure Pipelines-agent wordt uitgevoerd
  • Een handmatige taak gebruiken om een tijdelijke aanduidingsagent te maken in de Container Apps-omgeving
  • De agent implementeren als een taak in de Container Apps-omgeving
  • Een pijplijn maken die gebruikmaakt van de zelf-hostende agent en controleren of deze wordt uitgevoerd

Belangrijk

Zelf-hostende agents worden alleen aanbevolen voor privéprojecten . Als u deze gebruikt met openbare projecten, kan gevaarlijke code worden uitgevoerd op uw zelf-hostende agent. Zie Zelf-hostende agentbeveiliging voor meer informatie.

Notitie

Container-apps en -taken bieden geen ondersteuning voor het uitvoeren van Docker in containers. Stappen in uw werkstromen die gebruikmaken van Docker-opdrachten mislukken wanneer ze worden uitgevoerd op een zelf-hostende runner of agent in een Container Apps-taak.

Vereisten

  • Azure-account: Als u er nog geen hebt, kunt u er gratis een maken.

  • Azure CLI: Installeer de Azure CLI.

  • Azure DevOps-organisatie: als u geen DevOps-organisatie met een actief abonnement hebt, kunt u er gratis een maken.

Raadpleeg de beperkingen voor taken voor een lijst met beperkingen.

Instellingen

Als u zich wilt aanmelden bij Azure vanuit de CLI, voert u de volgende opdracht uit en volgt u de aanwijzingen om het verificatieproces te voltooien.

az login

Voer de upgradeopdracht uit om ervoor te zorgen dat u de nieuwste versie van de CLI uitvoert.

az upgrade

Installeer of werk vervolgens de Azure Container Apps-extensie voor de CLI bij.

Als u fouten ontvangt over ontbrekende parameters wanneer u opdrachten uitvoert az containerapp in Azure CLI of cmdlets vanuit de Az.App module in Azure PowerShell, moet u ervoor zorgen dat de nieuwste versie van de Azure Container Apps-extensie is geïnstalleerd.

az extension add --name containerapp --upgrade

Notitie

Vanaf mei 2024 schakelen Azure CLI-extensies standaard geen preview-functies meer in. Als u toegang wilt krijgen tot de preview-functies van Container Apps, installeert u de Container Apps-extensie met --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Nu de huidige extensie of module is geïnstalleerd, registreert u de Microsoft.App en Microsoft.OperationalInsights naamruimten.

Notitie

Azure Container Apps-resources zijn gemigreerd van de Microsoft.Web naamruimte naar de Microsoft.App naamruimte. Raadpleeg de naamruimtemigratie van Microsoft.Web naar Microsoft.App in maart 2022 voor meer informatie.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Omgevingsvariabelen maken

Nu uw Azure CLI-installatie is voltooid, kunt u de omgevingsvariabelen definiëren die in dit artikel worden gebruikt.

RESOURCE_GROUP="jobs-sample"
LOCATION="northcentralus"
ENVIRONMENT="env-jobs-sample"
JOB_NAME="github-actions-runner-job"
RESOURCE_GROUP="jobs-sample"
LOCATION="northcentralus"
ENVIRONMENT="env-jobs-sample"
JOB_NAME="azure-pipelines-agent-job"
PLACEHOLDER_JOB_NAME="placeholder-agent-job"

Een Container Apps-omgeving maken

De Azure Container Apps-omgeving fungeert als een veilige grens rond container-apps en -taken, zodat ze hetzelfde netwerk kunnen delen en met elkaar kunnen communiceren.

Notitie

Zie Een virtueel netwerk opgeven voor een interne Azure Container Apps-omgeving om een Container Apps-omgeving te maken die is geïntegreerd met een bestaand virtueel netwerk.

  1. Gebruik de volgende opdracht om een resourcegroep te maken.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Maak de Container Apps-omgeving met behulp van de volgende opdracht.

    az containerapp env create \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION"
    

Een GitHub-opslagplaats maken voor het uitvoeren van een werkstroom

Als u een werkstroom wilt uitvoeren, moet u een GitHub-opslagplaats maken die de werkstroomdefinitie bevat.

  1. Navigeer naar GitHub en meld u aan.

  2. Maak een nieuwe opslagplaats door de volgende waarden in te voeren.

    Instelling Weergegeven als
    Eigenaar Selecteer uw GitHub-gebruikersnaam.
    Naam van opslagplaats Voer een naam in voor uw opslagplaats.
    Visibility Selecteer Privé.
    Initialiseer deze opslagplaats met Selecteer Een README-bestand toevoegen.

    Laat de rest van de waarden staan als standaardselectie.

  3. Klik op Opslagplaats maken.

  4. Selecteer Acties in de nieuwe opslagplaats.

  5. Zoek naar de sjabloon Eenvoudige werkstroom en selecteer Configureren.

  6. Selecteer Wijzigingen doorvoeren om de werkstroom toe te voegen aan uw opslagplaats.

De werkstroom wordt uitgevoerd op de ubuntu-latest door GitHub gehoste runner en drukt een bericht af op de console. Later vervangt u de door GitHub gehoste runner door een zelf-hostende runner.

Een persoonlijk GitHub-toegangstoken ophalen

Als u een zelf-hostende runner wilt uitvoeren, moet u een persoonlijk toegangstoken (PAT) maken in GitHub. Telkens wanneer een runner begint, wordt de PAT gebruikt om een token te genereren om de runner te registreren bij GitHub. De PAT wordt ook gebruikt door de gitHub Actions runner-schaalregel om de werkstroomwachtrij van de opslagplaats te bewaken en waar nodig hardlopers te starten.

  1. Selecteer in GitHub uw profielfoto in de rechterbovenhoek en selecteer Instellingen.

  2. Selecteer Instellingen voor ontwikkelaars.

  3. Selecteer onder Persoonlijke toegangstokens fijnmazige tokens.

  4. Selecteer Nieuw token genereren.

  5. Voer in het scherm Nieuw gedetailleerd persoonlijk toegangstoken de volgende waarden in.

    Instelling Weergegeven als
    Tokennaam Voer een naam in voor uw token.
    Verloop Selecteer 30 dagen.
    Toegang tot opslagplaats Selecteer Alleen opslagplaatsen selecteren en de opslagplaats selecteren die u hebt gemaakt.

    Voer de volgende waarden in voor opslagplaatsmachtigingen.

    Instelling Weergegeven als
    Acties Selecteer Alleen-lezen.
    Beheer Selecteer Lezen en schrijven.
    Metagegevens Selecteer Alleen-lezen.
  6. Selecteer Het token genereren.

  7. Kopieer de tokenwaarde.

  8. Definieer variabelen die worden gebruikt om de runner en schaalregel later te configureren.

    GITHUB_PAT="<GITHUB_PAT>"
    REPO_OWNER="<REPO_OWNER>"
    REPO_NAME="<REPO_NAME>"
    

    Vervang de plaatsaanduidingen door de volgende waarden:

    Tijdelijke aanduiding Weergegeven als
    <GITHUB_PAT> De GitHub PAT die u hebt gegenereerd.
    <REPO_OWNER> De eigenaar van de opslagplaats die u eerder hebt gemaakt. Deze waarde is meestal uw GitHub-gebruikersnaam.
    <REPO_NAME> De naam van de opslagplaats die u eerder hebt gemaakt. Deze waarde is dezelfde naam die u hebt ingevoerd in het veld Opslagplaatsnaam .

De containerinstallatiekopieën van de GitHub Actions-runner bouwen

Als u een zelf-hostende runner wilt maken, moet u een containerinstallatiekopie bouwen waarmee de runner wordt uitgevoerd. In deze sectie bouwt u de containerinstallatiekopieën en pusht u deze naar een containerregister.

Notitie

De installatiekopie die u in deze zelfstudie bouwt, bevat een eenvoudige zelf-hostende runner die geschikt is voor uitvoering als een Container Apps-taak. U kunt deze aanpassen om extra hulpprogramma's of afhankelijkheden op te nemen die uw werkstromen nodig hebben.

  1. Definieer een naam voor de containerinstallatiekopieën en het register.

    CONTAINER_IMAGE_NAME="github-actions-runner:1.0"
    CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
    

    Vervang door <CONTAINER_REGISTRY_NAME> een unieke naam voor het maken van een containerregister. Containerregisternamen moeten uniek zijn binnen Azure en mogen uit 5 tot 50 tekens bestaan die alleen cijfers en kleine letters bevatten.

  2. Maak een containerregister.

    az acr create \
        --name "$CONTAINER_REGISTRY_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION" \
        --sku Basic \
        --admin-enabled true
    
  3. Het Dockerfile voor het maken van de runner-installatiekopieën is beschikbaar op GitHub. Voer de volgende opdracht uit om de opslagplaats te klonen en de containerinstallatiekopieën in de cloud te bouwen met behulp van de az acr build opdracht.

    az acr build \
        --registry "$CONTAINER_REGISTRY_NAME" \
        --image "$CONTAINER_IMAGE_NAME" \
        --file "Dockerfile.github" \
        "https://github.com/Azure-Samples/container-apps-ci-cd-runner-tutorial.git"
    

    De installatiekopieën zijn nu beschikbaar in het containerregister.

Een zelf-hostende runner implementeren als taak

U kunt nu een taak maken die gebruikmaakt van de containerinstallatiekopieën. In deze sectie maakt u een taak die de zelf-hostende runner uitvoert en verifieert met GitHub met behulp van de pat die u eerder hebt gegenereerd. De taak maakt gebruik van de github-runner schaalregel om taakuitvoeringen te maken op basis van het aantal actieve werkstroomuitvoeringen.

  1. Maak een taak in de Container Apps-omgeving.

    az containerapp job create -n "$JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
        --trigger-type Event \
        --replica-timeout 1800 \
        --replica-retry-limit 0 \
        --replica-completion-count 1 \
        --parallelism 1 \
        --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
        --min-executions 0 \
        --max-executions 10 \
        --polling-interval 30 \
        --scale-rule-name "github-runner" \
        --scale-rule-type "github-runner" \
        --scale-rule-metadata "githubAPIURL=https://api.github.com" "owner=$REPO_OWNER" "runnerScope=repo" "repos=$REPO_NAME" "targetWorkflowQueueLength=1" \
        --scale-rule-auth "personalAccessToken=personal-access-token" \
        --cpu "2.0" \
        --memory "4Gi" \
        --secrets "personal-access-token=$GITHUB_PAT" \
        --env-vars "GITHUB_PAT=secretref:personal-access-token" "GH_URL=https://github.com/$REPO_OWNER/$REPO_NAME" "REGISTRATION_TOKEN_API_URL=https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/actions/runners/registration-token" \
        --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"
    

    In de volgende tabel worden de belangrijkste parameters beschreven die in de opdracht worden gebruikt.

    Parameter Description
    --replica-timeout De maximale duur die een replica kan uitvoeren.
    --replica-retry-limit Het aantal keren dat een mislukte replica opnieuw moet worden uitgevoerd.
    --replica-completion-count Het aantal replica's dat moet worden voltooid voordat een taakuitvoering als geslaagd wordt beschouwd.
    --parallelism Het aantal replica's dat moet worden gestart per taakuitvoering.
    --min-executions Het minimale aantal taakuitvoeringen dat moet worden uitgevoerd per polling-interval.
    --max-executions Het maximum aantal taakuitvoeringen dat per polling-interval moet worden uitgevoerd.
    --polling-interval Het polling-interval waarmee de schaalregel moet worden geëvalueerd.
    --scale-rule-name De naam van de schaalregel.
    --scale-rule-type Het type schaalregel dat moet worden gebruikt. Zie de KEDA-documentatie voor meer informatie over de GitHub runner scaler.
    --scale-rule-metadata De metagegevens voor de schaalregel. Als u GitHub Enterprise gebruikt, werkt githubAPIURL u bij met de BIJBEHORENDE API-URL.
    --scale-rule-auth De verificatie voor de schaalregel.
    --secrets De geheimen die voor de taak moeten worden gebruikt.
    --env-vars De omgevingsvariabelen die voor de taak moeten worden gebruikt.
    --registry-server De containerregisterserver die moet worden gebruikt voor de taak. Voor een Azure Container Registry configureert de opdracht automatisch verificatie.

    De configuratie van de schaalregel definieert de gebeurtenisbron die moet worden bewaakt. Het wordt geëvalueerd op elk polling-interval en bepaalt hoeveel taakuitvoeringen moeten worden geactiveerd. Zie Regels voor schalen instellen voor meer informatie.

De gebeurtenisgestuurde taak wordt nu gemaakt in de Container Apps-omgeving.

Een werkstroom uitvoeren en de taak controleren

De taak is geconfigureerd om de schaalregel elke 30 seconden te evalueren. Tijdens elke evaluatie wordt gecontroleerd hoeveel werkstroomuitvoeringen in behandeling zijn waarvoor een zelf-hostende runner is vereist en wordt een nieuwe taakuitvoering gestart voor de werkstroom die in behandeling is, tot een geconfigureerd maximum van 10 uitvoeringen.

Als u wilt controleren of de taak correct is geconfigureerd, wijzigt u de werkstroom om een zelf-hostende runner te gebruiken en een werkstroomuitvoering te activeren. Vervolgens kunt u de taakuitvoeringslogboeken weergeven om de uitvoering van de werkstroom te bekijken.

  1. Navigeer in de GitHub-opslagplaats naar de werkstroom die u eerder hebt gegenereerd. Het is een YAML-bestand in de .github/workflows map.

  2. Selecteer Bewerken ter plaatse.

  3. Werk de runs-on eigenschap bij naar self-hosted:

    runs-on: self-hosted
    
  4. Selecteer Wijzigingen doorvoeren....

  5. Selecteer Wijzigingen doorvoeren.

  6. Navigeer naar het tabblad Acties .

    Er wordt nu een nieuwe werkstroom in de wachtrij geplaatst. Binnen 30 seconden wordt de taakuitvoering gestart en wordt de werkstroom kort daarna voltooid.

    Wacht totdat de actie is voltooid voordat u verdergaat met de volgende stap.

  7. Vermeld de uitvoeringen van de taak om te bevestigen dat een taakuitvoering is gemaakt en voltooid.

    az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    

Een Azure DevOps-project en -opslagplaats maken

Als u een pijplijn wilt uitvoeren, hebt u een Azure DevOps-project en -opslagplaats nodig.

  1. Navigeer naar Azure DevOps en meld u aan bij uw account.

  2. Selecteer een bestaande organisatie of maak een nieuwe.

  3. Selecteer nieuw project op de overzichtspagina van de organisatie en voer de volgende waarden in.

    Instelling Weergegeven als
    Projectnaam Voer een naam in voor uw project.
    Zichtbaarheid Selecteer Privé.
  4. Selecteer Maken.

  5. Selecteer Opslagplaatsen in de navigatiebalk aan de zijkant.

  6. Selecteer onder Initialize main branch with a README or .gitignore de optie Add a README.

  7. Laat de rest van de waarden staan als standaardwaarden en selecteer Initialiseren.

Een nieuwe agentpool maken

Maak een nieuwe agentpool om de zelf-hostende runner uit te voeren.

  1. Vouw in uw Azure DevOps-project de linkernavigatiebalk uit en selecteer Project-instellingen.

    Schermopname van de knop Azure DevOps-projectinstellingen.

  2. Selecteer agentpools in de sectie Pijplijnen in het navigatiemenu Projectinstellingen.

    Schermopname van de knop Azure DevOps-agentpools.

  3. Selecteer Pool toevoegen en voer de volgende waarden in.

    Instelling Weergegeven als
    Pool om te koppelen Selecteer Nieuw.
    Groepstype Selecteer Zelf-hostend.
    Naam Voer container-apps in.
    Toegangsmachtigingen verlenen aan alle pijplijnen Schakel dit selectievakje in.
  4. Selecteer Maken.

Een persoonlijk Azure DevOps-toegangstoken ophalen

Als u een zelf-hostende runner wilt uitvoeren, moet u een persoonlijk toegangstoken (PAT) maken in Azure DevOps. De PAT wordt gebruikt om de runner te verifiëren met Azure DevOps. Het wordt ook gebruikt door de schaalregel om het aantal lopende pijplijnuitvoeringen te bepalen en nieuwe taakuitvoeringen te activeren.

  1. Selecteer in Azure DevOps gebruikersinstellingen naast uw profielfoto in de rechterbovenhoek.

  2. Selecteer Persoonlijke toegangstokens.

  3. Op de pagina Persoonlijke toegangstokens selecteert u Nieuw token en voert u de volgende waarden in.

    Instelling Weergegeven als
    Naam Voer een naam in voor uw token.
    Organisatie Selecteer de organisatie die u eerder hebt gekozen of gemaakt.
    Bereiken Selecteer Aangepast gedefinieerd.
    Alle bereiken weergeven Selecteer Alle bereiken weergeven.
    Agentpools (lezen en beheren) Selecteer Agentpools (lezen en beheren).

    Laat alle andere bereiken uitgeschakeld.

  4. Selecteer Maken.

  5. Kopieer de tokenwaarde naar een veilige locatie.

    U kunt het token niet ophalen nadat u de pagina hebt verlaten.

  6. Definieer variabelen die worden gebruikt om de Container Apps-taken later te configureren.

    AZP_TOKEN="<AZP_TOKEN>"
    ORGANIZATION_URL="<ORGANIZATION_URL>"
    AZP_POOL="container-apps"
    

    Vervang de plaatsaanduidingen door de volgende waarden:

    Tijdelijke aanduiding Weergegeven als Opmerkingen
    <AZP_TOKEN> De Azure DevOps PAT die u hebt gegenereerd.
    <ORGANIZATION_URL> De URL van uw Azure DevOps-organisatie. Zorg ervoor dat er geen volging / aanwezig is aan het einde van de URL. Bijvoorbeeld https://dev.azure.com/myorg of https://myorg.visualstudio.com.

De containerinstallatiekopieën van de Azure Pipelines-agent bouwen

Als u een zelf-hostende agent wilt maken, moet u een containerinstallatiekopie maken waarmee de agent wordt uitgevoerd. In deze sectie bouwt u de containerinstallatiekopieën en pusht u deze naar een containerregister.

Notitie

De installatiekopie die u in deze zelfstudie bouwt, bevat een eenvoudige zelf-hostende agent die geschikt is voor uitvoering als een Container Apps-taak. U kunt deze aanpassen om extra hulpprogramma's of afhankelijkheden op te nemen die uw pijplijnen nodig hebben.

  1. Definieer in uw terminal een naam voor de containerinstallatiekopieën en het register.

    CONTAINER_IMAGE_NAME="azure-pipelines-agent:1.0"
    CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
    

    Vervang door <CONTAINER_REGISTRY_NAME> een unieke naam voor het maken van een containerregister.

    Containerregisternamen moeten uniek zijn binnen Azure en mogen uit 5 tot 50 tekens bestaan die alleen cijfers en kleine letters bevatten.

  2. Maak een containerregister.

    az acr create \
        --name "$CONTAINER_REGISTRY_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION" \
        --sku Basic \
        --admin-enabled true
    
  3. Het Dockerfile voor het maken van de runner-installatiekopieën is beschikbaar op GitHub. Voer de volgende opdracht uit om de opslagplaats te klonen en de containerinstallatiekopieën in de cloud te bouwen met behulp van de az acr build opdracht.

    az acr build \
        --registry "$CONTAINER_REGISTRY_NAME" \
        --image "$CONTAINER_IMAGE_NAME" \
        --file "Dockerfile.azure-pipelines" \
        "https://github.com/Azure-Samples/container-apps-ci-cd-runner-tutorial.git"
    

    De installatiekopieën zijn nu beschikbaar in het containerregister.

Een tijdelijke aanduiding voor een zelf-hostende agent maken

Voordat u een zelf-hostende agent in uw nieuwe agentgroep kunt uitvoeren, moet u een tijdelijke aanduiding voor de agent maken. De tijdelijke aanduidingsagent zorgt ervoor dat de agentgroep beschikbaar is. Pijplijnen die gebruikmaken van de agentgroep mislukken wanneer er geen tijdelijke aanduiding voor de agent is.

U kunt een handmatige taak uitvoeren om een offline tijdelijke aanduidingsagent te registreren. De taak wordt eenmaal uitgevoerd en kan worden verwijderd. De tijdelijke aanduidingsagent verbruikt geen resources in Azure Container Apps of Azure DevOps.

  1. Maak een handmatige taak in de Container Apps-omgeving waarmee de tijdelijke aanduidingsagent wordt gemaakt.

    az containerapp job create -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
        --trigger-type Manual \
        --replica-timeout 300 \
        --replica-retry-limit 0 \
        --replica-completion-count 1 \
        --parallelism 1 \
        --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
        --cpu "2.0" \
        --memory "4Gi" \
        --secrets "personal-access-token=$AZP_TOKEN" "organization-url=$ORGANIZATION_URL" \
        --env-vars "AZP_TOKEN=secretref:personal-access-token" "AZP_URL=secretref:organization-url" "AZP_POOL=$AZP_POOL" "AZP_PLACEHOLDER=1" "AZP_AGENT_NAME=placeholder-agent" \
        --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"
    

    In de volgende tabel worden de belangrijkste parameters beschreven die in de opdracht worden gebruikt.

    Parameter Description
    --replica-timeout De maximale duur die een replica kan uitvoeren.
    --replica-retry-limit Het aantal keren dat een mislukte replica opnieuw moet worden uitgevoerd.
    --replica-completion-count Het aantal replica's dat moet worden voltooid voordat een taakuitvoering als geslaagd wordt beschouwd.
    --parallelism Het aantal replica's dat moet worden gestart per taakuitvoering.
    --secrets De geheimen die voor de taak moeten worden gebruikt.
    --env-vars De omgevingsvariabelen die voor de taak moeten worden gebruikt.
    --registry-server De containerregisterserver die moet worden gebruikt voor de taak. Voor een Azure Container Registry configureert de opdracht automatisch verificatie.

    Als u de AZP_PLACEHOLDER omgevingsvariabele instelt, wordt de agentcontainer zo geconfigureerd dat deze wordt geregistreerd als een offline tijdelijke aanduiding zonder een taak uit te voeren.

  2. Voer de handmatige taak uit om de tijdelijke aanduiding voor de agent te maken.

    az containerapp job start -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
    
  3. Vermeld de uitvoeringen van de taak om te bevestigen dat een taakuitvoering is gemaakt en voltooid.

    az containerapp job execution list \
        --name "$PLACEHOLDER_JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    
  4. Controleer of de tijdelijke aanduidingsagent is gemaakt in Azure DevOps.

    1. Navigeer in Azure DevOps naar uw project.
    2. Selecteer Agent voor Project-instellingen>pools>container-apps>Agents.
    3. Controleer of een tijdelijke aanduidingsagent met de naam placeholder-agent wordt vermeld en of de status offline is.
  5. De taak is niet opnieuw nodig. U kunt dit verwijderen.

    az containerapp job delete -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
    

Een zelf-hostende agent maken als een gebeurtenisgestuurde taak

Nu u een tijdelijke aanduiding voor een agent hebt, kunt u een zelf-hostende agent maken. In deze sectie maakt u een gebeurtenisgestuurde taak die een zelf-hostende agent uitvoert wanneer een pijplijn wordt geactiveerd.

az containerapp job create -n "$JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
    --trigger-type Event \
    --replica-timeout 1800 \
    --replica-retry-limit 0 \
    --replica-completion-count 1 \
    --parallelism 1 \
    --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
    --min-executions 0 \
    --max-executions 10 \
    --polling-interval 30 \
    --scale-rule-name "azure-pipelines" \
    --scale-rule-type "azure-pipelines" \
    --scale-rule-metadata "poolName=$AZP_POOL" "targetPipelinesQueueLength=1" \
    --scale-rule-auth "personalAccessToken=personal-access-token" "organizationURL=organization-url" \
    --cpu "2.0" \
    --memory "4Gi" \
    --secrets "personal-access-token=$AZP_TOKEN" "organization-url=$ORGANIZATION_URL" \
    --env-vars "AZP_TOKEN=secretref:personal-access-token" "AZP_URL=secretref:organization-url" "AZP_POOL=$AZP_POOL" \
    --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"

In de volgende tabel worden de parameters voor schaalregels beschreven die in de opdracht worden gebruikt.

Parameter Description
--min-executions Het minimale aantal taakuitvoeringen dat moet worden uitgevoerd per polling-interval.
--max-executions Het maximum aantal taakuitvoeringen dat per polling-interval moet worden uitgevoerd.
--polling-interval Het polling-interval waarmee de schaalregel moet worden geëvalueerd.
--scale-rule-name De naam van de schaalregel.
--scale-rule-type Het type schaalregel dat moet worden gebruikt. Zie de KEDA-documentatie voor meer informatie over de Schaal van Azure Pipelines.
--scale-rule-metadata De metagegevens voor de schaalregel.
--scale-rule-auth De verificatie voor de schaalregel.

De configuratie van de schaalregel definieert de gebeurtenisbron die moet worden bewaakt. Het wordt geëvalueerd op elk polling-interval en bepaalt hoeveel taakuitvoeringen moeten worden geactiveerd. Zie Regels voor schalen instellen voor meer informatie.

De gebeurtenisgestuurde taak wordt nu gemaakt in de Container Apps-omgeving.

Een pijplijn uitvoeren en de taak controleren

Nu u een zelf-hostende agenttaak hebt geconfigureerd, kunt u een pijplijn uitvoeren en controleren of deze correct werkt.

  1. Navigeer in de linkernavigatiebalk van uw Azure DevOps-project naar Pijplijnen.

  2. Selecteer Pijplijn maken.

  3. Selecteer Azure Repos Git als de locatie van uw code.

  4. Selecteer de opslagplaats die u eerder hebt gemaakt.

  5. Selecteer Starter-pijplijn.

  6. Wijzig in de YAML van de pijplijn het pool van vmImage: ubuntu-latest in name: container-apps.

    pool:
      name: container-apps
    
  7. Selecteer Opslaan en uitvoeren.

    De pijplijn wordt uitgevoerd en gebruikt de zelf-hostende agenttaak die u hebt gemaakt in de Container Apps-omgeving.

  8. Vermeld de uitvoeringen van de taak om te bevestigen dat een taakuitvoering is gemaakt en voltooid.

    az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    

Tip

Ondervindt u problemen? Laat het ons weten op GitHub door een probleem te openen in de Azure Container Apps-opslagplaats.

Resources opschonen

Wanneer u klaar bent, voert u de volgende opdracht uit om de resourcegroep te verwijderen die uw Container Apps-resources bevat.

Let op

Met de volgende opdracht verwijdert u de opgegeven resourcegroep en alle resources erin. Als resources buiten het bereik van deze zelfstudie in de opgegeven resourcegroep bestaan, worden ze ook verwijderd.

az group delete \
    --resource-group $RESOURCE_GROUP

Zie Een opslagplaats verwijderen om uw GitHub-opslagplaats te verwijderen.

Volgende stappen