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.
V tomto průvodci rychlým startem vytvoříte cluster Azure Kubernetes s poolem uzlů Windows s pomocí Terraformu. Azure Kubernetes Service (AKS) je spravovaná služba orchestrace kontejnerů, kterou poskytuje Azure. Zjednodušuje nasazení, škálování a provoz kontejnerizovaných aplikací. Služba používá Kubernetes, opensourcový systém pro automatizaci nasazení, škálování a správy kontejnerizovaných aplikací. Fond uzlů Windows umožňuje spouštět kontejnery Windows v clusteru Kubernetes.
Terraform umožňuje definovat, prohlížet a nasazovat cloudovou infrastrukturu. Pomocí Terraformu vytvoříte konfigurační soubory pomocí syntaxe HCL. Syntaxe seznamu HCL umožňuje zadat poskytovatele cloudu , například Azure, a prvky, které tvoří vaši cloudovou infrastrukturu. Po vytvoření konfiguračních souborů vytvoříte plán provádění, který vám umožní zobrazit náhled změn infrastruktury před jejich nasazením. Jakmile ověříte změny, použijete plán provádění k nasazení infrastruktury.
- Vygenerujte náhodný název skupiny prostředků.
- Vytvořte skupinu prostředků Azure.
- Vytvořte virtuální síť Azure.
- Vytvořte cluster Azure Kubernetes.
- Vytvořte fond uzlů clusteru Azure Kubernetes.
Požadavky
Vytvořte účet Azure s aktivním předplatným. Účet si můžete vytvořit zdarma.
Implementace kódu Terraformu
Poznámka:
Vzorový kód pro tento článek se nachází v úložišti GitHubu Azure Terraformu. Můžete zobrazit soubor protokolu obsahující výsledky testu z aktuálních a předchozích verzí Terraformu.
Další články a ukázkový kód ukazující použití Terraformu ke správě prostředků Azure
Vytvořte adresář, ve kterém chcete otestovat a spustit ukázkový kód Terraformu a nastavit ho jako aktuální adresář.
Vytvořte soubor s názvem
providers.tfa vložte následující kód.terraform { required_version = ">= 1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features { } }Vytvořte soubor s názvem
main.tfa vložte následující kód.# Generate random resource group name resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } resource "random_pet" "azurerm_kubernetes_cluster_name" { prefix = "cluster" } resource "random_pet" "azurerm_kubernetes_cluster_dns_prefix" { prefix = "dns" } resource "random_string" "azurerm_kubernetes_cluster_node_pool" { length = 6 special = false numeric = false lower = true upper = false } resource "azurerm_virtual_network" "vnet" { name = "myvnet" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name address_space = ["10.1.0.0/16"] subnet { name = "subnet1" address_prefix = "10.1.1.0/24" } } resource "azurerm_kubernetes_cluster" "aks" { name = random_pet.azurerm_kubernetes_cluster_name.id location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name dns_prefix = random_pet.azurerm_kubernetes_cluster_dns_prefix.id identity { type = "SystemAssigned" } default_node_pool { name = "agentpool" vm_size = "Standard_D2_v2" node_count = var.node_count_linux vnet_subnet_id = element(tolist(azurerm_virtual_network.vnet.subnet), 0).id } windows_profile { admin_username = var.admin_username admin_password = var.admin_password } network_profile { network_plugin = "azure" load_balancer_sku = "standard" } } resource "azurerm_kubernetes_cluster_node_pool" "win" { name = random_string.azurerm_kubernetes_cluster_node_pool.result kubernetes_cluster_id = azurerm_kubernetes_cluster.aks.id vm_size = "Standard_D4s_v3" node_count = var.node_count_windows os_type = "Windows" }Vytvořte soubor s názvem
variables.tfa vložte následující kód.variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "node_count_linux" { type = number description = "The initial quantity of Linux nodes for the node pool." default = 1 } variable "node_count_windows" { type = number description = "The initial quantity of Windows nodes for the node pool." default = 1 } variable "admin_username" { type = string description = "The admin username for the Windows node pool." default = "azureuser" } variable "admin_password" { type = string description = "The admin password for the Windows node pool." default = "Passw0rd1234Us!" }Vytvořte soubor s názvem
outputs.tfa vložte následující kód.output "resource_group_name" { value = azurerm_resource_group.rg.name } output "kubernetes_cluster_name" { value = azurerm_kubernetes_cluster.aks.name } output "kubernetes_cluster_dns_prefix" { value = azurerm_kubernetes_cluster.aks.dns_prefix } output "kubernetes_cluster_node_pool_name" { value = azurerm_kubernetes_cluster_node_pool.win.name } output "kubernetes_cluster_kube_config_raw" { value = azurerm_kubernetes_cluster.aks.kube_config_raw sensitive = true }
Inicializujte Terraform
Spusťte terraform init a inicializujte nasazení Terraformu. Tento příkaz stáhne poskytovatele Azure potřebného ke správě prostředků Azure.
terraform init -upgrade
klíčové body:
- Parametr
-upgradeaktualizuje potřebné pluginy poskytovatele na nejnovější verzi, která odpovídá verzním omezením konfigurace.
Vytvoření plánu provádění Terraformu
Spusťte terraform plan pro vytvoření plánu provedení.
terraform plan -out main.tfplan
klíčové body:
- Příkaz
terraform planvytvoří plán provádění, ale nespustí ho. Místo toho určuje, jaké akce jsou nezbytné k vytvoření konfigurace zadané v konfiguračních souborech. Tento model umožňuje ověřit, jestli plán provádění odpovídá vašim očekáváním, než provede jakékoli změny skutečných prostředků. - Volitelný
-outparametr umožňuje zadat výstupní soubor pro plán. Použití parametru-outzajišťuje, že vámi zkontrolovaný plán je přesně tím, co bude aplikován.
Implementujte plán Terraformu
Spusťte terraform apply, abyste aplikovali plán provádění na vaši cloudovou infrastrukturu.
terraform apply main.tfplan
klíčové body:
-
terraform applyUkázkový příkaz předpokládá, že jste dříve spustiliterraform plan -out main.tfplan. - Pokud jste pro
-outparametr zadali jiný název souboru, použijte stejný název souboru při voláníterraform apply. - Pokud jste parametr nepoužíli
-out, zavolejteterraform applybez parametrů.
Ověření výsledků
Spusťte kubectl get pro zobrazení uzlů clusteru.
kubectl get node -o wide
Vyčistěte zdroje
Pokud už prostředky vytvořené přes Terraform nepotřebujete, proveďte následující kroky:
Spusťte terraform plan a zadejte parametr
destroy.terraform plan -destroy -out main.destroy.tfplanklíčové body:
- Příkaz
terraform planvytvoří plán provádění, ale nespustí ho. Místo toho určuje, jaké akce jsou nezbytné k vytvoření konfigurace zadané v konfiguračních souborech. Tento model umožňuje ověřit, jestli plán provádění odpovídá vašim očekáváním, než provede jakékoli změny skutečných prostředků. - Volitelný
-outparametr umožňuje zadat výstupní soubor pro plán. Použití parametru-outzajišťuje, že vámi zkontrolovaný plán je přesně tím, co bude aplikován.
- Příkaz
Spusťte terraform apply pro aplikaci prováděcího plánu.
terraform apply main.destroy.tfplan
Řešení potíží s Terraformem v Azure
Řešení běžných problémů při používání Terraformu v Azure