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.
Začněte pracovat s Azure Linux Container Host pomocí Terraformu k nasazení clusteru Azure Linux Container Host. Po instalaci požadavků implementujete kód Terraformu, inicializujete Terraform a vytvoříte a použijete plán provádění Terraformu.
Terraform umožňuje definovat, zobrazit náhled a nasadit cloudovou infrastrukturu. Pomocí Terraformu vytvoříte konfigurační soubory pomocí syntaxe HCL. Syntaxe seznamu HCL umožňuje zadat poskytovatele cloudu 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.
Poznámka:
Ukázkový kód v tomto článku se nachází v úložišti Microsoft Terraform Na GitHubu.
Důležité
Od 30. listopadu 2025 už AKS nebude podporovat ani poskytovat aktualizace zabezpečení pro Azure Linux 2.0. Od 31. března 2026 se image uzlů odeberou a nebudete moct škálovat fondy uzlů. Migrujte na podporovanou verzi Azure Linuxu buď aktualizací fondů uzlů na podporovanou verzi Kubernetes, nebo migrací na osSku AzureLinux3. Další informace najdete v tématu [Vyřazení z provozu] Uzel poolů Azure Linux 2.0 v AKS.
Požadavky
-
Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
Pokud jste terraform ještě nenakonfigurovali, můžete to udělat pomocí jedné z následujících možností:
Pokud nemáte instanční objekt Azure, vytvořte instanční objekt. Poznamenejte si
appId,display_name,passwordatenant.Potřebujete příkazový nástroj
kubectlKubernetes. Pokud ho nemáte, stáhněte si kubectl.
Vytvoření páru klíčů SSH
Pro přístup k uzlům AKS se připojíte pomocí páru klíčů SSH (veřejný a privátní), který vygenerujete pomocí ssh-keygen příkazu. Ve výchozím nastavení jsou tyto soubory vytvořeny v adresáři ~/.ssh . Spuštěním příkazu ssh-keygen přepíšete existující pár klíčů SSH se stejným názvem v daném umístění.
Přejděte na https://shell.azure.com, abyste otevřeli Cloud Shell ve svém prohlížeči.
Spusťte příkaz
ssh-keygen. Následující příklad vytvoří pár klíčů SSH pomocí šifrování RSA a bitové délky 4096:ssh-keygen -t rsa -b 4096
Další informace o vytváření klíčů SSH najdete v tématu Vytvoření a správa klíčů SSH pro ověřování v Azure.
Implementace kódu Terraformu
Vytvořte adresář, ve kterém otestujete ukázkový kód Terraformu a nastavíte 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_id" "log_analytics_workspace_name_suffix" { byte_length = 8 } resource "azurerm_log_analytics_workspace" "test" { location = var.log_analytics_workspace_location # The WorkSpace name has to be unique across the whole of azure; # not just the current subscription/tenant. name = "${var.log_analytics_workspace_name}-${random_id.log_analytics_workspace_name_suffix.dec}" resource_group_name = azurerm_resource_group.rg.name sku = var.log_analytics_workspace_sku } resource "azurerm_log_analytics_solution" "test" { location = azurerm_log_analytics_workspace.test.location resource_group_name = azurerm_resource_group.rg.name solution_name = "ContainerInsights" workspace_name = azurerm_log_analytics_workspace.test.name workspace_resource_id = azurerm_log_analytics_workspace.test.id plan { product = "OMSGallery/ContainerInsights" publisher = "Microsoft" } } resource "azurerm_kubernetes_cluster" "k8s" { location = azurerm_resource_group.rg.location name = var.cluster_name resource_group_name = azurerm_resource_group.rg.name dns_prefix = var.dns_prefix tags = { Environment = "Development" } default_node_pool { name = "azurelinuxpool" vm_size = "Standard_D2_v2" node_count = var.agent_count os_sku = "AzureLinux" } linux_profile { admin_username = "azurelinux" ssh_key { key_data = file(var.ssh_public_key) } } network_profile { network_plugin = "kubenet" load_balancer_sku = "standard" } service_principal { client_id = var.aks_service_principal_app_id client_secret = var.aks_service_principal_client_secret } }Vytvořte soubor s názvem
variables.tfa vložte následující kód:variable "agent_count" { default = 3 } # The following two variable declarations are placeholder references. # Set the values for these variable in terraform.tfvars variable "aks_service_principal_app_id" { default = "" } variable "aks_service_principal_client_secret" { default = "" } variable "cluster_name" { default = "k8stest" } variable "dns_prefix" { default = "k8stest" } # Refer to https://azure.microsoft.com/global-infrastructure/services/?products=monitor for available Log Analytics regions. variable "log_analytics_workspace_location" { default = "eastus" } variable "log_analytics_workspace_name" { default = "testLogAnalyticsWorkspaceName" } # Refer to https://azure.microsoft.com/pricing/details/monitor/ for Log Analytics pricing variable "log_analytics_workspace_sku" { default = "PerGB2018" } variable "resource_group_location" { default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { 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 "ssh_public_key" { default = "~/.ssh/id_rsa.pub" }Vytvořte soubor s názvem
outputs.tfa vložte následující kód:output "client_certificate" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].client_certificate sensitive = true } output "client_key" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].client_key sensitive = true } output "cluster_ca_certificate" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].cluster_ca_certificate sensitive = true } output "cluster_password" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].password sensitive = true } output "cluster_username" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].username sensitive = true } output "host" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].host sensitive = true } output "kube_config" { value = azurerm_kubernetes_cluster.k8s.kube_config_raw sensitive = true } output "resource_group_name" { value = azurerm_resource_group.rg.name }Vytvořte soubor s názvem
terraform.tfvarsa vložte následující kód:aks_service_principal_app_id = "<service_principal_app_id>" aks_service_principal_client_secret = "<service_principal_password>"
Inicializace Terraformu a vytvoření plánu provádění
Inicializace Terraformu a stažení modulů Azure potřebných ke správě prostředků Azure pomocí
terraform initpříkazuterraform initPomocí příkazu vytvořte plán provádění Terraformu
terraform plan.terraform plan -out main.tfplanPří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ím parametru-outzajistíte, že přesně tento plán, který jste zkontrolovali, bude aplikován.Další informace o zachování plánů provádění a zabezpečení najdete v upozorněních zabezpečení.
Pomocí příkazu
terraform applypoužijte plán provádění Terraformu.terraform apply main.tfplanPříkaz
terraform apply, který je uveden výše, předpokládá, že jste již 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ů
Pomocí následujícího
echopříkazu získejte název skupiny prostředků.echo "$(terraform output resource_group_name)"Přejděte na web Azure Portal.
V části Služby Azure vyberte skupiny prostředků a vyhledejte novou skupinu prostředků, abyste viděli následující prostředky vytvořené v této ukázce:
- Řešení: Ve výchozím nastavení demo pojmenuje toto řešení ContainerInsights. Portál zobrazuje název pracovního prostoru řešení v závorkách.
- Služba Kubernetes: Ve výchozím nastavení tato ukázka pojmenuje tuto službu k8stest. (Spravovaný cluster Kubernetes se také označuje jako AKS/Azure Kubernetes Service.)
- Pracovní prostor služby Log Analytics: Ve výchozím nastavení tento demo pojmenuje pracovní prostor s předponou TestLogAnalyticsWorkspaceName- a náhodným číslem.
Získejte konfiguraci Kubernetes ze stavu Terraformu a uložte ji do souboru, který může kubectl přečíst pomocí následujícího
echopříkazu.echo "$(terraform output kube_config)" > ./azurek8sPomocí následujícího
catpříkazu ověřte, že předchozí příkaz nepřidal znak ASCII EOT.cat ./azurek8sPokud se zobrazí
<< EOTna začátku aEOTna konci, odeberte tyto znaky ze souboru. V opačném případě se může zobrazit následující chybová zpráva:error: error loading config file "./azurek8s": yaml: line 2: mapping values are not allowed in this context.Nastavte proměnnou prostředí tak, aby kubectl zachytá správnou konfiguraci pomocí následujícího
exportpříkazu.export KUBECONFIG=./azurek8sPomocí příkazu ověřte stav clusteru
kubectl get nodes.kubectl get nodesPo vytvoření clusteru hostitelů kontejnerů Azure bylo povoleno monitorování pro zachycování metrik stavu jak pro uzly clusteru, tak pro pody. Tyto metriky stavu jsou k dispozici na webu Azure Portal. Další informace o monitorování stavu clusteru najdete v tématu Monitorování stavu služby Azure Kubernetes Service.
Při použití plánu provádění Terraformu bylo výstupem několik hodnot klíčů. Například adresa hostitele, uživatelské jméno clusteru Azure Linux Container Host a heslo clusteru Azure Linux Container Host jsou výstupem.
Pokud chcete zobrazit všechny výstupní hodnoty, spusťte
terraform outputpříkaz . Pokud chcete zobrazit konkrétní výstupní hodnotu, spusťteecho "$(terraform output <output_value_name>)"příkaz .
Vyčištění zdrojů
Odstranění prostředků AKS
Pokud už prostředky vytvořené pomocí Terraformu nepotřebujete, můžete je odebrat pomocí následujícího postupu.
Spusťte příkaz
terraform plana zadejte příznakdestroy.terraform plan -destroy -out main.destroy.tfplanOdeberte plán provádění pomocí příkazu
terraform apply.terraform apply main.destroy.tfplan
Odstranění servisního principála
Upozornění
Odstraňte instanční objekt, který jste použili v této ukázce, jenom pokud ho nepoužíváte pro nic jiného.
Získejte ID objektu aplikačního objektu pomocí příkazu
az ad sp listaz ad sp list --display-name "<display_name>" --query "[].{\"Object ID\":id}" --output tablePomocí příkazu
az ad sp deleteodstraňte službu principal.az ad sp delete --id <service_principal_object_id>
Řešení potíží s Terraformem v Azure
Řešení běžných problémů při používání Terraformu v Azure
Další kroky
V tomto rychlém startu jste nasadili cluster Azure Linux Container Host. Chcete-li se dozvědět více o hostiteli kontejnerů Azure Linux a projít si kompletní příklad nasazení a správy clusteru, pokračujte k tutoriálu Azure Linux Container Host.