すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Terraform を使用して関連付けられたクラスターを Fleet インスタンスに追加する

最終更新日:Mar 12, 2025

このトピックでは、Terraform を使用して関連付けられたクラスターを Fleet インスタンスに追加する方法について説明します。

前提条件

  • AccessKey ペアが、ログインする Resource Access Management (RAM) ユーザーに対して作成されています。

    説明

    デフォルトでは、Alibaba Cloud アカウントは、このアカウントに属するすべてのリソースに対する完全な権限を持っています。資格情報が侵害された場合の潜在的なセキュリティリスクを最小限に抑えるために、リソース権限が制限された RAM アカウントを使用することをお勧めします。

  • Terraform でコマンドを実行するために使用する RAM ユーザーには、次のポリシーがアタッチされています。このポリシーには、Terraform でコマンドを実行するために必要な最小限の権限が含まれています。詳細については、「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 を使用する: Alibaba Cloud は、Terraform 用のオンラインランタイム環境を提供しています。環境にログインして、Terraform をインストールせずに使用できます。低コスト、効率的、かつ便利な方法で Terraform を使用およびデバッグする必要があるシナリオに適しています。

    • Cloud Shell で Terraform を使用する: Cloud Shell には Terraform がプリインストールされており、ID 資格情報が構成されています。Cloud Shell で Terraform コマンドを実行できます。低コスト、効率的、かつ便利な方法で Terraform を使用およびアクセスする必要があるシナリオに適しています。

    • オンプレミスマシンに Terraform をインストールして構成する: ネットワーク接続が不安定な場合や、カスタム開発環境が必要な場合に適しています。

  • Fleet インスタンスを作成するには、現在のアカウントに ACK クラスタが存在している必要があります。

使用されるリソース

Terraform を使用して ACK マネージドクラスターを ACK One Fleet インスタンスに関連付ける

説明

この例では、ACK マネージドクラスターと ACK One Fleet インスタンスを作成し、ACK マネージドクラスターを ACK One Fleet インスタンスに関連付けます。

  1. 作業ディレクトリを作成し、main.tf という名前の構成ファイルを追加します。次に、次のコードを main.tf にコピーします。

    provider "alicloud" {
      region = "cn-hangzhou"
    }
    # 利用可能なゾーンを指定します。
    variable "name" {
      default = "terraform-example"
    }
    
    variable "key_name" {
      default = "%s"
    }
    
    data "alicloud_enhanced_nat_available_zones" "enhanced" {
    }
    # 指定された条件を満たす ECS インスタンスタイプをクエリします。
    data "alicloud_instance_types" "cloud_efficiency" {
      availability_zone    = data.alicloud_enhanced_nat_available_zones.enhanced.zones.0.zone_id
      cpu_core_count       = 4
      memory_size          = 8
      kubernetes_node_role = "Worker"
      system_disk_category = "cloud_efficiency"
    }
    # VPC を作成します。
    resource "alicloud_vpc" "default" {
      cidr_block = "10.4.0.0/16"
    }
    # vSwitch を作成します。
    resource "alicloud_vswitch" "default" {
      cidr_block = "10.4.0.0/24"
      vpc_id     = alicloud_vpc.default.id
      zone_id    = data.alicloud_enhanced_nat_available_zones.enhanced.zones.0.zone_id
    }
    # ACK マネージドクラスターを作成します。
    resource "alicloud_cs_managed_kubernetes" "default" {
      cluster_spec         = "ack.pro.small"
      vswitch_ids          = [alicloud_vswitch.default.id]
      new_nat_gateway      = true
      pod_cidr             = cidrsubnet("10.0.0.0/8", 8, 36)
      service_cidr         = cidrsubnet("172.16.0.0/16", 4, 7)
      slb_internet_enabled = true
    
      is_enterprise_security_group = true
    }
    
    resource "alicloud_key_pair" "default" {
      key_pair_name = var.key_name
    }
    # ACK マネージドクラスターのノードプールを作成します。
    resource "alicloud_cs_kubernetes_node_pool" "default" {
      node_pool_name       = var.name
      cluster_id           = alicloud_cs_managed_kubernetes.default.id
      vswitch_ids          = [alicloud_vswitch.default.id]
      instance_types       = [data.alicloud_instance_types.cloud_efficiency.instance_types.0.id]
      system_disk_category = "cloud_efficiency"
      system_disk_size     = 40
      key_name             = alicloud_key_pair.default.key_pair_name
      desired_size         = 1
    }
    # ACK One Fleet インスタンスを作成します。
    resource "alicloud_ack_one_cluster" "default" {
      depends_on = [alicloud_cs_managed_kubernetes.default]
      network {
        vpc_id    = alicloud_vpc.default.id
        vswitches = [alicloud_vswitch.default.id]
      }
      argocd_enabled = false
    }
    # ACK マネージドクラスターを Fleet インスタンスに関連付けます。
    resource "alicloud_ack_one_membership_attachment" "default" {
      cluster_id     = alicloud_ack_one_cluster.default.id
      sub_cluster_id = alicloud_cs_managed_kubernetes.default.id
    }
  2. 次のコマンドを実行して、Terraform のランタイム環境を初期化します。

    terraform init
  3. 次のコマンドを実行して、実行計画を作成およびプレビューします。

    terraform plan
  4. 次のコマンドを実行して、リソースを作成します。

    terraform apply

    実行中に、プロンプトが表示されたら yes と入力し、Enter キーを押します。コマンドが完了するまで待ちます。次のメッセージが表示されたら、作成は成功です。

    Apply complete! Resources: 7 added, 0 changed, 0 destroyed.
  5. 次のコマンドを実行して結果を確認します。 ACK One コンソール にログインして、作成された Fleet 情報を表示することもできます。

    terraform show

リソースのクリア

Terraform によって作成されたリソースが不要になった場合は、次のコマンドを実行して解放します。

重要

リソースを解放する前に、Fleet インスタンスの argocd_enabled パラメーターを false に設定する必要があります。

terraform destroy