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.
Platí pro: ✔️ AKS Automatic
Azure Kubernetes Service (AKS) Automatic poskytuje nejjednodušší spravované prostředí Kubernetes pro vývojáře, techniky DevOps a techniky platformy. Ideální pro moderní aplikace a aplikace AI, AKS Automatic automatizuje nastavení a operace clusteru AKS a vkládá osvědčené postupy konfigurace. Uživatelé jakékoli úrovně dovedností můžou těžit z zabezpečení, výkonu a spolehlivosti AKS Automaticky pro své aplikace. AKS Automatic také zahrnuje SLA pro připravenost podů, která zaručuje, že 99,9% způsobilých operací připravenosti podů bude dokončeno do 5 minut, což zajišťuje spolehlivou a samoopravující infrastrukturu pro vaše aplikace. Tento rychlý start předpokládá základní znalosti konceptů Kubernetes. Další informace najdete v základních konceptech Kubernetes pro Azure Kubernetes Service (AKS).
V tomto rychlém startu se naučíte:
- Vytvořte virtuální síť.
- Vytvořte spravovanou identitu s oprávněními pro virtuální síť.
- Nasazení automatického clusteru AKS ve virtuální síti
- Spusťte ukázkovou vícekontenerovou aplikaci se skupinou mikroslužeb a webových front-endů simulujících scénář maloobchodního prodeje.
Pokud účet Azure nemáte, vytvořte si účet free.
Požadavky
- Azure CLI verze 2.86.0 nebo novější. Verzi najdete spuštěním
az --versionpříkazu. Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI.
Poznámka:
Tato ukázka vytvoří cluster AKS Automatic pomocí prostředku v4.81 poskytovatele AzureRM, který vyžaduje verzi azurerm_kubernetes_automatic_cluster poskytovatele AzureRM nebo novější. Ekvivalentní ukázku, která používá poskytovatele AzAPI, najdete v ukázce 101-aks-automatic-custom-network-azapi .
- Identita clusteru
Network Contributors předdefinovaným přiřazením role na podsíti serveru API. - Identita clusteru s
Network Contributorpředdefinovaným přiřazením role ve virtuální síti pro podporu automatického zřizování uzlů - Identita uživatele přistupující ke clusteru pomocí
Azure Kubernetes Service Cluster User RoleaAzure Kubernetes Service RBAC Writer. - Virtuální síť s vyhrazenou podsítí serveru API s minimálně
*/28velikostí delegovanou naMicrosoft.ContainerService/managedClusters.- Pokud je k podsítím připojená skupina zabezpečení sítě (NSG), ujistěte se, že pravidla zabezpečení NSG povolují požadované typy komunikace mezi komponentami clusteru. Podrobné požadavky najdete v tématu Požadavky na vlastní virtuální síť.
- Pokud existuje Azure Firewall nebo jiná metoda omezení odchozích přenosů nebo zařízení, ujistěte se, že jsou povolená poručená pravidla odchozí sítě a plně kvalifikované názvy domén.
- Služba AKS Automaticky ve vašem clusteru AKS povolí Azure Policy, ale měli byste si předem předregistrovat poskytovatele prostředků
Microsoft.PolicyInsightsve vašem předplatném pro plynulejší prostředí. Další informace najdete v tématu Poskytovatelé prostředků a typy v Azure. - Odinstalujte rozšíření AKS-Preview pomocí
az extension remove -n aks-preview.
Důležité
Počínaje AKS 1.36 budou mít nové clustery AKS Automatic ve výchozím nastavení povolené rozhraní Kubernetes Gateway API pomocí doplňku směrování aplikací místo spravovaného ingressu NGINX pomocí doplňku směrování aplikací kvůli ukončení Ingress NGINX.
Stávající automatické clustery nejsou ovlivněné, ale měly by začít s migrací do rozhraní API brány Kubernetes prostřednictvím doplňku pro směrování aplikací.
Omezení
Pro automatické clustery AKS platí následující omezení:
- AKS Automatic je obecně dostupná v následujících oblastech:
australiacentral,australiaeast,australiasoutheast,belgiumcentral,austriaeast,brazilsouth,canadacentral,canadaeast,centralindia,centralus,chilecentral,denmarkeast,eastasia,eastus,eastus2,francecentral,germanywestcentral,indonesiacentral,israelcentral,italynorth,japaneast,japanwest,koreacentral,koreasouth,malaysiawest,mexicocentral,newzealandnorth,northcentralus,northeurope,norwayeast,polandcentral,southafricanorth,southcentralus,southeastasia,southindia,spaincentral,swedencentral,switzerlandnorth,uaenorth,uksouth,ukwest,westcentralus,westeurope,westus,westus2,westus3. - Nové automatické clustery AKS mají ve výchozím nastavení povolené spravované fondy systémových uzlů a LocalDNS. Clustery AKS Automatic nemůžete v žádné oblasti vytvářet bez spravovaných systémových fondů uzlů.
- Cluster AKS Automatic má předkonfigurované uzamčení skupiny prostředků uzlu, které neumožňuje provádět změny ve skupině prostředků
MC_, a tím zabraňuje vytváření propojení virtuální sítě ve výchozí privátní zóně DNS. V případě scénářů pro různé virtuální sítě nebo vlastní DNS použijte vlastní síť a privátní DNS podle Vytvoření privátního Azure Kubernetes Service (AKS) automatického clusteru ve vlastní virtuální síti. - Azure CLI je vyžadována verze 2.86.0 nebo novější. Verzi najdete spuštěním
az --versionpříkazu. Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI. - Následující rozšíření nejsou podporovaná:
- Uzly Windows nejsou podporované.
- Migrace ze základní skladové položky AKS na automatickou skladovou položku není podporovaná.
- Migrace z existujícího automatického clusteru AKS bez fondů uzlů spravovaného systému do AKS Automaticky s fondy uzlů spravovaného systému je podporována ve verzi Preview v oblastech, kde jsou obecně dostupné fondy spravovaných systémových uzlů. Migrace z AKS Automatic se spravovanými fondy systémových uzlů zpět na AKS Automatic bez spravovaných fondů systémových uzlů není podporována.
Definování proměnných
Definujte následující proměnné, které se používají v následujících krocích.
RG_NAME=automatic-rg
VNET_NAME=automatic-vnet
CLUSTER_NAME=automatic
IDENTITY_NAME=automatic-uami
LOCATION=eastus
SUBSCRIPTION_ID=$(az account show --query id -o tsv)
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logická skupina, ve které se nasazují a spravují Azure prostředky.
Vytvořte skupinu prostředků pomocí příkazu az group create .
az group create -n ${RG_NAME} -l ${LOCATION}
Následující ukázkový výstup se podobá úspěšnému vytvoření skupiny prostředků:
{
"id": "/subscriptions/<guid>/resourceGroups/automatic-rg",
"location": "canadacentral",
"managedBy": null,
"name": "automatic-rg",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
Vytvoření virtuální sítě
Vytvořte virtuální síť pomocí az network vnet create příkazu. Pomocí příkazu vytvořte podsíť serveru API, podsíť uživatelského uzlu a podsíť systémového az network vnet subnet create uzlu.
Pokud používáte vlastní virtuální síť s AKS Automatic, musíte vytvořit podsíť serveru API. AKS deleguje podsíť Microsoft.ContainerService/managedClusters vaším jménem, která uděluje službě AKS oprávnění k vložení podů serveru API a interního nástroje pro vyrovnávání zatížení do této podsítě. Podsíť nemůžete použít pro žádné jiné úlohy, ale můžete ji použít pro podsíť serveru API pro více clusterů AKS umístěných ve stejné virtuální síti. Minimální podporovaná velikost podsítě serveru API pro podporu jednoho clusteru je /28.
Výstraha
Cluster AKS si v adresní prostoru podsítě vyhrazuje alespoň devět (9) IP adres. Nedostatek IP adres může bránit škálování serveru API a způsobit výpadek serveru API.
az network vnet create --name ${VNET_NAME} \
--resource-group ${RG_NAME} \
--location ${LOCATION} \
--address-prefixes 172.19.0.0/16
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name apiServerSubnet \
--delegations Microsoft.ContainerService/managedClusters \
--address-prefixes 172.19.0.0/28
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name userNodeSubnet \
--address-prefixes 172.19.1.0/24
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name managedSystemNodeSubnet \
--address-prefixes 172.19.0.64/26
Požadavky na skupinu zabezpečení sítě
Pokud jste přidali pravidla skupiny zabezpečení sítě (NSG), která omezují provoz mezi různými podsítěmi ve vaší vlastní virtuální síti, ujistěte se, že pravidla zabezpečení NSG povolují požadované typy komunikace mezi komponentami clusteru.
Podrobné požadavky na skupiny zabezpečení sítě (NSG) při používání vlastních virtuálních sítí s clustery AKS naleznete v části Požadavky na vlastní virtuální síť.
Vytvoření spravované identity a udělení oprávnění k virtuální síti
Vytvořte spravovanou identitu pomocí az identity create příkazu a načtěte ID objektu zabezpečení. Pomocí příkazu přiřaďte roli Přispěvatel sítě ve virtuální síti spravované identitě az role assignment create .
az identity create \
--resource-group ${RG_NAME} \
--name ${IDENTITY_NAME} \
--location ${LOCATION}
IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group ${RG_NAME} --name ${IDENTITY_NAME} --query principalId -o tsv)
az role assignment create \
--scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}" \
--role "Network Contributor" \
--assignee-object-id "${IDENTITY_PRINCIPAL_ID}" \
--assignee-principal-type ServicePrincipal
Vytvoření automatického clusteru AKS ve vlastní virtuální síti
Pokud chcete vytvořit automatický cluster AKS, použijte příkaz az aks create .
az aks create \
--resource-group ${RG_NAME} \
--name ${CLUSTER_NAME} \
--location ${LOCATION} \
--apiserver-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/apiServerSubnet" \
--node-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/userNodeSubnet" \
--system-node-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/managedSystemNodeSubnet"
--assign-identity "/subscriptions/${SUBSCRIPTION_ID}/resourcegroups/${RG_NAME}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${IDENTITY_NAME}" \
--sku automatic \
--no-ssh-key
Po několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.
Připojení ke clusteru
Ke správě clusteru Kubernetes použijte klienta příkazového řádku Kubernetes kubectl.
kubectl je již nainstalován, pokud používáte Azure Cloud Shell. Pokud chcete nainstalovat kubectl místně, spusťte příkaz az aks install-cli . Automatické clustery AKS jsou nakonfigurované s Microsoft Entra ID pro řízení přístupu na základě role Kubernetes (RBAC) .
Při vytváření clusteru pomocí Azure CLI je vašemu uživateli přiřazena vestavěné role pro .
Nakonfigurujte kubectl připojení ke clusteru Kubernetes pomocí příkazu az aks get-credentials . Tento příkaz stáhne přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes tak, aby je používalo.
az aks get-credentials --resource-group ${RG_NAME} --name ${CLUSTER_NAME}
Pomocí příkazu kubectl get ověřte připojení ke clusteru. Tento příkaz vrátí seznam uzlů clusteru.
kubectl get nodes
Následující ukázkový výstup ukazuje, jak se zobrazí výzva k přihlášení.
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
Po přihlášení následující ukázkový výstup zobrazuje spravované fondy systémových uzlů. Ujistěte se, že je stav uzlu Připravený.
NAME STATUS ROLES AGE VERSION
aks-hostedpool-16652789-vms1 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms2 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms3 Ready <none> 19m v1.34.7
aks-system-surge-zq4d2 Ready <none> 19m v1.34.7
Vytvoření virtuální sítě
Tento Bicep soubor definuje virtuální síť.
@description('The location of the managed cluster resource.')
param location string = resourceGroup().location
@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'
@description('The address prefix of the virtual network.')
param addressPrefix string = '172.19.0.0/16'
@description('The name of the API server subnet.')
param apiServerSubnetName string = 'apiServerSubnet'
@description('The subnet prefix of the API server subnet.')
param apiServerSubnetPrefix string = '172.19.0.0/28'
@description('The name of the user node subnet.')
param userNodeSubnetName string = 'userNodeSubnet'
@description('The subnet prefix of the user node subnet.')
param userNodeSubnetPrefix string = '172.19.1.0/24'
@description('The name of the system node subnet.')
param systemNodeSubnetName string = 'systemNodeSubnet'
@description('The subnet prefix of the system node subnet.')
param systemNodeSubnetPrefix string = '172.19.0.64/26'
// Virtual network with an API server subnet, a user node subnet, and a system node subnet
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [ addressPrefix ]
}
subnets: [
{
name: apiServerSubnetName
properties: {
addressPrefix: apiServerSubnetPrefix
}
}
{
name: userNodeSubnetName
properties: {
addressPrefix: userNodeSubnetPrefix
}
}
{
name: systemNodeSubnetName
properties: {
addressPrefix: systemNodeSubnetPrefix
}
}
]
}
}
output apiServerSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, apiServerSubnetName)
output userNodeSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, userNodeSubnetName)
output systemNodeSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, systemNodeSubnetName)
Uložte soubor Bicep virtualNetwork.bicep do místního počítače.
Důležité
Soubor Bicep nastaví parametr vnetName na aksAutomaticVnet, parametr addressPrefix na 172.19.0.0/16, parametr apiServerSubnetPrefix na 172.19.0.0/28 a parametr apiServerSubnetPrefix na 172.19.1.0/24. Pokud chcete použít jiné hodnoty, nezapomeňte aktualizovat řetězce na preferované hodnoty.
Nasaďte soubor Bicep pomocí Azure CLI.
az deployment group create --resource-group <resource-group> --template-file virtualNetwork.bicep
Ve výchozím nastavení je povolený veškerý provoz ve virtuální síti. Pokud jste přidali pravidla skupiny zabezpečení sítě (NSG), která omezují provoz mezi různými podsítěmi ve vaší vlastní virtuální síti, ujistěte se, že pravidla zabezpečení NSG povolují požadované typy komunikace mezi komponentami clusteru.
Podrobné požadavky na skupiny zabezpečení sítě (NSG) při používání vlastních virtuálních sítí s clustery AKS naleznete v části Požadavky na vlastní virtuální síť.
Vytvoření spravované identity
Tento soubor Bicep definuje spravovanou uživatelsky přiřazenou identitu.
param location string = resourceGroup().location
param uamiName string = 'aksAutomaticUAMI'
resource userAssignedManagedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: uamiName
location: location
}
output uamiId string = userAssignedManagedIdentity.id
output uamiPrincipalId string = userAssignedManagedIdentity.properties.principalId
output uamiClientId string = userAssignedManagedIdentity.properties.clientId
Uložte soubor Bicep uami.bicep do místního počítače.
Důležité
Soubor Bicep nastaví parametr uamiName na aksAutomaticUAMI. Pokud chcete použít jiný název identity, nezapomeňte řetězec aktualizovat na preferovaný název.
Nasaďte soubor Bicep pomocí Azure CLI.
az deployment group create --resource-group <resource-group> --template-file uami.bicep
Přiřaďte roli Přispěvatele sítě ke virtuální síti.
Tento Bicep soubor definuje přiřazení rolí ve virtuální síti.
@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'
@description('The principal ID of the user assigned managed identity.')
param uamiPrincipalId string
// Get a reference to the virtual network
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' existing ={
name: vnetName
}
// Assign the Network Contributor role to the user assigned managed identity on the virtual network
// '4d97b98b-1d4f-4787-a291-c67834d212e7' is the built-in Network Contributor role definition
// See: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/networking#network-contributor
resource networkContributorRoleAssignmentToVirtualNetwork 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(uamiPrincipalId, '4d97b98b-1d4f-4787-a291-c67834d212e7', resourceGroup().id, virtualNetwork.name)
scope: virtualNetwork
properties: {
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')
principalId: uamiPrincipalId
}
}
Uložte soubor Bicep roleAssignments.bicep do místního počítače.
Důležité
Soubor Bicep nastaví parametr vnetName na aksAutomaticVnet. Pokud jste použili jiný název virtuální sítě, nezapomeňte řetězec aktualizovat na upřednostňovaný název virtuální sítě.
Nasaďte soubor Bicep pomocí Azure CLI. Musíte poskytnout ID hlavní identity přiřazené uživateli.
az deployment group create --resource-group <resource-group> --template-file roleAssignments.bicep \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>
Vytvoření automatického clusteru AKS ve vlastní virtuální síti
Tento Bicep soubor definuje automatický cluster AKS.
@description('The name of the managed cluster resource.')
param clusterName string = 'aksAutomaticCluster'
@description('The location of the managed cluster resource.')
param location string = resourceGroup().location
@description('The resource ID of the API server subnet.')
param apiServerSubnetId string
@description('The resource ID of the user node subnet.')
param userNodeSubnetId string
@description('The resource ID of the system node subnet.')
param systemNodeSubnetId string
@description('The resource ID of the user assigned managed identity.')
param uamiId string
/// Create the AKS Automatic cluster using the custom virtual network and user assigned managed identity
resource aks 'Microsoft.ContainerService/managedClusters@2024-03-02-preview' = {
name: clusterName
location: location
sku: {
name: 'Automatic'
}
properties: {
apiServerAccessProfile: {
subnetId: apiServerSubnetId
}
networkProfile: {
outboundType: 'loadBalancer'
}
hostedSystemProfile: {
systemNodeSubnetID: systemNodeSubnetId
nodeSubnetID: userNodeSubnetId
}
}
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${uamiId}': {}
}
}
}
Uložte soubor Bicep aks.bicep do místního počítače.
Důležité
Soubor Bicep nastaví parametr clusterName na aksAutomaticCluster. Pokud chcete jiný název clusteru, nezapomeňte řetězec aktualizovat na upřednostňovaný název clusteru.
Nasaďte soubor Bicep pomocí Azure CLI. Musíte zadat ID prostředku podsítě serveru API, ID prostředku podsítě uzlu uživatele, ID prostředku podsítě systémového uzlu a ID prostředku spravované identity přiřazené uživatelem.
az deployment group create --resource-group <resource-group> --template-file aks.bicep \
--parameters apiServerSubnetId=<API server subnet resource id> \
--parameters nodeSubnetId=<user node subnet resource id> \
--parameters systemNodeSubnetId=<system node subnet resource id> \
--parameters uamiId=<user assigned identity id>
Připojení ke clusteru
Ke správě clusteru Kubernetes použijte klienta příkazového řádku Kubernetes kubectl.
kubectl je již nainstalován, pokud používáte Azure Cloud Shell. Pokud chcete nainstalovat kubectl místně, spusťte příkaz az aks install-cli . Automatické clustery AKS jsou nakonfigurované s Microsoft Entra ID pro řízení přístupu na základě role Kubernetes (RBAC) .
Důležité
Když vytváříte cluster pomocí Bicep, musíte přiřadit jednu z předdefinovaných rolí, například Azure Kubernetes Service RBAC Reader, Azure Kubernetes Service RBAC Writer, Azure Kubernetes Service RBAC Admin nebo Azure Kubernetes Service RBAC Cluster Admin, pro uživatele, s vymezením na cluster nebo konkrétní obor názvů, například pomocí az role assignment create --role "Azure Kubernetes Service RBAC Cluster Admin" --scope <AKS cluster resource id> --assignee user@contoso.com. Také se ujistěte, že vaši uživatelé mají předdefinované role Azure Kubernetes Service Cluster User, aby mohli spouštět az aks get-credentials, a pak pomocí příkazu az aks get-credentials získat kubeconfig vašeho clusteru AKS.
Nakonfigurujte kubectl připojení ke clusteru Kubernetes pomocí příkazu az aks get-credentials . Tento příkaz stáhne přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes tak, aby je používalo.
az aks get-credentials --resource-group <resource-group> --name <cluster-name>
Pomocí příkazu kubectl get ověřte připojení ke clusteru. Tento příkaz vrátí seznam uzlů clusteru.
kubectl get nodes
Následující ukázkový výstup ukazuje, jak se zobrazí výzva k přihlášení.
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
Po přihlášení následující ukázkový výstup zobrazuje spravované fondy systémových uzlů. Ujistěte se, že je stav uzlu Připravený.
NAME STATUS ROLES AGE VERSION
aks-hostedpool-16652789-vms1 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms2 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms3 Ready <none> 19m v1.34.7
aks-system-surge-zq4d2 Ready <none> 19m v1.34.7
Kontrola 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.
Podívejte se na další články a ukázkový kód ukazující, jak používat Terraform ke správě prostředků Azure.
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 = "~>5.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:# Create a random name for the resource group using random_pet resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } # Create a resource group using the generated random name resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } # Create the custom virtual network that hosts the cluster resource "azurerm_virtual_network" "vnet" { name = var.virtual_network_name location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name address_space = var.virtual_network_address_space } # Create the subnet delegated to AKS for API Server VNet Integration resource "azurerm_subnet" "api_server" { name = "apiServerSubnet" resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet.name address_prefixes = var.api_server_subnet_address_prefixes delegation { name = "aks-delegation" service_delegation { name = "Microsoft.ContainerService/managedClusters" actions = ["Microsoft.Network/virtualNetworks/subnets/join/action"] } } } # Create the subnet that hosts the user node pools resource "azurerm_subnet" "user_nodes" { name = "userNodeSubnet" resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet.name address_prefixes = var.user_node_subnet_address_prefixes } # Create the subnet that hosts the managed system node pool resource "azurerm_subnet" "system_nodes" { name = "managedSystemNodeSubnet" resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet.name address_prefixes = var.system_node_subnet_address_prefixes lifecycle { # AKS adds its own managed cluster delegation to this subnet after the # cluster is created. ignore_changes = [delegation] } } # Create the user-assigned managed identity used by the cluster resource "azurerm_user_assigned_identity" "aks" { name = var.identity_name location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name } # Grant the cluster identity Network Contributor on the virtual network resource "azurerm_role_assignment" "network_contributor" { scope = azurerm_virtual_network.vnet.id role_definition_name = "Network Contributor" principal_id = azurerm_user_assigned_identity.aks.principal_id principal_type = "ServicePrincipal" } # Create a random name for the AKS Automatic cluster resource "random_pet" "cluster_name" { prefix = var.cluster_name_prefix } # Create the AKS Automatic cluster in the custom virtual network resource "azurerm_kubernetes_automatic_cluster" "aks_automatic" { name = random_pet.cluster_name.id location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } api_server_access { subnet_id = azurerm_subnet.api_server.id } hosted_system { node_subnet_id = azurerm_subnet.user_nodes.id system_node_subnet_id = azurerm_subnet.system_nodes.id } depends_on = [azurerm_role_assignment.network_contributor] }Vytvořte soubor s názvem
variables.tfa vložte následující kód:variable "resource_group_location" { type = string default = "westus2" 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 "cluster_name_prefix" { type = string default = "aks-automatic" description = "Prefix of the AKS Automatic cluster name that's combined with a random ID so the name is unique in your Azure subscription." } variable "virtual_network_name" { type = string default = "aks-automatic-vnet" description = "Name of the custom virtual network that hosts the cluster." } variable "identity_name" { type = string default = "aks-automatic-identity" description = "Name of the user-assigned managed identity that the cluster uses." } variable "virtual_network_address_space" { type = list(string) default = ["172.19.0.0/16"] description = "Address space of the custom virtual network." } variable "api_server_subnet_address_prefixes" { type = list(string) default = ["172.19.0.0/28"] description = "Address prefixes of the subnet delegated to the cluster API server." } variable "user_node_subnet_address_prefixes" { type = list(string) default = ["172.19.1.0/24"] description = "Address prefixes of the subnet that hosts the user node pools." } variable "system_node_subnet_address_prefixes" { type = list(string) default = ["172.19.0.64/26"] description = "Address prefixes of the subnet that hosts the managed system node pool." }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 "cluster_name" { value = azurerm_kubernetes_automatic_cluster.aks_automatic.name } output "cluster_id" { value = azurerm_kubernetes_automatic_cluster.aks_automatic.id } output "node_resource_group_id" { value = azurerm_kubernetes_automatic_cluster.aks_automatic.node_resource_group_id } output "virtual_network_name" { value = azurerm_virtual_network.vnet.name } output "fully_qualified_domain_name" { value = azurerm_kubernetes_automatic_cluster.aks_automatic.fully_qualified_domain_name }
Inicializujte Terraform
Spusťte terraform init a inicializujte nasazení Terraformu. Tento příkaz stáhne poskytovatele Azure potřebné ke správě vašich Azure prostředků.
terraform init -upgrade
Vytvoření plánu provádění Terraformu
Spusťte terraform plan a vytvořte plán provedení.
terraform plan -out main.tfplan
Použijte prováděcí plán Terraformu
Spusťte terraform apply pro aplikaci prováděcího plánu na vaši cloudovou infrastrukturu.
terraform apply main.tfplan
Vytvoření automatického clusteru AKS trvá několik minut.
Ověření clusteru
Získejte název skupiny prostředků Azure a název clusteru.
resource_group_name=$(terraform output -raw resource_group_name) cluster_name=$(terraform output -raw cluster_name)Spusťte příkaz az aks show, aby se zobrazil cluster a potvrdilo se, že používá
AutomaticSKU a vaše vlastní podsítě.az aks show --resource-group $resource_group_name --name $cluster_name --query "{name:name, sku:sku, provisioningState:provisioningState, apiServerSubnet:apiServerAccessProfile.subnetId}"
Připojení ke clusteru
Ke správě clusteru Kubernetes použijte klienta příkazového řádku Kubernetes kubectl.
kubectl můžete nainstalovat lokálně pomocí příkazu az aks install-cli. Automatické clustery AKS jsou nakonfigurované s Microsoft Entra ID pro řízení přístupu na základě role Kubernetes (RBAC) .
Nakonfigurujte kubectl připojení ke clusteru Kubernetes pomocí příkazu az aks get-credentials .
az aks get-credentials --resource-group $resource_group_name --name $cluster_name
Pomocí příkazu kubectl get ověřte připojení ke clusteru.
kubectl get nodes
Nasazení aplikace
K nasazení aplikace použijete soubor manifestu k vytvoření všech objektů potřebných ke spuštění aplikace AKS Store. Soubor manifestu Kubernetes definuje požadovaný stav clusteru, například které image kontejneru se mají spustit. Manifest zahrnuje následující nasazení a služby Kubernetes:
- Store front: Webová aplikace pro zákazníky k zobrazení produktů a objednávání.
- Produktová služba: Zobrazuje informace o produktu.
- Služba pro objednávání: Realizuje objednávky.
- Rabbit MQ: Fronta zpráv pro objednávkovou frontu.
Poznámka:
Nedoporučujeme spouštět stavové kontejnery, jako je Rabbit MQ, bez trvalého úložiště pro produkční prostředí. Tyto kontejnery se zde používají pro zjednodušení, ale doporučujeme používat spravované služby, jako jsou Azure Cosmos DB nebo Azure Service Bus.
Vytvořte obor názvů
aks-store-demo, kam budou nasazeny prostředky Kubernetes.kubectl create ns aks-store-demoNasaďte aplikaci pomocí příkazu kubectl apply do
aks-store-demonamespace. Soubor YAML definující nasazení je na GitHub.kubectl apply -n aks-store-demo -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-ingress-quickstart.yamlNásledující ukázkový výstup ukazuje nasazení a služby:
statefulset.apps/rabbitmq created configmap/rabbitmq-enabled-plugins created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created ingress/store-front created
Otestování aplikace
Když se aplikace spustí, služba Kubernetes zveřejní front-end aplikace na internetu. Dokončení tohoto procesu může trvat několik minut.
Pomocí příkazu kubectl get pods zkontrolujte stav nasazených podů. Ujistěte se, že jsou všechny pody
Running, než budete pokračovat. Pokud se jedná o první úlohu, kterou nasadíte, může trvat několik minut, než automatické zřizování uzlu vytvoří fond uzlů pro spuštění podů.kubectl get pods -n aks-store-demoZkontrolujte veřejnou IP adresu pro aplikaci store-front. Sledujte průběh pomocí příkazu kubectl get service s argumentem
--watch.kubectl get ingress store-front -n aks-store-demo --watchVýstup ADDRESS pro
store-frontslužbu zpočátku zobrazuje prázdný:NAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 80 12mJakmile se adresa změní z prázdné na skutečnou
CTRL-Cveřejnou IP adresu, použijtekubectlk zastavení procesu sledování.Následující ukázkový výstup ukazuje platnou veřejnou IP adresu přiřazenou službě:
NAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 4.255.22.196 80 12mOtevřete webový prohlížeč k externí IP adrese vašeho vstupního bodu, abyste si mohli prohlédnout aplikaci Azure Store v akci.
Odstranění clusteru
Pokud nemáte v plánu projít kurz AKS, vyčistěte nepotřebné prostředky, abyste se vyhnuli poplatkům za Azure. Spuštěním příkazu az group delete odeberte skupinu prostředků, službu kontejneru a všechny související prostředky.
az group delete --name <resource-group> --yes --no-wait
Poznámka:
Cluster AKS byl vytvořen se spravovanou identitou přiřazenou uživatelem. Pokud už tuto identitu nepotřebujete, můžete ji odebrat ručně.
Pokud už nepotřebujete prostředky vytvořené pomocí nástroje Terraform, spusťte terraform plan a zadejte příznak destroy.
terraform plan -destroy -out main.destroy.tfplan
Spusťte terraform apply pro aplikaci prováděcího plánu.
terraform apply main.destroy.tfplan
Další kroky
V tomto rychlém startu jste nasadili cluster Kubernetes pomocí služby AKS Automatic v rámci vlastní virtuální sítě a pak jste do ní nasadili jednoduchou vícekontenerovou aplikaci. Tato ukázková aplikace slouží jenom pro ukázkové účely a nepředstavuje všechny osvědčené postupy pro aplikace Kubernetes. Pokyny k vytváření úplných řešení pomocí AKS pro produkční prostředí najdete v pokynech k řešení AKS.
Další informace o službě AKS Automatic najdete v úvodu.