Bereitstellen eines virtuellen Netzwerks in einer externen Azure Container Apps-Umgebung

Das folgende Beispiel zeigt, wie Sie eine Container Apps-Umgebung in einem vorhandenen virtuellen Netzwerk erstellen.

Melden Sie sich zunächst beim Azure-Portal an.

Erstellen einer Container-App

Beginnen Sie auf der Startseite des Azure-Portals, um Ihre Container-App zu erstellen.

  1. Suchen Sie in der oberen Suchleiste nach Container Apps.
  2. Wählen Sie in den Suchergebnissen Container Apps aus.
  3. Wählen Sie die Schaltfläche Erstellen.

Registerkarte „Grundlagen“

Gehen Sie auf der Registerkarte Grundeinstellungen wie folgt vor:

  1. Geben Sie im Abschnitt Projektdetails die folgenden Werte ein.

    Einstellung Aktion
    Subscription Wählen Sie Ihr Azure-Abonnement.
    Resource group Wählen Sie Neu erstellen aus, und geben Sie my-container-apps ein.
    Name der Container-App Geben Sie my-container-app ein.

Erstellen einer Umgebung

Erstellen Sie als Nächstes eine Umgebung für Ihre Container-App.

  1. Wählen Sie die geeignete Region aus.

    Einstellung Wert
    Region Wählen Sie USA, Mitte aus.
  2. Wählen Sie im Feld Container Apps-Umgebung erstellen den Link Neu erstellen aus.

  3. Geben Sie auf der Seite Container Apps-Umgebung erstellen auf der Registerkarte Grundlagen die folgenden Werte ein:

    Einstellung Wert
    Umgebungsname Geben Sie my-environment ein.
    Umgebungstyp Wählen Sie "Nur Verbrauch" aus.
    Zonenredundanz Wählen Sie Deaktiviert aus.
  4. Wählen Sie die Registerkarte Überwachung aus, um einen Log Analytics-Arbeitsbereich zu erstellen.

  5. Wählen Sie Azure Log Analytics als Protokollziel aus.

  6. Wählen Sie im Feld Log Analytics-Arbeitsbereich den Link Neu erstellen aus, und geben Sie die folgenden Werte ein:

    Einstellung Wert
    Name Geben Sie my-container-apps-logs ein.

    Das Feld "Ort " wird für Sie mit Central US vorgefüllt.

  7. Wählen Sie OK aus.

Hinweis

Sie können ein vorhandenes virtuelles Netzwerk verwenden, aber ein dediziertes Subnetz mit einem CIDR-Bereich von /23 oder mehr ist für die Verwendung mit Container-Apps erforderlich, wenn sie nur die Architektur "Verbrauch" verwenden. Wenn Sie eine Workloadprofile-Umgebung verwenden, ist ein /27 oder mehr erforderlich. Weitere Informationen zur Subnetzgröße finden Sie in der Übersicht über die Netzwerkarchitektur.

  1. Wählen Sie die Registerkarte Netzwerk aus, um ein VNET zu erstellen.

  2. Wählen Sie neben Use your own virtual network (Eigenes virtuelles Netzwerk verwenden) die Option Ja aus.

  3. Wählen Sie neben dem Feld Virtuelles Netzwerk den Link Neu erstellen aus, und geben Sie den folgenden Wert ein:

    Einstellung Wert
    Name Geben Sie my-custom-vnet ein.
  4. Wählen Sie die Schaltfläche OK aus.

  5. Wählen Sie neben dem Feld Infrastruktursubnetz den Link Neu erstellen aus, und geben Sie die folgenden Werte ein:

    Einstellung Wert
    Subnetzname Geben Sie infrastructure-subnet ein.
    Adressblock des virtuellen Netzwerks Lassen Sie die Standardwerte unverändert.
    Subnetzadressblock Lassen Sie die Standardwerte unverändert.
  6. Wählen Sie die Schaltfläche OK aus.

  7. Wählen Sie unter Virtuelle IP-Adresse die Option Extern aus.

  8. Klicken Sie auf Erstellen.

Bereitstellen der Container-App

  1. Wählen Sie "Überprüfen" aus, und erstellen Sie am unteren Rand der Seite.

    Wenn keine Fehler gefunden werden, wird die Schaltfläche Erstellen aktiviert.

    Werden Fehler gefunden, wird jede Registerkarte, die Fehler enthält, mit einem roten Punkt markiert. Navigieren Sie zur entsprechenden Registerkarte. Felder, die einen Fehler enthalten, werden rot hervorgehoben. Wenn Sie alle Fehler behoben haben, wählen Sie erneut Überprüfen und erstellen aus.

  2. Klicken Sie auf Erstellen.

    Eine Seite mit der Meldung Bereitstellung wird durchgeführt wird angezeigt. Nachdem die Bereitstellung erfolgreich abgeschlossen wurde, wird die Meldung angezeigt: Ihre Bereitstellung ist abgeschlossen.

Voraussetzungen

  • Azure-Konto mit einem aktiven Abonnement.
  • Installieren Sie die Azure CLI, Version 2.28.0 oder höher.

Setup

Melden Sie sich zunächst bei Azure an. Führen Sie den folgenden Befehl aus, und befolgen Sie die Anweisungen, um den Authentifizierungsprozess abzuschließen.

az login

Installieren Sie als Nächstes die Azure Container Apps-Erweiterung für die CLI.

az extension add --name containerapp --upgrade

Die aktuelle Erweiterung oder das aktuelle Modul wurde installiert. Registrieren Sie nun den Namespace Microsoft.App.

Hinweis

Azure Container Apps-Ressourcen wurden vom Microsoft.Web-Namespace zum Microsoft.App-Namespace migriert. Weitere Informationen finden Sie unter Namespacemigration von Microsoft.Web zu Microsoft.App im März 2022.

az provider register --namespace Microsoft.App

Registrieren Sie den Anbieter Microsoft.OperationalInsights für den Azure Monitor Log Analytics-Arbeitsbereich, falls Sie ihn bisher noch nicht verwendet haben.

az provider register --namespace Microsoft.OperationalInsights

Legen Sie anschließend die folgenden Umgebungsvariablen fest:

RESOURCE_GROUP="my-container-apps"
LOCATION="canadacentral"
CONTAINERAPPS_ENVIRONMENT="my-environment"

Wenn diese Variablen definiert sind, können Sie eine Ressourcengruppe erstellen, um die Dienste zu organisieren, die mit Ihrer neuen Container-App verknüpft sind.

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

Wenn die CLI aktualisiert wurde und eine neue Ressourcengruppe verfügbar ist, können Sie eine Container Apps-Umgebung erstellen und Ihre Container-App bereitstellen.

Erstellen einer Umgebung

Eine Umgebung in Azure Container Apps erstellt eine sichere Grenze für eine Gruppe von Container-Apps. Container-Apps, die in derselben Umgebung bereitgestellt werden, werden im gleichen virtuellen Netzwerk bereitgestellt und schreiben Protokolle in denselben Log Analytics-Arbeitsbereich.

Registrieren Sie den Anbieter Microsoft.ContainerService.

az provider register --namespace Microsoft.ContainerService

Deklarieren Sie eine Variable zum Aufnehmen des VNet-Namens.

VNET_NAME="my-custom-vnet"

Erstellen Sie nun ein virtuelles Azure-Netzwerk, das der Container Apps-Umgebung zugeordnet werden soll. Das virtuelle Netzwerk muss über ein Subnetz verfügen, das für die Umgebungsbereitstellung verfügbar ist.

Hinweis

Das Präfix für Netzwerksubnetzadressen erfordert einen minimalen CIDR-Bereich /23 für die Verwendung mit Container-Apps, wenn nur die Architektur "Verbrauch" verwendet wird. Bei Verwendung der WorkloadProfile-Architektur ist ein /27 oder mehr erforderlich. Weitere Informationen zur Subnetzgröße finden Sie in der Übersicht über die Netzwerkarchitektur.

az network vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --location $LOCATION \
  --address-prefix 10.0.0.0/16
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --address-prefixes 10.0.0.0/21

Mit dem erstellten virtuellen Netzwerk können Sie die IDs für das Infrastruktursubnetz abrufen.

INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name $VNET_NAME --name infrastructure-subnet --query "id" -o tsv | tr -d '[:space:]'`

Erstellen Sie schließlich die Container Apps-Umgebung mithilfe des benutzerdefinierten VNet, das in den vorherigen Schritten bereitgestellt wurde.

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION" \
  --infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET

In der folgenden Tabelle werden die in containerapp env create verwendeten Parameter beschrieben.

Parameter Beschreibung
name Name der Container-Apps-Umgebung.
resource-group Name der Ressourcengruppe
location Azure-Standort, an dem die Umgebung bereitgestellt werden soll.
infrastructure-subnet-resource-id Ressourcen-ID eines Subnetzs für Infrastrukturkomponenten und Benutzeranwendungscontainer.

Nachdem Ihre Umgebung mit einem benutzerdefinierten virtuellen Netzwerk erstellt wurde, können Sie jetzt Container-Apps in der Umgebung bereitstellen.

Optionale Konfiguration

Sie haben die Möglichkeit, ein privates DNS bereitzustellen und benutzerdefinierte Netzwerk-IP-Adressbereiche für die Container Apps-Umgebung zu definieren.

Bereitstellen mit einem privaten DNS

Wenn Sie die Container-App mit einem privaten DNS bereitstellen möchten, führen Sie die folgenden Befehle aus.

Extrahieren Sie zunächst identifizierbare Informationen aus der Umgebung.

ENVIRONMENT_DEFAULT_DOMAIN=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.defaultDomain --out json | tr -d '"'`
ENVIRONMENT_STATIC_IP=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.staticIp --out json | tr -d '"'`
VNET_ID=`az network vnet show --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --query id --out json | tr -d '"'`

Richten Sie als Nächstes das private DNS ein.

az network private-dns zone create \
  --resource-group $RESOURCE_GROUP \
  --name $ENVIRONMENT_DEFAULT_DOMAIN
az network private-dns link vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --virtual-network $VNET_ID \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN -e true
az network private-dns record-set a add-record \
  --resource-group $RESOURCE_GROUP \
  --record-set-name "*" \
  --ipv4-address $ENVIRONMENT_STATIC_IP \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN

Netzwerkparameter

Es gibt drei optionale Netzwerkparameter, die Sie beim Aufrufen von containerapp env create definieren können. Verwenden Sie diese Optionen, wenn Sie über ein gepeertes VNet mit separaten Adressbereichen verfügen. Durch die explizite Konfiguration dieser Bereiche wird sichergestellt, dass die von der Container Apps-Umgebung verwendeten Adressen keine Konflikte mit anderen Bereichen in der Netzwerkinfrastruktur verursachen.

Sie müssen entweder Werte für alle drei dieser Eigenschaften oder für keine dieser Eigenschaften angeben. Wenn Sie keine Werte angeben, werden sie für Sie generiert.

Parameter Beschreibung
platform-reserved-cidr Der Adressbereich, der intern für Infrastrukturdienste der Umgebung verwendet wird. Muss eine Größe zwischen /23 und /12 bei Verwendung der "Nur Verbrauch"-Architektur aufweisen
platform-reserved-dns-ip Eine IP-Adresse aus dem platform-reserved-cidr-Bereich, der für den internen DNS-Server verwendet wird. Die Adresse darf nicht der ersten Adresse im Bereich oder der Netzwerkadresse entsprechen. Wenn beispielsweise platform-reserved-cidr auf 10.2.0.0/16 festgelegt ist, kann platform-reserved-dns-ip nicht 10.2.0.0 (die Netzwerkadresse) oder 10.2.0.1 (die Infrastruktur reserviert die Verwendung dieser IP-Adresse) sein. In diesem Fall wäre 10.2.0.2 die erste IP-Adresse, die für das DNS verwendet werden kann.
docker-bridge-cidr Der Adressbereich, der dem Docker-Bridgenetzwerk zugewiesen ist. Dieser Bereich muss eine Größe zwischen /28 und /12 aufweisen.
  • Die Adressbereiche platform-reserved-cidr und docker-bridge-cidr können nicht miteinander oder mit den Bereichen eines der beiden bereitgestellten Subnetze in Konflikt stehen. Vergewissern Sie sich außerdem, dass diese Bereiche keinen Konflikt mit anderen Adressbereichen im VNET verursachen.

  • Wenn diese Eigenschaften nicht bereitgestellt werden, werden von der CLI die Bereichswerte automatisch basierend auf dem Adressbereich des VNET generiert, damit Bereichskonflikte verhindert werden.

Bereinigen von Ressourcen

Wenn Sie diese Anwendung nicht weiterverwenden möchten, können Sie die Azure Container Apps-Instanz und alle zugehörigen Dienste löschen, indem Sie die Ressourcengruppe my-container-apps entfernen. Durch das Löschen dieser Ressourcengruppe werden auch die Ressourcengruppe gelöscht, die automatisch vom Container Apps-Dienst erstellt wird, der die benutzerdefinierten Netzwerkkomponenten enthält.

Achtung

Mit dem folgenden Befehl werden die angegebene Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht. Falls in der angegebenen Ressourcengruppe Ressourcen enthalten sind, die nicht zum Umfang dieses Leitfadens gehören, werden sie ebenfalls gelöscht.

az group delete --name $RESOURCE_GROUP

Nächste Schritte