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.
-
Gunakan Terraform di Terraform Explorer: Lingkungan Terraform berbasis browser yang tidak memerlukan instalasi. Cocok untuk uji coba cepat tanpa biaya dan debugging.
-
Gunakan Terraform untuk membuat sumber daya secara cepat: Cloud Shell dilengkapi Terraform yang telah dipra-instal dan kredensial yang telah dikonfigurasi. Cara praktis dan hemat biaya untuk menjalankan Terraform tanpa perlu penyiapan.
-
Untuk menggunakan Cloud Shell sebagai pengguna atau role RAM, akun Alibaba Cloud harus memberikan izin yang diperlukan. Manajemen identitas.
-
-
Gunakan Terraform di Resource Orchestration Service (ROS): ROS mengelola eksekusi Terraform. Buat templat jenis Terraform untuk mendefinisikan sumber daya Alibaba Cloud, AWS, atau Azure dengan parameter dan dependensi.
-
Instal dan konfigurasi Terraform secara lokal: Pilihan terbaik untuk lingkungan dengan konektivitas jaringan terbatas atau pengaturan pengembangan kustom.
PentingDiperlukan Terraform versi 0.12.28 atau lebih baru. Jalankan
terraform --versionuntuk memverifikasi. -
Sumber daya yang digunakan
Hapus sumber daya ini jika tidak lagi diperlukan untuk menghindari biaya tak terduga.
-
alicloud_cs_managed_kubernetes: Membuat kluster ACS. Sumber daya ini didasarkan pada sumber daya untuk membuat kluster ACK yang dikelola.
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).
-
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)
}
}
}
Konfigurasi ini hanya untuk referensi. Sesuaikan sesuai kebutuhan.
-
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.
-
Buat rencana eksekusi dan pratinjau perubahan.
terraform plan
-
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.
-
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