Freigeben über


Verwenden eines privaten Endpunkts mit einer Azure Container Apps-Umgebung (Vorschau)

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.

Private Endpunkte in Azure Container Apps unterstützen nur eingehenden HTTP-Datenverkehr. TCP-Datenverkehr wird nicht unterstützt.

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
    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.
    Region Wählen Sie USA, Mitte aus.
  5. Wählen Sie im Feld Container Apps-Umgebung erstellen den Link Neu 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, um ein VNet zu erstellen. Standardmäßig ist der Zugriff über öffentliche Netzwerke aktiviert, was bedeutet, dass private Endpunkte deaktiviert sind.

  8. Deaktivieren des Zugriffs auf das öffentliche Netzwerk

  9. Übernehmen Sie für Eigenes virtuelles Netzwerk verwenden die Einstellung Nein. Sie können ein vorhandenes VNet verwenden, private Endpunkte werden jedoch nur von Workloadprofilumgebungen unterstützt. Dafür ist ein Subnetz mit einem CIDR-Mindestbereich von /27 oder größer erforderlich. 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 auf der Registerkarte Grundlagen die Option Weiter: Container > aus.

  19. Wählen Sie auf der Seite Container-App erstellen auf der Registerkarte Container die Option Schnellstartimage verwenden aus.

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

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

    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.

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-custom-vnet"
SUBNET_NAME="my-custom-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

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.

  1. Erstellen Sie ein virtuelles Azure-Netzwerk, das der Container Apps-Umgebung zugeordnet werden soll. Das Vnet muss über ein Subnetz verfügen, das für die Umgebungsbereitstellung verfügbar ist. Sie können ein vorhandenes VNet verwenden, private Endpunkte werden jedoch nur von Workloadprofilumgebungen unterstützt. Dafür ist ein Subnetz mit einem CIDR-Mindestbereich von /27 oder größer 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
    
  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 zum Erstellen des privaten Endpunkts.

    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 mithilfe des VNet, das in den vorherigen Schritten bereitgestellt wurde. Private Endpunkte werden nur von Workloadprofilumgebungen unterstützt. Dies ist der Standardtyp für neue Umgebungen.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Rufen Sie die Umgebungs-ID ab. Sie verwenden diese zum Konfigurieren der Umgebung.

    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. Dies 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. Damit fügen Sie Ihrer privaten DNS-Zone einen DNS-Eintrag hinzu.

    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. Damit fügen Sie Ihrer privaten DNS-Zone einen DNS-Eintrag hinzu.

    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
    Subscription Wählen Sie Ihr Azure-Abonnement.
    Resource group 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.
    Image 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.
    Subnet Wählen Sie my-private-endpoint-vnet-subnet (10.0.0.0/23) aus.
    Öffentliche IP-Adresse Wählen Sie Keine aus.
    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: einen Kleinbuchstaben, einen Großbuchstaben, eine Ziffer und ein 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. 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