Konfigurace služby NAT Gateway pro statickou IP adresu pro odchozí provoz ze skupiny kontejnerů

Nastavení skupiny kontejnerů s externí IP adresou umožňuje externím klientům používat IP adresu pro přístup ke kontejneru ve skupině. Prohlížeč může například přistupovat k webové aplikaci spuštěné v kontejneru. V současné době ale skupina kontejnerů používá pro odchozí provoz jinou IP adresu. Tato výchozí IP adresa není přístupná prostřednictvím kódu programu, což zkompiluje monitorování skupin kontejnerů a konfiguraci pravidel brány firewall klienta.

Tento článek obsahuje postup konfigurace skupiny kontejnerů ve virtuální síti integrované s bránou překladu adres (NAT). Konfigurací brány NAT pro SNAT rozsah adres podsítě delegovaný do služby Azure Container Instances (ACI) můžete identifikovat odchozí provoz ze skupin kontejnerů. Odchozí provoz skupiny kontejnerů bude používat veřejnou IP adresu služby NAT Gateway. Jednu bránu NAT může používat několik skupin kontejnerů nasazených v podsíti virtuální sítě delegované do ACI.

V tomto článku pomocí Azure CLI vytvoříte prostředky pro tento scénář:

  • Skupiny kontejnerů nasazené v delegovanou podsíti ve virtuální síti
  • Brána NAT nasazená v síti se statickou veřejnou IP adresou

Pak ověříte výchozí přenos dat z ukázkových skupin kontejnerů prostřednictvím služby NAT Gateway.

Poznámka:

Služba ACI doporučuje integraci se službou NAT Gateway pro kontejnerizované úlohy, které mají statické výchozí, ale ne statické požadavky na příchozí přenos dat. Informace o architektuře ACI, která podporuje statický příchozí i výchozí přenos dat, najdete v následujícím kurzu: Použití služby Azure Firewall pro příchozí a výchozí přenos dat.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Předpoklady

Spuštění služby Azure Cloud Shell

Azure Cloud Shell je bezplatné interaktivní prostředí, které můžete použít k provedení kroků v tomto článku. Má předinstalované obecné nástroje Azure, které jsou nakonfigurované pro použití s vaším účtem.

Pokud chcete otevřít Cloud Shell, vyberte položku Vyzkoušet v pravém horním rohu bloku kódu. Cloud Shell můžete spustit také na samostatné kartě prohlížeče na adrese https://shell.azure.com.

Po otevření Cloud Shellu ověřte, že je pro vaše prostředí vybraný Bash . Následující relace budou používat Azure CLI v prostředí Bash, výběrem možnosti Kopírovat zkopírujte bloky kódu, vložte ho do Cloud Shellu a stisknutím klávesy Enter ho spusťte.

Přihlášení k Azure

Cloud Shell se automaticky ověřuje pod počátečním přihlášeným účtem. Pomocí následujícího skriptu se přihlaste pomocí jiného předplatného a nahraďte <Subscription ID> ID předplatného Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

Další informace najdete v tématu Nastavení aktivního předplatného nebo interaktivního přihlášení.

Poznámka:

Úplný skript si stáhnete tak, že přejdete na celý skript.

Začínáme

V tomto kurzu se používá náhodná proměnná. Pokud používáte existující skupinu prostředků, odpovídajícím způsobem upravte hodnotu této proměnné.

resourceGroup=resourceGroup$RANDOM

Skupina prostředků Azure: Pokud ještě nemáte skupinu prostředků Azure, vytvořte skupinu prostředků pomocí příkazu az group create . Podle potřeby upravte hodnotu umístění.

az group create --name $resourceGroup --location eastus

Nasazení ACI ve virtuální síti

V typickém případě už možná máte virtuální síť Azure, ve které chcete nasadit skupinu kontejnerů. Pro demonstrační účely vytvoří následující příkazy při vytvoření skupiny kontejnerů virtuální síť a podsíť. Podsíť se deleguje do služby Azure Container Instances.

Skupina kontejnerů spustí z image malou webovou aplikaci aci-helloworld . Jak je znázorněno v dalších článcích v dokumentaci, tento obrázek zabalí malou webovou aplikaci napsanou v Node.js, která obsluhuje statickou stránku HTML.

Vytvořte skupinu kontejnerů pomocí příkazu 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

Poznámka:

Upravte hodnotu --subnet address-prefix adresního prostoru IP adres, který potřebujete ve své podsíti. Nejmenší podporovaná podsíť je /29, která poskytuje osm IP adres. Některé >IP adresy jsou vyhrazené pro použití v Azure, o kterých si můžete přečíst další informace.

Vytvoření veřejné IP adresy

V následujících částech pomocí Azure CLI nasaďte ve virtuální síti bránu Azure NAT Gateway. Pozadí najdete v tématu Rychlý start: Vytvoření brány NAT pomocí Azure CLI.

Nejprve pomocí příkazu az network vnet public-ip create vytvořte veřejnou IP adresu pro bránu NAT. Použije se pro přístup k internetu. Zobrazí se upozornění na připravovanou změnu způsobující chybu, ve které budou IP adresy skladové položky Standard ve výchozím nastavení vědět zóny dostupnosti. Další informace o používání zón dostupnosti a veřejných IP adres najdete tady.

az network public-ip create \
  --name myPublicIP \
  --resource-group $resourceGroup \
  --sku standard \
  --zone 1 \
  --allocation static

Uložte veřejnou IP adresu do proměnné pro použití v ověřovacím kroku později v tomto skriptu.

ngPublicIp="$(az network public-ip show \
  --name myPublicIP \
  --resource-group $resourceGroup \
  --query ipAddress --output tsv)"

Nasazení brány NAT do virtuální sítě

Pomocí následujícího příkazu az network nat gateway create vytvořte bránu NAT, která používá veřejnou IP adresu, kterou jste vytvořili v předchozím kroku.

az network nat gateway create \
  --resource-group $resourceGroup \
  --name myNATgateway \
  --public-ip-addresses myPublicIP \
  --idle-timeout 10

Konfigurace služby NAT pro zdrojovou podsíť

Nakonfigurujeme zdrojovou podsíť aci-podsíť tak, aby používala konkrétní prostředek naT Gateway myNATgateway s az network vnet subnet update. Tento příkaz aktivuje službu NAT v zadané podsíti.

az network vnet subnet update \
    --resource-group $resourceGroup  \
    --vnet-name aci-vnet \
    --name aci-subnet \
    --nat-gateway myNATgateway

Testování výchozího přenosu dat ze skupiny kontejnerů

Otestujte příchozí přístup ke appcontainer spuštěné virtuální síti tak, že přejdete na veřejnou IP adresu brány firewall. Dříve jste veřejnou IP adresu uložili do proměnné $NG_PUBLIC_IP.

Do virtuální sítě nasaďte následující ukázkový kontejner. Při spuštění odešle jeden požadavek http://checkip.dyndns.orgHTTP , který zobrazí IP adresu odesílatele (výchozí IP adresa). Pokud je pravidlo aplikace v bráně firewall správně nakonfigurované, vrátí se veřejná IP adresa brány firewall.

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

Prohlédněte si protokoly kontejneru a ověřte, že IP adresa je stejná jako veřejná IP adresa, kterou jsme vytvořili v prvním kroku kurzu.

az container logs \
  --resource-group $resourceGroup \
  --name testegress

Výstup se podobá tomuto:

<html><head><title>Current IP Check</title></head><body>Current IP Address: 52.142.18.133</body></html>

Tato IP adresa by měla odpovídat veřejné IP adrese vytvořené v prvním kroku kurzu.

echo $ngPublicIp

Vyčištění prostředků

Pokud už ji nepotřebujete, můžete pomocí příkazu az group delete odebrat skupinu prostředků a všechny související prostředky následujícím způsobem. Parametr --no-wait vrátí řízení na příkazový řádek bez čekání na dokončení operace. Parametr --yes potvrdí, že chcete prostředky odstranit, aniž by se na to zobrazoval další dotaz.

az group delete --name $resourceGroup --yes --no-wait

Další kroky

V tomto článku nastavíte skupiny kontejnerů ve virtuální síti za službou Azure NAT Gateway. Pomocí této konfigurace nastavíte jeden výchozí přenos statických IP adres ze skupin kontejnerů služby Azure Container Instances.

Pomoc s řešením potíží najdete v tématu Řešení potíží s připojením k překladu adres (NAT) služby Azure Virtual Network.