Nasazení kontejnerů v Azure

Návod

Tento obsah je výňatek z elektronické knihy Architektura cloud-native .NET aplikací pro Azure, která je k dispozici na .NET Docs nebo jako bezplatné PDF ke stažení, které si můžete přečíst offline.

miniatura obálky e-knihy Cloud-nativní aplikace .NET pro Azure.

V této kapitole a v kapitole 1 jsme probírali kontejnery. Viděli jsme, že kontejnery poskytují mnoho výhod aplikací nativních pro cloud, včetně přenositelnosti. V cloudu Azure můžete nasadit stejné kontejnerizované služby napříč přípravným a produkčním prostředím. Azure nabízí několik možností hostování těchto kontejnerizovaných úloh:

  • Azure Kubernetes Services (AKS)
  • Azure Container Instance (ACI)
  • Azure Webové Aplikace pro Kontajnery

Registr kontejnerů Azure

Při kontejnerizaci mikroslužby nejprve sestavíte kontejner image. Image je binární reprezentace kódu služby, závislostí a modulu runtime. I když můžete image vytvořit ručně pomocí Docker Build příkazu z rozhraní Api Dockeru, lepším přístupem je ho vytvořit jako součást automatizovaného procesu sestavení.

Po vytvoření se image kontejnerů ukládají v registrech kontejnerů. Umožňují vytvářet, ukládat a spravovat image kontejnerů. K dispozici je mnoho registrů, veřejných i soukromých. Azure Container Registry (ACR) je plně spravovaná služba registru kontejnerů v cloudu Azure. Ukládá vaše obrázky ve síti Azure, což zkracuje dobu potřebnou k jejich nasazení na hostitele kontejnerů Azure. Můžete je také zabezpečit pomocí stejných postupů zabezpečení a identit, které používáte pro jiné prostředky Azure.

Službu Azure Container Registry vytvoříte pomocí webu Azure Portal, Azure CLI nebo nástrojů PowerShellu. Vytvoření registru v Azure je jednoduché. Vyžaduje předplatné Azure, skupinu prostředků a jedinečný název. Obrázek 3-10 ukazuje základní možnosti pro vytvoření registru, který bude hostovaný na registryname.azurecr.ioadrese .

Vytvoření registru kontejneru

Obrázek 3–10 Vytvoření registru kontejneru

Po vytvoření registru ho budete muset ověřit, než ho budete moct použít. K registru se obvykle přihlásíte pomocí příkazu Azure CLI:

az acr login --name *registryname*

Po ověření můžete použít příkazy Dockeru k nahrání obrazů kontejneru. Než to ale budete moct udělat, musíte image označit plně kvalifikovaným názvem (URL) přihlašovacího serveru ACR. Bude mít formát název_registru.azurecr.io.

docker tag mycontainer myregistry.azurecr.io/mycontainer:v1

Po označení obrazu použijete příkaz docker push k odeslání obrazu do vaší instance služby ACR.

docker push myregistry.azurecr.io/mycontainer:v1

Po odeslání image do registru se doporučuje odebrat image z místního prostředí Dockeru pomocí tohoto příkazu:

docker rmi myregistry.azurecr.io/mycontainer:v1

Osvědčeným postupem je, že byste do registru kontejneru neměli ručně odesílat image. Místo toho použijte kanál buildu definovaný v nástroji, jako je GitHub nebo Azure DevOps. Další informace najdete v kapitoleCloud-Native DevOps.

Úlohy ACR

ACR Tasks je sada funkcí dostupných ve službě Azure Container Registry. Rozšiřuje váš vývojový cyklus v rámci vnitřního okruhu tím, že v cloudu Azure tvoří a spravuje kontejnerové obrazy. Místo vyvolání docker build a docker push místně na vašem vývojovém počítači je automaticky zpracovává služba ACR Tasks v cloudu.

Následující příkaz AZ CLI vytvoří image kontejneru a nahraje ji na ACR:

# create a container registry
az acr create --resource-group myResourceGroup --name myContainerRegistry008 --sku Basic

# build container image in ACR and push it into your container registry
az acr build --image sample/hello-world:v1  --registry myContainerRegistry008 --file Dockerfile .

Jak vidíte z předchozího bloku příkazů, nemusíte na vývojový počítač instalovat Docker Desktop. Kromě toho můžete nakonfigurovat spouštěče úloh ACR tak, aby znovu sestavily obrazy kontejnerů při aktualizacích zdrojového kódu i základního obrazu.

Azure Kubernetes Service

V této kapitole jsme probrali službu Azure Kubernetes Service (AKS). Viděli jsme, že se jedná o de facto orchestrátor kontejnerů, který spravuje kontejnerizované aplikace nativní pro cloud.

Jakmile nasadíte image do registru, jako je ACR, můžete AKS nakonfigurovat tak, aby ji automaticky načítá a nasadil. S využitím kanálu CI/CD můžete nakonfigurovat strategii kanárských verzí , která minimalizuje riziko spojené s rychlým nasazováním aktualizací. Nová verze aplikace je původně nakonfigurovaná v produkčním prostředí bez směrování provozu. Systém pak bude směrovat malé procento uživatelů na nově nasazenou verzi. Jakmile tým nabere důvěru v novou verzi, může zavést více instancí a postupně ukončit staré. AKS tento styl nasazení snadno podporuje.

Stejně jako u většiny prostředků v Azure můžete vytvořit cluster Azure Kubernetes Service pomocí portálu, příkazového řádku nebo nástrojů pro automatizaci, jako je Helm nebo Terraform. Pokud chcete začít s novým clusterem, musíte zadat následující informace:

  • Předplatné Azure
  • Skupina zdrojů
  • Název clusteru Kubernetes
  • Región
  • Verze Kubernetes
  • Předpona názvu DNS
  • Velikost uzlu
  • Počet uzlů

Tyto informace stačí, abyste mohli začít. V rámci procesu vytváření na webu Azure Portal můžete také nakonfigurovat možnosti pro následující funkce clusteru:

  • Škála
  • Autentizace
  • Síťování
  • Monitorování
  • Štítky

Tento rychlý start vás provede nasazením clusteru AKS pomocí webu Azure Portal.

Azure Bridge to Kubernetes

Aplikace nativní pro cloud mohou se stát velkými a složitými, což vyžaduje významné výpočetní prostředky pro svůj běh. V těchto scénářích není možné hostovat celou aplikaci na vývojovém počítači (zejména na přenosném počítači). Azure Bridge to Kubernetes řeší nedostatek. Umožňuje vývojářům pracovat s místní verzí služby při hostování celé aplikace ve vývojovém clusteru AKS.

Až budou připravení, vývojáři testují své změny místně při spuštění s úplnou aplikací v clusteru AKS – bez replikace závislostí. Pod kapotou most slučuje kód z místního počítače se službami v AKS. Vývojáři můžou rychle iterovat a ladit kód přímo v Kubernetes pomocí sady Visual Studio nebo editoru Visual Studio Code.

Gabe Monroy, bývalý viceprezident pro Product Management ve společnosti Microsoft, popisuje dobře:

Představte si, že jste nový zaměstnanec, který se snaží opravit chybu ve složité aplikaci mikroslužeb, která se skládá z desítek komponent, z nichž každá má vlastní konfiguraci a backingové služby. Abyste mohli začít, musíte nakonfigurovat místní vývojové prostředí, aby mohlo napodobovat produkční prostředí, včetně nastavení integrovaného vývojového prostředí, řetězu nástrojů, závislostí kontejnerizovaných služeb, místního prostředí Kubernetes, napodobování služeb zálohování a dalších. S nastavením vývojového prostředí může trvat celou dobu, než se opraví první chyba. Nebo byste mohli použít Bridge to Kubernetes s AKS.