本文介绍如何使用Terraform创建ACK专有集群。
前提条件
前提条件
已安装Terraform
说明请确保版本不低于v0.12.28。如需检查现有版本,请运行
terraform --version
命令。安装配置方式如下:
使用Cloud Shell,其环境已默认安装配置了Terraform和阿里云账号信息,无需任何额外配置。关于如何使用Cloud Shell,请参见在Cloud Shell中使用Terraform。
如需在本地使用Terraform,请参见在本地安装和配置Terraform。
配置阿里云账号信息。
执行如下命令,创建环境变量,用于存放身份认证信息。
阿里云账号(主账号)对账号中的资源具有完全管理权限,一旦泄露风险极大。推荐您创建一个名为Terraform的RAM用户,并为该RAM用户创建AccessKey和授权。具体操作,请参见创建RAM用户和为RAM用户授权。
Linux环境
export ALICLOUD_ACCESS_KEY="************" # 替换为阿里云账号的AK信息。 export ALICLOUD_SECRET_KEY="************" # 替换为阿里云账号的SK信息。 export ALICLOUD_REGION="cn-beijing" # 替换为您集群所在的地域。
Windows环境
set ALICLOUD_ACCESS_KEY="************" # 替换为阿里云账号的AK信息。 set ALICLOUD_SECRET_KEY="************" # 替换为阿里云账号的SK信息。 set ALICLOUD_REGION="cn-beijing" # 替换为您集群所在的地域。
已开通容器服务 Kubernetes 版ACK。若需要使用Terraform开通,请参见首次开通ACK并授权默认角色。
创建工作目录,并在工作目录中创建
variable.tf
配置文件。在Terraform中,variable.tf可以定义输入变量,用于参数化资源,以便在不同配置中重复使用。这些变量随后将在main.tf文件中用于具体的资源配置。
下面是一个variable.tf文件的示例:
创建1个新的VPC,并创建3个该VPC下的vSwitch、3个Pod vSwitch。
在创建ACK集群中,默认安装的组件有:Terway(网络组件)、csi-plugin(存储组件)、csi-provisioner(存储组件)、logtail-ds(日志组件)、Nginx Ingress Controller、ack-arms-prometheus(监控组件)。
使用Terraform创建ACK专有集群
本小节以创建一个使用Terway网络组件的ACK专有集群为例。
在前提条件中创建的工作目录中创建名为main.tf的配置文件。
说明main.tf用来在阿里云上创建和配置ACK集群资源。执行创建过程中,
main.tf
文件会引用variables.tf
文件中声明的变量。main.tf文件描述了以下Terraform资源配置:
创建1个新的VPC,并创建3个该VPC下的vSwitch、3个Pod vSwitch。
创建1个ACK专有集群。
创建1个包含2个节点的节点池。
创建1个自动伸缩节点池。
执行以下命令,初始化Terraform运行环境。
terraform init
返回信息如下,Terraform初始化成功。
Initializing the backend... Initializing provider plugins... - Checking for available provider plugins... - Downloading plugin for provider "alicloud" (hashicorp/alicloud) 1.90.1... ... You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
执行以下命令,生成资源规划。
terraform plan
返回信息如下,资源规划生成成功。
Refreshing Terraform state in-memory prior to plan... The refreshed state will be used to calculate this plan, but will not be persisted to local or remote state storage. ... Plan: 7 to add, 0 to change, 0 to destroy. ...
执行以下命令,创建集群。
terraform apply
返回信息如下,输入
yes
,按Enter键,集群创建成功。... Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes ... alicloud_cs_managed_kubernetes.default: Creation complete after 8m26s [id=************] Apply complete! Resources: 7 added, 0 changed, 1 destroyed.
使用Terraform删除ACK专有集群
您可以执行以下命令,删除通过Terraform创建的集群。
terraform destroy
返回信息如下,输入yes,按Enter键,集群删除成功。
...
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
...
Destroy complete! Resources: 7 destroyed.
相关文档
创建ACK专有集群时需要安装额外组件,请参见使用Terraform管理组件。
关于节点池创建的更多内容,请参见使用Terraform创建具备自动伸缩功能的节点池。