Nasazení instancí kontejnerů do virtuální sítě Azure
Azure Virtual Network poskytuje zabezpečené privátní sítě pro vaše prostředky Azure a místní prostředky. Nasazením skupin kontejnerů do virtuální sítě Azure můžou kontejnery bezpečně komunikovat s dalšími prostředky ve virtuální síti.
Tento článek ukazuje, jak pomocí příkazu az container create v Azure CLI nasadit skupiny kontejnerů do nové nebo existující virtuální sítě.
Důležité
Před nasazením skupin kontejnerů ve virtuálních sítích doporučujeme nejprve zkontrolovat omezení. Informace o scénářích a omezeních sítí najdete v tématu Scénáře virtuální sítě a prostředky pro Azure Container Instances.
Důležité
Nasazení skupiny kontejnerů do virtuální sítě je obecně dostupné pro kontejnery Linuxu a Windows ve většině oblastí, kde je k dispozici Azure Container Instances. Podrobnosti najdete v tématu available-regions.
Důležité
Profily sítě byly vyřazeny z 2021-07-01
verze rozhraní API. Pokud používáte tuto nebo novější verzi, ignorujte všechny kroky a akce související s profily sítě.
Příklady v tomto článku jsou formátované pro prostředí Bash. Pokud dáváte přednost jinému prostředí, například PowerShellu nebo příkazovému řádku, upravte znaky pokračování řádku odpovídajícím způsobem.
Nasazení do nové virtuální sítě
Poznámka
Pokud používáte rozsah IP adres podsítě /29, abyste měli jenom 3 IP adresy, doporučujeme vždy přejít o jednu oblast výše (nikdy pod). Použijte například rozsah IP adres podsítě /28, abyste mohli mít alespoň 1 vyrovnávací paměť PROTOKOLU IP na skupinu kontejnerů. Tímto způsobem se můžete vyhnout zablokovaným kontejnerům, které se nedají spustit, restartovat nebo dokonce ani zastavit.
Pokud chcete provést nasazení do nové virtuální sítě a nechat Azure vytvářet síťové prostředky automaticky, zadejte při spuštění příkazu az container create následující:
- Název virtuální sítě
- Předpona adresy virtuální sítě ve formátu CIDR
- Název podsítě
- Předpona adresy podsítě ve formátu CIDR
Předpony adres virtuální sítě a podsítě určují adresní prostory virtuální sítě a podsítě. Tyto hodnoty jsou reprezentované v zápisu CIDR (Classless Inter-Domain Routing), například 10.0.0.0/16
. Další informace o práci s podsítěmi najdete v tématu Přidání, změna nebo odstranění podsítě virtuální sítě.
Jakmile touto metodou nasadíte první skupinu kontejnerů, můžete ji nasadit do stejné podsítě zadáním názvů virtuální sítě a podsítě nebo profilu sítě, který pro vás Azure automaticky vytvoří. Vzhledem k tomu, že Azure deleguje podsíť na Azure Container Instances, můžete do podsítě nasadit jenom skupiny kontejnerů.
Příklad
Následující příkaz az container create určuje nastavení nové virtuální sítě a podsítě. Zadejte název skupiny prostředků vytvořené v oblasti, ve které jsou dostupná nasazení skupin kontejnerů ve virtuální síti. Tento příkaz nasadí veřejný kontejner Microsoft aci-helloworld , který spouští malý Node.js webový server obsluhující statickou webovou stránku. V další části nasadíte druhou skupinu kontejnerů do stejné podsítě a otestujete komunikaci mezi těmito dvěma instancemi kontejneru.
az container create \
--name appcontainer \
--resource-group myResourceGroup \
--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
Při nasazení do nové virtuální sítě pomocí této metody může nasazení trvat několik minut, než se síťové prostředky vytvoří. Po počátečním nasazení se další nasazení skupin kontejnerů do stejné podsítě dokončí rychleji.
Nasazení do existující virtuální sítě
Nasazení skupiny kontejnerů do existující virtuální sítě:
- Vytvořte podsíť v rámci existující virtuální sítě, použijte existující podsíť, ve které je už nasazená skupina kontejnerů, nebo použijte existující podsíť vyprázdněnou od všech ostatních prostředků a konfigurace.
- Nasaďte skupinu kontejnerů pomocí příkazu az container create a zadejte jednu z následujících možností:
- Název virtuální sítě a název podsítě
- ID prostředku virtuální sítě a ID prostředku podsítě, které umožňuje používat virtuální síť z jiné skupiny prostředků
- Název nebo ID profilu sítě, které můžete získat pomocí příkazu az network profile list
Příklad
Následující příklad nasadí druhou skupinu kontejnerů do stejné dříve vytvořené podsítě a ověří komunikaci mezi těmito dvěma instancemi kontejneru.
Nejprve získejte IP adresu první skupiny kontejnerů, kterou jste nasadili– kontejner appcontainer:
az container show --resource-group myResourceGroup \
--name appcontainer \
--query ipAddress.ip --output tsv
Ve výstupu se zobrazí IP adresa skupiny kontejnerů v privátní podsíti. Příklad:
10.0.0.4
Teď nastavte CONTAINER_GROUP_IP
ip adresu, kterou jste získali pomocí az container show
příkazu , a spusťte následující az container create
příkaz. Tento druhý kontejner , commchecker, spouští image založené na Alpine Linuxu a spouští wget
se na IP adrese privátní podsítě první skupiny kontejnerů.
CONTAINER_GROUP_IP=<container-group-IP-address>
az container create \
--resource-group myResourceGroup \
--name commchecker \
--image alpine:3.5 \
--command-line "wget $CONTAINER_GROUP_IP" \
--restart-policy never \
--vnet aci-vnet \
--subnet aci-subnet
Po dokončení tohoto druhého nasazení kontejneru si stáhněte jeho protokoly, abyste viděli výstup wget
příkazu, který provedl:
az container logs --resource-group myResourceGroup --name commchecker
Pokud druhý kontejner úspěšně komunikoval s prvním kontejnerem, výstup je podobný následujícímu:
Connecting to 10.0.0.4 (10.0.0.4:80)
index.html 100% |*******************************| 1663 0:00:00 ETA
Výstup protokolu by měl ukázat, že wget
se bylo možné připojit a stáhnout soubor indexu z prvního kontejneru pomocí jeho privátní IP adresy v místní podsíti. Síťový provoz mezi těmito dvěma skupinami kontejnerů zůstal ve virtuální síti.
Příklad – YAML
Skupinu kontejnerů můžete také nasadit do existující virtuální sítě pomocí souboru YAML, šablony Resource Manager nebo jiné programové metody, například pomocí sady Python SDK.
Například při použití souboru YAML můžete provést nasazení do virtuální sítě s podsítí delegovanou na Azure Container Instances. Zadejte následující vlastnosti:
ipAddress
: Nastavení privátníCH IP adres pro skupinu kontejnerů.ports
: Případné porty, které se mají otevřít.protocol
: Protokol (TCP nebo UDP) pro otevřený port.
subnetIds
: ID prostředků podsítí, do které se mají nasaditid
: ID prostředku podsítěname
: Název podsítě
Tento YAML vytvoří ve vaší virtuální síti skupinu kontejnerů appcontaineryaml .
apiVersion: '2021-07-01'
location: westus
name: appcontaineryaml
properties:
containers:
- name: appcontaineryaml
properties:
image: mcr.microsoft.com/azuredocs/aci-helloworld
ports:
- port: 80
protocol: TCP
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
ipAddress:
type: Private
ports:
- protocol: tcp
port: '80'
osType: Linux
restartPolicy: Always
subnetIds:
- id: <subnet-id>
name: default
tags: null
type: Microsoft.ContainerInstance/containerGroups
Nasaďte skupinu kontejnerů pomocí příkazu az container create a zadejte název souboru YAML pro --file
parametr :
az container create --resource-group myResourceGroup \
--file vnet-deploy-aci.yaml
Po dokončení nasazení spusťte příkaz az container show , který zobrazí jeho stav. Ukázkový výstup:
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- ------------------------------------------ ----------- --------- --------------- -------- ----------
appcontaineryaml myResourceGroup Running mcr.microsoft.com/azuredocs/aci-helloworld 10.0.0.5:80 Private 1.0 core/1.5 gb Linux westus
Vyčištění prostředků
Odstranění instancí kontejneru
Po dokončení práce s instancemi kontejneru, které jste vytvořili, je odstraňte pomocí následujících příkazů:
az container delete --resource-group myResourceGroup --name appcontainer -y
az container delete --resource-group myResourceGroup --name commchecker -y
az container delete --resource-group myResourceGroup --name appcontaineryaml -y
Odstranění síťových prostředků
Tato funkce aktuálně vyžaduje několik dalších příkazů k odstranění síťových prostředků, které jste vytvořili dříve. Pokud jste k vytvoření virtuální sítě a podsítě použili ukázkové příkazy v předchozích částech tohoto článku, můžete tyto síťové prostředky odstranit pomocí následujícího skriptu. Skript předpokládá, že vaše skupina prostředků obsahuje jednu virtuální síť s jedním síťovým profilem.
Před spuštěním skriptu nastavte proměnnou RES_GROUP
na název skupiny prostředků obsahující virtuální síť a podsíť, které se mají odstranit. Pokud jste nepoužili aci-vnet
název navržený dříve, aktualizujte název virtuální sítě. Skript je naformátovaný pro prostředí Bash. Pokud dáváte přednost jinému prostředí, jako je PowerShell nebo Příkazový řádek, budete muset odpovídajícím způsobem upravit přiřazení proměnných a přístupové objekty.
Upozornění
Tento skript odstraní prostředky! Odstraní virtuální síť a všechny podsítě, které obsahuje. Před spuštěním tohoto skriptu se ujistěte, že už ve virtuální síti nepotřebujete žádné prostředky, včetně podsítí, které obsahuje. Po odstranění jsou tyto prostředky neobnovitelné.
# Replace <my-resource-group> with the name of your resource group
# Assumes one virtual network in resource group
RES_GROUP=<my-resource-group>
# Get network profile ID
# Assumes one profile in virtual network
NETWORK_PROFILE_ID=$(az network profile list --resource-group $RES_GROUP --query [0].id --output tsv)
# Delete the network profile
az network profile delete --id $NETWORK_PROFILE_ID -y
# Delete virtual network
az network vnet delete --resource-group $RES_GROUP --name aci-vnet
Další kroky
Pokud chcete nasadit novou virtuální síť, podsíť, profil sítě a skupinu kontejnerů pomocí šablony Resource Manager, přečtěte si téma Vytvoření skupiny kontejnerů Azure s virtuální sítí.
Pokud chcete nasadit Azure Container Instances, které můžou stahovat image z Azure Container Registry prostřednictvím privátního koncového bodu, přečtěte si téma Nasazení do Azure Container Instances z Azure Container Registry s využitím spravovaného koncového bodu. identity.