Dela via


Använda en privat slutpunkt med en Azure Container Apps-miljö

I den här artikeln får du lära dig hur du använder en privat slutpunkt för säker åtkomst till din Azure Container App utan att exponera den för det offentliga Internet.

En privat slutpunkt använder en privat IP-adress från ditt virtuella nätverk (VNet). Den här slutpunkten ansluter dig privat och säkert till en tjänst som drivs av Azure Private Link.

Viktigt!

Det finns ytterligare avgifter för att aktivera privata slutpunkter i både dedikerade och förbrukningsabonnemang.

Förutsättningar

Skapa en containerapp

Börja med att logga in på Azure Portal.

  1. Sök efter Container Apps i det övre sökfältet.

  2. Välj Container Apps i sökresultatet.

  3. Markera knappen Skapa.

  4. På sidan Skapa containerapp på fliken Grundläggande anger du följande värden.

    Inställning Åtgärd
    Prenumeration Välj din Azure-prenumerationen.
    Resursgrupp Välj länken Skapa ny resursgrupp och ange my-container-apps.
    Namn på containerapp Ange my-container-app.
    Distributionskälla Välj Containeravbildning.
    Region Välj USA, centrala.
  5. I fältet Skapa Container Apps-miljö väljer du länken Skapa ny miljö .

  6. På sidan Skapa Container Apps-miljö på fliken Grundläggande anger du följande värden:

    Inställning Värde
    Miljönamn Ange min miljö.
    Zonredundans Välj Inaktiverad
  7. Välj fliken Nätverk.

  8. Ange Åtkomst till offentligt nätverk till Inaktivera: Blockera all inkommande trafik från det offentliga Internet. Som standard är offentlig nätverksåtkomst aktiverad, vilket innebär att privata slutpunkter är inaktiverade.

  9. Lämna Använd ditt eget virtuella nätverk inställt på Nej. Du kan använda ett befintligt virtuellt nätverk, men privata slutpunkter stöds bara av miljöer för arbetsbelastningsprofiler, som kräver ett undernät med ett minsta CIDR-intervall på /27 eller större. Mer information om storlek på undernät finns i översikten över nätverksarkitekturen.

  10. Ange Aktivera privata slutpunkter till Ja.

  11. Ange Namnet på den privata slutpunkten till my-private-endpoint.

  12. I fältet Privat virtuellt slutpunktsnätverk väljer du länken Skapa ny .

  13. På sidan Skapa virtuellt nätverk anger du Virtuellt nätverk till my-private-endpoint-vnet. Välj OK.

  14. I fältet Undernät för privat slutpunkt för virtuellt nätverk väljer du länken Skapa ny .

  15. På sidan Skapa undernät anger du Undernätsnamn till my-private-endpoint-vnet-subnet. Välj OK.

  16. Lämna DNS inställt på Azure Privat DNS Zone.

  17. Välj Skapa.

  18. På sidan Skapa containerapp väljer du fliken Container .

  19. Välj Använd snabbstartsbild.

Distribuera containerappen

  1. Välj Granska och skapa längst ned på sidan.

    Om inga fel hittas är knappen Skapa aktiverad.

    Om det finns fel markeras alla flikar som innehåller fel med en röd punkt. Gå till lämplig flik. Fält som innehåller ett fel är markerade i rött. När alla fel har åtgärdats väljer du Granska och skapa igen.

  2. Välj Skapa.

    En sida med meddelandet Distribution pågår visas. När distributionen har slutförts visas meddelandet: Distributionen är klar.

Verifiera driftsättningen

  1. Välj Gå till resurs för att visa din nya containerapp.

  2. Välj länken bredvid program-URL:en för att visa ditt program.

  1. När du bläddrar till slutpunkten för containerappen visas följande meddelande:

    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.
    

Förutsättningar

  • Azure-konto med en aktiv prenumeration.

  • Den senaste versionen av Azure CLI. Kör följande kommando för att säkerställa att du kör den senaste versionen.

    az upgrade
    
  • Den senaste versionen av Azure Container Apps-tillägget för Azure CLI. Kör följande kommando för att säkerställa att du kör den senaste versionen.

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

    Kommentar

    Från och med maj 2024 aktiverar Azure CLI-tillägg inte längre förhandsversionsfunktioner som standard. Om du vill komma åt förhandsversionsfunktioner för Container Apps installerar du containerapptillägget med --allow-preview true.

Mer information om förutsättningar och konfiguration finns i Snabbstart: Distribuera din första containerapp med containerapp up.

Ange miljövariabler

Ange följande miljövariabler.

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"

Skapa en Azure-resursgrupp

Skapa en resursgrupp för att organisera de tjänster som är relaterade till distributionen av containerappen.

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

Skapa ett virtuellt nätverk

  1. Skapa ett virtuellt Azure-nätverk (VNet). Du kan använda ett befintligt virtuellt nätverk, men privata slutpunkter stöds bara av miljöer för arbetsbelastningsprofiler, som kräver ett undernät med ett minsta CIDR-intervall på /27 eller större. Mer information om storlek på undernät finns i översikten över nätverksarkitekturen.

    az network vnet create \
        --resource-group $RESOURCE_GROUP \
        --name $VNET_NAME \
        --location $LOCATION \
        --address-prefix 10.0.0.0/16
    
  2. Skapa ett undernät som ska associeras med det virtuella nätverket och innehålla den privata slutpunkten.

    az network vnet subnet create \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 10.0.0.0/21
    
  3. Hämta undernäts-ID:t. Du använder det här ID:t för att skapa den privata slutpunkten.

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

Skapa en miljö

  1. Skapa Container Apps-miljön. Privata slutpunkter stöds endast i arbetsbelastningsprofiler, vilket är standardtypen för nya miljöer.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Hämta miljö-ID:t. Du använder det här ID:t för att konfigurera miljön.

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. Inaktivera offentlig nätverksåtkomst för miljön. Den här inställningen krävs för att aktivera privata slutpunkter.

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

Skapa en privat slutpunkt

Skapa den privata slutpunkten i miljön och undernätet som du skapade tidigare.

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

Konfigurera den privata DNS-zonen

  1. Hämta IP-adressen för den privata slutpunkten. Du använder den här adressen för att lägga till en DNS-post i din privata DNS-zon.

    PRIVATE_ENDPOINT_IP_ADDRESS=$(az network private-endpoint show \
        --name $PRIVATE_ENDPOINT \
        --resource-group $RESOURCE_GROUP \
        --query 'customDnsConfigs[0].ipAddresses[0]' \
        --output tsv)
    
  2. Hämta miljöns standarddomän. Du använder den här domänen för att lägga till en DNS-post i din privata DNS-zon.

    DNS_RECORD_NAME=$(az containerapp env show \
        --id $ENVIRONMENT_ID \
        --query 'properties.defaultDomain' \
        --output tsv | sed 's/\..*//')
    
  3. Skapa en privat DNS-zon.

    az network private-dns zone create \
        --resource-group $RESOURCE_GROUP \
        --name $PRIVATE_DNS_ZONE
    
  4. Skapa en länk mellan ditt virtuella nätverk och din privata DNS-zon.

    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. Lägg till en post för din privata slutpunkt i din privata DNS-zon.

    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
    

Distribuera en containerapp

Distribuera en containerapp i din miljö. Den här containerappen använder bara snabbstartsavbildningen.

När du bläddrar till slutpunkten för containerappen får ERR_CONNECTION_CLOSED du det eftersom din containerappmiljö har offentlig åtkomst inaktiverad. I stället får du åtkomst till din containerapp med hjälp av din privata slutpunkt.

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

Verifiera den privata slutpunktsanslutningen

I det här avsnittet skapar du en virtuell dator som är associerad med ditt virtuella nätverk så att du kan komma åt containerappen som du definierade med din privata slutpunkt.

Skapa en virtuell dator (VM)

Börja med att logga in på Azure Portal.

  1. Sök efter virtuella datorer i det övre sökfältet.

  2. Välj Virtuella datorer i sökresultaten.

  3. Välj Skapa.

  4. På sidan Skapa en virtuell datorfliken Grundläggande anger du följande värden.

    Inställning Åtgärd
    Prenumeration Välj din Azure-prenumerationen.
    Resursgrupp Välj my-container-apps.
    Namn på virtuell maskin Ange azurevm.
    Region Välj USA, centrala.
    Tillgängliga alternativ Välj Ingen infrastrukturredundans krävs.
    Säkerhetstyp Välj Standard.
    Bild Välj Windows Server 2022 Datacenter: Azure Edition – x64 Gen2.
    Användarnamn Ange azureuser.
    Lösenord Ange ett lösenord.
    Bekräfta lösenord Ange lösenordet igen.
    Offentliga inkommande portar Välj Ingen.
  5. På fliken Nätverk anger du följande värden.

    Inställning Åtgärd
    Virtuellt nätverk Välj my-private-endpoint-vnet.
    Undernät Välj my-private-endpoint-vnet-subnet (10.0.0.0/23).
    Offentlig IP-adress Välj Ingen.
    Nätverkssäkerhetsgrupp för nätverkskort Visa avancerad.
  6. Välj Granska + skapa.

  7. Välj Skapa.

Ange miljövariabler

Ange följande miljövariabler.

VM_NAME="azurevm"
VM_ADMIN_USERNAME="azureuser"

Skapa en virtuell dator (VM)

Kör följande kommando.

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

När du har kört det här kommandot uppmanas du att ange ett administratörslösenord för den virtuella datorn.

Administratörens användarnamn måste vara mellan 1 och 20 tecken långt.

Administratörslösenordet har följande krav:

  • Måste vara mellan 12 och 123 tecken långt.
  • Måste ha tre av följande tecken: 1 gemener, 1 versaler, 1 tal och 1 specialtecken.

Testa anslutningen

  1. Börja med att logga in på Azure Portal.

  2. Sök efter den virtuella dator som du skapade i det övre sökfältet och välj den i sökresultaten.

  3. På sidan Översikt för den virtuella datorn väljer du Anslut och sedan Anslut via Bastion.

  4. På sidan Bastion väljer du Distribuera Bastion.

  5. Ange Användarnamn och LÖSENORD för den virtuella datorn till det användarnamn och lösenord som du använde när du skapade den virtuella datorn.

  6. Välj Anslut.

  7. När du har anslutit kör du PowerShell på den virtuella datorn.

  8. Kör följande kommando i PowerShell. <Ersätt PLACEHOLDERS> med dina värden.

    nslookup <CONTAINER_APP_ENDPOINT>
    

    Utdata liknar följande exempel, där dina värden ersätter <PLACEHOLDERS>.

    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. Öppna en webbläsare på den virtuella datorn.

  10. Bläddra till containerappens slutpunkt. Du ser utdata för avbildningen av snabbstartscontainerappen.

Rensa resurser

Om du inte kommer att fortsätta att använda det här programmet kan du ta bort resursgruppen my-container-apps . Den här åtgärden tar bort Azure Container Apps-instansen och alla associerade tjänster.

Varning

Följande kommando tar bort den angivna resursgruppen och alla resurser som ingår i den. Om det finns resurser utanför omfånget för den här guiden i den angivna resursgruppen tas de också bort.

az group delete --name $RESOURCE_GROUP