使用 Terraform 创建 Kubernetes 群集(预览版)
本文介绍如何使用 Terraform 和 Azure 验证模块在 Azure 本地中创建 Kubernetes 群集。 工作流如下所示:
- 创建 SSH 密钥对。
- 使用 Terraform 在 Azure Local 23H2 中创建 Kubernetes 群集。 默认情况下,群集已连接 Azure Arc。
- 验证部署并连接到群集。
重要
这些预览功能在自助服务上可用,可选择加入。 预览功能是“按现状”和“按可用”提供的,不包括在服务级别协议和有限保证中。 Azure Kubernetes 服务,由 Azure Arc 预览版启用,部分由客户支持人员尽最大努力涵盖。
开始之前
在开始之前,请确保具备以下先决条件:
- 从本地基础结构管理员处获取以下详细信息:
- Azure 订阅 ID:使用 Azure Local 进行部署和注册的 Azure 订阅 ID。
- 自定义位置名称或 ID:自定义位置的 Azure 资源管理器 ID。 自定义位置是在 Azure 本地群集部署期间配置的。 基础结构管理员应提供自定义位置资源管理器 ID。 创建 Kubernetes 群集需要此参数。 如果基础结构管理员提供自定义位置名称和资源组名称,还可以使用
az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv
获取资源管理器 ID。 - 逻辑网络名称或 ID:执行以下步骤创建的 Azure Stack HCI 逻辑网络的 Azure 资源管理器 ID。 管理员应提供逻辑网络的 ID。 若要创建 Kubernetes 群集,需要此参数。 如果知道在其中创建了逻辑网络的资源组,还可以使用
az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv
Azure 资源管理器 ID。
- 确保已在开发计算机上安装 GitHub、 最新版本的 Azure CLI 和 Terraform 客户端 。
- 在开发计算机上下载并安装 kubectl 。
创建 SSH 密钥对
若要创建 SSH 密钥对(与 Azure AKS 相同),请使用以下过程:
从门户或命令使用
ssh-keygen
az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
或
ssh-keygen -t rsa -b 4096
从 Azure 或 /.ssh/id_rsa.pub 下的本地计算机检索公钥的值。
登录 Azure
Terraform 仅支持通过 Azure CLI 向 Azure 进行身份验证。 不支持使用 Azure PowerShell 进行身份验证。 因此,尽管可以在执行 Terraform 工作时使用 Azure PowerShell 模块,但必须先 向 Azure 进行身份验证。
实现 Terraform 代码
创建用于测试示例 Terraform 代码的目录,并将其设为当前目录。
在同一目录中,创建名为 providers.tf 的文件并粘贴以下代码:
terraform { required_version = "~> 1.5" required_providers { azapi = { source = "azure/azapi" version = "~> 1.13" } azurerm = { source = "hashicorp/azurerm" version = "~> 3.74" } } } provider "azurerm" { features { resource_group { prevent_deletion_if_contains_resources = false } } }
创建另一个名为 main.tf 的文件,该文件指向最新的 AKS Arc AVM 模块,并插入以下代码。 可以读取模块的说明和输入,并根据需要添加可选参数:
module "aks_arc" { # Make sure to use the latest AVM module version source = "Azure/avm-res-hybridcontainerservice-provisionedclusterinstance/azurerm" version = "0.5.0" # Make sure to provide all required parameters resource_group_id = "<Resource_Group>" location = "<Region>" name = "<Cluster_Name>" logical_network_id = "<LNet_ID>" custom_location_id = "<CustomLocation_ID>" agent_pool_profiles = [{count=1}] # Optional parameters ssh_public_key = "Your_SSH_Key" enable_workload_identity = true enable_oidc_issuer = true rbac_admin_group_object_ids = "" }
初始化 Terraform
运行 terraform init
,将 Terraform 部署进行初始化。 请确保使用 -upgrade
标志将必要的提供程序插件升级到最新版本:
terraform init -upgrade
创建 Terraform 执行计划并应用该计划
运行 terraform 计划 以创建执行计划,然后运行 terraform 以将 输出文件应用到云基础结构:
terraform plan -out main.tfplan
terraform apply main.tfplan
该命令执行,然后在成功预配资源后返回成功。
验证部署并连接到群集
现在,可以通过从开发计算机运行 az connectedk8s proxy
来连接到 Kubernetes 群集。 还可以使用 kubectl 查看节点和 Pod 状态。 按照连接到 Kubernetes 群集中所述的步骤操作。