Delen via


ADE configureren voor het uitvoeren van implementaties met Pulumi

In dit artikel leert u hoe u Pulumi gebruikt voor implementaties in Azure Deployment Environments (ADE). U leert hoe u een standaardinstallatiekopie van Pulumi gebruikt of hoe u een aangepaste installatiekopie configureert om infrastructuur in te richten met behulp van het IaC-framework (Infrastructure-as-Code).

ADE ondersteunt een uitbreidbaarheidsmodel waarmee u aangepaste installatiekopieën kunt maken die u in uw omgevingsdefinities kunt gebruiken. Als u dit uitbreidbaarheidsmodel wilt gebruiken, kunt u uw eigen aangepaste installatiekopieën maken en opslaan in een containerregister, zoals Azure Container Registry (ACR) of Docker Hub. U kunt vervolgens verwijzen naar deze installatiekopieën in uw omgevingsdefinities om uw omgevingen te implementeren.

Een omgevingsdefinitie bestaat uit ten minste twee bestanden: een Pulumi-projectbestand, Pulumi.yaml en een manifestbestand met de naam environment.yaml. Het kan ook een gebruikersprogramma bevatten dat is geschreven in de programmeertaal van uw voorkeur: C#, TypeScript, Python, enzovoort. ADE maakt gebruik van containers voor het implementeren van omgevingsdefinities.

Vereisten

Een standaard Docker-installatiekopieën van Pulumi gebruiken

Het Pulumi-team biedt een vooraf samengestelde installatiekopieën om u op weg te helpen, die u kunt zien in de map Runner-Image . Deze installatiekopieën zijn openbaar beschikbaar in de Docker Hub van Pulumi, pulumi/azure-deployment-environmentszodat u deze rechtstreeks vanuit uw ADE-omgevingsdefinities kunt gebruiken.

Hier volgt een voorbeeldbestand environment.yaml dat gebruikmaakt van de vooraf gemaakte installatiekopieën:

name: SampleDefinition
version: 1.0.0
summary: First Pulumi-Enabled Environment
description: Deploys a Storage Account with Pulumi
runner: pulumi/azure-deployment-environments:0.1.0
templatePath: Pulumi.yaml

U vindt een aantal voorbeeldomgevingdefinities in de map Omgevingen.

Een aangepaste Docker-installatiekopieën bouwen en gebruiken

U kunt aangepaste installatiekopieën maken op basis van de ADE-voorbeeldafbeeldingen met behulp van het ADE CLI-hulpprogramma. Gebruik de ADE CLI om uw implementaties en verwijderingen aan te passen aan uw werkstroom. De ADE CLI is vooraf geïnstalleerd op de voorbeeldafbeeldingen. Zie de referentie voor aangepaste Runner-installatiekopieën van CLI voor meer informatie over de ADE CLI.

In dit voorbeeld leert u hoe u een Docker-installatiekopieën bouwt om ADE-implementaties te gebruiken en toegang te krijgen tot de ADE CLI, waarbij uw installatiekopieën worden gebaseerd op een van de door ADE geschreven installatiekopieën.

Selecteer een voorbeeld van een containerinstallatiekopie met behulp van de FROM-instructie

Neem een FROM-instructie op in een gemaakte DockerFile voor uw nieuwe installatiekopie die verwijst naar een voorbeeldinstallatiekopie die wordt gehost op Microsoft-artefactregister.

Hier volgt een voorbeeld van een FROM-instructie, die verwijst naar de voorbeeldkernafbeelding:

FROM mcr.microsoft.com/deployment-environments/runners/core:latest

Met deze instructie wordt de laatst gepubliceerde basisinstallatiekopie opgehaald en wordt deze een basis voor uw aangepaste installatiekopie.

De ADE-voorbeeldinstallatiekopieën zijn gebaseerd op de Azure CLI-installatiekopieën en hebben de ADE CLI- en JQ-pakketten vooraf geïnstalleerd. Meer informatie over de Azure CLI en het JQ-pakket.

Als u meer pakketten wilt installeren die u nodig hebt in uw installatiekopie, gebruikt u de RUN-instructie.

Pulumi installeren in een Dockerfile

U kunt de Pulumi CLI installeren op een uitvoerbare locatie, zodat deze kan worden gebruikt in uw implementatie- en verwijderingsscripts.

Hier volgt een voorbeeld van dat proces, waarbij u de nieuwste versie van de Pulumi CLI installeert:

RUN apk add curl
RUN curl -fsSL https://get.pulumi.com | sh
ENV PATH="${PATH}:/root/.pulumi/bin"

Afhankelijk van de programmeertaal die u wilt gebruiken voor Pulumi-programma's, moet u mogelijk een of meer bijbehorende runtime installeren. De Python-runtime is al beschikbaar in de basisinstallatiekopieën.

Hier volgt een voorbeeld van het installeren van Node.js en TypeScript:

# install node.js, npm, and typescript
RUN apk add nodejs npm
RUN npm install typescript -g

Operation Shell-scripts uitvoeren

In de voorbeeldafbeeldingen worden bewerkingen bepaald en uitgevoerd op basis van de naam van de bewerking. Momenteel worden de twee ondersteunde bewerkingsnamen geïmplementeerd en verwijderd.

Als u uw aangepaste installatiekopieën wilt instellen om deze structuur te gebruiken, geeft u een map op het niveau van uw Dockerfile met de naam scripts op en geeft u twee bestanden op, deploy.sh en delete.sh. Het implementatieshell-script wordt uitgevoerd wanneer uw omgeving wordt gemaakt of opnieuw wordt geïmplementeerd en het shell-script verwijderen wordt uitgevoerd wanneer uw omgeving wordt verwijderd. U ziet voorbeelden van shellscripts in de opslagplaats onder de map Runner-Image/scripts.

Voeg de volgende regels toe aan uw Dockerfile om ervoor te zorgen dat deze shellscripts uitvoerbaar zijn:

COPY scripts/* /scripts/
RUN find /scripts/ -type f -iname "*.sh" -exec dos2unix '{}' '+'
RUN find /scripts/ -type f -iname "*.sh" -exec chmod +x {} \;

Bewerkingsshellscripts ontwerpen voor het gebruik van de Pulumi CLI

Er zijn vier stappen voor het implementeren van infrastructuur via Pulumi:

  1. pulumi login - verbinding maken met de statusopslag, hetzij in het lokale bestandssysteem of in Pulumi Cloud
  2. pulumi stack select - maak of selecteer de stack die moet worden gebruikt voor de specifieke omgeving
  3. pulumi config set - implementatieparameters doorgeven als Pulumi-configuratiewaarden
  4. pulumi up - voer de implementatie uit om een nieuwe of bestaande infrastructuur in Azure te maken of bij te werken

Tijdens het ingangspunt van de kerninstallatiekopie worden alle bestaande lokale statusbestanden naar de container gehaald en wordt de map opgeslagen onder de omgevingsvariabele $ADE_STORAGE. Voer de volgende opdrachten uit om toegang te krijgen tot het bestaande statusbestand:

mkdir -p $ADE_STORAGE
export PULUMI_CONFIG_PASSPHRASE=
pulumi login file://$ADE_STORAGE

Als u zich in plaats daarvan wilt aanmelden bij Pulumi Cloud, stelt u uw Pulumi-toegangstoken in als een omgevingsvariabele en voert u de volgende opdrachten uit:

export PULUMI_ACCESS_TOKEN=YOUR_PULUMI_ACCESS_TOKEN
pulumi login

Parameters die zijn ingesteld voor de huidige omgeving, worden opgeslagen onder de variabele $ADE_OPERATION_PARAMETERS. Daarnaast worden de geselecteerde Azure-regio en resourcegroepnaam doorgegeven ADE_ENVIRONMENT_LOCATION en ADE_RESOURCE_GROUP_NAME respectievelijk. Voer de volgende opdrachten uit om de configuratie van uw Pulumi-stack in te stellen:

# Create or select the stack for the current environment
pulumi stack select $ADE_ENVIRONMENT_NAME --create

# Store configuration values in durable storage
export PULUMI_CONFIG_FILE=$ADE_STORAGE/Pulumi.$ADE_ENVIRONMENT_NAME.yaml

# Set the Pulumi stack config
pulumi config set azure-native:location $ADE_ENVIRONMENT_LOCATION --config-file $PULUMI_CONFIG_FILE
pulumi config set resource-group-name $ADE_RESOURCE_GROUP_NAME --config-file $PULUMI_CONFIG_FILE
echo "$ADE_OPERATION_PARAMETERS" | jq -r 'to_entries|.[]|[.key, .value] | @tsv' |
  while IFS=$'\t' read -r key value; do
    pulumi config set $key $value --config-file $PULUMI_CONFIG_FILE
  done

Als u bovendien ADE-bevoegdheden wilt gebruiken om infrastructuur in uw abonnement te implementeren, moet uw script gebruikmaken van ADE Managed Service Identity (MSI) bij het inrichten van de infrastructuur met behulp van de Pulumi Azure Native- of Klassieke Azure-provider. Als uw implementatie speciale machtigingen nodig heeft om uw implementatie te voltooien, zoals bepaalde rollen, wijst u deze machtigingen toe aan de identiteit van het projectomgevingstype die wordt gebruikt voor de implementatie van uw omgeving. ADE stelt de relevante omgevingsvariabelen in, zoals de client-, tenant- en abonnements-id's binnen het toegangspunt van de kerninstallatiekopieën. Voer daarom de volgende opdrachten uit om ervoor te zorgen dat de provider ADE MSI gebruikt:

export ARM_USE_MSI=true
export ARM_CLIENT_ID=$ADE_CLIENT_ID
export ARM_TENANT_ID=$ADE_TENANT_ID
export ARM_SUBSCRIPTION_ID=$ADE_SUBSCRIPTION_ID

U kunt nu de pulumi up opdracht uitvoeren om de implementatie uit te voeren:

pulumi up --refresh --yes --config-file $PULUMI_CONFIG_FILE

Tijdens het verwijderingsscript kunt u in plaats daarvan de destroy opdracht uitvoeren, zoals wordt weergegeven in het volgende voorbeeld:

pulumi destroy --refresh --yes --config-file $PULUMI_CONFIG_FILE

Ten slotte transformeert u het uitvoerobject van Pulumi naar de opgegeven ADE-indeling via het JQ-pakket om de uitvoer van uw implementatie te uploaden en toegankelijk te maken bij toegang tot uw omgeving via de Azure CLI. Stel de waarde in op de omgevingsvariabele $ADE_OUTPUTS, zoals wordt weergegeven in het volgende voorbeeld:

stackout=$(pulumi stack output --json | jq -r 'to_entries|.[]|{(.key): {type: "string", value: (.value)}}')
echo "{\"outputs\": ${stackout:-{\}}}" > $ADE_OUTPUTS

De installatiekopie bouwen

Voordat u de installatiekopieën bouwt die naar uw register moeten worden gepusht, moet u ervoor zorgen dat de Docker Engine op uw computer is geïnstalleerd . Navigeer vervolgens naar de map van uw Dockerfile en voer de volgende opdracht uit:

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

Als u bijvoorbeeld uw installatiekopieën wilt opslaan onder een opslagplaats in het register met de naam customImageen wilt uploaden met de tagversie, 1.0.0voert u het volgende uit:

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

De Docker-installatiekopieën naar een register pushen

Als u aangepaste installatiekopieën wilt gebruiken, moet u een openbaar toegankelijk installatiekopieregister instellen met anonieme pull-installatiekopie ingeschakeld. Op deze manier hebben Azure Deployment Environments toegang tot uw aangepaste installatiekopieën die in onze container kunnen worden uitgevoerd.

Een Azure Container Registry maken en uw installatiekopieën publiceren met Pulumi

Azure Container Registry is een Azure-aanbieding waarin containerinstallatiekopieën en vergelijkbare artefacten worden opgeslagen.

U kunt Pulumi gebruiken om een Azure Container Registry te maken en uw installatiekopieën ernaar te publiceren. Raadpleeg het voorbeeld van inrichten/aangepaste installatiekopieën voor een zelfstandig Pulumi-project waarmee alle vereiste resources in uw Azure-account worden gemaakt.

Een Azure Container Registry maken en uw installatiekopieën handmatig publiceren via CLI

Als u aangepaste installatiekopieën wilt gebruiken, moet u deze opslaan in een containerregister. Azure Container Registry (ACR) wordt hiervoor ten zeerste aanbevolen. Vanwege de nauwe integratie met ADE kan de installatiekopie worden gepubliceerd zonder openbare anonieme pull-toegang toe te staan.

Het is ook mogelijk om de installatiekopieën op te slaan in een ander containerregister, zoals Docker Hub, maar in dat geval moet deze openbaar toegankelijk zijn.

Let op

Als u de containerinstallatiekopie opslaat in een register met anonieme (niet-geverifieerde) pull-toegang, is deze openbaar toegankelijk. Doe dit niet als uw afbeelding gevoelige informatie bevat. Sla deze in plaats daarvan op in Azure Container Registry (ACR) met anonieme pull-toegang uitgeschakeld.

Als u een aangepaste installatiekopieën wilt gebruiken die is opgeslagen in de ACR, moet u ervoor zorgen dat ADE over de juiste machtigingen beschikt om toegang te krijgen tot uw installatiekopieën. Wanneer u een ACR-exemplaar maakt, is deze standaard beveiligd en kunnen geverifieerde gebruikers alleen toegang krijgen. Met deze configuratie hoeft u anonieme pull-toegang niet in te schakelen.

Volg een van de quickstarts om een exemplaar van de ACR te maken, dat kan worden gedaan via de Azure CLI, Azure Portal, PowerShell-opdrachten en meer.

Een openbaar register gebruiken met anonieme pull

Voer de volgende opdrachten uit in de Azure CLI om uw register in te stellen voor het ophalen van anonieme installatiekopieën:

az login
az acr login -n {YOUR_REGISTRY}
az acr update -n {YOUR_REGISTRY} --public-network-enabled true
az acr update -n {YOUR_REGISTRY} --anonymous-pull-enabled true

Wanneer u klaar bent om uw installatiekopieën naar uw register te pushen, voert u de volgende opdracht uit:

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

ACR gebruiken met beveiligde toegang

Standaard is toegang tot het ophalen of pushen van inhoud vanuit een Azure Container Registry alleen beschikbaar voor geverifieerde gebruikers. U kunt de toegang tot ACR verder beveiligen door de toegang van bepaalde netwerken te beperken en specifieke rollen toe te wijzen.

Netwerktoegang beperken

Als u de netwerktoegang tot uw ACR wilt beveiligen, kunt u de toegang tot uw eigen netwerken beperken of de toegang tot openbare netwerken volledig uitschakelen. Als u de netwerktoegang beperkt, moet u de firewall-uitzondering vertrouwde Microsoft-services toegang geven tot dit containerregister inschakelen.

Toegang vanuit openbare netwerken uitschakelen:

  1. Maak een ACR-exemplaar of gebruik een bestaand exemplaar.

  2. Ga in Azure Portal naar de ACR die u wilt configureren.

  3. Selecteer Netwerken in het linkermenu onder Instellingen.

  4. Selecteer Uitgeschakeld op de pagina Netwerken op het tabblad Openbare toegang onder Openbare netwerktoegang.

    Schermopname van Azure Portal, met de ACR-netwerkinstellingen, met Openbare toegang en Uitgeschakeld gemarkeerd.

  5. Controleer onder Firewall-uitzondering of Vertrouwde Microsoft-services toegang tot dit containerregister toestaan is geselecteerd en selecteer vervolgens Opslaan.

    Schermopname van de ACR-netwerkinstellingen, met Vertrouwde Microsoft-services toegang geven tot dit containerregister en Opslaan gemarkeerd.

De rol AcrPull toewijzen

Het maken van omgevingen met behulp van containerinstallatiekopieën maakt gebruik van de ADE-infrastructuur, inclusief projecten en omgevingstypen. Elk project heeft een of meer projectomgevingstypen, die leestoegang nodig hebben tot de containerinstallatiekopie die de omgeving definieert die moet worden geïmplementeerd. Als u de installatiekopieën in uw ACR veilig wilt openen, wijst u de AcrPull-rol toe aan elk type projectomgeving.

De AcrPull-rol toewijzen aan het projectomgevingstype:

  1. Ga in Azure Portal naar de ACR die u wilt configureren.

  2. Selecteer toegangsbeheer (IAM) in het linkermenu.

  3. Selecteer Toevoegen>Roltoewijzing toevoegen.

  4. Wijs de volgende rol toe. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

    Instelling Weergegeven als
    - Rol Selecteer AcrPull.
    Toegang toewijzen aan Selecteer Gebruiker, groep of service-principal.
    Leden Voer de naam in van het projectomgevingstype dat toegang nodig heeft tot de installatiekopie in de container.

    Het projectomgevingstype wordt weergegeven zoals in het volgende voorbeeld:

    Schermopname van het deelvenster Leden selecteren, met een lijst met projectomgevingstypen met een deel van de naam gemarkeerd.

In deze configuratie gebruikt ADE de beheerde identiteit voor het PET, ongeacht of het systeem is toegewezen of door de gebruiker is toegewezen.

Tip

Deze roltoewijzing moet worden gemaakt voor elk type projectomgeving. Het kan worden geautomatiseerd via de Azure CLI.

Wanneer u klaar bent om uw installatiekopieën naar uw register te pushen, voert u de volgende opdracht uit:

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

De installatiekopieën verbinden met uw omgevingsdefinitie

Wanneer u omgevingsdefinities maakt voor het gebruik van uw aangepaste installatiekopieën in de implementatie, bewerkt u de runner eigenschap in het manifestbestand (environment.yaml of manifest.yaml).

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

Toegang tot bewerkingslogboeken en foutdetails

ADE slaat foutdetails op voor een mislukte implementatie het bestand $ADE_ERROR_LOG .

Problemen met een mislukte implementatie oplossen:

  1. Meld u aan bij de ontwikkelaarsportal.

  2. Identificeer de omgeving die niet kan worden geïmplementeerd en selecteer Details weergeven.

    Schermopname van foutdetails van mislukte implementatie, met name een ongeldige naam voor een opslagaccount.

  3. Bekijk de foutdetails in de sectie Foutdetails .

    Schermopname van een mislukte implementatie van een omgeving met de knop Details weergeven weergegeven.

Daarnaast kunt u de Azure CLI gebruiken om de foutdetails van een omgeving weer te geven met behulp van de volgende opdracht:

az devcenter dev environment show --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}

Als u de bewerkingslogboeken voor een omgevingsimplementatie of verwijdering wilt weergeven, gebruikt u de Azure CLI om de meest recente bewerking voor uw omgeving op te halen en bekijkt u vervolgens de logboeken voor die bewerkings-id.

# Get list of operations on the environment, choose the latest operation
az devcenter dev environment list-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}
# Using the latest operation ID, view the operation logs
az devcenter dev environment show-logs-by-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME} --operation-id {LATEST_OPERATION_ID}