Terraform adalah alat open source yang memungkinkan Anda untuk secara aman dan efisien melihat pratinjau, mengonfigurasi, serta mengelola infrastruktur cloud dan sumber daya. Anda dapat menggunakan Terraform untuk otomatisasi pembuatan, pembaruan, serta pengelolaan versi infrastruktur dan sumber daya Alibaba Cloud sesuai kebutuhan. Topik ini menjelaskan cara menggunakan Terraform untuk membuat kluster ACK Edge.
Anda dapat menjalankan kode contoh dalam topik ini hanya dengan beberapa klik. Untuk informasi lebih lanjut, kunjungi Terraform Explorer.
Prasyarat
ACK Edge telah diaktifkan.
Sebuah pasangan AccessKey telah dibuat untuk pengguna Resource Access Management (RAM) yang digunakan untuk masuk.
CatatanSecara default, akun Alibaba Cloud memiliki izin penuh atas semua sumber daya yang dimiliki oleh akun tersebut. Kami menyarankan untuk menggunakan akun RAM karena menyediakan izin terbatas, meminimalkan risiko keamanan potensial jika kredensial Anda terganggu.
Kebijakan berikut dilampirkan ke pengguna RAM yang Anda gunakan untuk menjalankan perintah di Terraform. Kebijakan ini mencakup izin minimum yang diperlukan untuk menjalankan perintah di Terraform. Untuk informasi lebih lanjut, lihat Memberikan izin kepada pengguna RAM.
Kebijakan ini memungkinkan pengguna Resource Access Management (RAM) untuk membuat, melihat, dan menghapus virtual private clouds (VPCs), vSwitches, serta kluster Container Service for Kubernetes (ACK).
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "vpc:CreateVpc", "vpc:CreateVSwitch", "cs:CreateCluster", "vpc:DescribeVpcAttribute", "vpc:DescribeVSwitchAttributes", "vpc:DescribeRouteTableList", "vpc:DescribeNatGateways", "cs:DescribeTaskInfo", "cs:DescribeClusterDetail", "cs:GetClusterCerts", "cs:CheckControlPlaneLogEnable", "cs:CreateClusterNodePool", "cs:DescribeClusterNodePoolDetail", "cs:DescribeClusterNodePools", "cs:ScaleOutCluster", "cs:DescribeClusterNodes", "vpc:DeleteVpc", "vpc:DeleteVSwitch", "cs:DeleteCluster", "cs:DeleteClusterNodepool" ], "Resource": "*" } ] }Lingkungan runtime untuk Terraform disiapkan dengan menggunakan salah satu metode berikut:
Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan lingkungan runtime online untuk Terraform. Anda dapat masuk ke lingkungan tersebut dan menggunakan Terraform tanpa perlu menginstalnya. Cocok untuk skenario di mana Anda perlu menggunakan dan men-debug Terraform secara hemat biaya, efisien, dan nyaman.
Gunakan Terraform di Cloud Shell: Cloud Shell sudah diinstal sebelumnya dengan Terraform dan dikonfigurasi dengan kredensial identitas Anda. Anda dapat menjalankan perintah Terraform di Cloud Shell. Cocok untuk skenario di mana Anda perlu menggunakan dan mengakses Terraform secara hemat biaya, efisien, dan nyaman.
Instal dan konfigurasikan Terraform di mesin lokal Anda: Cocok untuk skenario di mana koneksi jaringan tidak stabil atau lingkungan pengembangan kustom diperlukan.
PentingAnda harus menginstal Terraform versi 0.12.28 atau yang lebih baru. Anda dapat menjalankan perintah terraform --version untuk memeriksa versi Terraform.
Sumber Daya
Anda akan dikenakan biaya untuk sumber daya tertentu. Jika Anda tidak lagi memerlukan sumber daya tersebut, Anda harus melepaskan atau berhenti berlangganan dari sumber daya tersebut sesegera mungkin.
alicloud_db_zones: meminta zona yang tersedia.
alicloud_instance_types: meminta tipe instance Elastic Compute Service (ECS) yang memenuhi kondisi tertentu.
alicloud_vpc: membuat virtual private cloud (VPC).
alicloud_vswitch: membuat vSwitch di VPC untuk membuat subnet untuk VPC.
alicloud_cs_edge_kubernetes: membuat kluster ACK Edge.
alicloud_cs_kubernetes_node_pool: membuat pool node untuk kluster ACK yang dikelola.
Gunakan Terraform untuk membuat kluster ACK Edge
Buat direktori kerja dan file bernama
main.tfdi direktori tersebut.File
main.tfdigunakan untuk mengonfigurasi pengaturan berikut untuk Terraform:Membuat VPC dan membuat vSwitch di VPC.
Membuat kluster ACK Edge.
Membuat pool node yang berisi dua node.
provider "alicloud" { region = var.region_id } variable "region_id" { default = "cn-hangzhou" } variable "k8s_name_edge" { type = string description = "Nama yang digunakan untuk membuat kluster edge kubernetes." default = "edge-example" } variable "new_vpc_name" { type = string description = "Nama yang digunakan untuk membuat vpc." default = "tf-vpc-172-16" } variable "new_vsw_name" { type = string description = "Nama yang digunakan untuk membuat vSwitch." default = "tf-vswitch-172-16-0" } variable "nodepool_name" { type = string description = "Nama yang digunakan untuk membuat pool node." default = "edge-nodepool-1" } variable "k8s_login_password" { type = string default = "Test123456" } variable "k8s_version" { type = string description = "Versi Kubernetes" default = "1.28.9-aliyun.1" } variable "containerd_runtime_version" { type = string default = "1.6.34" } variable "cluster_spec" { type = string description = "Spesifikasi kluster kubernetes, yang bisa kosong. Nilai valid: ack.standard : Kluster terkelola standar; ack.pro.small : Kluster terkelola profesional." default = "ack.pro.small" } data "alicloud_zones" "default" { available_resource_creation = "VSwitch" available_disk_category = "cloud_efficiency" } data "alicloud_instance_types" "default" { availability_zone = data.alicloud_zones.default.zones.0.id cpu_core_count = 4 memory_size = 8 kubernetes_node_role = "Worker" } resource "alicloud_vpc" "vpc" { vpc_name = var.new_vpc_name cidr_block = "172.16.0.0/12" } resource "alicloud_vswitch" "vsw" { vswitch_name = var.new_vsw_name vpc_id = alicloud_vpc.vpc.id cidr_block = cidrsubnet(alicloud_vpc.vpc.cidr_block, 8, 8) zone_id = data.alicloud_zones.default.zones.0.id } resource "alicloud_cs_edge_kubernetes" "edge" { name = var.k8s_name_edge version = var.k8s_version cluster_spec = var.cluster_spec worker_vswitch_ids = split(",", join(",", alicloud_vswitch.vsw.*.id)) worker_instance_types = [data.alicloud_instance_types.default.instance_types.0.id] password = var.k8s_login_password new_nat_gateway = true pod_cidr = "10.10.0.0/16" service_cidr = "10.12.0.0/16" load_balancer_spec = "slb.s2.small" worker_number = 1 node_cidr_mask = 24 # Runtime kontainer. runtime = { name = "containerd" version = var.containerd_runtime_version } } # Pool node. resource "alicloud_cs_kubernetes_node_pool" "nodepool" { # Nama kluster. cluster_id = alicloud_cs_edge_kubernetes.edge.id # Nama pool node. node_pool_name = var.nodepool_name # vSwitches kluster Kubernetes baru. Tentukan ID satu atau lebih vSwitches. vSwitches harus berada di zona yang ditentukan oleh availability_zone. vswitch_ids = split(",", join(",", alicloud_vswitch.vsw.*.id)) # Tipe instance Elastic Compute Service (ECS) dan metode penagihan. instance_types = [data.alicloud_instance_types.default.instance_types.0.id] instance_charge_type = "PostPaid" # Tentukan nama node kustom. Parameter ini opsional. # node_name_mode = "customized,edge-shenzhen,ip,default" # Runtime kontainer. runtime_name = "containerd" runtime_version = var.containerd_runtime_version # Jumlah node yang diharapkan dalam pool node. desired_size = 2 # Kata sandi yang digunakan untuk masuk ke kluster menggunakan SSH. password = var.k8s_login_password # Tentukan apakah akan menginstal agen CloudMonitor pada node. install_cloud_monitor = true # Jenis disk sistem node. Nilai valid: cloud_ssd dan cloud_efficiency. Nilai default: cloud_efficiency. system_disk_category = "cloud_efficiency" system_disk_size = 100 # Jenis OS. image_type = "AliyunLinux" # Konfigurasi disk data node. data_disks { # Jenis disk data. category = "cloud_efficiency" # Ukuran disk. size = 120 } lifecycle { ignore_changes = [ labels ] } }Jalankan perintah berikut untuk menginisialisasi Terraform:
terraform initJika informasi berikut dikembalikan, Terraform berhasil 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.Buat rencana eksekusi dan pratinjau perubahan.
terraform planJika informasi berikut dikembalikan, rencana eksekusi berhasil. Anda dapat melihat informasi sumber daya.
Memperbarui status Terraform di memori sebelum rencana... Status yang diperbarui akan digunakan untuk menghitung rencana ini, tetapi tidak akan disimpan ke penyimpanan status lokal atau remote. ... Rencana: 4 untuk ditambahkan, 0 untuk diubah, 0 untuk dihapus. ...Jalankan perintah berikut untuk membuat kluster ACK Edge.
terraform applyKetik
yes, tekan Enter, dan tunggu hingga eksekusi perintah selesai. Jika informasi berikut ditampilkan, kluster 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_edge_kubernetes.edge: Pembuatan selesai setelah 8m26s [id=************] Aplikasi selesai! Sumber daya: 4 ditambahkan, 0 diubah, 0 dihapus.Verifikasi hasil
Jalankan perintah terraform show
Jalankan perintah berikut untuk meminta sumber daya yang dibuat oleh Terraform:
terraform show
Masuk ke konsol ACK
Masuk ke konsol ACK untuk melihat kluster yang telah dibuat.

Bersihkan sumber daya
Jika Anda tidak lagi memerlukan sumber daya yang dibuat atau dikelola oleh Terraform, jalankan perintah terraform destroy untuk melepaskan sumber daya. Untuk informasi lebih lanjut tentang perintah terraform destroy, lihat Perintah umum.
terraform destroyKode contoh
Anda dapat menjalankan kode contoh dalam topik ini hanya dengan beberapa klik. Untuk informasi lebih lanjut, kunjungi Terraform Explorer.