使用 Terraform 创建 Fleet 资源以入门 Azure Kubernetes Fleet Manager。
先决条件
如果您还没有 Azure 试用订阅,请在开始之前创建一个试用订阅。
- 阅读 机群管理器的概念性概述,其中提供了本文档中引用的机队和成员群集的说明。
- 拥有有效订阅的 Azure 帐户。 创建账户。
- 安装和配置Terraform。
创建车队管理器资源
可以创建一个 Fleet Manager 资源,以便以后将 AKS 群集分组为成员群集。 如果已启用 Fleet Manager 中心,则会启用其他预览功能,例如 Kubernetes 对象传播到成员群集。 有关详细信息,请参阅 机群管理器类型的概念性概述,其中提供了不同机群管理器配置的比较。
重要
创建 Fleet Manager 资源后,可以将没有中心群集的 Fleet Manager 资源升级到具有中心群集的资源。 对于具有中心群集的 Fleet Manager 资源,选择专用或公共资源后,无法更改它。
若要在没有中心群集的情况下创建 Fleet Manager 资源,请实现以下 Terraform 代码
实现 Terraform 代码
创建用于测试示例 Terraform 代码的目录,并将其设为当前目录。
创建名为
providers.tf的文件并插入下列代码:
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>4.0"
}
random = {
source = "hashicorp/random"
version = "~>3.0"
}
}
}
provider "azurerm" {
features {}
}
- 创建名为
main.tf的文件并插入下列代码:
resource "random_pet" "rg_name" {
prefix = var.resource_group_name_prefix
}
resource "azurerm_resource_group" "fleet_rg" {
name = random_pet.rg_name.id
location = var.resource_group_location
}
resource "random_string" "fleet_name" {
length = 63
lower = true
numeric = false
special = false
upper = false
}
resource "azurerm_kubernetes_fleet_manager" "fleet" {
location = azurerm_resource_group.fleet_rg.location
name = coalesce(var.fleet_name, random_string.fleet_name.result)
resource_group_name = azurerm_resource_group.fleet_rg.name
}
- 创建名为
variables.tf的文件并插入下列代码:
variable "resource_group_location" {
type = string
default = "chinanorth3"
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 "fleet_name" {
type = string
description = "Name of the fleet resource. If left blank, this value is randomly generated."
default = ""
}
- 创建名为
outputs.tf的文件并插入下列代码:
output "resource_group_name" {
value = azurerm_resource_group.fleet_rg.name
}
output "fleet_name" {
value = azurerm_kubernetes_fleet_manager.fleet.name
}
重要
如果使用 4.x azurerm 提供程序,则必须在运行 Terraform 命令之前 显式指定要向 Azure 进行身份验证的 Azure 订阅 ID 。
一种指定 Azure 订阅 ID 的方法是在名为 providers 的环境变量中指定订阅 ID,而不是将其放在 ARM_SUBSCRIPTION_ID 块中。
有关详细信息,请参阅 Azure 提供程序参考文档。
初始化 Terraform
运行 terraform init,将 Terraform 部署进行初始化。 此命令下载 Azure 提供程序,以便管理您的 Azure 资源。
terraform init -upgrade
要点:
- 参数
-upgrade可将必要的提供程序插件升级到符合配置版本约束的最新版本。
创建 Terraform 执行计划
运行 terraform plan 以创建执行计划。
terraform plan -out main.tfplan
要点:
-
terraform plan命令创建执行计划,但不执行它。 相反,它会确定需要执行哪些操作,以创建配置文件中指定的配置。 此模式允许你在对实际资源进行任何更改之前验证执行计划是否符合预期。 - 使用可选
-out参数可以为计划指定输出文件。 使用-out参数可以确保所查看的计划与所应用的计划完全一致。 - 若要详细了解如何使执行计划和安全性持久化,请参阅安全警告一节。
应用 Terraform 执行计划
运行 terraform apply 以将执行计划应用到您的云基础架构。
terraform apply main.tfplan
要点:
- 示例
terraform apply命令假设你先前运行了terraform plan -out main.tfplan。 - 如果为
-out参数指定了不同的文件名,请在对terraform apply的调用中使用该相同文件名。 - 如果未使用
-out参数,请调用不带任何参数的terraform apply。
验证结果
使用 Azure CLI 或 Azure PowerShell 验证结果。
获取 Azure 资源组名称。
resource_group_name=$(terraform output -raw resource_group_name)获取舰队管理器名称。
batch_name=$(terraform output -raw fleet_name)运行 az fleet show 以查看 Azure Kubernetes Fleet Manager。
az fleet show --resource-group $resource_group_name --name $fleet_name
清理资源
不再需要通过 Terraform 创建的资源时,请执行以下步骤:
运行 terraform plan 并指定
destroy标志。terraform plan -destroy -out main.destroy.tfplan要点:
-
terraform plan命令创建执行计划,但不执行它。 相反,它会确定需要执行哪些操作,以创建配置文件中指定的配置。 此模式允许你在对实际资源进行任何更改之前验证执行计划是否符合预期。 - 使用可选
-out参数可以为计划指定输出文件。 使用-out参数可以确保所查看的计划与所应用的计划完全一致。 - 若要详细了解如何使执行计划和安全性持久化,请参阅安全警告一节。
-
运行 terraform apply 来应用执行计划。
terraform apply main.destroy.tfplan