Freigeben über


Konfigurieren des Containerimages zum Ausführen von Bereitstellungen

In diesem Artikel erfahren Sie, wie Sie benutzerdefinierte Bicep-Containerimages erstellen, um Ihre Umgebungsdefinitionen in Azure Deployment Environments (ADE) bereitzustellen.

In diesem Artikel erfahren Sie, wie Sie benutzerdefinierte Terraform-Containerimages erstellen, um Ihre Umgebungsdefinitionen in Azure Deployment Environments (ADE) bereitzustellen. Sie erfahren, wie Sie ein benutzerdefiniertes Image für die Bereitstellung von Infrastruktur mithilfe des Terraform-IaC-Frameworks (Infrastructure-as-Code) konfigurieren.

In diesem Artikel erfahren Sie, wie Sie Pulumi für Bereitstellungen in Azure Deployment Environments (ADE) verwenden. Sie erfahren, wie Sie ein einfaches Image verwenden, das von Pulumi bereitgestellt wird, oder wie Sie ein benutzerdefiniertes Image für die Bereitstellung einer Infrastruktur mithilfe des Pulumi-IaC-Frameworks (Infrastructure-as-Code) bereitstellen.

ADE unterstützt ein Erweiterbarkeitsmodell, mit dem Sie benutzerdefinierte Images erstellen können, die Sie in Ihren Umgebungsdefinitionen verwenden können. Um dieses Erweiterbarkeitsmodell zu verwenden, erstellen Sie eigene benutzerdefinierte Images, und speichern Sie sie in einer Containerregistrierung wie Azure Container Registry (ACR) oder Docker Hub. Anschließend können Sie in Ihren Umgebungsdefinitionen auf diese Images verweisen, um Ihre Umgebungen bereitzustellen.

Eine Umgebungsdefinition umfasst mindestens zwei Dateien: eine Vorlagendatei, z. B. azuredeploy.json oder main.bicep, und eine Manifestdatei namens environment.yaml. ADE verwendet Container zum Bereitstellen von Umgebungsdefinitionen.

Das ADE-Team bietet eine Auswahl an Images für den Einstieg, einschließlich eines Kernimages und eines ARM-Bicep-Images (Azure Resource Manager). Sie können auf diese Beispielimages im Ordner Runner-Images zugreifen.

Eine Umgebungsdefinition umfasst mindestens zwei Dateien: eine Vorlagendatei, z. B. main.tf, und eine Manifestdatei namens environment.yaml. Sie verwenden einen Container, um die Umgebungsdefinition bereitzustellen, die Terraform verwendet.

Eine Umgebungsdefinition umfasst mindestens zwei Dateien: eine Pulumi-Projektdatei, Pulumi.yaml, und eine Manifestdatei mit dem Namen environment.yaml. Sie kann auch ein Benutzerprogramm enthalten, das in Ihrer bevorzugten Programmiersprache geschrieben wurde: C#, TypeScript, Python usw. ADE verwendet Container zum Bereitstellen von Umgebungsdefinitionen.

Voraussetzungen

Verwenden von Containerimages mit ADE

Sie können einen der folgenden Ansätze verwenden, um Containerimages mit ADE zu verwenden:

  • Beispielcontainerimage verwenden: Verwenden Sie für einfache Szenarien das ARM-Bicep-Beispielcontainerimage, das von ADE bereitgestellt wird.
  • Benutzerdefiniertes Containerimage erstellen: Erstellen Sie für komplexere Szenarien ein benutzerdefiniertes Containerimage, das Ihren spezifischen Anforderungen entspricht.

Dies sind die wichtigsten Schritte, die Sie beim Verwenden eines Containerimages ausführen werden:

  1. Wählen Sie den gewünschten Imagetyp aus: ein Beispielimage oder ein benutzerdefiniertes Image.
    • Wenn Sie ein benutzerdefiniertes Image verwenden, beginnen Sie mit einem Beispielimage, und passen Sie es dann an Ihre Anforderungen an.
  2. Erstellen des Images.
  3. Laden Sie das Image in eine private oder eine öffentliche Registrierung hoch.
  4. Konfigurieren Sie den Zugriff auf die Registrierung.
    • Konfigurieren Sie für eine öffentliche Registrierung anonymen Pull.
    • Erteilen Sie für eine private Registrierung dem DevCenter ACR-Berechtigungen.
  5. Fügen Sie den Imagespeicherort dem runner-Parameter in Ihrer Umgebungsdefinition hinzu.
  6. Stellen Sie Umgebungen bereit, die Ihr benutzerdefiniertes Image verwenden.

Der erste Schritt im Prozess besteht darin, den Typ des zu verwendenden Images auszuwählen. Wählen Sie die entsprechende Registerkarte aus, um den Prozess anzuzeigen.

Verwenden eines Beispielcontainerimages

ADE unterstützt ARM und Bicep ohne zusätzliche Konfiguration. Sie erstellen eine Umgebungsdefinition, die Azure-Ressourcen für eine Bereitstellungsumgebung bereitstellt, indem Sie Ihrem Katalog die Vorlagendateien (z. B. azuredeploy.json und environment.yaml) hinzufügen. ADE verwendet dann das ARM-Bicep-Beispielcontainerimage, um die Bereitstellungsumgebung zu erstellen.

In der Datei environment.yaml gibt die runner-Eigenschaft den Speicherort des Containerimages an, das Sie verwenden möchten. Um das Beispielimage zu verwenden, das in der Microsoft-Artefaktregistrierung veröffentlicht wurde, verwenden Sie die entsprechenden Bezeichner für runner.

Das folgende Beispiel zeigt einen runner, der auf das ARM-Bicep-Beispielcontainerimage verweist:

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

Sie können das Bicep-Beispielcontainerimage im ADE-Beispielrepository unter dem Ordner für Runner-Images für das ARM-Bicep-Image sehen.

Weitere Informationen zum Erstellen von Umgebungsdefinitionen, die die ADE-Containerimages verwenden, um Ihre Azure-Ressourcen bereitzustellen, finden Sie unter Hinzufügen und Konfigurieren einer Umgebungsdefinition.

Verwenden Sie ein benutzerdefiniertes Image, um ein Terraform-Image zu konfigurieren.

Verwenden eines Beispielcontainerimages, das von Pulumi bereitgestellt wird

Das Pulumi-Team bietet ein vorgefertigtes Bild für die ersten Schritte, das Sie im Ordner Runner-Image sehen können. Dieses Image ist im Docker Hub von Pulumi öffentlich verfügbar als pulumi/azure-deployment-environments, sodass Sie es direkt aus Ihren ADE-Umgebungsdefinitionen verwenden können.

Hier ist eine environment.yaml-Beispieldatei, die das vorgefertigte Image verwendet:

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

Im Ordner Umgebungen finden Sie einige Beispielumgebungsdefinitionen.

Erstellen eines Images

Sie können Ihr Image mithilfe der Docker-CLI erstellen. Stellen Sie sicher, dass das Docker-Modul auf Ihrem Computer installiert ist. Navigieren Sie dann zum Verzeichnis Ihres Dockerfiles, und führen Sie den folgenden Befehl aus:

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

Wenn Sie Ihr Image beispielsweise in einem Repository in Ihrer Registrierung mit dem Namen customImage speichern und mit der Tagversion 1.0.0 hochladen möchten, führen Sie Folgendes aus:

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

Verfügbarmachen des benutzerdefinierten Images für ADE

Um benutzerdefinierte Images verwenden zu können, müssen Sie sie in einer Containerregistrierung speichern. Sie können eine öffentliche oder eine private Containerregistrierung verwenden. Azure Container Registry (ACR) wird dringend empfohlen. Aufgrund der engen Verzahnung mit ADE kann das Image veröffentlicht werden, ohne den öffentlichen, anonymen Pullzugriff zuzulassen. Sie müssen Ihr benutzerdefiniertes Containerimage erstellen und an eine Containerregistrierung senden, um es für die Verwendung in ADE verfügbar zu machen.

Es ist auch möglich, das Image in einer anderen Containerregistrierung wie Docker Hub zu speichern, aber in diesem Fall muss es öffentlich zugänglich sein.

Achtung

Wenn Sie Ihr Containerimage in einer Registrierung mit anonymem (nicht authentifiziertem) Pullzugriff speichern, ist es öffentlich zugänglich. Tun Sie das nicht, wenn Ihr Image vertrauliche Informationen enthält. Speichern Sie es stattdessen in Azure Container Registry (ACR) mit deaktiviertem anonymen Pullzugriff.

Um ein benutzerdefiniertes Image zu verwenden, das in ACR gespeichert ist, müssen Sie sicherstellen, dass ADE über entsprechende Berechtigungen für den Zugriff auf Ihr Image verfügt. Wenn Sie eine ACR-Instanz erstellen, ist sie standardmäßig geschützt und ermöglicht nur authentifizierten Benutzern den Zugriff.

Sie können Pulumi verwenden, um eine Azure Container Registry zu erstellen und Ihr Image darin zu veröffentlichen. Verweisen Sie auf das Bereitstellungs-/benutzerdefinierte Image für ein eigenständiges Pulumi-Projekt, das alle erforderlichen Ressourcen in Ihrem Azure-Konto erstellt.

Wählen Sie die entsprechende Registerkarte aus, um mehr über die einzelnen Ansätze zu erfahren.

Verwenden einer privaten Registrierung mit gesichertem Zugriff

Standardmäßig ist der Zugriff auf Pull- oder Pushinhalte aus einer Azure Container Registry-Instanz nur für authentifizierte Benutzer möglich. Sie können den Zugriff auf die ACR weiter schützen, indem Sie den Zugriff von bestimmten Netzwerken einschränken und bestimmte Rollen zuweisen.

Um eine ACR-Instanz zu erstellen, was über die Azure CLI, das Azure-Portal, PowerShell-Befehle und vieles mehr möglich ist, befolgen Sie eine der Schnellstartanleitungen.

Netzwerkzugriff einschränken

Um den Netzwerkzugriff auf ACR zu schützen, können Sie den Zugriff auf Ihre eigenen Netzwerke einschränken oder den Zugriff auf öffentliche Netzwerke vollständig deaktivieren. Wenn Sie den Netzwerkzugriff einschränken, müssen Sie die Firewallausnahme Vertrauenswürdigen Microsoft-Diensten Zugriff auf diese Containerregistrierung gestatten aktivieren.

So deaktivieren Sie den Zugriff von öffentlichen Netzwerken:

  1. Erstellen Sie eine ACR-Instanz, oder verwenden Sie eine vorhandene Instanz.

  2. Navigieren Sie im Azure-Portal zu der ACR-Instanz, die Sie konfigurieren möchten.

  3. Wählen Sie im linken Menü unter Einstellungen die Option Netzwerk aus.

  4. Wählen Sie auf der Seite „Netzwerk“ auf der Registerkarte Öffentlicher Zugriff unter Öffentlicher Netzwerkzugriff die Option Deaktiviert aus.

    Screenshot des Azure-Portals mit den ACR-Netzwerkeinstellungen mit den hervorgehobenen Optionen „Öffentlicher Zugriff“ und „Deaktiviert“

  5. Überprüfen Sie unter Firewallausnahme, ob Vertrauenswürdigen Microsoft-Diensten Zugriff auf diese Containerregistrierung gestatten aktiviert ist, und wählen Sie dann Speichern aus.

    Screenshot: ACR-Netzwerkeinstellungen mit den hervorgehobenen Optionen „Vertrauenswürdigen Microsoft-Diensten Zugriff auf diese Containerregistrierung gestatten“ und „Speichern“

Zuweisen der AcrPull-Rolle

Das Erstellen von Umgebungen mithilfe von Containerimages verwendet die ADE-Infrastruktur, einschließlich Projekten und Umgebungstypen. Jedes Projekt verfügt über einen oder mehrere Projektumgebungstypen, die Lesezugriff auf das Containerimage benötigen, das die bereitzustellende Umgebung definiert. Um sicher auf die Images in Ihrer ACR zuzugreifen, weisen Sie die AcrPull-Rolle jedem Projektumgebungstyp zu.

So weisen Sie die AcrPull-Rolle dem Projektumgebungstyp zu:

  1. Navigieren Sie im Azure-Portal zu der ACR-Instanz, die Sie konfigurieren möchten.

  2. Wählen Sie im linken Menü Zugriffssteuerung (IAM) aus.

  3. Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen.

  4. Weisen Sie die folgende Rolle zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

    Einstellung Wert
    Rolle Wählen Sie AcrPull aus.
    Zugriff zuweisen zu Wählen Sie User, group, or service principal (Benutzer, Gruppe oder Dienstprinzipal) aus.
    Mitglieder Geben Sie den Namen des Projektumgebungstyps ein, der auf das Image im Container zugreifen muss.

    Der Projektumgebungstyp wird wie im folgenden Beispiel angezeigt:

    Screenshot: Der Bereich „Mitglieder auswählen“ mit einer Liste der Projektumgebungstypen mit hervorgehobenem Namensteil

In dieser Konfiguration verwendet ADE die verwaltete Identität für PET, unabhängig davon, ob diese systemseitig oder benutzerseitig zugewiesen ist.

Tipp

Diese Rollenzuweisung muss für jeden Projektumgebungstyp vorgenommen werden. Sie kann über die Azure CLI automatisiert werden.

Wenn Sie bereit sind, Ihr Image an Ihre Registrierung zu pushen, führen Sie den folgenden Befehl aus:

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

Signieren eines Containerimages mit Notation

Anstatt Ihr benutzerdefiniertes Image zu erstellen und selbst in eine Containerregistrierung zu übertragen, können Sie ein Skript zum Erstellen und Pushen in eine angegebene Containerregistrierung verwenden.

Microsoft bietet ein Schnellstartskript, mit dem Sie Ihr benutzerdefiniertes Image erstellen und an eine Registrierung pushen können. Das Skript erstellt Ihr Image und überträgt es unter dem Repository ade und dem Tag latest an eine angegebene Azure Container Registry (ACR).

Um das Skript zu verwenden, müssen Sie Folgendes tun:

  1. Erstellen Sie einen Dockerfile- und Skriptordner, um das ADE-Erweiterbarkeitsmodell zu unterstützen.
  2. Geben Sie einen Registrierungsnamen und ein Verzeichnis für Ihr benutzerdefiniertes Image an.
  3. Azure CLI und Docker Desktop müssen installiert und in Ihren PATH-Variablen enthalten sein.
  4. Docker Desktop muss ausgeführt werden.
  5. Sie müssen über Berechtigungen zum Pushen an die angegebene Registrierung verfügen.

Sie können das Skript hier anzeigen.

Sie können das Skript mit dem folgenden Befehl in PowerShell aufrufen:

.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'

Wenn Sie außerdem an ein bestimmtes Repository und einen bestimmten Tagnamen pushen möchten, können Sie Folgendes ausführen:

.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'

Verbinden des Images mit Ihrer Umgebungsdefinition

Wenn Sie Umgebungsdefinitionen erstellen, die Ihr benutzerdefiniertes Image in Ihrer Bereitstellung verwenden sollen, bearbeiten Sie die runner-Eigenschaft in der Manifestdatei („environment.yaml“ oder „manifest.yaml“).

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

Weitere Informationen zum Erstellen von Umgebungsdefinitionen, die die ADE-Containerimages zum Bereitstellen Ihrer Azure-Ressourcen verwenden, finden Sie unter Hinzufügen und Konfigurieren einer Umgebungsdefinition.