天天看點

如何使用Terraform管理容器服務Kubernetes叢集之--Serverless叢集

介紹

Terraform 是一款 Infrastructure as Code 的工具,可以将雲端資源代碼化。關于 Terraform 的基本介紹本文不再贅述,有興趣的同學可以參考

《雲生态下的基礎架構資源管理利器Terraform》

等雲栖社群的優秀文章。阿裡雲容器服務團隊也快速在Terraform上支援了Kubernetes叢集的建立。關于标準版和托管版叢集如何使用Terraform 請參考以下文章

前置檢查

  • Terraform v0.12.8+
  • terraform-provider-alicloud 1.58.0+ (早期版本不支援Serverless)

Serverless叢集

首先我們打開《阿裡雲 Terraform Provider 文檔 - Serverless Kubernetes》的幫助文檔,可以看到該資源 Resource 提供的參數清單。參數分為入參 Argument 和出參 Attributes。入參清單内包含了必填參數以及可選參數,例如 name 和 name_prefix 就是一對必填參數,但它們互斥,即不能同時填寫。我們對照文檔中的參數清單 Argument Reference,先草拟出一個叢集的描述,為了友善起見,我把填寫每個參數的理由都注釋在代碼中。

  • 資源描述
# 引入阿裡雲 Terraform Provider
provider "alicloud" {
  # 填入您的賬号的 Access Key
  access_key = "FOO"
  # 填入您的賬号 Secret Key
  secret_key = "BAR"
  # 填入想建立的 Region
  region     = "cn-hangzhou"
  # 可選參數,預設不填就使用最新版本
  version    = "v1.58.0"
}

# 必要的資源辨別
# alicloud_cs_serverless_kubernetes 表明是Serverless版 Kubernetes 叢集
# serverless 代表該資源執行個體的名稱
resource "alicloud_cs_serverless_kubernetes" "serverless" {
  # 叢集名稱,可以帶中劃線,一個賬戶内的叢集名稱不能相同
  name = "tf-serverless-kubernetes-20191017"
  # 叢集所在的VPC
  vpc_id = "vpc-xxxx"
  # 叢集所在的可用區 
  vswitch_id = "vswitch-xxx"
  # 是否配置公網通路能力。如果您目前的交換機已配置SNAT規則,或者通過其他代理的方式可以通路公網,則此處可以設定為false,反之,則設定為true,讓系統來完成通路公網的配置
  new_nat_gateway = true
  # API Server是否具備公網通路能力。如果您想通過公網通路到叢集的Api Server,此處設定為true,反之設定為false
  enndpoint_public_access_enabled = true
  # 是否開啟基于DNS的服務發現機制。通過域名直接通路服務,需要提前開通PrivateZone服務。關于 PrivateZone服務介紹請參閱更多參考裡的内容。
  private_zone = false
  # 是否開啟叢集删除保護。若開啟叢集删除保護,設定為true,此時通過控制台和API均不能釋放叢集,釋放前需要關閉叢集保護。反之為false  
  deletion_protection = false
  # 設定叢集标簽,标簽鍵不可以重複,最長為64位;标簽值可以為空,最長為63位。标簽鍵和标簽值都不能以“aliyun”、“acs:”、“https://”或“http://”開頭。
  tags = {
    "k-aa":"v-aa"
    "k-bb":"v-aa",
  }
}           
  • 資源檢查

    我們可以将以上的配置儲存為一個 main.tf 描述檔案,在該檔案的目前目錄下執行 terraform plan 進行資源檢查

如何使用Terraform管理容器服務Kubernetes叢集之--Serverless叢集
  • 初始化provier

    再檢查正常之後,我們執行 terraform init 先來初始化provider

如何使用Terraform管理容器服務Kubernetes叢集之--Serverless叢集
  • 資源建立

    接下來使用terraform apply 執行建立

如何使用Terraform管理容器服務Kubernetes叢集之--Serverless叢集

此時terraform apply 會根據我們的 main.tf 描述檔案計算出需要執行的操作,上述顯示将會建立一個 alicloud_cs_serverless_kubernetes.serverless 的資源,需要我們輸入 yes 來确認建立。确認建立後,建立大約會耗時三分鐘,terraform 會輸出類似下面的日志。

如何使用Terraform管理容器服務Kubernetes叢集之--Serverless叢集

在指令行中出現如下資訊的時候,表明叢集已建立成功。

如何使用Terraform管理容器服務Kubernetes叢集之--Serverless叢集

此時我們也可以登入控制台後在控叢集清單中看到叢集。

如何使用Terraform管理容器服務Kubernetes叢集之--Serverless叢集
  • 資源釋放

    當我們不再需要該叢集的時候,我們可以執行 terraform destroy 來銷毀資源

如何使用Terraform管理容器服務Kubernetes叢集之--Serverless叢集

總結

通過以上操作我們可以完成Serverless叢集的建立和銷毀工作。但是在實際使用過程中,模闆比這個更加的複雜,例如一些輸入參數是通過變量的方式傳入的,這樣一個模闆可以适配更多的場景,關于如何使用變量以及如何自動建立依賴的資源,可以參考我們的

示例代碼

更多參考

Terraform官網 Terraform Alibaba Provider Terraform Alibaba Provider Serverless Serverless介紹 Terraform系列課程 PrivateZone服務 Labels and Selectors參考 Serverless 示例代碼參考

繼續閱讀