Dela via


Använda en privat slutpunkt med en Azure Container Apps-miljö (förhandsversion)

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.

Privata slutpunkter i Azure Container Apps stöder endast inkommande HTTP-trafik. TCP-trafik stöds inte.

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 containerappfliken Grundläggande anger du följande värden.

    Inställning Åtgärd
    Prenumeration Välj din Azure-prenumerationen.
    Resursgrupp Välj Skapa ny 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 Environment väljer du länken Skapa ny .

  6. På sidan Skapa Container Apps-miljö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 för att skapa ett virtuellt nätverk (VNet). Som standard är offentlig nätverksåtkomst aktiverad, vilket innebär att privata slutpunkter är inaktiverade.

  8. Inaktivera åtkomst till offentligt nätverk.

  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 containerappfliken Grundläggande väljer du Nästa: Container >.

  19. På sidan Skapa containerapp på fliken Container väljer du Använd snabbstartsavbildning.

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

  21. Välj Skapa.

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

    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.

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-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"

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

En miljö i Azure Container Apps skapar en säker gräns runt en grupp med containerappar. Container Apps som distribueras till samma miljö distribueras i samma virtuella nätverk och skriver loggar till samma Log Analytics-arbetsyta.

  1. Skapa ett virtuellt Azure-nätverk (VNet) som ska associeras med Container Apps-miljön. Det virtuella nätverket måste ha ett undernät tillgängligt för miljödistributionen. 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 detta 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 med hjälp av det virtuella nätverk som distribuerades i föregående steg. Privata slutpunkter stöds endast av 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 detta 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. Detta 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 detta 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 detta 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.
    Virtual machine name 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.
    Username 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 3 av följande: 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 . Detta tar bort Azure Container Apps-instansen och alla associerade tjänster. Den tar också bort den resursgrupp som Container Apps-tjänsten skapade automatiskt och som innehåller de anpassade nätverkskomponenterna.

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