Udostępnij za pośrednictwem


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

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.

Prywatne punkty końcowe w usłudze Azure Container Apps obsługują tylko przychodzący ruch HTTP. Ruch TCP nie jest obsługiwany.

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 Tworzenie aplikacji kontenera na karcie Podstawy wprowadź następujące wartości.

    Ustawienie Akcja
    Subskrypcja Wybierz subskrypcję platformy Azure.
    Resource group Wybierz pozycję Utwórz nową i wprowadź ciąg 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 (Utwórz nowe).

  6. Na stronie Tworzenie środowiska usługi Container Apps 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ć , aby utworzyć sieć wirtualną. Domyślnie dostęp do sieci publicznej jest włączony, co oznacza, że prywatne punkty końcowe są wyłączone.

  8. Wyłącz dostęp do sieci publicznej.

  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 na karcie Podstawy wybierz pozycję Dalej: Kontener >.

  19. Na stronie Tworzenie aplikacji kontenera na karcie Kontener wybierz pozycję Użyj obrazu szybkiego startu.

  20. Wybierz pozycję Przejrzyj i utwórz w dolnej części strony.

    Jeśli nie znaleziono żadnych błędów, przycisk Utwórz jest włączony.

    Jeśli występują błędy, każda karta zawierająca błędy jest oznaczona czerwoną kropką. Przejdź do odpowiedniej karty. Pola zawierające błąd są wyróżnione na czerwono. Po naprawieniu wszystkich błędów wybierz pozycję Przejrzyj i utwórz ponownie.

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

    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.

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. Służy 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 przez środowiska profilów obciążeń, które są domyślnym typem dla nowych środowisk.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Pobierz identyfikator środowiska. 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. Jest to potrzebne 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. 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. 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.
    Resource group Wybierz pozycję my-container-apps.
    Virtual machine name 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.
    Username 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 mieć 3 z następujących znaków: 1 małe litery, 1 wielkie litery, 1 numer 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 . Spowoduje to usunięcie wystąpienia usługi 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