本文介紹如何使用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" # 替換為您叢集所在的地區。
已開通Container Service for KubernetesACK。若需要使用Terraform開通,請參見首次開通ACK並授權角色。
建立工作目錄,並且在工作目錄中建立
variable.tf
設定檔。在Terraform中,variable.tf可以定義輸入變數,用於參數化資源,以便在不同配置中重複使用。這些變數隨後將在main.tf檔案中用於具體的資源配置。
建立1個新的VPC,並建立3個該VPC下的vSwitch、3個Pod vSwitch。
在建立ACK託管叢集時,預設安裝的組件包括:Terway(網路組件)、csi-plugin(儲存群組件)、csi-provisioner(儲存群組件)、logtail-ds(日誌組件)、Nginx Ingress Controller、ack-arms-prometheus(監控組件)、ack-node-problem-detector(節點診斷組件)。
使用Terraform建立ACK託管叢集(Terway)
在前提條件中建立的工作目錄中建立名為main.tf的設定檔。
說明main.tf用來在阿里雲上建立和配置ACK叢集資源。執行建立過程中,
main.tf
檔案會引用variables.tf
檔案中聲明的變數。main.tf設定檔描述了以下的Terraform配置:
建立1個新的VPC,並建立3個該VPC下的vSwitch、3個PodVSwitch。
建立1個ACK託管叢集。
建立1個包含2個節點的託管節點池。
建立1個託管節點池。
關於更多的建立ACK託管叢集配置參數資訊,請參見alicloud_cs_managed_kubernetes。
執行以下命令,初始化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: 12 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: 12 added, 0 changed, 0 destroyed.