Konfigurowanie bramy translatora adresów sieciowych dla statycznego adresu IP dla ruchu wychodzącego z grupy kontenerów
Skonfigurowanie grupy kontenerów przy użyciu zewnętrznego adresu IP umożliwia klientom zewnętrznym używanie adresu IP do uzyskiwania dostępu do kontenera w grupie. Na przykład przeglądarka może uzyskać dostęp do aplikacji internetowej działającej w kontenerze. Jednak obecnie grupa kontenerów używa innego adresu IP dla ruchu wychodzącego. Ten adres IP ruchu wychodzącego nie jest uwidoczniony programowo, co sprawia, że monitorowanie i konfigurowanie reguł zapory klienta jest bardziej złożone.
Ten artykuł zawiera kroki konfigurowania grupy kontenerów w sieci wirtualnej zintegrowanej z bramą translatora adresów sieciowych (NAT). Konfigurując bramę translatora adresów sieciowych w usłudze SNAT dla zakresu adresów podsieci delegowanego do usługi Azure Container Instances (ACI), można zidentyfikować ruch wychodzący z grup kontenerów. Ruch wychodzący grupy kontenerów używa publicznego adresu IP bramy translatora adresów sieciowych. Wiele grup kontenerów wdrożonych w podsieci sieci wirtualnej może używać jednej bramy translatora adresów sieciowych.
W tym artykule użyjesz interfejsu wiersza polecenia platformy Azure do utworzenia zasobów dla tego scenariusza:
- Grupy kontenerów wdrożone w delegowanej podsieci w sieci wirtualnej
- Brama translatora adresów sieciowych wdrożona w sieci ze statycznym publicznym adresem IP
Następnie należy zweryfikować ruch wychodzący z przykładowych grup kontenerów za pośrednictwem bramy translatora adresów sieciowych.
Uwaga
Usługa ACI zaleca integrację z bramą translatora adresów sieciowych dla konteneryzowanych obciążeń, które mają statyczny ruch wychodzący, ale nie wymagania dotyczące statycznego ruchu przychodzącego. W przypadku architektury usługi ACI obsługującej zarówno statyczny ruch przychodzący, jak i wychodzący, zobacz następujący samouczek: Używanie usługi Azure Firewall dla ruchu przychodzącego i wychodzącego.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Wymagania wstępne
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Uruchamianie usługi Azure Cloud Shell
Usługa Azure Cloud Shell to bezpłatna interaktywna powłoka, której możesz używać do wykonywania kroków opisanych w tym artykule. Udostępnia ona wstępnie zainstalowane i najczęściej używane narzędzia platformy Azure, które są skonfigurowane do użycia na koncie.
Aby otworzyć usługę Cloud Shell, wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu. Możesz również uruchomić usługę Cloud Shell w oddzielnej karcie przeglądarki, przechodząc do strony https://shell.azure.com.
Po otwarciu usługi Cloud Shell sprawdź, czy dla danego środowiska wybrano powłokę Bash . Kolejne sesje będą używać interfejsu wiersza polecenia platformy Azure w środowisku powłoki Bash, wybierz pozycję Kopiuj , aby skopiować bloki kodu, wkleić go do usługi Cloud Shell i nacisnąć Enter , aby go uruchomić.
Logowanie się do platformy Azure
Usługa Cloud Shell jest automatycznie uwierzytelniana na początkowym koncie zalogowanym. Użyj następującego skryptu, aby zalogować się przy użyciu innej subskrypcji, zastępując ciąg subscriptionId identyfikatorem subskrypcji platformy Azure.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
subscription="subscriptionId" # Set Azure subscription ID here
az account set -s $subscription # ...or use 'az login'
Aby uzyskać więcej informacji, zobacz ustawianie aktywnej subskrypcji lub logowanie interakcyjne.
Uwaga
Aby pobrać pełny skrypt, przejdź do pełnego skryptu.
Rozpocznij
W tym samouczku jest używana zmienna losowa. Jeśli użyto istniejącej grupy zasobów, zmodyfikuj odpowiednio wartość tej zmiennej.
resourceGroup=resourceGroup$RANDOM
Grupa zasobów platformy Azure: jeśli nie masz jeszcze grupy zasobów platformy Azure, utwórz grupę zasobów za pomocą polecenia az group create . Zmodyfikuj odpowiednio wartość lokalizacji.
az group create --name $resourceGroup --location eastus
Wdrażanie usługi ACI w sieci wirtualnej
W typowym przypadku może już istnieć sieć wirtualna platformy Azure, w której ma zostać wdrożona grupa kontenerów. W celach demonstracyjnych następujące polecenia tworzą sieć wirtualną i podsieć po utworzeniu grupy kontenerów. Podsieć jest delegowana do usługi Azure Container Instances.
Grupa kontenerów uruchamia małą aplikację internetową z aci-helloworld
obrazu. Jak pokazano w innych artykułach w dokumentacji, ten obraz pakuje małą aplikację internetową napisaną w Node.js, która obsługuje statyczną stronę HTML.
Utwórz grupę kontenerów za pomocą polecenia az container create :
az container create \
--name appcontainer \
--resource-group $resourceGroup \
--image mcr.microsoft.com/azuredocs/aci-helloworld \
--vnet aci-vnet \
--vnet-address-prefix 10.0.0.0/16 \
--subnet aci-subnet \
--subnet-address-prefix 10.0.0.0/24
Uwaga
Dostosuj wartość --subnet address-prefix
przestrzeni adresowej IP, której potrzebujesz w podsieci. Najmniejsza obsługiwana podsieć to /29, która udostępnia osiem adresów IP. Niektóre >adresy IP są zarezerwowane do użytku przez platformę Azure, co można znaleźć tutaj.
Tworzenie publicznego adresu IP
W poniższych sekcjach użyj interfejsu wiersza polecenia platformy Azure, aby wdrożyć bramę translatora adresów sieciowych platformy Azure w sieci wirtualnej. Aby uzyskać podstawowe informacje, zobacz Szybki start: tworzenie bramy translatora adresów sieciowych przy użyciu interfejsu wiersza polecenia platformy Azure.
Najpierw użyj polecenia az network vnet public-ip create , aby utworzyć publiczny adres IP bramy translatora adresów sieciowych. Brama używa tego publicznego adresu IP do uzyskiwania dostępu do Internetu. Zostanie wyświetlone ostrzeżenie dotyczące nadchodzącej zmiany powodującej niezgodność, w której domyślnie są uwzględniane adresy IP standardowej jednostki SKU. Więcej informacji na temat korzystania ze stref dostępności i publicznych adresów IP można znaleźć tutaj.
az network public-ip create \
--name myPublicIP \
--resource-group $resourceGroup \
--sku standard \
--zone 1 \
--allocation static
Zapisz publiczny adres IP w zmiennej do użycia podczas kroku weryfikacji w dalszej części tego skryptu.
ngPublicIp="$(az network public-ip show \
--name myPublicIP \
--resource-group $resourceGroup \
--query ipAddress --output tsv)"
Wdrażanie bramy translatora adresów sieciowych w sieci wirtualnej
Użyj następującego polecenia az network nat gateway create , aby utworzyć bramę translatora adresów sieciowych, która używa publicznego adresu IP utworzonego w poprzednim kroku.
az network nat gateway create \
--resource-group $resourceGroup \
--name myNATgateway \
--public-ip-addresses myPublicIP \
--idle-timeout 10
Konfigurowanie usługi TRANSLATOR adresów sieciowych dla podsieci źródłowej
Skonfigurujemy podsieć źródłową aci-subnet, aby użyć określonego zasobu bramy translatora adresów sieciowych myNATgateway za pomocą polecenia az network vnet subnet update. To polecenie aktywuje usługę NAT w określonej podsieci.
az network vnet subnet update \
--resource-group $resourceGroup \
--vnet-name aci-vnet \
--name aci-subnet \
--nat-gateway myNATgateway
Testowanie ruchu wychodzącego z grupy kontenerów
Przetestuj dostęp przychodzący do uruchomionego appcontainer
w sieci wirtualnej, przechodząc do publicznego adresu IP zapory. Wcześniej publiczny adres IP był przechowywany w zmiennej $NG_PUBLIC_IP
Wdróż następujący przykładowy kontener w sieci wirtualnej. Po uruchomieniu wysyła pojedyncze żądanie HTTP do http://checkip.dyndns.org
, które wyświetla adres IP nadawcy (adres IP ruchu wychodzącego). Jeśli reguła aplikacji w zaporze jest prawidłowo skonfigurowana, zwracany jest publiczny adres IP zapory.
az container create \
--resource-group $resourceGroup \
--name testegress \
--image mcr.microsoft.com/azuredocs/aci-tutorial-sidecar \
--command-line "curl -s http://checkip.dyndns.org" \
--restart-policy OnFailure \
--vnet aci-vnet \
--subnet aci-subnet
Wyświetl dzienniki kontenera, aby potwierdzić, że adres IP jest taki sam jak publiczny adres IP utworzony w pierwszym kroku samouczka.
az container logs \
--resource-group $resourceGroup \
--name testegress
Dane wyjściowe są podobne do następujących:
<html><head><title>Current IP Check</title></head><body>Current IP Address: 52.142.18.133</body></html>
Ten adres IP powinien być zgodny z publicznym adresem IP utworzonym w pierwszym kroku samouczka.
echo $ngPublicIp
Czyszczenie zasobów
Gdy grupa zasobów i wszystkie powiązane zasoby nie będą już potrzebne, możesz użyć polecenia az group delete w następujący sposób. Parametr --no-wait
zwraca kontrolę do wiersza polecenia bez oczekiwania na zakończenie operacji. Parametr --yes
potwierdza, że chcesz usunąć zasoby bez innego monitu, aby to zrobić.
az group delete --name $resourceGroup --yes --no-wait
Następne kroki
W tym artykule skonfigurujesz grupy kontenerów w sieci wirtualnej za bramą translatora adresów sieciowych platformy Azure. Korzystając z tej konfiguracji, należy skonfigurować pojedynczy, statyczny ruch wychodzący adresu IP z grup kontenerów usługi Azure Container Instances.
Aby uzyskać pomoc dotyczącą rozwiązywania problemów, zobacz Rozwiązywanie problemów z łącznością translatora adresów sieciowych platformy Azure.