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é virtuální sítě nebo existující virtuální sítě.

Informace o scénářích a omezeních sítí najdete v tématu Scénáře a prostředky virtuální sítě pro Azure Container Instances.

Důležité

Nasazení skupiny kontejnerů do virtuální sítě je obecně dostupné pro kontejnery Linuxu ve většině oblastí, ve kterých je k dispozici Azure Container Instances. Podrobnosti najdete v tématu Oblasti a dostupnost prostředků.

Důležité

Profily sítě se vyřadily z 2021-07-01 verze rozhraní API. Pokud používáte tuto nebo novější verzi, ignorujte všechny kroky a akce související se síťovými profily.

Příklady v tomto článku jsou formátované pro prostředí Bash. Pokud dáváte přednost jinému prostředí, jako je PowerShell nebo příkazový řádek, upravte znaky pokračování řádku odpovídajícím způsobem.

Nasazení do nové virtuální sítě

Pokud chcete nasadit do nové virtuální sítě a nechat Azure automaticky vytvořit síťové prostředky, 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 reprezentovány 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ě.

Po nasazení první skupiny kontejnerů s touto metodou můžete nasadit do stejné podsítě zadáním názvů virtuální sítě a podsítě nebo profilu sítě, který za vás Azure automaticky vytvoří. Protože Azure deleguje podsíť na Azure Container Instances, můžete do podsítě nasadit pouze skupiny kontejnerů.

Příklad

Následující příkaz az container create určuje nastavení pro novou virtuální síť a podsíť. Zadejte název skupiny prostředků, která byla vytvořena v oblasti, ve které jsou k dispozici nasazení skupin kontejnerů ve virtuální síti. Tento příkaz nasadí veřejný kontejner Microsoft aci-helloworld , který spouští malý webový server Node.js obsluhující statickou webovou stránku. V další části nasadíte druhou skupinu kontejnerů do stejné podsítě a otestujete komunikaci mezi 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íť ve stávající virtuální síti, použijte existující podsíť, ve které už je nasazená skupina kontejnerů, nebo použijte existující podsíť vyprázdněnou ze 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žití virtuální sítě 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é podsítě vytvořené dříve a ověří komunikaci mezi dvěma instancemi kontejneru.

Nejprve získejte IP adresu první skupiny kontejnerů, kterou jste nasadili, appcontainer:

az container show --resource-group myResourceGroup \
  --name appcontainer \
  --query ipAddress.ip --output tsv

Výstup zobrazí IP adresu skupiny kontejnerů v privátní podsíti. Příklad:

10.0.0.4

Teď nastavte CONTAINER_GROUP_IP IP adresu, kterou jste načetli pomocí az container show příkazu, a spusťte následující az container create příkaz. Tento druhý kontejner, čárka, spustí image založenou na Alpine Linuxu a spustí wget se s IP adresou 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 protokoly, abyste viděli výstup wget příkazu, který spustil:

az container logs --resource-group myResourceGroup --name commchecker

Pokud druhý kontejner úspěšně komunikoval s prvním, 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 mohl 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, jako je sada Python SDK.

Například při použití souboru YAML můžete nasadit do virtuální sítě s podsítí delegovanou na Azure Container Instances. Zadejte následující vlastnosti:

  • ipAddress: Nastavení privátní IP adresy pro skupinu kontejnerů.
    • ports: Porty, které se mají otevřít, pokud existuje.
    • 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 virtuální síti skupinu kontejnerů s názvem 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 a zobrazte 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

Až budete hotovi pracovat s instancemi kontejneru, které jste vytvořili, odstraňte je 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 profilem sítě.

Před spuštěním skriptu nastavte RES_GROUP proměnnou na název skupiny prostředků obsahující virtuální síť a podsíť, které by se měly odstranit. Aktualizujte název virtuální sítě, pokud jste nepoužili aci-vnet název navrhovaný dříve. Skript je formátován 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ých objektů.

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ž nepotřebujete žádné prostředky ve virtuální síti, včetně všech 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í.