Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Šablona rozhraní příkazového řádku proazd vývojáře Azure je standardní úložiště s prostředky konfigurace a infrastruktury, které umožňují azd zřizovat a nasazovat projekt. Bez ohledu na to, jestli vytvoříte novou šablonu nebo začnete od existující šablony, zůstanete zodpovědní za kontrolu a údržbu jeho souborů při vývoji projektu.
Tento článek vysvětluje, jak zkontrolovat a upravit primární soubory šablony. Koncepční popis celé struktury najdete v tématu Azure šablony rozhraní příkazového řádku pro vývojáře.
Tento článek používá šablonu hello-azd jako standardizovaný příklad, abyste viděli, co každý soubor dělá v reálném projektu. Stejné koncepty platí pro šablony, které vygenerujete pro vlastní aplikace. Pokud chcete postup sledovat, inicializujte šablonu v prázdném adresáři:
azd init --template hello-azd
Šablona hello-azd nasadí kontejnerizovanou aplikaci V# pro Azure Container Apps a zřídí podpůrné Azure prostředky prostřednictvím Bicep. Používá například následující strukturu složek, kde každý primární asset odpovídá části tohoto článku:
.
├── azure.yaml # Project configuration (Explore azure.yaml)
├── infra/ # Infrastructure as code (Infrastructure files)
│ ├── main.bicep # Deployment entry point
│ ├── main.parameters.json # Parameter values that azd supplies
│ ├── abbreviations.json # Resource name abbreviations
│ ├── app/ # Application-specific modules
│ └── core/ # Reusable resource modules
├── src/ # Application source code (Source code)
│ └── Dockerfile # Container image build for the app
├── .azure/ # Environment configuration
└── README.md
Přesná struktura se liší podle projektu a azure.yaml identifikuje cesty, které azd používají. Následující části popisují, jak se upravují jednotlivé položky.
Před provedením podstatných změn potvrďte nebo jinak uložte známou dobrou verzi šablony. Zkontrolujte všechny změny u vložených přihlašovacích údajů, nepotřebných prostředků, nadměrných oprávnění, ohrožení sítě, úrovní služeb a hodnot specifických pro prostředí.
Prozkoumat azure.yaml
Soubor azure.yaml definuje projekt a určuje, jak má azd zřídit infrastrukturu, zabalit kód aplikace a nasadit jednotlivé služby. Může definovat služby, nastavení infrastruktury, háky, pracovní postupy a další chování projektu.
Šablona hello-azd definuje jednu službu s názvem aca:
name: azd-starter
metadata:
template: hello-azd-dotnet
services:
aca:
project: ./src
language: csharp
host: containerapp
docker:
path: ./Dockerfile
remoteBuild: true
Každá vlastnost říká azd , jak službu zpracovat:
-
acaje název služby.azdpoužívá ji ke shodě služby s prostředkem Azure, který ho hostuje. Další informace najdete v tématu Konfigurace zjišťování služeb. -
project: ./srcodkazuje na zdrojový kód aplikace, kterýazdzabalí a nasadí. -
language: csharpidentifikuje jazyk aplikace. -
host: containerappřekneazd, aby nasadil službu do Azure Container Apps. -
dockersestaví image kontejneru zDockerfilev adresářisrc. -
remoteBuildinformujeazdo použití Azure Container Registry (ACR) k sestavení image kontejneru.
Přidání definice služby
Přidejte pod services položku pro každou další aplikaci, kterou má azd nasadit. Definice služby určuje zdrojový adresář, jazyk a Azure cíl hostování. Pokud chcete například popsat nový projekt rozhraní API:
services:
api:
project: ./src/api
language: csharp
host: appservice
Když přesunete kód aplikace, aktualizujte odpovídající project cestu. Když změníte architekturu hostování, aktualizujte definici služby i infrastrukturu, která zřídí hostitele.
Všechny dostupné vlastnosti a podporované hodnoty najdete ve schématuazure.yaml.
Zdrojový kód
Zdroj aplikace je volitelný. Šablony s nasaditelnými aplikacemi často uspořádají zdrojový kód v src rámci adresáře, ale nemusíte používat konkrétní název nebo rozložení složky. Vlastnost project pro každou službu ve azure.yaml sděluje azd , kde se nachází jeho zdrojový kód.
V hello-azd služba project: ./src nastaví aca, takže azd zabalí aplikaci C# v adresáři src a nasadí ji do Azure Container Apps. Vzhledem k tomu, že služba také nastavuje konfiguraci docker, sestaví azd před nasazením image kontejneru z Dockerfile v adresáři src.
azdpodporuje Node.js, Python, .NET, Java a Go na podporovaných hostitelích Azure. Šablona může také nasadit kontejnery. Aktuální kombinace jazyků, architektur a hostitelů najdete v tématu Podporované jazyky a prostředí.
Upravte zdrojový kód stejně jako v libovolném úložišti aplikace. Pokud přidáte službu nebo přesunete její zdrojový adresář, aktualizujte azure.yaml její definici služby. Pokud aplikace potřebuje nový prostředek Azure, aktualizujte infrastrukturu a předejte aplikaci požadovaný název koncového bodu nebo prostředku prostřednictvím konfigurace.
Změna zdrojového adresáře služby
Pokud například přesunete hello-azd aplikaci z src do src/app, aktualizujte project hodnotu aca služby:
services:
aca:
project: ./src/app
language: csharp
host: containerapp
docker:
path: ./Dockerfile
remoteBuild: true
Soubory infrastruktury
Adresář infra obsahuje soubory Bicep nebo Terraform, které definují prostředky Azure pro šablonu.
infra Adresář hello-azdpoužívá Bicep a obsahuje následující klíčové prostředky:
-
main.bicepje standardní výchozí bod pro nasazení, kterýazdspouští za účelem zřízení prostředků. -
main.parameters.jsonposkytuje hodnoty parametrů promain.bicep. -
appobsahuje moduly specifické pro aplikaci. -
coreobsahuje opakovaně použitelné moduly pro běžné prostředky, jako je úložiště a hostování.
Jak se main.bicep spouští během azd up
Když spustíte azd up, fáze provisioningu nasadí infra/main.bicep. V main.bicephello-azd cílí na rozsah předplatného, vytvoří skupinu prostředků a potom zavolá moduly, které nasadí prostředky, které aplikace potřebuje:
targetScope = 'subscription'
// Create a storage account
module storage './core/storage/storage-account.bicep' = {
name: 'storage'
scope: rg
params: {
name: !empty(storageAccountName) ? storageAccountName : '${abbrs.storageStorageAccounts}${resourceToken}'
location: location
tags: tags
allowSharedKeyAccess: false
containers: [ { name: 'attachments' } ]
tables: [ { name: 'tickets' } ]
}
}
// Container app for the 'aca' service
module web 'app/app.bicep' = {
name: serviceName
scope: rg
params: {
// ...
serviceName: serviceName
}
}
Soubor main.bicep zřídí spravovanou identitu přiřazenou uživatelem, účet Azure Storage, Azure Container Apps prostředí a registr a aplikaci kontejneru, která je hostitelem aca služby. Také přiřazuje role, které umožňují spravovanému úložišti přístupu k identitám. Moduly uchovávají každý zdroj v samostatném souboru, aby main.bicep zůstal přehledný.
Přidat prostředek do main.bicep
Přidejte deklarace prostředků přímo do infra/main.bicep pro jednoduché nebo jednorázové prostředky. Při opětovném použití prostředků můžete prostředky rozdělit do samostatných Bicep modulů, když prostředek potřebuje několik souvisejících prostředků nebo když chcete zachovat main.bicep čitelnost. Podobně jako hello-azdmnoho šablon seskupuje opakovaně použitelné moduly v části infra/core.
U běžných Azure prostředků preferujete Azure ověřený modul před vytvořením modulu od začátku. Ověřené moduly jsou Microsoft udržované, dodržují osvědčené postupy zabezpečení a spolehlivosti a snižují množství kódu infrastruktury, který v šabloně udržujete.
Úplný postup, jak přidat nový prostředek do hello-azd, najdete v článku Rozšířit šablonu.
Soubor main.parameters.json mapuje hodnoty, které spravuje azd, na parametry Bicep. Šablona hello-azd používá následující parametry:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"environmentName": { "value": "${AZURE_ENV_NAME}" },
"location": { "value": "${AZURE_LOCATION}" },
"principalId": { "value": "${AZURE_PRINCIPAL_ID}" },
"principalType": { "value": "${AZURE_PRINCIPAL_TYPE=User}" }
}
}
Každá položka váže parametr Bicep k hodnotě, kterou azd udržuje v prostředí, například k názvu prostředí, umístění a identitě, pod kterou se nasazení spouští. Použijte main.parameters.json pro hodnoty, které se liší podle prostředí nebo nasazení, například název prostředí, umístění nebo názvy prostředků, které generuje azd. Udržujte stabilní hodnoty, které se mezi prostředími nemění jako výchozí hodnoty parametrů nebo literály v main.bicep. Tento přístup udržuje stejné Bicep opakovaně použitelné napříč prostředími, aniž byste ho museli upravovat pro každé nasazení.
Když přidáváte nebo upravujete infrastrukturu:
- Udržujte konfiguraci prostředků nezávislou na prostředí. Místo vkládání ID předplatného, názvů prostředků, lokalit nebo přihlašovacích údajů použijte parametry a hodnoty prostředí
azd. - Používejte zabezpečené výstupy pro citlivé hodnoty a nezpřístupňujte tajné údaje ve výstupech nasazení jako prostý text.
- Použijte přiřazení rolí s nejnižšími oprávněními pro spravované identity.
- Udržujte definice služeb v
azure.yamlv souladu se zdroji, na které cílí. - Projděte si účinky úrovní služby, omezení škálování, redundance a nastavení uchovávání nákladů.
Pokyny k jazyku Bicep a modulům najdete v dokumentaci k Bicepu. Šablony založené na Terraformu najdete v tématu Použití Terraformu s rozhraním příkazového řádku pro vývojáře Azure.
Konfigurace zjišťování služeb
Ve výchozím nastavení azd vyhledá prostředek Azure pro službu tak, že najde prostředek, jehož značka azd-service-name odpovídá názvu služby v azure.yaml. Pokud službu přejmenujete, aktualizujte odpovídající tag prostředku nebo výslovně nastavte název prostředku v souboru azure.yaml.
Například v hello-azd název služby aca odpovídá značce azd-service-name u prostředku aplikace kontejneru. Definice azure.yaml služby nastaví název:
services:
aca:
project: ./src
language: csharp
host: containerapp
Modul aplikace kontejneru v infra/app/app.bicep použije odpovídající značku:
tags: union(tags, { 'azd-service-name': serviceName })
Nakonfigurovat nestandardní cestu k infrastruktuře
Sekce infra v azure.yaml identifikuje poskytovatele infrastruktury a vstupní bod. Tyto hodnoty jsou volitelné, pokud použijete výchozí rozložení Bicep, ale deklarování může usnadnit pochopení nestandardního rozložení:
infra:
provider: bicep
path: infra
module: main
Konfigurace prostředí
Adresář .azure obsahuje místní stav prostředí a hodnoty, které azd vytvoří, například vybrané předplatné, umístění, názvy prostředků a výstupy nasazení. Považujte tento adresář za lokální stav, nikoli za znovu použitelnou součást šablony. Nepokládejte soubory prostředí, které obsahují tajné kódy nebo hodnoty specifické pro prostředí.
Přidání výstupů infrastruktury
Když pomocí azd provision nasadíte Bicep, zachytí výstupy ze vstupního bodu infrastruktury jako hodnoty prostředí azd. Přidejte výstupy pro koncové body zdrojů, názvy zdrojů a ID klienta spravované identity, které aplikační služby nebo hooky potřebují. Výstupem je například hello-azd registr kontejneru a podrobnosti spravované identity z main.bicep:
output AZURE_CONTAINER_REGISTRY_ENDPOINT string = containerAppsEnv.outputs.registryLoginServer
output AZURE_CONTAINER_REGISTRY_NAME string = containerAppsEnv.outputs.registryName
output AZURE_USER_ASSIGNED_IDENTITY_NAME string = identity.outputs.name
Nevykazujte tajné kódy, pokud spravovaná identita nebo referenční informace Key Vault místo toho poskytují přístup. Po zprovoznění zkontrolujte zachycené hodnoty spuštěním příkazu azd env get-values.
Další informace najdete v tématu Správa proměnných prostředí.
Otestování změn
Spusťte azd up zřízení infrastruktury a nasaďte všechny aplikační služby:
azd up
Pokud chcete šablonu sdílet, inicializujte ji v čistém adresáři a nasaďte ji s novým prostředím. Tento test pomáhá identifikovat místní soubory, hodnoty uložené v mezipaměti nebo předpoklady specifické pro prostředí, které nejsou součástí šablony.
Související obsah
- Přehled vývoje šablon
- Začínáme s novou šablonou
- Začínáme z existující šablony
- Rozšíření šablony
-
Prozkoumání
azd uppracovního postupu
Požádat o pomoc
Informace o tom, jak nahlásit chybu, požádat o pomoc nebo navrhnout novou funkci pro rozhraní příkazového řádku vývojářů Azure, najdete na stránce řešení problémů a podpora.