Terraformを使用した管理版Kubernetesの作成


現在、アリクラウドコンテナサービスは管理版Kubernetesクラスタを作成することができます.デフォルトのKubernetesクラスタと比較して、管理バージョンは、デフォルトのクラスタの3つのノードを排除し、必要な資金コストとメンテナンス時の人件費を節約するために、高可用性のMasterコンポーネントをアクティブに維持します.コンテナ・サービス・コンソールでは、使いやすいビジュアル・インタフェースを提供し、このタイプのクラスタを一歩一歩誘導的に作成します.しかし、管理版クラスタを繰り返し作成したり、クラスタを大量に作成したり、コンソールの手動操作に生まれつき抵抗している人であれば、Terraformを理解して使用してみてください.
Terraformは、クラウドリソースをコード化するためのCodeとしてのInfrastructureのツールです.Terraformについての基本的な紹介本稿では後述しないが、興味のある学生は「クラウド生態下のインフラストラクチャ資源管理利器Terraform」などのクラウドコミュニティの優れた文章を参考にすることができる.現在、私たちはずっとアリクラウドTerraform Providerをサポートしており、アリクラウド上のほとんどのクラウド製品のドッキングを実現しています.
2018年のクリスマスを前に、アリ雲Terraform Providerはv 1を発表した.26.0リリースでは、管理版Kubernetesクラスタの作成がサポートされています.コマンドラインの迅速な導入方法について説明します.
管理版Kubernetesクラスタの作成
まず、「アリクラウドTerraform Providerドキュメント-管理版Kubernetes」のヘルプドキュメントを開き、リソースリソースが提供するパラメータのリストを表示します.パラメータには、パラメータとパラメータのプロパティがあります.入力リストには、名前やname_などの必須パラメータとオプションパラメータが含まれています.prefixは必須の書き込みですが、互いに反発し、同時に記入できません.名前が記入されている場合、クラスタ名は名前の値であり、name_が記入されている場合prefix、クラスタ名はname_prefixの先頭に自動的に1つが生成されます.ドキュメントのパラメータリストArgument Referenceと照らし合わせて、まずクラスタの説明を作成し、便宜上、各パラメータを記入する理由をコードに注釈します.
#       Terraform Provider
provider "alicloud" {
  #        Access Key
  access_key = "FOO"
  #        Secret Key
  secret_key = "BAR"
  #        Region
  region     = "cn-hangzhou"
  #     ,           
  version    = "v1.26.0"
}

#        
# alicloud_cs_managed_kubernetes        Kubernetes   
# k8s           
resource "alicloud_cs_managed_kubernetes" "k8s" {
  #     ,      ,              
  name = "test-managed-kubernetes"
  #     ECS              ,      ECS       
  #      Worker        cn-hangzhou-h      ,   ecs.c5.xlarge     。
  availability_zone = "cn-hangzhou-h"
  worker_instance_types = ["ecs.c5.xlarge"]
  #       Worker      2  ,          
  worker_numbers = [2]
  # Worker         
  worker_disk_category  = "cloud_efficiency"
  #     true,   VPC       Nat      ECS      
  new_nat_gateway = true
  #      ECS     Root   ,          key_name   ,       
  password = "Test12345"
  # Kubernetes       Pod        ,    service_cidr   ECS       
  #       VPC   192.168.0.0/16       ,   pod_cidr   service_cidr      172   
  #     VPC  Kubernetes         
  pod_cidr = "172.20.0.0/16"
  service_cidr = "172.21.0.0/20"
  #        
  install_cloud_monitor = true
}

以上の構成をmainとして保存できます.tfは、terraform initおよびterraform applyを現在のディレクトリの下で実行するファイルを記述する.
xh4n3@xh4n3:~/ops/terraform-example% terraform init --get-plugins=true -upgrade

Initializing provider plugins...
- Checking for available provider plugins on https://releases.hashicorp.com...
- Downloading plugin for provider "alicloud" (1.26.0)...

Terraform has been successfully initialized!

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.

xh4n3@xh4n3:~/ops/terraform-example% terraform apply

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  + alicloud_cs_managed_kubernetes.k8s
      id:                          
      availability_zone:           "cn-hangzhou-h"
      install_cloud_monitor:       "true"
      name:                        "test-managed-kubernetes"
      name_prefix:                 "Terraform-Creation"
      new_nat_gateway:             "true"
      password:                    
      pod_cidr:                    "172.20.0.0/16"
      security_group_id:           
      service_cidr:                "172.21.0.0/20"
      vpc_id:                      
      vswitch_ids.#:               
      worker_disk_category:        "cloud_efficiency"
      worker_disk_size:            "40"
      worker_instance_charge_type: "PostPaid"
      worker_instance_types.#:     "1"
      worker_instance_types.0:     "ecs.c5.xlarge"
      worker_nodes.#:              
      worker_numbers.#:            "1"
      worker_numbers.0:            "2"

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value:

上記のログから、terraform initは私たちが使っているプロバイダプラグインをダウンロードし、terraform applyは私たちのmainに基づいています.tf記述ファイルは実行する必要がある操作を計算し、上記の表示はalicloud_を作成します.cs_managed_kubernetes.k 8 sのリソースは、作成を確認するために入力する必要があります.作成を確認すると、作成に約5分かかり、terraformは次のようなログを出力します.
#     
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.k8s: Creating...
  availability_zone:           "" => "cn-hangzhou-h"
  install_cloud_monitor:       "" => "true"
  name:                        "" => "test-managed-kubernetes"
  name_prefix:                 "" => "Terraform-Creation"
  new_nat_gateway:             "" => "true"
  password:                    "" => ""
  pod_cidr:                    "" => "172.20.0.0/16"
  security_group_id:           "" => ""
  service_cidr:                "" => "172.21.0.0/20"
  vpc_id:                      "" => ""
  vswitch_ids.#:               "" => ""
  worker_disk_category:        "" => "cloud_efficiency"
  worker_disk_size:            "" => "40"
  worker_instance_charge_type: "" => "PostPaid"
  worker_instance_types.#:     "" => "1"
  worker_instance_types.0:     "" => "ecs.c5.xlarge"
  worker_nodes.#:              "" => ""
  worker_numbers.#:            "" => "1"
  worker_numbers.0:            "" => "2"
alicloud_cs_managed_kubernetes.k8s: Still creating... (10s elapsed)
alicloud_cs_managed_kubernetes.k8s: Still creating... (20s elapsed)
alicloud_cs_managed_kubernetes.k8s: Still creating... (30s elapsed)
#     
alicloud_cs_managed_kubernetes.k8s: Creation complete after 6m5s (ID: cc54df7d990a24ed18c1e0ebacd36418c)

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

申請が完了したら!リソース:1文字を追加すると、クラスタが正常に作成され、コンソールにログインしてクラスタリストにクラスタが表示されます.
管理版Kubernetesクラスタの変更
Terraform Providerでは、パラメータの一部の修正機能を提供しています.一般的には、Force New Resource以外のすべてのパラメータを変更できます.次に、更新された項目にコメントするパラメータの一部を変更します.
provider "alicloud" {
  access_key = "FOO"
  secret_key = "BAR"
  region     = "cn-hangzhou"
  version    = "v1.26.0"
}

resource "alicloud_cs_managed_kubernetes" "k8s" {
  #          test-managed-kubernetes-updated
  name = "test-managed-kubernetes-updated"
  availability_zone = "cn-hangzhou-h"
  worker_instance_types = ["ecs.c5.xlarge"]
  #    worker_numbers   3,       worker   
  worker_numbers = [3]
  worker_disk_category  = "cloud_efficiency"
  new_nat_gateway = true
  password = "Test12345"
  pod_cidr = "172.20.0.0/16"
  service_cidr = "172.21.0.0/20"
  install_cloud_monitor = true
  #              /tmp   
  kube_config = "/tmp/config"
  #              /tmp   ,  
  client_cert = "/tmp/client-cert.pem"
  client_key = "/tmp/client-key.pem"
  cluster_ca_cert = "/tmp/cluster-ca-cert.pem"
}

クラスタの作成と同様に、クラスタを変更するときに使用するコマンドもterraform applyです.実行後、次のログ出力を取得し、「Yes」と入力して車に戻ると、クラスタの名前をtest-managed-kubernetes-updatedに変更し、workerノードを3ノードに拡張し、エクスポート証明書と接続ファイルをホストの/tmpディレクトリにエクスポートできます.
xh4n3@xh4n3:~/ops/terraform-example% terraform apply
alicloud_cs_managed_kubernetes.k8s: Refreshing state... (ID: cc54df7d990a24ed18c1e0ebacd36418c)

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  ~ update in-place

Terraform will perform the following actions:

  ~ alicloud_cs_managed_kubernetes.k8s
      client_cert:      "" => "/tmp/client-cert.pem"
      client_key:       "" => "/tmp/client-key.pem"
      cluster_ca_cert:  "" => "/tmp/cluster-ca-cert.pem"
      kube_config:      "" => "/tmp/config"
      name:             "test-managed-kubernetes" => "test-managed-kubernetes-updated"
      worker_numbers.0: "2" => "3"

Plan: 0 to add, 1 to change, 0 to destroy.

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.k8s: Modifying... (ID: cc54df7d990a24ed18c1e0ebacd36418c)
  client_cert:      "" => "/tmp/client-cert.pem"
  client_key:       "" => "/tmp/client-key.pem"
  cluster_ca_cert:  "" => "/tmp/cluster-ca-cert.pem"
  kube_config:      "" => "/tmp/config"
  name:             "test-managed-kubernetes" => "test-managed-kubernetes-updated"
  worker_numbers.0: "2" => "3"
alicloud_cs_managed_kubernetes.k8s: Still modifying... (ID: cc54df7d990a24ed18c1e0ebacd36418c, 10s elapsed)
alicloud_cs_managed_kubernetes.k8s: Still modifying... (ID: cc54df7d990a24ed18c1e0ebacd36418c, 20s elapsed)
alicloud_cs_managed_kubernetes.k8s: Still modifying... (ID: cc54df7d990a24ed18c1e0ebacd36418c, 30s elapsed)
#     
alicloud_cs_managed_kubernetes.k8s: Modifications complete after 4m4s (ID: cc54df7d990a24ed18c1e0ebacd36418c)

Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Terraformが正常に動作した後、コンソールに表示されるクラスタ情報は、クラスタが所望の状態になったことを示しています.本機では,エクスポートした接続ファイルを介してkubectlでクラスタに接続する.
ふろく
コンソール管理版Kubernetesクラスタヘルプドキュメントの作成https://help.aliyun.com/document_detail/95108.htmlクラウドエコ下のインフラストラクチャリソースマネージャTerraformhttps://yq.aliyun.com/articles/215592アリクラウドTerraformプロバイダコードライブラリhttps://github.com/terraform-providers/terraform-provider-alicloudアリクラウドTerraformプロバイダドキュメントhttps://www.terraform.io/docs/providers/alicloud/index.htmlアリクラウドTerraform Providerドキュメント-管理版Kuberneteshttps://www.terraform.io/docs/providers/alicloud/r/cs_managed_kubernetes.htmlVPC下Kubernetesのネットワークアドレスセグメント計画https://help.aliyun.com/document_detail/86500.htmlTerraformコンテナサービスKubernetesクラスタおよびWordPressのアプリケーションの導入https://yq.aliyun.com/articles/641627
著者:予栖.
原文を読む
本文は雲栖コミュニティのオリジナル内容で、許可を得ずに転載してはならない.