Freigeben über


Verwenden eines privaten Endpunkts mit einer Azure Container Apps-Umgebung

In diesem Artikel erfahren Sie, wie Sie einen privaten Endpunkt verwenden, um auf sichere Weise auf Ihre Azure-Container-App zuzugreifen, ohne sie für das öffentliche Internet verfügbar zu machen.

Ein privater Endpunkt verwendet eine private IP-Adresse aus Ihrem virtuellen Netzwerk (VNet). Dieser Endpunkt stellt eine private und sichere Verbindung mit einem Dienst her, der von Azure Private Link unterstützt wird.

Voraussetzungen

Erstellen einer Container-App

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

  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.

  4. Geben Sie auf der Seite " Container-App erstellen " auf der Registerkarte " Grundlagen " die folgenden Werte ein.

    Einstellung Aktion
    Abonnement Wählen Sie Ihr Azure-Abonnement.
    Ressourcengruppe Wählen Sie den Link " Neue Ressourcengruppe erstellen " aus, und geben Sie "meine Container-Apps" ein.
    Name der Container-App Geben Sie my-container-app ein.
    Bereitstellungsquelle Wählen Sie Containerimage aus.
    Region Wählen Sie USA, Mitte aus.
  5. Wählen Sie im Feld " Container-Apps-Umgebung erstellen" den Link " Neue Umgebung erstellen " aus.

  6. 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.
    Zonenredundanz Wählen Sie Deaktiviert aus.
  7. Wählen Sie die Registerkarte Netzwerk aus.

  8. Legen Sie den öffentlichen Netzwerkzugriff auf "Deaktivieren" fest: Blockieren des gesamten eingehenden Datenverkehrs aus dem öffentlichen Internet. Standardmäßig ist der Zugriff auf öffentliche Netzwerke aktiviert, was bedeutet, dass private Endpunkte deaktiviert sind.

  9. Übernehmen Sie für Eigenes virtuelles Netzwerk verwenden die Einstellung Nein. Sie können ein vorhandenes VNet verwenden, aber private Endpunkte werden nur in Arbeitslastprofilumgebungen unterstützt, die ein Subnetz mit einem minimalen CIDR-Bereich von /27 oder größer erfordern. Weitere Informationen zur Subnetzgröße finden Sie in der Übersicht über die Netzwerkarchitektur.

  10. Legen Sie Private Endpunkte aktivieren auf Ja fest.

  11. Legen Sie Name des privaten Endpunkts auf my-private-endpoint fest.

  12. Wählen Sie im Feld Virtuelles Netzwerk mit privatem Endpunktden Link Neu erstellen aus.

  13. Legen Sie auf der Seite Virtuelles Netzwerk erstellen die Option Virtuelles Netzwerk auf my-private-endpoint-vnet fest. Wählen Sie OK aus.

  14. Wählen Sie im Feld Subnetz des virtuellen Netzwerks mit privatem Endpunktden Link Neu erstellen aus.

  15. Legen Sie auf der Seite Subnetz erstellen die Option Subnetzname auf my-private-endpoint-vnet-subnet fest. Wählen Sie OK aus.

  16. Übernehmen Sie für DNS die Einstellung Private Azure DNS-Zone.

  17. Klicken Sie auf Erstellen.

  18. Wählen Sie auf der Seite " Container-App erstellen " die Registerkarte " Container " aus.

  19. Wählen Sie Schnellstartimage verwenden aus.

Bereitstellen der Container-App

  1. 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.

  2. 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.

Überprüfen der Bereitstellung

  1. Wählen Sie Zu Ressource wechseln, um Ihre neue Container-App anzuzeigen.

  2. Wählen Sie den Link neben Anwendungs-URL aus, um Ihre Anwendung anzuzeigen.

  1. Wenn Sie zum Container-App-Endpunkt navigieren, wird die folgende Meldung angezeigt:

    The public network access on this managed environment is disabled. To connect to this managed environment, please use the Private Endpoint from inside your virtual network. To learn more https://aka.ms/PrivateEndpointTroubleshooting.
    

Voraussetzungen

  • Azure-Konto mit einem aktiven Abonnement.

  • Die aktuelle Version der Azure-Befehlszeilenschnittstelle. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass Sie die aktuelle Version ausführen.

    az upgrade
    
  • Die aktuelle Version der Azure Container Apps-Erweiterung für die Azure CLI. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass Sie die aktuelle Version ausführen.

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

    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.

Weitere Informationen zu Voraussetzungen und Setup finden Sie unter Schnellstart: Bereitstellen Ihrer ersten Container-App mit „containerapp up“.

Festlegen von Umgebungsvariablen

Legen Sie die folgenden Umgebungsvariablen fest.

RESOURCE_GROUP="my-container-apps"
LOCATION="centralus"
ENVIRONMENT_NAME="my-environment"
CONTAINERAPP_NAME="my-container-app"
VNET_NAME="my-vnet"
SUBNET_NAME="my-subnet"
PRIVATE_ENDPOINT="my-private-endpoint"
PRIVATE_ENDPOINT_CONNECTION="my-private-endpoint-connection"
PRIVATE_DNS_ZONE="privatelink.${LOCATION}.azurecontainerapps.io"
DNS_LINK="my-dns-link"

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 eines virtuellen Netzwerks

  1. Erstellen Sie ein virtuelles Azure-Netzwerk (VNet). Sie können ein vorhandenes VNet verwenden, aber private Endpunkte werden nur in Arbeitslastprofilumgebungen unterstützt, die ein Subnetz mit einem minimalen CIDR-Bereich von /27 oder größer erfordern. 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
    
  2. Erstellen Sie ein Subnetz, das dem VNet zugeordnet werden und den privaten Endpunkt enthalten soll.

    az network vnet subnet create \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 10.0.0.0/21
    
  3. Rufen Sie die Subnetz-ID ab. Sie verwenden diese ID, um den privaten Endpunkt zu erstellen.

    SUBNET_ID=$(az network vnet subnet show \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --query "id" \
        --output tsv)
    

Erstellen einer Umgebung

  1. Erstellen Sie die Container Apps-Umgebung. Private Endpunkte werden nur in Workloadprofilumgebungen unterstützt, was der Standardtyp für neue Umgebungen ist.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Rufen Sie die Umgebungs-ID ab. Sie verwenden diese ID, um die Umgebung zu konfigurieren.

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. Deaktivieren Sie den Zugriff über öffentliche Netzwerke für die Umgebung. Diese Einstellung ist erforderlich, um private Endpunkte zu aktivieren.

    az containerapp env update \
        --id $ENVIRONMENT_ID \
        --public-network-access Disabled
    

Erstellen eines privaten Endpunkts

Erstellen Sie den privaten Endpunkt in der Umgebung und im Subnetz, die Sie zuvor erstellt haben.

az network private-endpoint create \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --name $PRIVATE_ENDPOINT \
    --subnet $SUBNET_ID \
    --private-connection-resource-id $ENVIRONMENT_ID \
    --connection-name $PRIVATE_ENDPOINT_CONNECTION \
    --group-id managedEnvironments

Konfigurieren der privaten DNS-Zone

  1. Rufen Sie die IP-Adresse des privaten Endpunkts ab. Sie verwenden diese Adresse, um Ihrer privaten DNS-Zone einen DNS-Eintrag hinzuzufügen.

    PRIVATE_ENDPOINT_IP_ADDRESS=$(az network private-endpoint show \
        --name $PRIVATE_ENDPOINT \
        --resource-group $RESOURCE_GROUP \
        --query 'customDnsConfigs[0].ipAddresses[0]' \
        --output tsv)
    
  2. Rufen Sie die Standarddomäne der Umgebung ab. Sie verwenden diese Domäne, um Ihrer privaten DNS-Zone einen DNS-Eintrag hinzuzufügen.

    DNS_RECORD_NAME=$(az containerapp env show \
        --id $ENVIRONMENT_ID \
        --query 'properties.defaultDomain' \
        --output tsv | sed 's/\..*//')
    
  3. Erstellen Sie eine private DNS-Zone.

    az network private-dns zone create \
        --resource-group $RESOURCE_GROUP \
        --name $PRIVATE_DNS_ZONE
    
  4. Erstellen Sie eine Verknüpfung zwischen Ihrem VNet und Ihrer privaten DNS-Zone.

    az network private-dns link vnet create \
        --resource-group $RESOURCE_GROUP \
        --zone-name $PRIVATE_DNS_ZONE \
        --name $DNS_LINK \
        --virtual-network $VNET_NAME \
        --registration-enabled false
    
  5. Fügen Sie Ihrer privaten DNS-Zone einen Eintrag für Ihren privaten Endpunkt hinzu.

    az network private-dns record-set a add-record \
        --resource-group $RESOURCE_GROUP \
        --zone-name $PRIVATE_DNS_ZONE \
        --record-set-name $DNS_RECORD_NAME \
        --ipv4-address $PRIVATE_ENDPOINT_IP_ADDRESS
    

Bereitstellen einer Container-App

Stellen Sie eine Container-App in Ihrer Umgebung bereit. Diese Container-App verwendet einfach das Schnellstartimage.

Wenn Sie zum Container-App-Endpunkt navigieren, wird ERR_CONNECTION_CLOSED angezeigt, da für die Container-App-Umgebung der öffentliche Zugriff deaktiviert ist. Stattdessen greifen Sie mit dem privaten Endpunkt auf Ihre Container-App zu.

az containerapp up \
    --name $CONTAINERAPP_NAME \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --environment $ENVIRONMENT_NAME \
    --image mcr.microsoft.com/k8se/quickstart:latest \
    --target-port 80 \
    --ingress external \
    --query properties.configuration.ingress.fqdn

Überprüfen der private Endpunktverbindung

In diesem Abschnitt erstellen Sie einen virtuellen Computer, der Ihrem VNet zugeordnet ist, damit Sie auf die Container-App zugreifen können, die Sie mit dem privaten Endpunkt definiert haben.

Erstellen eines virtuellen Computers (VM)

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

  1. Suchen Sie in der oberen Suchleiste nach virtuelle Computer.

  2. Wählen Sie in den Suchergebnissen Virtuelle Computer aus.

  3. Klicken Sie auf Erstellen.

  4. Geben Sie auf der Seite Virtuellen Computer erstellen auf der Registerkarte Grundlagen die folgenden Werte ein.

    Einstellung Aktion
    Abonnement Wählen Sie Ihr Azure-Abonnement.
    Ressourcengruppe Wählen Sie my-container-apps aus.
    Name des virtuellen Computers Geben Sie azurevm ein.
    Region Wählen Sie USA, Mitte aus.
    Verfügbarkeitsoptionen Wählen Sie die Option Keine Infrastrukturredundanz erforderlich aus.
    Sicherheitstyp Wählen Sie Standard aus.
    Abbildung Wählen Sie Windows Server 2022 Datacenter: Azure Edition – x64 Gen2 aus.
    Benutzername Geben Sie azureuser ein.
    Kennwort Geben Sie ein Kennwort ein.
    Kennwort bestätigen Geben Sie das Kennwort erneut ein.
    Öffentliche Eingangsports Wählen Sie Keine.
  5. Geben Sie auf der Registerkarte Netzwerk die folgenden Werte ein.

    Einstellung Aktion
    Virtuelles Netzwerk Wählen Sie my-private-endpoint-vnet aus.
    Subnetz Wählen Sie my-private-endpoint-vnet-subnet (10.0.0.0/23) aus.
    Öffentliche IP-Adresse Wählen Sie Keine.
    NIC-Netzwerksicherheitsgruppe Wählen Sie Erweitertaus.
  6. Klicken Sie auf Überprüfen + erstellen.

  7. Klicken Sie auf Erstellen.

Festlegen von Umgebungsvariablen

Legen Sie die folgenden Umgebungsvariablen fest.

VM_NAME="azurevm"
VM_ADMIN_USERNAME="azureuser"

Erstellen eines virtuellen Computers (VM)

Führen Sie den folgenden Befehl aus.

az vm create \
    --resource-group $RESOURCE_GROUP \
    --name $VM_NAME \
    --image Win2022Datacenter \
    --public-ip-address "" \
    --vnet-name $VNET_NAME \
    --subnet $SUBNET_NAME \
    --admin-username $VM_ADMIN_USERNAME

Nachdem Sie diesen Befehl ausgeführt haben, werden Sie zur Eingabe eines Administratorkennworts für Ihren virtuellen Computer aufgefordert.

Der Administratorbenutzername muss zwischen 1 und 20 Zeichen lang sein.

Für das Administratorkennwort gelten die folgenden Anforderungen:

  • Muss zwischen 12 und 123 Zeichen umfassen.
  • Muss drei der folgenden Zeichen enthalten: 1 Kleinbuchstabe, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen.

Testen der Verbindung

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

  2. Suchen Sie in der oberen Suchleiste nach der VM, die Sie erstellt haben, und wählen Sie sie aus den Suchergebnissen aus.

  3. Wählen Sie auf der Seite Übersicht für die VM die Option Verbinden und dann Über Bastion verbinden aus.

  4. Wählen Sie auf der Seite Bastion die Option Bastion bereitstellen aus.

  5. Legen Sie Benutzername und Kennwort des virtuellen Computers auf den Benutzernamen und das Kennwort fest, die Sie beim Erstellen der VM verwendet haben.

  6. Wählen Sie Verbinden.

  7. Führen Sie nach dem Herstellen der Verbindung PowerShell auf der VM aus.

  8. Führen Sie in PowerShell den folgenden Befehl aus. Ersetzen Sie die <PLATZHALTER> durch Ihre Werte.

    nslookup <CONTAINER_APP_ENDPOINT>
    

    Die Ausgabe ähnelt dem folgenden Beispiel, wobei <PLACEHOLDERS> durch Ihre Werte ersetzt werden.

    Server:  UnKnown
    Address:  168.63.129.16
    
    Non-authoritative answer:
    Name:    <ENVIRONMENT_DEFAULT_DOMAIN>.privatelink.<LOCATION>.azurecontainerapps.io
    
    Address:  10.0.0.4
    Aliases:  <CONTAINER_APP_ENDPOINT>
    
  9. Öffnen Sie einen Browser in der VM.

  10. Navigieren Sie zum Container-App-Endpunkt. Die Ausgabe für das Container-App-Image des Schnellstarts wird angezeigt.

Bereinigen von Ressourcen

Wenn Sie diese Anwendung nicht weiter verwenden möchten, können Sie die Ressourcengruppe my-container-apps entfernen. Diese Aktion löscht die Azure-Container-Apps-Instanz und alle zugehörigen Dienste.

Achtung

Mit dem folgenden Befehl werden die angegebene Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht. Wenn Ressourcen außerhalb des Bereichs dieses Leitfadens in der angegebenen Ressourcengruppe vorhanden sind, werden sie ebenfalls gelöscht.

az group delete --name $RESOURCE_GROUP