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.
- Suchen Sie in der oberen Suchleiste nach Container Apps.
- Wählen Sie in den Suchergebnissen Container Apps aus.
- Wählen Sie die Schaltfläche Erstellen.
Registerkarte „Grundlagen“
Gehen Sie auf der Registerkarte Grundeinstellungen wie folgt vor:
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. Bereitstellungsquelle Wählen Sie Containerimage aus.
Erstellen einer Umgebung
Erstellen Sie als Nächstes eine Umgebung für Ihre Container-App.
Wählen Sie die geeignete Region aus.
Einstellung Wert Region Wählen Sie USA, Mitte aus. Wählen Sie im Feld Container Apps-Umgebung erstellen den Link Neu erstellen aus.
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 Workloadprofile aus. Zonenredundanz Wählen Sie Deaktiviert aus. Wählen Sie die Registerkarte Überwachung aus, um einen Log Analytics-Arbeitsbereich zu erstellen.
Wählen Sie Azure Log Analytics als Protokollziel aus.
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. Im Feld Standort ist bereits USA, Mitte angegeben.
Wählen Sie OK aus.
Hinweis
Sie können ein vorhandenes virtuelles Netzwerk verwenden. Für die Verwendung mit Container Apps ist aber ein dediziertes Subnetz mit einem CIDR-Bereich von /23
oder mehr erforderlich, wenn Sie eine reine Verbrauchsarchitektur verwenden. Wenn Sie eine Umgebung mit Workloadprofilen verwenden, ist /27
oder mehr erforderlich. Weitere Informationen zur Subnetzgröße finden Sie in der Übersicht über die Netzwerkarchitektur.
Wählen Sie die Registerkarte Netzwerk aus, um ein VNET zu erstellen.
Wählen Sie neben Use your own virtual network (Eigenes virtuelles Netzwerk verwenden) die Option Ja aus.
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. Wählen Sie die Schaltfläche OK aus.
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. Wählen Sie die Schaltfläche OK aus.
Wählen Sie unter Virtuelle IP-Adresse die Option Extern aus.
Klicken Sie auf Erstellen.
Bereitstellen der Container-App
Wählen Sie unten auf der Seite die Option Überprüfen und Erstellen aus.
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.
Klicken Sie auf Erstellen.
Eine Seite mit der Meldung Bereitstellung wird durchgeführt wird angezeigt. Nach dem erfolgreichen Abschluss der Bereitstellung wird die Meldung Ihre Bereitstellung wurde abgeschlossen angezeigt.
Voraussetzungen
- Azure-Konto mit einem aktiven Abonnement.
- Falls Sie keins haben, können Sie kostenlos eins erstellen.
- Installieren Sie die Azure CLI, Version 2.28.0 oder höher.
Setup
Um sich ausgehend von der CLI bei Azure anzumelden, führen Sie den folgenden Befehl aus und befolgen Sie die Anweisungen, um den Authentifizierungsprozess abzuschließen.
az login
Verwenden Sie den Upgradebefehl, um sicherzustellen, dass Sie die neueste Version der CLI ausführen.
az upgrade
Installieren oder aktualisieren Sie als Nächstes die Azure Container Apps-Erweiterung für die CLI.
Falls Sie Fehler aufgrund fehlender Parameter erhalten, wenn Sie az containerapp
-Befehle in der Azure CLI oder Cmdlets aus dem Az.App
-Modul in Azure PowerShell ausführen, stellen Sie sicher, dass die aktuelle Version der Azure Container Apps-Erweiterung installiert ist.
az extension add --name containerapp --upgrade
Hinweis
Ab Mai 2024 aktivieren Azure CLI-Erweiterungen standardmäßig keine Previewfunktionen mehr. Um auf Previewfunktionen von Container Apps zuzugreifen, installieren Sie die Container Apps-Erweiterung mit --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Nachdem die aktuelle Erweiterung oder das aktuelle Modul installiert ist, registrieren Sie nun die Namespaces Microsoft.App
und Microsoft.OperationalInsights
.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Festlegen von Umgebungsvariablen
Legen Sie die folgenden Umgebungsvariablen fest. Ersetzen Sie <PLACEHOLDERS>
durch Ihre eigenen Werte:
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Erstellen einer Azure-Ressourcengruppe
Erstellen Sie eine Ressourcengruppe, um die Dienste im Zusammenhang mit der Bereitstellung Ihrer Container-App zu organisieren.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
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 CIDR-Mindestbereich von /23
für die Verwendung mit Container Apps, wenn eine reine Verbrauchsarchitektur verwendet wird. Bei einer Architektur mit Workloadprofilen ist /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
Wenn Sie die Umgebung für Workloadprofile verwenden, aktualisieren Sie das VNET, um das Subnetz an Microsoft.App/environments
zu delegieren. Diese Delegierung gilt nicht für die Nur-Verbrauch-Umgebung.
az network vnet subnet update \
--resource-group $RESOURCE_GROUP \
--vnet-name $VNET_NAME \
--name infrastructure-subnet \
--delegations Microsoft.App/environments
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 bei Verwendung eine reinen Verbrauchsarchitektur eine Größe zwischen /23 und /12 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
unddocker-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 weiter verwenden möchten, können Sie die Ressourcengruppe my-container-apps entfernen. Dadurch werden die Azure Container Apps-Instanz und alle zugehörigen Dienste gelöscht. Außerdem wird die Ressourcengruppe gelöscht, die der Container Apps-Dienst automatisch erstellt hat und die 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