Udostępnij przez


Używanie prywatnego punktu końcowego ze środowiskiem usługi Azure Container Apps

Z tego artykułu dowiesz się, jak używać prywatnego punktu końcowego do bezpiecznego uzyskiwania dostępu do aplikacji kontenera platformy Azure bez uwidaczniania jej w publicznym Internecie.

Prywatny punkt końcowy używa prywatnego adresu IP z sieci wirtualnej. Ten punkt końcowy łączy Cię prywatnie i bezpiecznie z usługą obsługiwaną przez usługę Azure Private Link.

Ważne

W planach Dedykowanych i Konsumpcyjnych naliczane są dodatkowe opłaty za włączanie prywatnych punktów końcowych.

Wymagania wstępne

Tworzenie aplikacji kontenera

Zacznij od zalogowania się do witryny Azure Portal.

  1. Wyszukaj pozycję Container Apps na górnym pasku wyszukiwania.

  2. Wybierz pozycję Container Apps w wynikach wyszukiwania.

  3. Zaznacz przycisk Utwórz.

  4. Na stronie Utwórz aplikację kontenera na zakładce Podstawowe wprowadź następujące wartości.

    Ustawienie Akcja
    Subskrypcja Wybierz subskrypcję platformy Azure.
    Grupa zasobów Wybierz link Utwórz nową grupę zasobów i wprowadź my-container-apps.
    Nazwa aplikacji kontenera Wprowadź ciąg my-container-app.
    Źródło wdrożenia Wybierz pozycję Obraz kontenera.
    Region (Region) Wybierz pozycję Środkowe stany USA.
  5. W polu Create Container Apps Environment (Tworzenie środowiska aplikacji kontenera ) wybierz link Create new environment (Utwórz nowe środowisko ).

  6. Na stronie Tworzenie środowiska aplikacji kontenera na karcie Podstawy wprowadź następujące wartości:

    Ustawienie Wartość
    Nazwa środowiska Wprowadź moje środowisko.
    Nadmiarowość stref Wybierz opcję Wyłączone
  7. Wybierz kartę Sieć.

  8. Ustaw opcję Dostęp do sieci publicznej na wartość Wyłącz: blokuj cały ruch przychodzący z publicznego Internetu. Domyślnie dostęp do sieci publicznej jest włączony, co oznacza, że prywatne punkty końcowe są wyłączone.

  9. Pozostaw opcję Użyj własnej sieci wirtualnej ustawioną na Nie. Możesz użyć istniejącej sieci wirtualnej, ale prywatne punkty końcowe są obsługiwane tylko przez środowiska profilów obciążeń, które wymagają podsieci z minimalnym zakresem /27 CIDR lub większym. Aby dowiedzieć się więcej o określaniu rozmiaru podsieci, zobacz omówienie architektury sieci.

  10. Ustaw opcję Włącz prywatne punkty końcowe na Wartość Tak.

  11. Ustaw nazwę prywatnego punktu końcowego na my-private-endpoint.

  12. W polu Sieć wirtualna prywatnego punktu końcowego wybierz link Utwórz nowy.

  13. Na stronie Tworzenie sieci wirtualnej ustaw pozycję Sieć wirtualna na my-private-endpoint-vnet. Wybierz przycisk OK.

  14. W polu Podsieć sieci wirtualnej prywatnego punktu końcowego wybierz link Utwórz nowy.

  15. Na stronie Tworzenie podsieci ustaw wartość Nazwa podsieci na my-private-endpoint-vnet-subnet. Wybierz przycisk OK.

  16. Pozostaw wartość DNS ustawioną na strefę Prywatna strefa DNS platformy Azure.

  17. Wybierz pozycję Utwórz.

  18. Na stronie Tworzenie aplikacji kontenera wybierz kartę Kontener .

  19. Wybierz pozycję Użyj obrazu szybkiego startu.

Wdrażanie aplikacji kontenera

  1. W dolnej części strony wybierz pozycję Przejrzyj i utwórz.

    • Jeśli nie znaleziono żadnych błędów, przycisk Utwórz jest dostępny.
    • Jeśli występują błędy, każda karta zawierająca błąd jest oznaczona czerwoną kropką. Przejdź do każdej z tych kart. Pola zawierające błąd są wyróżnione na czerwono lub oznaczone czerwoną literą X. Napraw wszystkie błędy, a następnie ponownie wybierz pozycję Przejrzyj i utwórz .
  2. Wybierz pozycję Utwórz.

    Zostanie wyświetlona strona z komunikatem Wdrażanie jest w toku . Po pomyślnym zakończeniu wdrażania zostanie wyświetlony komunikat Wdrożenie zostało ukończone .

Weryfikowanie wdrożenia

  1. Wybierz pozycję Przejdź do zasobu , aby wyświetlić nową aplikację kontenera.

  2. Obok pozycji Adres URL aplikacji wybierz link, aby wyświetlić aplikację.

  1. Po przejściu do punktu końcowego aplikacji kontenera zostanie wyświetlony następujący komunikat:

    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.
    

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją.

  • Najnowsza wersja interfejsu wiersza polecenia platformy Azure. Aby upewnić się, że używasz najnowszej wersji, uruchom następujące polecenie.

    az upgrade
    
  • Najnowsza wersja rozszerzenia Azure Container Apps dla interfejsu wiersza polecenia platformy Azure. Aby upewnić się, że używasz najnowszej wersji, uruchom następujące polecenie.

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

    Uwaga

    Począwszy od maja 2024 r., rozszerzenia interfejsu wiersza polecenia platformy Azure domyślnie nie włączają funkcji w wersji zapoznawczej. Aby uzyskać dostęp do funkcji usługi Container Apps w wersji zapoznawczej, zainstaluj rozszerzenie Container Apps za pomocą polecenia --allow-preview true.

Aby uzyskać więcej informacji na temat wymagań wstępnych i konfiguracji, zobacz Szybki start: wdrażanie pierwszej aplikacji kontenera przy użyciu aplikacji kontenera.

Ustawianie zmiennych środowiskowych

Ustaw następujące zmienne środowiskowe.

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"

Tworzenie grupy zasobów platformy Azure

Utwórz grupę zasobów, aby zorganizować usługi związane z wdrożeniem aplikacji kontenera.

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

Tworzenie sieci wirtualnej

  1. Tworzenie sieci wirtualnej platformy Azure. Możesz użyć istniejącej sieci wirtualnej, ale prywatne punkty końcowe są obsługiwane tylko przez środowiska profilów obciążeń, które wymagają podsieci z minimalnym zakresem /27 CIDR lub większym. Aby dowiedzieć się więcej o określaniu rozmiaru podsieci, zobacz omówienie architektury sieci.

    az network vnet create \
        --resource-group $RESOURCE_GROUP \
        --name $VNET_NAME \
        --location $LOCATION \
        --address-prefix 10.0.0.0/16
    
  2. Utwórz podsieć, aby skojarzyć z siecią wirtualną i zawierać prywatny punkt końcowy.

    az network vnet subnet create \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 10.0.0.0/21
    
  3. Pobierz identyfikator podsieci. Używasz tego identyfikatora do tworzenia prywatnego punktu końcowego.

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

Utwórz środowisko

  1. Utwórz środowisko usługi Container Apps. Prywatne punkty końcowe są obsługiwane tylko w środowiskach profilów obciążeń, co jest domyślnym typem nowych środowisk.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Pobierz identyfikator środowiska. Ten identyfikator służy do konfigurowania środowiska.

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. Wyłącz dostęp do sieci publicznej dla środowiska. To ustawienie jest wymagane do włączenia prywatnych punktów końcowych.

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

Tworzenie prywatnego punktu końcowego

Utwórz prywatny punkt końcowy w środowisku i utworzonej wcześniej podsieci.

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

Konfigurowanie prywatnej strefy DNS

  1. Pobierz prywatny adres IP punktu końcowego. Ten adres służy do dodawania rekordu DNS do prywatnej strefy DNS.

    PRIVATE_ENDPOINT_IP_ADDRESS=$(az network private-endpoint show \
        --name $PRIVATE_ENDPOINT \
        --resource-group $RESOURCE_GROUP \
        --query 'customDnsConfigs[0].ipAddresses[0]' \
        --output tsv)
    
  2. Pobierz domenę domyślną środowiska. Ta domena służy do dodawania rekordu DNS do prywatnej strefy DNS.

    DNS_RECORD_NAME=$(az containerapp env show \
        --id $ENVIRONMENT_ID \
        --query 'properties.defaultDomain' \
        --output tsv | sed 's/\..*//')
    
  3. Utwórz prywatną strefę DNS.

    az network private-dns zone create \
        --resource-group $RESOURCE_GROUP \
        --name $PRIVATE_DNS_ZONE
    
  4. Utwórz łącze między siecią wirtualną a prywatną strefą DNS.

    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. Dodaj rekord dla prywatnego punktu końcowego do prywatnej strefy DNS.

    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
    

Wdrażanie aplikacji kontenera

Wdróż aplikację kontenera w środowisku. Ta aplikacja kontenera używa po prostu obrazu szybkiego startu.

Po przejściu do punktu końcowego aplikacji kontenera otrzymasz ERR_CONNECTION_CLOSED informację, że środowisko aplikacji kontenera ma wyłączony dostęp publiczny. Zamiast tego uzyskujesz dostęp do aplikacji kontenera przy użyciu prywatnego punktu końcowego.

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

Weryfikowanie połączenia prywatnego punktu końcowego

W tej sekcji utworzysz maszynę wirtualną skojarzą z siecią wirtualną, aby uzyskać dostęp do aplikacji kontenera zdefiniowanej przy użyciu prywatnego punktu końcowego.

Tworzenie maszyny wirtualnej

Zacznij od zalogowania się do witryny Azure Portal.

  1. Wyszukaj ciąg Maszyny wirtualne na górnym pasku wyszukiwania.

  2. Wybierz pozycję Maszyny wirtualne w wynikach wyszukiwania.

  3. Wybierz pozycję Utwórz.

  4. Na stronie Tworzenie maszyny wirtualnej na karcie Podstawy wprowadź następujące wartości.

    Ustawienie Akcja
    Subskrypcja Wybierz subskrypcję platformy Azure.
    Grupa zasobów Wybierz pozycję my-container-apps.
    Nazwa maszyny wirtualnej Wprowadź wartość azurevm.
    Region (Region) Wybierz pozycję Środkowe stany USA.
    Opcje dostępności Wybierz pozycję Brak wymaganej nadmiarowości infrastruktury.
    Typ zabezpieczeń Wybierz opcję Standardowa.
    obraz Wybierz pozycję Windows Server 2022 Datacenter: Azure Edition — x64 Gen2.
    Nazwa użytkownika Wprowadź azureuser.
    Hasło Wprowadź hasło.
    Potwierdź hasło Wprowadź ponownie hasło.
    Publiczne porty ruchu przychodzącego Wybierz pozycję Brak.
  5. Na karcie Sieć wprowadź następujące wartości.

    Ustawienie Akcja
    Sieć wirtualna Wybierz pozycję my-private-endpoint-vnet.
    Podsieć Wybierz pozycję my-private-endpoint-vnet-subnet (10.0.0.0/23).
    Publiczny adres IP Wybierz pozycję Brak.
    Sieciowa grupa zabezpieczeń karty sieciowej Wybierz opcję Zaawansowane.
  6. Wybierz pozycję Przejrzyj i utwórz.

  7. Wybierz pozycję Utwórz.

Ustawianie zmiennych środowiskowych

Ustaw następujące zmienne środowiskowe.

VM_NAME="azurevm"
VM_ADMIN_USERNAME="azureuser"

Tworzenie maszyny wirtualnej

Uruchom następujące polecenie.

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

Po uruchomieniu tego polecenia zostanie wyświetlony monit o podanie hasła administratora dla maszyny wirtualnej.

Nazwa użytkownika administratora musi mieć długość od 1 do 20 znaków.

Hasło administratora ma następujące wymagania:

  • Musi mieć długość od 12 do 123 znaków.
  • Musi zawierać trzy z następujących znaków: 1 małą literę, 1 wielką literę, 1 cyfrę i 1 znak specjalny.

Testowanie połączenia

  1. Zacznij od zalogowania się do witryny Azure Portal.

  2. Wyszukaj maszynę wirtualną utworzoną na górnym pasku wyszukiwania i wybierz ją z wyników wyszukiwania.

  3. Na stronie Przegląd maszyny wirtualnej wybierz pozycję Połącz, a następnie wybierz pozycję Połącz za pośrednictwem usługi Bastion.

  4. Na stronie Bastion wybierz pozycję Wdróż usługę Bastion.

  5. Ustaw nazwę użytkownika i hasło maszyny wirtualnej na nazwę użytkownika i hasło użyte podczas tworzenia maszyny wirtualnej.

  6. Wybierz pozycję Połącz.

  7. Po nawiązaniu połączenia uruchom program PowerShell na maszynie wirtualnej.

  8. W programie PowerShell uruchom następujące polecenie. Zastąp <symbole> ZASTĘPCZE wartościami.

    nslookup <CONTAINER_APP_ENDPOINT>
    

    Dane wyjściowe są podobne do poniższego przykładu, a wartości zastępują <symbole> ZASTĘPCZE.

    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. Otwórz przeglądarkę na maszynie wirtualnej.

  10. Przejdź do punktu końcowego aplikacji kontenera. Zobaczysz dane wyjściowe obrazu aplikacji kontenera szybkiego startu.

Czyszczenie zasobów

Jeśli nie zamierzasz nadal korzystać z tej aplikacji, możesz usunąć grupę zasobów my-container-apps . Ta akcja powoduje usunięcie wystąpienia Azure Container Apps i wszystkich skojarzonych usług.

Uwaga

Następujące polecenie usuwa określoną grupę zasobów i wszystkie zawarte w niej zasoby. Jeśli zasoby spoza zakresu tego przewodnika istnieją w określonej grupie zasobów, zostaną również usunięte.

az group delete --name $RESOURCE_GROUP