本文介绍如何使用Terraform创建ACK One Fleet实例。
前提条件
由于阿里云账号(主账号)具有资源的所有权限,一旦发生泄露将面临重大风险。建议您使用RAM用户,并为该RAM用户创建AccessKey,具体操作方式请参见创建RAM用户和创建AccessKey。
为运行Terraform命令的RAM用户绑定以下最小权限策略,以获取管理本示例所涉及资源的权限。更多信息,请参见为RAM用户授权。
该权限策略允许RAM用户创建、查看和删除RAM角色,并支持对RAM角色权限策略的管理。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ram:GetRole", "ram:ListRoles", "ram:AttachPolicyToRole", "ram:ListPoliciesForRole", "ram:CreateRole", "ram:DetachPolicyFromRole", "ram:DeleteRole" ], "Resource": "*" } ] }
准备Terraform运行环境,您可以选择以下任一方式来使用Terraform。
在Terraform Explorer中使用Terraform:阿里云提供了Terraform的在线运行环境,您无需安装Terraform,登录后即可在线使用和体验Terraform。适用于零成本、快速、便捷地体验和调试Terraform的场景。
Cloud Shell:阿里云Cloud Shell中预装了Terraform的组件,并已配置好身份凭证,您可直接在Cloud Shell中运行Terraform的命令。适用于低成本、快速、便捷地访问和使用Terraform的场景。
在本地安装和配置Terraform:适用于网络连接较差或需要自定义开发环境的场景。
该账户下必须存在ACK集群,才能创建舰队。
使用的资源
alicloud_zones:查询可用区。
alicloud_vpc:创建专有网络VPC。
alicloud_vswitch:创建虚拟交换机(vSwitch)为VPC划分一个或多个子网。
alicloud_ack_one_cluster:创建ACK One Fleet实例。
使用Terraform创建ACK One Fleet实例
创建一个工作目录,并在该工作目录中创建名为
main.tf
的配置文件,然后将以下代码复制到main.tf
中。variable "name" { default = "terraform-example" } provider "alicloud" { region = "cn-hangzhou" } # 指定可用区。 data "alicloud_zones" "default" { available_resource_creation = "VSwitch" } # 创建专有网络VPC。 resource "alicloud_vpc" "defaultVpc" { cidr_block = "172.16.0.0/12" vpc_name = var.name } # 创建虚拟交换机。 resource "alicloud_vswitch" "defaultyVSwitch" { vpc_id = alicloud_vpc.defaultVpc.id cidr_block = "172.16.2.0/24" zone_id = data.alicloud_zones.default.zones.0.id vswitch_name = var.name } # 创建ACK One Fleet实例。 resource "alicloud_ack_one_cluster" "default" { profile = "Default" argocd_enabled = false network { vpc_id = alicloud_vpc.defaultVpc.id vswitches = ["${alicloud_vswitch.defaultyVSwitch.id}"] } }
执行以下命令,初始化Terraform运行环境。
terraform init
执行以下命令,创建执行计划并预览变更。
terraform plan
执行以下命令,创建实例。
terraform apply
在执行过程中,根据提示输入
yes
并按下Enter键,等待命令执行完成。若出现以下信息,则表示ACK One Fleet实例创建成功。Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
执行以下命令,验证结果。也可登录ACK One控制台查看已创建的舰队信息。
terraform show
清理资源
当您不再需要上述通过Terraform创建的资源时,请执行以下命令释放资源。
舰队中的argocd_enabled
属性必须为false
才可以释放资源。
terraform destroy