Azure Container Instances aneb kontejnery kam se podíváš

Azure Container Instances (ACI) je velice zajímavá služba nabízená v rámci Microsoft Azure, která umožňuje rychle vytvářet kontejnery na vyžádání. Nemusíte konfigurovat virtuální stroje, na kterých byste kontejnery spouštěli — ACI se za Vás postará o veškerou infrastrukturu. Můžete tak rychle vytvářet a rušit kontejnery a platit spotřebovaný výkon po vteřinách.

Pokud aplikace v rámci kontejneru dokončí svou práci, odstraní se celý kontejner a nelze jej tak znovu spustit. Pro spuštění kontejneru je nutné vytvořit novou instanci služby. Z tohoto důvodu je vhodné mít vytvoření služby zautomatizované, což si později ukážeme.

Představte si, že potřebujete každý den spouštět úlohu, která zpracovává velké množství informací. Požadavkem je aby, se všechna data zpracovala co nejdříve a řešení bylo co nejlevnější. Přesně k tomu lze využít Azure Container Instances. „Vytočením“ vícero kontejnerů, můžete paralelně zpracovávat data.

Vytvoření ARM template

Prvním krokem k automatizaci je vytvoření ARM template v JSON, který popisuje jak má služba vypadat a jaké má mít vlastnosti (CPU, RAM apod.). Abychom si ukázali paralelní zpracování ve vícero kontejnerech, obsahuje přiložený template definici 4 stejných kontejnerů. Vytvořil jsem jednoduchou aplikaci, která zpracovává frontu zpráv ve Storage Account. Tato aplikace je publikována v Docker Hub. Detail aplikace je možné shlédnout na GitHub.

Abychom nemuseli vkládat citlivé údaje přímo do kódu nebo template, obsahuje template parametry pro — název storage account, account key a název fronty. Hodnoty vložené do těchto parametrů se kontejneru zpřístupní jako Environment variable a velice jednoduše se k nim dostaneme. Další parametry mají výchozí hodnotu a není třeba je měnit.

Poznámka: Azure Container Instances má určité limity, na které je potřeba pamatovat.

Je důležité poznamenat, že hostovat víc kontejnerů v rámci jedné instance je možné zatím jen na Linuxu. Restart policy je další velmi důležité nastavení, které je ve výchozím stavu nastavena na Always. To znamená, že jakmile se kontejner ukončí (klidně i regulérně a bez chyby), služba kontejner znovu probudí. V našem případě je tedy třeba nastavit, že se má kontejner restartovat jen v případě chyby a nebo vůbec.

Nasazení ACI pomocí Azure CLI

Pro práci s Azure jsem zvolil Azure CLI, což je příkazová řádka pro správu Azure služeb. Azure CLI je dostupné na všech platformách a je tak dostupné všem bez rozdílu.

Nejdříve je třeba se přihlásit a vytvořit novou resource group:

az login
az group create -g containers -l westeurope

Poté použijeme vytvořený ARM template a vložíme cestu k němu do následujícího příkazu:

az group deployment create --template-file path-to\template.json -g containers --parameters instanceName=unique-aci-name accountName=storage-account-name accountKey=storage-account-key queueName=name

ARM template očekává 4 parametry, které nemají výchozí hodnotu. Tyto parametry lze příkazu předložit ve formátu key=value nebo pomocí JSON zápisu. Spuštěním tohoto příkazu vytvoříme deployment v definované resouce group jejímž výsledkem je vytvořená služba ACI a běžící 4 kontejnery.

Vypsat informace o kontejnerech můžete následujícím příkazem:

az container show -n unique-aci-name -g containers -o table


Po tom co se kontejnery spustí, se vytvoří náhodné zprávy (10 až 40 per kontejner) a zapíší se do fronty, která se následně začne zpracovávat. Výsledek je možné dohledat v Azure Portálu.

A kolikže tento běh stál peněz? Cca. $0,01 a to ještě bude pravděpodobně zaokrouhleno.

Pro opakované spouštění a zpracování čehokoliv je služba ACI perfektní volba. Samozřejmě, ale nepokrývá všechny scénáře a pokud budete zpracovávat např video, Azure Batch bude vhodnější volba.

Vice informací naleznete na webu docs.microsoft.com.

Napsat komentář

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..