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ě:

  1. 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.
  2. 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í nasadit
    • id: 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