All Products
Search
Document Center

Container Compute Service:Buat kluster ACS menggunakan Terraform

Last Updated:Jun 03, 2026

Buat kluster ACS dengan mendefinisikan infrastruktur sebagai kode menggunakan Terraform.

Prasyarat

  • Anda telah mengaktifkan Container Compute Service ACS.

  • Akun Alibaba Cloud Anda harus memiliki izin penuh atas semua sumber daya. Jika kredensial akun Alibaba Cloud Anda bocor, Anda mungkin menghadapi risiko keamanan yang signifikan. Kami menyarankan agar Anda menggunakan pengguna Resource Access Management (RAM) dan membuat AccessKey untuk pengguna RAM tersebut. Untuk informasi selengkapnya, lihat Buat pengguna RAM dan Buat AccessKey.

  • Lampirkan kebijakan hak istimewa minimal berikut ke pengguna RAM yang Anda gunakan untuk menjalankan perintah Terraform. Kebijakan ini memberikan izin kepada pengguna RAM untuk mengelola sumber daya dalam contoh ini. Untuk informasi selengkapnya, lihat Kelola izin pengguna RAM.

    Kebijakan ini memberikan izin kepada pengguna RAM untuk membuat, melihat, dan menghapus kluster ACS serta sumber daya cloud dependennya.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "cs:CreateCluster",
            "cs:DescribeTaskInfo",
            "cs:DescribeClusterDetail",
            "cs:GetClusterCerts",
            "cs:CheckControlPlaneLogEnable",
            "cs:DeleteCluster",
            "cs:GetClusterAuditProject",
            "cs:ModifyCluster",
            "vpc:DescribeNatGateways"
          ],
          "Resource": "*"
        }
      ]
    }
  • Siapkan lingkungan runtime Terraform menggunakan salah satu metode berikut.

    Penting

    Diperlukan Terraform versi 0.12.28 atau lebih baru. Jalankan terraform --version untuk memverifikasi.

Sumber daya yang digunakan

Catatan

Hapus sumber daya ini jika tidak lagi diperlukan untuk menghindari biaya tak terduga.

Buat kluster ACS menggunakan Terraform

Contoh berikut membuat kluster ACS dengan addon bawaan: alibaba-log-controller (logging), arms-prometheus (monitoring), managed-coredns (DNS), dan managed-metrics-server (metrik).

  1. Buat direktori kerja dengan file bernama main.tf. Salin kode berikut ke dalam main.tf dan sesuaikan sesuai kebutuhan.

provider "alicloud" {
  region      = var.region_id
}
variable "region_id" {
  type        = string
  default     = "cn-guangzhou"
}
variable "availability_zone" {
  type        = list(string)
  description = "Zona ketersediaan vSwitch."
  default     = ["cn-guangzhou-a", "cn-guangzhou-b"]
}
variable "k8s_name_prefix" {
  description = "Awalan nama yang digunakan untuk membuat kluster ACS."
  default     = "acs-example"
}
variable "acs_version" {
  type        = string
  description = "Versi Kubernetes yang diinginkan."
  default     = "1.31.1-aliyun.1"      # Sesuaikan nilai ini sesuai kebutuhan.
}
variable "service_cidr" {
  type        = string
  description = "Blok CIDR untuk layanan Kubernetes."
  default     = "10.13.0.0/16"      # Sesuaikan nilai ini sesuai kebutuhan.
}

# Menentukan addon yang akan diinstal di kluster ACS, termasuk alibaba-log-controller (logging), arms-prometheus (monitoring), managed-coredns, dan managed-metrics-server.
variable "cluster_addons" {   # Sesuaikan nilai ini sesuai kebutuhan.
  type = list(object({
    name   = string
    config = string
  }))
  default = [
    {
      "name"   = "arms-prometheus",
      "config" = "",
    },
    {
      "name"   = "alibaba-log-controller",
      "config" = "",
    },
    {
      "name"   = "managed-coredns",
      "config" = "",
    },
    {
      "name"   = "managed-metrics-server",
      "config" = "",
    }
  ]
}
# Nama sumber daya bawaan.
locals {
  k8s_name_acs     = substr(join("-", [var.k8s_name_prefix, "acs"]), 0, 63)
  log_project_name = "log-for-${local.k8s_name_acs}"
}

# Membuat kluster ACS.
resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = local.k8s_name_acs   # Nama kluster Kubernetes.
  cluster_spec                 = "ack.pro.small"
  profile                      = "Acs"
  version                      = var.acs_version
  zone_ids                     = var.availability_zone
  is_enterprise_security_group = true
  control_plane_log_ttl        = "30"    
  new_nat_gateway              = true   # Menentukan apakah akan membuat gerbang NAT baru saat membuat kluster Kubernetes. Nilai bawaan: true.                                                           
  control_plane_log_components = ["apiserver", "kcm", "scheduler", "ccm"] # Komponen lapisan kontrol yang log-nya ingin Anda kumpulkan.
  deletion_protection          = true
  # Mengonfigurasi ServiceAccount menggunakan RRSA.
  enable_rrsa                  = true
  timezone                     = "Asia/Shanghai"
  service_cidr                 = var.service_cidr  # Sesuaikan nilai ini sesuai kebutuhan.
  slb_internet_enabled         = false  # Menentukan apakah akan membuat load balancer yang menghadap internet untuk server API. Nilai bawaan: false.
  dynamic "addons" {  # Manajemen addon.
    for_each = var.cluster_addons
    content {
      name   = lookup(addons.value, "name", var.cluster_addons)
      config = lookup(addons.value, "config", var.cluster_addons)
    }
  }
}
Catatan

Konfigurasi ini hanya untuk referensi. Sesuaikan sesuai kebutuhan.

  1. Inisialisasi lingkungan runtime Terraform.

terraform init

Output yang diharapkan jika berhasil:

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.

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.
  1. Buat rencana eksekusi dan pratinjau perubahan.

terraform plan
  1. Buat kluster.

terraform apply

Masukkan yes saat diminta dan tekan Enter. Output yang diharapkan jika berhasil:

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 5m48s [id=ccb53e72ec6c447c990762800********]
...

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

Terraform show

Lihat sumber daya yang dibuat oleh Terraform.

terraform show

Konsol ACS

Masuk ke Konsol Container Compute Service untuk melihat kluster yang telah dibuat.

Bersihkan sumber daya

Jalankan terraform destroy untuk melepas sumber daya yang tidak lagi Anda perlukan. Perintah terraform destroy didokumentasikan di Perintah Umum.

terraform destroy