Konfigurace jedné veřejné IP adresy pro odchozí a příchozí provoz do 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é se službou Azure Firewall. Nastavením trasy definované uživatelem do skupiny kontejnerů a pravidel brány firewall můžete směrovat a identifikovat provoz do a ze skupiny kontejnerů. Příchozí a výchozí přenos dat skupiny kontejnerů používají veřejnou IP adresu brány firewall. Několik skupin kontejnerů nasazených v podsíti virtuální sítě může použít jednu výchozí IP adresu.
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 Azure Firewall nasazená v síti se statickou veřejnou IP adresou
- Trasa definovaná uživatelem v podsíti skupin kontejnerů
- Pravidlo překladu adres (NAT) pro příchozí přenos dat brány firewall a pravidlo aplikace pro výchozí přenos dat
Pak ověříte příchozí a výchozí přenos dat z ukázkových skupin kontejnerů prostřednictvím brány firewall.
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
Tip
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.
V pozdějším kroku získejte privátní IP adresu skupiny kontejnerů spuštěním příkazu [az container show][az-container-show]:
aciPrivateIp="$(az container show --name appcontainer \
--resource-group $resourceGroup \
--query ipAddress.ip --output tsv)"
Nasazení služby Azure Firewall v síti
V následujících částech použijte Azure CLI k nasazení brány Azure Firewall ve virtuální síti. Základní informace najdete v tématu Kurz: Nasazení a konfigurace služby Azure Firewall pomocí webu Azure Portal.
Nejprve pomocí příkazu az network vnet subnet create přidejte podsíť s názvem AzureFirewallSubnet pro bránu firewall. AzureFirewallSubnet je požadovaný název této podsítě.
az network vnet subnet create \
--name AzureFirewallSubnet \
--resource-group $resourceGroup \
--vnet-name aci-vnet \
--address-prefix 10.0.1.0/26
K vytvoření brány firewall v podsíti použijte následující příkazy Azure CLI.
Pokud ještě není nainstalované, přidejte rozšíření brány firewall do Azure CLI pomocí příkazu az extension add :
az extension add --name azure-firewall
Vytvořte prostředky brány firewall pomocí příkazu az network firewall create :
az network firewall create \
--name myFirewall \
--resource-group $resourceGroup \
--location eastus
az network public-ip create \
--name fw-pip \
--resource-group $resourceGroup \
--location eastus \
--allocation-method static \
--sku standard
az network firewall ip-config create \
--firewall-name myFirewall \
--name FW-config \
--public-ip-address fw-pip \
--resource-group $resourceGroup \
--vnet-name aci-vnet
Aktualizujte konfiguraci brány firewall pomocí příkazu az network firewall update :
az network firewall update \
--name myFirewall \
--resource-group $resourceGroup
Pomocí příkazu az network firewall ip-config list získejte privátní IP adresu brány firewall. Tato privátní IP adresa se používá v pozdějším příkazu.
fwPrivateIp="$(az network firewall ip-config list \
--resource-group $resourceGroup \
--firewall-name myFirewall \
--query "[].privateIpAddress" --output tsv)"
Pomocí příkazu az network public-ip show získejte veřejnou IP adresu brány firewall. Tato veřejná IP adresa se používá v pozdějším příkazu.
fwPublicIp="$(az network public-ip show \
--name fw-pip \
--resource-group $resourceGroup \
--query ipAddress --output tsv)"
Definování trasy definované uživatelem v podsíti ACI
Pokud chcete přesměrovat provoz na bránu Azure Firewall, definujte trasu definovanou použitím v podsíti ACI. Další informace najdete v tématu Směrování síťového provozu.
Vytvoření směrovací tabulky
Nejprve spuštěním následujícího příkazu az network route-table create vytvořte směrovací tabulku. Vytvořte směrovací tabulku ve stejné oblasti jako virtuální síť.
az network route-table create \
--name Firewall-rt-table \
--resource-group $resourceGroup \
--location eastus \
--disable-bgp-route-propagation true
Vytvoření trasy
Spuštěním příkazu az network-route-table route create vytvořte trasu v směrovací tabulce. Pokud chcete směrovat provoz do brány firewall, nastavte typ dalšího segmentu směrování na VirtualAppliance
a předejte privátní IP adresu brány firewall jako adresu dalšího segmentu směrování.
az network route-table route create \
--resource-group $resourceGroup \
--name DG-Route \
--route-table-name Firewall-rt-table \
--address-prefix 0.0.0.0/0 \
--next-hop-type VirtualAppliance \
--next-hop-ip-address $fwPrivateIp
Přidružení směrovací tabulky k podsíti ACI
Spuštěním příkazu az network vnet subnet update přidružte směrovací tabulku k podsíti delegovanou do služby Azure Container Instances.
az network vnet subnet update \
--name aci-subnet \
--resource-group $resourceGroup \
--vnet-name aci-vnet \
--address-prefixes 10.0.0.0/24 \
--route-table Firewall-rt-table
Konfigurace pravidel pro bránu firewall
Ve výchozím nastavení služba Azure Firewall zakazuje (bloky) příchozí a odchozí provoz.
Konfigurace pravidla PŘEKLADU adres (NAT) pro podsíť brány firewall do podsítě ACI
Vytvořte v bráně firewall pravidlo překladu adres (NAT) pro překlad a filtrování příchozího internetového provozu do kontejneru aplikace, který jste začali dříve v síti. Podrobnosti najdete v tématu Filtrování příchozího internetového provozu pomocí DNAT služby Azure Firewall.
Vytvořte pravidlo překladu adres (NAT) a kolekci pomocí příkazu az network firewall nat-rule create :
az network firewall nat-rule create \
--firewall-name myFirewall \
--collection-name myNATCollection \
--action dnat \
--name myRule \
--protocols TCP \
--source-addresses '*' \
--destination-addresses $fwPublicIp \
--destination-ports 80 \
--resource-group $resourceGroup \
--translated-address $aciPrivateIp \
--translated-port 80 \
--priority 200
Podle potřeby přidejte pravidla překladu adres (NAT) pro filtrování provozu do jiných IP adres v podsíti. Jiné skupiny kontejnerů v podsíti můžou například vystavit IP adresy pro příchozí provoz nebo by se po restartování mohly ke skupině kontejnerů přiřadit jiné interní IP adresy.
Vytvoření pravidla odchozí aplikace v bráně firewall
Spuštěním následujícího příkazu az network firewall application-rule create vytvořte v bráně firewall odchozí pravidlo. Toto ukázkové pravidlo umožňuje přístup z podsítě delegované do služby Azure Container Instances k plně kvalifikovanému názvu domény checkip.dyndns.org
. Přístup HTTP k webu se používá v pozdějším kroku k potvrzení výchozí IP adresy ze služby Azure Container Instances.
az network firewall application-rule create \
--collection-name myAppCollection \
--firewall-name myFirewall \
--name Allow-CheckIP \
--protocols Http=80 Https=443 \
--resource-group $resourceGroup \
--target-fqdns checkip.dyndns.org \
--source-addresses 10.0.0.0/24 \
--priority 200 \
--action Allow
Testování přístupu ke skupině kontejnerů přes bránu firewall
Následující části ověřují, že podsíť delegovaná do služby Azure Container Instances je správně nakonfigurovaná za bránou firewall Azure. Předchozí kroky směrovaly příchozí provoz do podsítě i odchozího provozu z podsítě přes bránu firewall.
Testování příchozího přenosu dat do 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é $FW_PUBLIC_IP:
echo $fwPublicIp
Výstup se podobá tomuto:
52.142.18.133
Pokud je pravidlo PŘEKLADU adres (NAT) v bráně firewall správně nakonfigurované, při zadávání veřejné IP adresy brány firewall v prohlížeči se zobrazí následující:
Testování výchozího přenosu dat ze skupiny kontejnerů
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 brány firewall.
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>
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 bránou Azure Firewall. Nakonfigurovali jste trasu definovanou uživatelem a pravidla překladu adres a aplikací v bráně firewall. Pomocí této konfigurace nastavíte jednu statickou IP adresu pro příchozí a výchozí přenos dat ze služby Azure Container Instances.
Další informace o správě provozu a ochraně prostředků Azure najdete v dokumentaci ke službě Azure Firewall .