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ů používá veřejnou IP adresu služby NAT Gateway. Několik skupin kontejnerů nasazených v podsíti virtuální sítě může používat jednu bránu NAT.
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.
Požadavky
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
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 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" # Set Azure subscription ID 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 jste použili 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. Brána používá tuto veřejnou IP adresu pro přístup k internetu. Zobrazí se upozornění na nadcházející změnu způsobující chybu, ve které jsou IP adresy skladové položky Standard ve výchozím nastavení v zóně 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 služby 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.org
HTTP , 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 odstranit prostředky bez další výzvy k tomu.
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.