你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure验证模块(AVM)是预定义的、可重用的基础结构即代码(IaC)模块,由 Microsoft Bicep 和 Terraform 开发和维护。 AVM 旨在帮助你以一致且可靠的方式部署Azure资源,遵循最佳做法和符合性标准。
本文介绍如何将 Terraform 与Azure已验证模块(AVM)配合使用来部署生产就绪的 AKS 群集。
有关 AVM 的详细信息,请参阅 Azure 已验证的模块。
先决条件
有效的 Azure 订阅。 如果没有Azure订阅,请在开始前创建 free 帐户。
使用
az account set命令设置订阅上下文。 例如:az account set --subscription "00000000-0000-0000-0000-000000000000"Azure CLI安装和配置。 使用
az --version命令查找版本。 如果需要安装或升级,请参阅 Install Azure CLI。已安装 kubectl 。 您可以使用
az aks install-cli命令在本地安装它。在本地安装 Terraform。 有关安装说明,请参阅 安装 Terraform。
了解 Terraform 配置
Terraform 模块实现具有以下功能的生产就绪 AKS 群集:
-
多个可用区中的区域对齐节点池:我们利用群集自动缩放程序,在每个可用区使用单独的节点池来实现。 该
balance_similar_node_groups参数允许跨区域均衡分布节点,以实现可伸缩性和高可用性。 -
自动 AKS 升级:我们执行
patch升级通道 并启用 节点 OS 映像自动升级 ,以确保群集保持最新状态,更新最新的安全补丁和功能。 - Azure CNI 覆盖网络:我们使用 Azure CNI 覆盖网络提供高级网络功能,包括 IP 地址管理(IPAM)和网络策略强制实施。
- Private Kubernetes API 终结点和Microsoft Entra身份验证:我们将 Kubernetes API 置于专用网络中,允许使用 Microsoft Entra ID 进行身份验证,并关闭本地帐户(可选)。
- 自带(BYO)虚拟网络(VNet)并需要用户分配的托管标识:我们允许您使用自带的 VNet,并要求 AKS 群集使用用户分配的托管标识,以增强对网络和标识资源的安全性和控制。 可以在多个群集之间使用相同的托管标识进行一致的标识管理。
创建 Terraform 配置文件
Terraform 配置文件定义 Terraform 创建和管理的基础结构。
创建名为
main.tf的文件,并添加以下代码以定义 Terraform 版本并指定Azure提供程序:terraform { required_version = ">= 1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} }将以下代码添加到
main.tf,以创建Azure资源组。 根据需要随时更改资源组的名称和位置。resource "azurerm_resource_group" "aks" { name = "rg-aksprod-demo" location = "eastus" }
创建虚拟网络(VNet)和子网
添加以下代码到 main.tf 创建 AKS 集群的虚拟网络(VNet)和子网:
resource "azurerm_virtual_network" "aks" {
name = "vnet-aksprod-demo"
location = azurerm_resource_group.aks.location
resource_group_name = azurerm_resource_group.aks.name
address_space = ["10.31.0.0/16"]
}
resource "azurerm_subnet" "aks_nodes" {
name = "snet-aks-nodes"
resource_group_name = azurerm_resource_group.aks.name
virtual_network_name = azurerm_virtual_network.aks.name
address_prefixes = ["10.31.0.0/17"]
}
创建生产就绪的 AKS 群集
将以下代码添加到 main.tf 中,以使用 AVM 创建可用于生产的 AKS 群集:
module "aks_production" {
source = "Azure/avm-ptn-aks-production/azurerm"
version = "0.5.0"
name = "aksprod-demo"
location = azurerm_resource_group.aks.location
resource_group_name = azurerm_resource_group.aks.name
network = {
node_subnet_id = azurerm_subnet.aks_nodes.id
pod_cidr = "192.168.0.0/16"
}
}
初始化 Terraform
使用main.tf命令在包含terraform init文件的目录中初始化 Terraform。 此命令下载用于通过 Terraform 管理 Azure 资源所需的 Azure 提供程序。
terraform init
验证 Terraform 配置
使用 terraform validate 命令验证 Terraform 配置。 此命令检查 Terraform 配置文件的语法和内部一致性。
terraform validate
可能会遇到与已弃用的参数相关的警告。 这些警告来自 AVM,不会阻止部署。
创建 Terraform 执行计划
使用 terraform plan 命令创建 Terraform 执行计划。 此命令显示 Terraform 将在Azure订阅中创建或修改的资源。
terraform plan
应用 Terraform 配置
查看并确认执行计划后,使用 terraform apply 命令应用 Terraform 配置。 此命令创建或修改Azure订阅中main.tf文件中定义的资源。
terraform apply
连接到 AKS 群集
使用
az aks get-credentials命令配置 kubectl 以连接到 Kubernetes 群集。 此命令将下载凭据,并将 Kubernetes CLI 配置为使用这些凭据。az aks get-credentials --resource-group <resource-group> --name <cluster-name>使用 [
kubectl get][kubectl-get] 命令验证与群集的连接。 此命令将返回群集节点的列表。kubectl get nodes
相关内容
有关 AVM 的详细信息,请参阅 Azure 已验证模块(AVM)文档。