All Products
Search
Document Center

Container Compute Service:Buat kluster ACS dengan Terraform

Last Updated:Nov 09, 2025

Topik ini menjelaskan cara membuat kluster ACS menggunakan Terraform.

Prasyarat

  • Container Compute Service (ACS) telah diaktifkan.

  • Pasangan Kunci Akses dibuat untuk Pengguna RAM yang digunakan untuk masuk.

    Catatan

    Secara default, akun Alibaba Cloud memiliki izin penuh atas semua sumber daya yang dimiliki oleh akun tersebut. Kami merekomendasikan penggunaan akun RAM karena memberikan izin terbatas pada sumber daya, meminimalkan risiko keamanan jika kredensial Anda terganggu.

  • Kebijakan berikut dilampirkan ke pengguna RAM yang digunakan untuk menjalankan perintah Terraform. Kebijakan ini mencakup izin minimum yang diperlukan untuk menjalankan perintah Terraform. Untuk informasi lebih lanjut, lihat Berikan izin kepada pengguna RAM.

    Kebijakan ini mengizinkan pengguna RAM untuk membuat, melihat, dan menghapus kluster ACS serta sumber daya cloud yang bergantung.

    {
      "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 Terraform. Anda dapat menggunakan salah satu metode berikut untuk menggunakan Terraform:

    • Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan lingkungan online untuk Terraform. Anda tidak perlu menginstal Terraform. Anda dapat masuk dan menggunakan Terraform secara langsung. Metode ini cocok untuk skenario di mana Anda perlu menggunakan dan men-debug Terraform tanpa biaya, efisien, dan nyaman.

    • Shell Awan: Komponen Terraform telah dipra-instal di Shell Awan Alibaba Cloud, dan kredensial identitas telah dikonfigurasi. Anda dapat langsung menjalankan perintah Terraform di Shell Awan. Metode ini cocok untuk skenario di mana Anda perlu menggunakan dan mengakses Terraform dengan biaya rendah, efisien, dan nyaman.

      • Untuk pengguna atau peran RAM menggunakan Shell Awan, akun Alibaba Cloud harus memberikan izin kepada pengguna atau peran RAM. Untuk informasi lebih lanjut, lihat Manajemen identitas.

    • Gunakan Terraform di Resource Orchestration Service (ROS): ROS menyediakan kemampuan terkelola untuk Terraform. Anda dapat membuat template Terraform untuk mendefinisikan sumber daya di Alibaba Cloud, AWS, atau Azure, serta mengonfigurasi parameter sumber daya dan dependensi antar sumber daya.

    • Instal dan konfigurasikan Terraform secara lokal: Metode ini cocok untuk skenario dengan konektivitas jaringan yang buruk atau ketika Anda perlu menyesuaikan lingkungan pengembangan.

    Penting

    Anda harus menginstal Terraform versi 0.12.28 atau yang lebih baru. Untuk memeriksa versi saat ini, jalankan perintah terraform --version.

Sumber Daya

Catatan

Biaya akan dikenakan untuk sumber daya tertentu dalam contoh ini. Lepaskan atau berhenti berlangganan dari sumber daya tersebut ketika Anda tidak lagi membutuhkannya.

Buat kluster ACS dengan Terraform

Contoh ini membuat kluster ACS dengan beberapa komponen default yang diinstal, termasuk managed-csiprovisioner (komponen penyimpanan), ebs-token-controller (komponen penyimpanan), alibaba-log-controller (komponen pengumpulan log), dan arms-prometheus (komponen pemantauan).

  1. Buat direktori kerja dan file konfigurasi bernama main.tf di direktori tersebut. Salin kode berikut ke main.tf dan modifikasi 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 vswitches."
  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"      # Modifikasi sesuai kebutuhan
}
variable "service_cidr" {
  type        = string
  description = "CIDR layanan Kubernetes. "
  default     = "10.13.0.0/16"      # Modifikasi sesuai kebutuhan
}

# Tentukan komponen yang akan diinstal di kluster ACS. Termasuk alibaba-log-controller (komponen pengumpulan log), arms-prometheus (komponen pemantauan), managed-coredns, managed-metrics-server.
variable "cluster_addons" {   # Modifikasi 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 default.
locals {
  k8s_name_acs     = substr(join("-", [var.k8s_name_prefix, "acs"]), 0, 63)
  log_project_name = "log-for-${local.k8s_name_acs}"
}

# Buat 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 # Ganti dengan versi kluster yang ingin Anda buat. 
  zone_ids                     = var.availability_zone
  is_enterprise_security_group = true
  control_plane_log_ttl        = "30"    
  new_nat_gateway              = true   # Menentukan apakah akan membuat Gateway NAT baru saat membuat kluster Kubernetes. Nilai default: true.                                                           
  control_plane_log_components = ["apiserver", "kcm", "scheduler", "ccm"] # Log lapisan kontrol.
  deletion_protection          = true
  # Aktifkan fitur RAM Roles for Service Accounts (RRSA) untuk mengonfigurasi akun layanan.
  enable_rrsa                  = true
  timezone                     = "Asia/Shanghai"
  service_cidr                 = var.service_cidr  # Modifikasi sesuai kebutuhan
  slb_internet_enabled         = false  # Menentukan apakah akan membuat Server Load Balancer yang menghadap Internet untuk server API. Nilai default: false.
  dynamic "addons" {  # Manajemen komponen.
    for_each = var.cluster_addons
    content {
      name   = lookup(addons.value, "name", var.cluster_addons)
      config = lookup(addons.value, "config", var.cluster_addons)
    }
  }
}
Catatan

File konfigurasi ini hanya untuk referensi. Modifikasi sesuai kebutuhan Anda.

  1. Jalankan perintah berikut untuk menginisialisasi Terraform:

terraform init

Jika informasi berikut ditampilkan, Terraform telah diinisialisasi:

Terraform telah berhasil diinisialisasi!

Anda sekarang dapat mulai bekerja dengan Terraform. Coba jalankan "terraform plan" untuk melihat
perubahan apa pun yang diperlukan untuk infrastruktur Anda. Semua perintah Terraform
seharusnya sekarang berfungsi.

Jika Anda pernah mengatur atau mengubah modul atau konfigurasi backend untuk Terraform,
jalankan ulang perintah ini untuk menginisialisasi ulang direktori kerja Anda. Jika Anda lupa, perintah lain
akan mendeteksinya dan mengingatkan Anda untuk melakukannya jika perlu.
  1. Buat rencana eksekusi dan pratinjau perubahan.

terraform plan
  1. Jalankan perintah berikut untuk membuat kluster:

terraform apply

Selama eksekusi, masukkan yes ketika diminta dan tekan Enter. Tunggu hingga perintah selesai. Jika informasi berikut ditampilkan, kluster ACS berhasil dibuat.

Apakah Anda ingin melakukan tindakan ini?
  Terraform akan melakukan tindakan yang dijelaskan di atas.
  Hanya 'yes' yang akan diterima untuk menyetujui.

  Masukkan nilai: yes

...
alicloud_cs_managed_kubernetes.default: Pembuatan selesai setelah 5m48s [id=ccb53e72ec6c447c990762800********]
...

Terapkan selesai! Sumber daya: 1 ditambahkan, 0 diubah, 0 dihapus.
  1. Verifikasi hasil

Jalankan perintah terraform show

Anda dapat menggunakan perintah berikut untuk menanyakan informasi rinci tentang sumber daya yang dibuat oleh Terraform.

terraform show

Masuk ke konsol ACS

Masuk ke Konsol Layanan Komputasi Kontainer untuk melihat kluster yang telah dibuat.

Lepaskan sumber daya

Ketika Anda tidak lagi membutuhkan sumber daya yang dibuat atau dikelola oleh Terraform, jalankan perintah terraform destroy untuk melepaskan sumber daya. Untuk informasi lebih lanjut tentang terraform destroy, lihat Perintah umum.

terraform destroy