Sdílet prostřednictvím


Konfigurace image kontejneru pro spouštění nasazení

Prostředí nasazení Azure (ADE) podporuje model rozšiřitelnosti, který umožňuje nakonfigurovat definici prostředí s upřednostňovanou architekturou šablon IaC. Vlastní image můžete uložit do registru kontejneru, jako je Azure Container Registry (ACR) nebo Docker Hub, a pak na ně v definicích prostředí odkazovat.

V tomto článku se dozvíte, jak vytvořit vlastní image kontejneru Bicep pro nasazení definic prostředí v ADE. Naučíte se používat standardní image poskytovanou Microsoftem nebo jak nakonfigurovat vlastní infrastrukturu zřizování imagí pomocí architektury Bicep Infrastructure as-Code (IaC).

V tomto článku se dozvíte, jak vytvořit vlastní image kontejneru Terraform pro vytváření prostředí nasazení pomocí prostředí nasazení Azure (ADE). Dozvíte se, jak nakonfigurovat vlastní image pro zřizování infrastruktury pomocí architektury Terraform Infrastructure-as-Code (IaC).

V tomto článku se dozvíte, jak využívat Pulumi pro nasazení v ADE. Naučíte se používat standardní image poskytovanou Pulumi nebo jak nakonfigurovat vlastní image pro zřizování infrastruktury pomocí architektury Pulumi Infrastructure as-Code (IaC).

Požadavky

Použití imagí kontejneru s ADE

K používání imagí kontejnerů s ADE můžete použít jeden z následujících přístupů:

  • Použijte standardní image kontejneru Pro jednoduché scénáře použijte standardní image kontejneru ARM-Bicep, kterou poskytuje ADE.
  • Vytvořte vlastní image kontejneru pro složitější scénáře a vytvořte vlastní image kontejneru, která splňuje vaše konkrétní požadavky.

Použití standardní image kontejneru

ADE podporuje Azure Resource Manager (ARM) a Bicep bez nutnosti další konfigurace. Definici prostředí, která nasadí prostředky Azure pro prostředí nasazení, můžete vytvořit tak, že do katalogu přidáte soubory šablon (například azuredeploy.json a environment.yaml). ADE pak pomocí standardní image kontejneru ARM-Bicep vytvoří prostředí nasazení.

V souboru environment.yaml určuje vlastnost umístění image kontejneru, runner kterou chcete použít. Chcete-li použít standardní obrázek publikovaný na Registr artefaktů Microsoft, použijte příslušné identifikátory runner.

Následující příklad ukazuje runner odkaz na standardní image kontejneru ARM-Bicep:

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

Standardní image kontejneru Bicep se zobrazí ve standardním úložišti ADE ve složce Runner-Images pro image ARM-Bicep .

Další informace o vytváření definic prostředí, které používají image kontejneru ADE k nasazení prostředků Azure, najdete v tématu Přidání a konfigurace definice prostředí.

Vytvoření vlastní image kontejneru

Vytvoření vlastní image kontejneru pomocí skriptu

Vytvoření vlastní image kontejneru umožňuje přizpůsobit nasazení tak, aby vyhovovala vašim požadavkům. Image můžete vytvořit a sestavit na základě standardní image ADE a odeslat ji do registru kontejneru pomocí rychlého úvodního skriptu poskytovaného Microsoftem. Skript najdete v úložišti Prostředí nasazení. Pokud chcete použít rychlý úvodní skript, vytvořte fork úložiště a spusťte skript místně.

Skript sestaví image a nasdílí ji do zadané služby Azure Container Registry (ACR) v úložišti "ade" a značce "latest". Tento skript vyžaduje název registru a adresář pro vaši vlastní image, nainstalovaný Azure CLI a Docker Desktop a v proměnných PATH a vyžaduje, abyste měli oprávnění k nasdílení změn do zadaného registru.

Pokud chcete použít skript pro rychlý start k rychlému sestavení a nasdílení této ukázkové image do služby Azure Container Registry, budete muset:

  • Rozvětvte toto úložiště do svého osobního účtu.
  • Ujistěte se, že jsou azure CLI a desktopová aplikace Dockeru nainstalované na vašem počítači a v rámci proměnných PATH.
  • Ujistěte se, že máte oprávnění k odesílání imagí do vybrané služby Azure Container Registry.

Skript můžete volat pomocí následujícího příkazu v PowerShellu:

.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'

Kromě toho, pokud chcete nasdílení změn do konkrétního úložiště a názvu značky, můžete spustit:

.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'

Pokud chcete použít image v nasazeních prostředí, musíte do souboru manifestu přidat umístění image. Připojte image k definici prostředí a možná budete muset nakonfigurovat oprávnění pro ACR, aby byla vlastní image dostupná pro ADE.

Použití imagí kontejneru s ADE

K používání imagí kontejnerů s ADE můžete použít jeden z následujících přístupů:

  • Vytvořte vlastní image kontejneru pomocí skriptu: Pomocí publikovaného skriptu vytvořte konkrétní image Terraformu.
  • Vytvoření vlastní image kontejneru s využitím pracovního postupu GitHubu: Použijte publikovaný pracovní postup GitHubu z modelu rozšiřitelnosti ADE s úložištěm Terraform.
  • Ruční vytvoření vlastní image kontejneru: Ruční vytvoření přizpůsobené image specifické pro Terraform

Vytvoření vlastní image kontejneru

Vytvoření vlastní image kontejneru pomocí skriptu

Vytvoření vlastní image kontejneru umožňuje přizpůsobit nasazení tak, aby vyhovovala vašim požadavkům. Image můžete vytvořit na základě standardní image ADE a odeslat ji do registru kontejneru pomocí rychlého úvodního skriptu poskytovaného Microsoftem. Skript najdete v prostředích nasazení pomocí úložiště Terraform. Pokud chcete použít rychlý úvodní skript, vytvořte fork úložiště a spusťte skript místně.

Pokud chcete použít skript pro rychlý start k rychlému sestavení a nasdílení této ukázkové image do služby Azure Container Registry, budete muset:

  • Rozvětvte toto úložiště do svého osobního účtu.
  • Ujistěte se, že jsou azure CLI a desktopová aplikace Dockeru nainstalované na vašem počítači a v rámci proměnných PATH.
  • Ujistěte se, že máte oprávnění k odesílání imagí do vybrané služby Azure Container Registry.

Skript sestaví image a nasdílí ji do zadané služby Azure Container Registry (ACR) v úložišti "ade" a značce "latest". Tento skript vyžaduje název registru a adresář pro vaši vlastní image, nainstalovaný Azure CLI a Docker Desktop a v proměnných PATH a vyžaduje, abyste měli oprávnění k nasdílení změn do zadaného registru. Skript můžete volat pomocí následujícího příkazu v PowerShellu:

.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'

Kromě toho, pokud chcete nasdílení změn do konkrétního úložiště a názvu značky, můžete spustit:

.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'

Pokud chcete použít image v nasazeních prostředí, musíte do souboru manifestu přidat umístění image. Připojte image k definici prostředí a možná budete muset nakonfigurovat oprávnění pro ACR, aby byla vlastní image dostupná pro ADE.

Použití standardní image kontejneru, kterou poskytuje Pulumi

Tým Pulumi poskytuje předem připravenou image, která vám umožní začít, kterou můžete vidět ve složce Runner-Image . Tato image je veřejně dostupná ve službě Docker Hub společnosti Pulumi, pulumi/azure-deployment-environmentstakže ji můžete použít přímo z definic prostředí ADE.

Tady je ukázkový soubor environment.yaml , který využívá předem připravenou image:

name: SampleDefinition
version: 1.0.0
summary: First Pulumi-Enabled Environment
description: Deploys a Storage Account with Pulumi
runner: pulumi/azure-deployment-environments:0.1.0
templatePath: Pulumi.yaml

Několik ukázkových definic prostředí najdete ve složce Prostředí.

Vytvoření vlastní image

Vytvoření vlastní image kontejneru umožňuje přizpůsobit nasazení tak, aby vyhovovala vašim požadavkům. Můžete vytvářet vlastní image založené na standardních imagích Pulumi a přizpůsobit je tak, aby splňovaly vaše požadavky. Po dokončení přizpůsobení image musíte image sestavit a odeslat ji do registru kontejneru.

Pokud chcete vytvořit image nakonfigurovanou pro ADE, postupujte takto:

  1. Vytvořte vlastní image založenou na standardní imagi.
  2. Nainstalujte požadované balíčky.
  3. Nakonfigurujte skripty prostředí operation shell.
  4. Vytvořte skripty prostředí operací, které používají rozhraní příkazového řádku Pulumi.

1. Vytvoření vlastní image založené na standardní imagi

Vytvořte soubor DockerFile, který obsahuje příkaz FROM odkazující na standardní image hostované na Registr artefaktů Microsoft.

Tady je příklad příkazu FROM, který odkazuje na standardní základní image:

FROM mcr.microsoft.com/deployment-environments/runners/core:latest

Tento příkaz načítá naposledy publikovanou základní image a je základem pro vaši vlastní image.

2. Instalace požadovaných balíčků

Rozhraní příkazového řádku Pulumi můžete nainstalovat do spustitelného umístění, aby ho bylo možné použít ve vašich skriptech nasazení a odstraňování.

Tady je příklad tohoto procesu, který nainstaluje nejnovější verzi rozhraní příkazového řádku Pulumi:

RUN apk add curl
RUN curl -fsSL https://get.pulumi.com | sh
ENV PATH="${PATH}:/root/.pulumi/bin"

V závislosti na tom, který programovací jazyk chcete použít pro programy Pulumi, možná budete muset nainstalovat jeden nebo více odpovídajících modulů runtime. Modul runtime Pythonu je již k dispozici v základní imagi.

Tady je příklad instalace Node.js a TypeScriptu:

# install node.js, npm, and typescript
RUN apk add nodejs npm
RUN npm install typescript -g

Standardní image ADE jsou založené na imagi Azure CLI a mají předinstalované balíčky ADE CLI a JQ. Další informace o Azure CLI a balíčku JQ.

Pokud chcete do image nainstalovat další balíčky, které potřebujete, použijte příkaz RUN.

Infrastrukturu nasadíte pomocí nástroje Pulumi čtyřmi kroky:

  1. pulumi login – připojte se k úložišti stavu, a to buď v místním systému souborů, nebo v Pulumi Cloudu.
  2. pulumi stack select – vytvořte nebo vyberte zásobník, který se má použít pro konkrétní prostředí.
  3. pulumi config set – předání parametrů nasazení jako hodnot konfigurace Pulumi
  4. pulumi up – spuštěním nasazení vytvořte novou nebo aktualizovat existující infrastrukturu v Azure.

Během vstupního bodu základní image se do kontejneru přetáhnou všechny existující soubory místního stavu a adresář uložený pod proměnnou $ADE_STORAGEprostředí . Pokud chcete získat přístup k existujícímu souboru stavu, spusťte následující příkazy:

mkdir -p $ADE_STORAGE
export PULUMI_CONFIG_PASSPHRASE=
pulumi login file://$ADE_STORAGE

Pokud se chcete místo toho přihlásit ke cloudu Pulumi, nastavte přístupový token Pulumi jako proměnnou prostředí a spusťte následující příkazy:

export PULUMI_ACCESS_TOKEN=YOUR_PULUMI_ACCESS_TOKEN
pulumi login

Všechny parametry nastavené pro aktuální prostředí jsou uloženy v proměnné $ADE_OPERATION_PARAMETERS. Kromě toho se předá ADE_ENVIRONMENT_LOCATION ADE_RESOURCE_GROUP_NAME vybraná oblast Azure a název skupiny prostředků a v uvedeném pořadí. Pokud chcete nastavit konfiguraci zásobníku Pulumi, spusťte následující příkazy:

# Create or select the stack for the current environment
pulumi stack select $ADE_ENVIRONMENT_NAME --create

# Store configuration values in durable storage
export PULUMI_CONFIG_FILE=$ADE_STORAGE/Pulumi.$ADE_ENVIRONMENT_NAME.yaml

# Set the Pulumi stack config
pulumi config set azure-native:location $ADE_ENVIRONMENT_LOCATION --config-file $PULUMI_CONFIG_FILE
pulumi config set resource-group-name $ADE_RESOURCE_GROUP_NAME --config-file $PULUMI_CONFIG_FILE
echo "$ADE_OPERATION_PARAMETERS" | jq -r 'to_entries|.[]|[.key, .value] | @tsv' |
  while IFS=$'\t' read -r key value; do
    pulumi config set $key $value --config-file $PULUMI_CONFIG_FILE
  done

Kromě toho, pokud chcete využít oprávnění ADE k nasazení infrastruktury uvnitř vašeho předplatného, musí váš skript při zřizování infrastruktury pomocí zprostředkovatele Pulumi Azure Native nebo Azure Classic používat identitu spravované služby ADE (MSI). Pokud vaše nasazení potřebuje speciální oprávnění k dokončení nasazení, jako jsou například konkrétní role, přiřaďte tato oprávnění identitě typu prostředí projektu, která se používá pro vaše nasazení prostředí. ADE nastaví relevantní proměnné prostředí, jako jsou klient, tenant a ID předplatného v rámci vstupního bodu základní image, takže spusťte následující příkazy, které zajistí, aby poskytovatel používal MSI ADE:

export ARM_USE_MSI=true
export ARM_CLIENT_ID=$ADE_CLIENT_ID
export ARM_TENANT_ID=$ADE_TENANT_ID
export ARM_SUBSCRIPTION_ID=$ADE_SUBSCRIPTION_ID

Teď můžete spuštěním pulumi up příkazu spustit nasazení:

pulumi up --refresh --yes --config-file $PULUMI_CONFIG_FILE

Během skriptu pro odstranění můžete místo toho spustit destroy příkaz, jak je znázorněno v následujícím příkladu:

pulumi destroy --refresh --yes --config-file $PULUMI_CONFIG_FILE

Nakonec, pokud chcete výstupy vašeho nasazení nahrát a zpřístupnit při přístupu k prostředí prostřednictvím Azure CLI, transformujte výstupní objekt z Pulumi do formátu určeného pro ADE prostřednictvím balíčku JQ. Nastavte hodnotu na proměnnou prostředí $ADE_OUTPUTS, jak je znázorněno v následujícím příkladu:

stackout=$(pulumi stack output --json | jq -r 'to_entries|.[]|{(.key): {type: "string", value: (.value)}}')
echo "{\"outputs\": ${stackout:-{\}}}" > $ADE_OUTPUTS

Vytvoření vlastní image

Image můžete sestavit pomocí rozhraní příkazového řádku Dockeru. Ujistěte se, že je na vašem počítači nainstalovaný Modul Dockeru. Pak přejděte do adresáře souboru Dockerfile a spusťte následující příkaz:

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

Pokud například chcete uložit image pod úložištěm v rámci vašeho registru s názvem customImage, a nahrát ji pomocí verze 1.0.0značky , spustíte:

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

Zpřístupnění vlastní image pro ADE

Abyste mohli používat vlastní image, musíte je uložit do registru kontejneru. Můžete použít veřejný registr kontejneru nebo privátní registr kontejneru. Služba Azure Container Registry (ACR) se důrazně doporučuje, protože její úzká integrace s ADE umožňuje publikování image bez povolení veřejného anonymního přístupu k vyžádání změn. Musíte vytvořit vlastní image kontejneru a odeslat ji do registru kontejneru, aby byla dostupná pro použití v ADE.

Image je také možné uložit do jiného registru kontejneru, jako je Docker Hub, ale v takovém případě musí být veřejně přístupná.

Upozornění

Uložení image kontejneru do registru s anonymním (neověřeným) přístupem k vyžádání obsahu zpřístupňuje veřejně. Nedělejte to, pokud váš obrázek obsahuje nějaké citlivé informace. Místo toho ho uložte ve službě Azure Container Registry (ACR) s zakázaným anonymním přístupem k vyžádání změn.

Pokud chcete použít vlastní image uloženou v ACR, musíte zajistit, aby ADE má příslušná oprávnění pro přístup k imagi. Když vytvoříte instanci ACR, je ve výchozím nastavení zabezpečená a umožňuje přístup pouze ověřeným uživatelům.

Pulumi můžete použít k vytvoření služby Azure Container Registry a publikování image do ní. Podívejte se na příklad zřizování nebo vlastní image pro samostatný projekt Pulumi, který vytvoří všechny požadované prostředky ve vašem účtu Azure.

Další informace o jednotlivých přístupech získáte tak, že vyberete příslušnou kartu.

Použití privátního registru se zabezpečeným přístupem

Ve výchozím nastavení je přístup k vyžádání nebo nabízení obsahu ze služby Azure Container Registry dostupný jenom ověřeným uživatelům. Přístup k ACR můžete dále zabezpečit omezením přístupu z určitých sítí a přiřazením konkrétních rolí.

Pokud chcete vytvořit instanci služby ACR, kterou můžete provést prostřednictvím Azure CLI, webu Azure Portal, příkazů PowerShellu a dalších, postupujte podle jednoho z rychlých startů.

Omezení síťového přístupu

Pokud chcete zabezpečit síťový přístup k ACR, můžete omezit přístup k vlastním sítím nebo zakázat přístup k veřejné síti úplně. Pokud omezíte přístup k síti, musíte povolit výjimku brány firewall Povolit důvěryhodné služby Microsoft pro přístup k tomuto registru kontejneru.

Zakázání přístupu z veřejných sítí:

  1. Vytvořte instanci ACR nebo použijte existující instanci .

  2. Na webu Azure Portal přejděte na službu ACR, kterou chcete nakonfigurovat.

  3. V nabídce vlevo v části Nastavení vyberte Sítě.

  4. Na stránce Sítě na kartě Veřejný přístup v části Přístup k veřejné síti vyberte Zakázáno.

    Snímek obrazovky webu Azure Portal zobrazující nastavení sítě ACR se zvýrazněným veřejným přístupem a zakázaným

  5. V části Výjimka brány firewall zaškrtněte políčko Povolit důvěryhodným služby Microsoft přístup k tomuto registru kontejneru a pak vyberte Uložit.

    Snímek obrazovky nastavení sítě ACR se zvýrazněnou možností Povolit důvěryhodným služby Microsoft přístup k tomuto registru kontejneru a zvýrazněným tlačítkem Uložit

Přiřazení role AcrPull

Vytváření prostředí pomocí imagí kontejnerů používá infrastrukturu ADE, včetně projektů a typů prostředí. Každý projekt má jeden nebo více typů prostředí projektu, které potřebují přístup pro čtení k imagi kontejneru, která definuje prostředí, které se má nasadit. Pokud chcete bezpečně přistupovat k imagím v ACR, přiřaďte roli AcrPull jednotlivým typům prostředí projektu.

Přiřazení role AcrPull k typu prostředí projektu:

  1. Na webu Azure Portal přejděte na službu ACR, kterou chcete nakonfigurovat.

  2. V nabídce vlevo vyberte Řízení přístupu (IAM).

  3. Vyberte Přidat>Přidat přiřazení role.

  4. Přiřaďte následující roli. Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.

    Nastavení Hodnota
    Role Vyberte AcrPull.
    Přiřazení přístupu k Vyberte Uživatele, skupinu nebo instanční objekt.
    Členové Zadejte název typu prostředí projektu, který potřebuje přístup k imagi v kontejneru.

    Typ prostředí projektu se zobrazí jako v následujícím příkladu:

    Snímek obrazovky s podoknem Vybrat členy zobrazující seznam typů prostředí projektu se zvýrazněnou částí názvu

V této konfiguraci ADE používá spravovanou identitu pro PET bez ohledu na to, jestli je systém přiřazený nebo přiřazený uživatelem.

Tip

Toto přiřazení role musí být provedeno pro každý typ prostředí projektu. Je možné ho automatizovat prostřednictvím Azure CLI.

Až budete připraveni odeslat image do registru, spusťte následující příkaz:

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

Připojení image k definici prostředí

Při vytváření definic prostředí pro použití vlastní image v jejich nasazení upravte runner vlastnost v souboru manifestu (environment.yaml nebo manifest.yaml).

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

Další informace o vytváření definic prostředí, které používají image kontejneru ADE k nasazení prostředků Azure, najdete v tématu Přidání a konfigurace definice prostředí.