全部产品
Search
文档中心

Container Service for Kubernetes:Mengelola komponen menggunakan Terraform

更新时间:Dec 23, 2025

Container Service for Kubernetes menyediakan berbagai komponen untuk memperluas fitur kluster. Topik ini menjelaskan cara menggunakan Terraform untuk mengonfigurasi komponen dan mengelola bisnis Anda dalam berbagai skenario.

Jenis komponen

ACK mengelola dua jenis komponen kluster: komponen sistem dan komponen opsional. Untuk informasi selengkapnya tentang komponen, lihat Komponen.

Komponen sistem

Komponen sistem adalah komponen dasar yang diperlukan untuk menjalankan kluster ACK. Komponen ini diinstal secara default saat Anda membuat kluster. Contohnya meliputi:

  • kube-apiserver

  • kube-controller-manager

  • cloud-controller-manager

  • kube-proxy

  • CoreDNS

Komponen opsional

Komponen opsional tidak wajib untuk penerapan. Anda dapat menginstalnya untuk memperluas fitur kluster Anda. Komponen opsional dikategorikan menjadi komponen manajemen aplikasi, log dan pemantauan, penyimpanan, jaringan, serta keamanan.

Hasilkan parameter panggilan Terraform untuk pengelolaan komponen di konsol

Anda dapat menghasilkan konfigurasi parameter panggilan Terraform untuk komponen di konsol guna meningkatkan efisiensi dan kegunaan pengelolaan komponen.

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, temukan kluster yang ingin Anda kelola lalu klik namanya. Di panel navigasi kiri, klik Add-ons.

  3. Pada halaman Component Management, cari komponen tersebut. Pada kartu komponen, klik Install atau Configure sesuai kebutuhan.

  4. Pada kotak dialog yang muncul, klik Equivalent Code. Di panel yang muncul di sebelah kanan, klik tab Terraform. Tab ini menampilkan parameter untuk menginstal atau mengonfigurasi komponen. Anda dapat menyalin dan menggunakan parameter tersebut.

Praktik pengelolaan komponen

Anda dapat menggunakan Terraform untuk menentukan komponen mana yang akan diinstal saat membuat kluster. Setelah kluster dibuat, Anda dapat mengelola siklus hidup penuh komponen tersebut. Bagian ini menjelaskan cara mengelola siklus hidup komponen kluster dan memberikan praktik terbaik untuk berbagai skenario.

Tentukan komponen yang akan diinstal saat pembuatan kluster

Anda dapat menentukan komponen yang akan diinstal saat membuat kluster. Sumber daya berikut terlibat saat membuat kluster:

  • ACK Managed cluster: alicloud_cs_managed_kubernetes

  • ACK Dedicated cluster: alicloud_cs_kubernetes

  • ACK Edge cluster: alicloud_cs_edge_kubernetes

  • ACK serverless cluster: alicloud_cs_serverless_kubernetes

Anda dapat menggunakan atribut addons dalam sumber daya ini untuk mendefinisikan komponen yang akan diinstal selama pembuatan kluster. Atribut addons didefinisikan sebagai berikut:

# Ambil contoh kluster terkelola.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  # Atribut addons berupa daftar. Definisikan atribut addons dalam resource untuk menginstal komponen selama pembuatan kluster.
  addons {
    # Nama komponen. Anda dapat mengkuerinya menggunakan alicloud_cs_kubernetes_addons di sumber data.
    # Komponen yang telah diinstal dan dapat diinstal di kluster saat ini, beserta informasi versinya.
    name = "XXX"

    # Parameter kustom komponen. Beberapa komponen kluster mendukung konfigurasi parameter kustom. Anda dapat menggunakan bidang ini untuk menentukan parameter kustom bagi komponen tersebut. Untuk informasi lebih lanjut tentang cara menentukan parameter, lihat bagian "Ubah parameter konfigurasi kustom komponen kluster".
    config = jsonencode(
      {
        ....
      }
    )

    # Nilai default parameter ini adalah false (Boolean). ACK menginstal beberapa komponen secara default untuk memudahkan pengelolaan kluster. Jika Anda tidak ingin menginstal komponen ini saat membuat kluster, atur disabled ke true.
    disabled = XXX
  }
}
Penting

Anda hanya dapat menginstal komponen dengan menentukan addons dalam resource kluster saat membuat kluster. Setelah kluster dibuat, Anda tidak dapat mengelola siklus hidup komponen dengan memodifikasi atribut dalam blok kode addons. Misalnya, Anda tidak dapat meningkatkan, menguninstal, atau memperbarui konfigurasi komponen. Untuk mengelola siklus hidup komponen setelah kluster dibuat, lihat Mengelola siklus hidup komponen setelah pembuatan kluster.

Tabel berikut menjelaskan cara mengonfigurasi komponen di ACK.

Nama komponen

Jenis komponen

Deskripsi komponen

Konfigurasi Terraform

appcenter

Manajemen Aplikasi

Komponen pusat aplikasi yang menyediakan manajemen terpadu untuk penerapan aplikasi multi-kluster dan siklus hidup aplikasi.

addon { name = "appcenter" }

progressive-delivery-tool

Manajemen Aplikasi

Komponen yang menyediakan rilis bertahap untuk aplikasi.

addon { name = "progressive-delivery-tool" }

alicloud-monitor-controller

Log dan pemantauan

Komponen sistem yang disediakan oleh ACK untuk terhubung ke CloudMonitor.

addon { name = "alicloud-monitor-controller" }

metrics-server

Log dan pemantauan

Komponen pemantauan dan offline yang dimodifikasi serta ditingkatkan oleh ACK berdasarkan komponen pemantauan open source. Komponen ini menyediakan API Metrik untuk konsumsi data dan mendukung Penyekala Pod Horizontal (HPA).

addon { name = "metrics-server" }

ack-node-problem-detector

Log dan pemantauan

Komponen pemantauan anomali node kluster yang dimodifikasi dan ditingkatkan oleh ACK berdasarkan proyek open source. Komponen ini dapat dihubungkan ke platform pemantauan pihak ketiga.

addons { name = "ack-node-problem-detector" }

ags-metrics-collector

Log dan pemantauan

Komponen layanan pemantauan untuk pelanggan komputasi genetika. Anda dapat menggunakan komponen ini untuk memantau detail penggunaan sumber daya setiap node dalam alur kerja genetika.

addons { name = "ags-metrics-collector" }

ack-arms-prometheus

Log dan pemantauan

Gunakan Alibaba Cloud Prometheus untuk memantau kluster ACK.

addons { name = "arms-prometheus" }

loongcollector

Log dan pemantauan

Gunakan Simple Log Service untuk mengumpulkan log kontainer Kubernetes.

addons { name = "loongcollector" }

csi-plugin

Komponen penyimpanan

Mendukung penyambungan dan pencopotan volume. Jika Anda memilih plug-in CSI untuk menghubungkan ke penyimpanan Alibaba Cloud saat membuat kluster, komponen ini diinstal secara default.

addons { name = "csi-plugin" }

csi-provisioner

Komponen penyimpanan

Mendukung pembuatan otomatis volume. Jika Anda memilih plug-in CSI untuk menghubungkan ke penyimpanan Alibaba Cloud saat membuat kluster, komponen ini diinstal secara default.

addons { name = "csi-plugin" }

storage-operator

Komponen penyimpanan

Mengelola siklus hidup komponen penyimpanan.

addons { name = "storage-operator" }

alicloud-disk-controller

Komponen penyimpanan

Mendukung pembuatan otomatis volume disk.

addons { name = "alicloud-disk-controller" }

flexvolume

Komponen penyimpanan

Mekanisme ekstensi volume penyimpanan awal yang diimplementasikan oleh komunitas Kubernetes. FlexVolume mendukung penyambungan dan pencopotan volume. Jika Anda memilih plug-in FlexVolume untuk menghubungkan ke penyimpanan Alibaba Cloud saat membuat kluster, komponen ini diinstal secara default.

addons { name = "flexvolume" }

nginx-ingress-controller

Komponen jaringan

Kontroler Ingress Nginx mengurai aturan pengalihan Ingress. Setelah kontroler Ingress menerima permintaan, permintaan tersebut diteruskan ke layanan backend berdasarkan aturan pengalihan Ingress yang cocok.

addons { name = "nginx-ingress-controller" }

terway-eniip

Komponen jaringan

Plug-in Container Network Interface (CNI) open source yang dikembangkan oleh Alibaba Cloud berdasarkan virtual private cloud (VPC). Plug-in ini mendukung kebijakan jaringan native Kubernetes untuk menentukan kebijakan akses antar kontainer. Anda dapat menggunakan komponen jaringan Terway untuk mengaktifkan komunikasi jaringan dalam kluster Kubernetes. Jika Anda memilih plug-in jaringan Terway untuk mengaktifkan komunikasi jaringan dalam kluster saat membuat kluster, komponen ini diinstal secara default.

addons { name = "terway-eniip" }

ack-node-local-dns

Komponen jaringan

Solusi cache lokal DNS berdasarkan proyek open source NodeLocal DNSCache.

addons { name = "ack-node-local-dns" }

aliyun-acr-credential-helper

Komponen keamanan

Komponen yang memungkinkan Anda menarik citra privat dari ACR Edisi Personal atau Edisi Perusahaan di kluster ACK tanpa kata sandi.

addons { name = "aliyun-acr-credential-helper" }

gatekeeper

Komponen keamanan

Membantu mengelola dan menerapkan kebijakan Open Policy Agent (OPA) di kluster untuk mengimplementasikan fitur seperti manajemen label namespace.

addons { name = "gatekeeper" }

kritis-validation-hook

Komponen keamanan

Komponen utama untuk verifikasi tanda tangan citra kontainer saat Anda menerapkan kontainer tepercaya.

addons { name = "kritis-validation-hook" }

security-inspector

Komponen keamanan

Komponen utama yang mengimplementasikan inspeksi keamanan.

addons { name = "security-inspector" }

ack-kubernetes-webhook-injector

Komponen keamanan

Komponen Kubernetes yang dapat secara dinamis menambahkan atau menghapus alamat IP pod dari daftar putih berbagai Produk Alibaba Cloud. Hal ini menghilangkan kebutuhan untuk mengonfigurasi alamat IP pod secara manual di daftar putih produk cloud.

addons { name = "ack-kubernetes-webhook-injector" }

ack-arena

Lainnya

Lebih lanjut menyederhanakan instalasi Arena open source, memungkinkan Anda menginstal Arena dengan satu klik di konsol.

addons { name = "ack-arena" }

ack-cost-exporter

Lainnya

Plug-in untuk pemrosesan data dalam fitur analisis biaya ACK.

addons { name = "ack-cost-exporter" }

ack-kubernetes-cronhpa-controller

Lainnya

Gunakan ack-kubernetes-cronhpa-controller untuk mengimplementasikan penjadwalan penskalaan beban kerja aplikasi.

addons { name = "ack-kubernetes-cronhpa-controller" }

ack-virtual-node

Lainnya

Berdasarkan proyek open source Virtual Kubelet, komponen ini memperluas dukungan untuk Aliyun Provider dan sangat dioptimalkan untuk menghubungkan Kubernetes dengan Elastic Container Instance (ECI) secara mulus.

addons { name = "ack-virtual-node" }

aesm

Lainnya

Intel® SGX Architectural Enclave Service Manager (Intel® SGX AESM) adalah komponen sistem Intel® SGX. Komponen ini menyediakan layanan seperti dukungan startup SGX Enclave, konfigurasi kunci, dan otentikasi jarak jauh.

addons { name = "aesm" }

aliyun-acr-acceleration-suite

Lainnya

Plug-in klien yang menyediakan akselerasi citra berdasarkan pemuatan sesuai permintaan. Plug-in ini diterapkan sebagai DaemonSet pada node pekerja.

addons { name = "aliyun-acr-acceleration-suite" }

migrate-controller

Lainnya

Komponen migrasi aplikasi Kubernetes yang dikembangkan berdasarkan proyek open source Velero.

addons { name = "migrate-controller" }

resource-controller

Lainnya

Komponen utama yang mengontrol sumber daya pod secara dinamis. Komponen ini harus diinstal untuk menggunakan penjadwalan sadar topologi CPU di kluster ACK Pro.

addons { name = "resource-controller" }

sandboxed-container-controller

Lainnya

Komponen kontroler khusus yang disediakan oleh waktu proses kontainer sandbox untuk meningkatkan dan memperluas fitur dasar kontainer sandbox.

addons { name = "sandboxed-container-controller" }

sandboxed-container-helper

Lainnya

Komponen yang menyediakan diagnostik dan O&M untuk kontainer sandbox.

addons { name = "sandboxed-container-helper" }

sgx-device-plugin

Lainnya

Plug-in perangkat Kubernetes untuk Intel SGX yang dikembangkan bersama oleh tim Alibaba Cloud Container Service dan tim komputasi aman Ant Financial. Plug-in ini memungkinkan Anda menggunakan SGX di kontainer dengan lebih nyaman.

addons { name = "sgx-device-plugin" }

Mengelola siklus hidup komponen setelah pembuatan kluster

Sebelum mengelola siklus hidup komponen, Anda harus memiliki kluster Kubernetes. Jika belum memiliki kluster, buat terlebih dahulu.

Untuk komponen dalam kluster, Anda dapat menggunakan resource alicloud_cs_kubernetes_addon untuk mengelola siklus hidupnya. Ini mencakup instalasi, peningkatan, penghapusan, dan modifikasi konfigurasi kustom. Atribut dan definisi alicloud_cs_kubernetes_addon adalah sebagai berikut:

resource "alicloud_cs_kubernetes_addon" "addon-example" {
  # ID kluster.
  cluster_id = "XXXX"

  # Nama komponen. Anda dapat menggunakan alicloud_cs_kubernetes_addons di sumber data untuk mengkueri semua komponen yang telah diinstal dan dapat diinstal di kluster saat ini beserta informasi versinya.
  name = "XXXX"

  # Versi komponen.
  version = "XXXX"

  # Parameter kustom komponen dalam format string JSON. Anda dapat menggunakan metode bawaan jsonencode Terraform atau string JSON untuk mengonfigurasi parameter. Jika menggunakan string JSON, perhatikan karakter escape. Beberapa komponen kluster mendukung konfigurasi parameter kustom. Anda dapat menggunakan bidang ini untuk menentukan parameter kustom bagi komponen tersebut. Untuk informasi lebih lanjut tentang cara menentukan parameter, lihat bagian "Ubah parameter konfigurasi kustom komponen kluster".
  config = jsonencode(
    {
      ....
    }
  )
}

Anda dapat mengonfigurasi parameter kustom untuk komponen dengan menulis string JSON. Perhatikan karakter escape. Misalnya, Anda dapat menggunakan salah satu metode berikut untuk mengonfigurasi komponen nginx-ingress-controller:

  • Konfigurasikan parameter menggunakan jsonencode:

    config = jsonencode(   
      {       
        IngressSlbNetworkType="internet"       
        IngressSlbSpec="slb.s2.small"     
      }  
    )
  • Konfigurasikan parameter menggunakan string:

    config = "{\"IngressSlbNetworkType\":\"internet\",\"IngressSlbSpec\":\"slb.s2.small\"}"

Impor komponen yang telah diinstal di kluster ke Terraform untuk dikelola

Untuk komponen yang sudah diinstal di kluster, Anda dapat menggunakan terraform import untuk mengimpornya ke Terraform guna dikelola. Contoh berikut menunjukkan cara mengimpor komponen nginx-ingress-controller yang telah diinstal ke Terraform untuk dikelola.

  1. Buat file dengan ekstensi .tf atau gunakan file .tf yang sudah ada, lalu definisikan resource.

    alicloud_cs_kubernetes_addon dalam resource digunakan untuk mengelola add-on kluster. Anda tidak perlu memasukkan konten apa pun pada langkah ini.

    resource "alicloud_cs_kubernetes_addon" "nginx-ingress-controller" {
    }
  2. Jalankan perintah berikut untuk mengimpor komponen nginx-ingress-controller yang telah diinstal di kluster.

    Terraform mengambil konfigurasi komponen nginx-ingress-controller di kluster dan menuliskannya ke file dengan ekstensi .state.

    terraform import alicloud_cs_kubernetes_addon.nginx-ingress-controller <cluster_id>:nginx-ingress-controller
  3. Jalankan perintah terraform plan. Berdasarkan output, Anda dapat melihat perbedaan antara konfigurasi komponen nginx-ingress-controller di kluster dan resource yang didefinisikan.

    Berdasarkan perbedaan dan isi file dengan ekstensi .state, perbarui resource yang Anda definisikan di Langkah 1. Ulangi proses ini hingga perintah terraform plan menunjukkan tidak ada perbedaan antara konfigurasi lokal dan konfigurasi komponen di kluster. Hal ini menunjukkan bahwa komponen telah diimpor.

    resource "alicloud_cs_kubernetes_addon" "nginx-ingress-controller" {
      cluster_id = "XXXXX"
      name = "nginx-ingress-controller"
      version = "v1.2.1-aliyun.1"
      config = jsonencode(
        {
          IngressSlbNetworkType = "internet"
          IngressSlbSpec        = "slb.s2.small"
        }
      )
    }

Instal komponen kluster

Anda dapat menggunakan resource alicloud_cs_kubernetes_addon untuk menginstal komponen di kluster yang sudah ada. Contoh berikut menunjukkan cara menginstal komponen gatekeeper.

  1. Definisikan informasi komponen yang akan diinstal dalam file .tf. Anda harus menentukan informasi berikut.

    • ID kluster.

    • Nama dan versi komponen:

      Anda dapat menggunakan alicloud_cs_kubernetes_addons di sumber data untuk mengkueri nama dan versi komponen yang dapat diinstal di kluster. Hasil kueri hanya mengembalikan versi terbaru yang dapat diinstal untuk setiap komponen. Jika ingin menginstal versi historis komponen, lihat log rilis komponen tersebut dan tentukan nomor versi yang sesuai.

    • (Opsional) Konfigurasi kustom komponen:

      Ubah bidang config untuk menyesuaikan konfigurasi komponen. Anda dapat menggunakan metode bawaan jsonencode Terraform untuk membangun konfigurasi yang diperlukan. Anda dapat menggunakan alicloud_cs_kubernetes_addon_metadata di sumber data untuk mengkueri parameter yang dapat dikonfigurasi untuk komponen tersebut. Untuk informasi selengkapnya, lihat Ubah parameter konfigurasi kustom komponen kluster.

    Klik untuk melihat detail

    resource "alicloud_cs_kubernetes_addon" "gatekeeper" {
      cluster_id = "ce36b7c61e126430b8b245730ca6d****"
      name = "gatekeeper"
      version = "v3.8.1.113-geb7947ef-aliyun"
      config = jsonencode(
        {
          AdmissionPodCpuLimit      = "1000m"
          AdmissionPodCpuRequest    = "100m"
          AdmissionPodMemoryLimit   = "512Mi"
          AdmissionPodMemoryRequest = "256Mi"
          AdmissionPodNumber        = 3
          AuditInterval             = 1800
          AuditPodCpuLimit          = "1000m"
          AuditPodCpuRequest        = "100m"
          AuditPodMemoryLimit       = "512Mi"
          AuditPodMemoryRequest     = "256Mi"
          EnableAuditPod            = false
          EnableMutatingWebhook     = false
        }
      )
    }
  2. Jalankan perintah berikut untuk menginstal komponen di kluster.

    terraform apply

    Output yang diharapkan:

    Plan: 1 to add, 0 to change, 0 to destroy.
    
    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_kubernetes_addon.gatekeeper: Creating...
    alicloud_cs_kubernetes_addon.gatekeeper: Still creating... [10s elapsed]
    alicloud_cs_kubernetes_addon.gatekeeper: Creation complete after 16s [id=XXXXX:gatekeeper]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

    Saat Apply complete! ditampilkan, komponen telah diinstal.

Tingkatkan komponen kluster

Anda dapat menggunakan alicloud_cs_kubernetes_addons di sumber data untuk mengkueri versi komponen yang dapat ditingkatkan. Jika tersedia versi baru, Anda dapat meningkatkan komponen dengan mengubah nomor versi. Contoh berikut menunjukkan cara meningkatkan komponen gatekeeper.

Klik untuk melihat detail

resource "alicloud_cs_kubernetes_addon" "gatekeeper" {
  cluster_id = "ce36b7c61e126430b8b245730ca6d****"
  name = "gatekeeper"

  # Ubah versi ke versi yang dapat ditingkatkan yang ditentukan.
  version = "XXXXXXXXX"
  config = jsonencode(
    {
      AdmissionPodCpuLimit      = "1000m"
      AdmissionPodCpuRequest    = "100m"
      AdmissionPodMemoryLimit   = "512Mi"
      AdmissionPodMemoryRequest = "256Mi"
      AdmissionPodNumber        = 3
      AuditInterval             = 1800
      AuditPodCpuLimit          = "1000m"
      AuditPodCpuRequest        = "100m"
      AuditPodMemoryLimit       = "512Mi"
      AuditPodMemoryRequest     = "256Mi"
      EnableAuditPod            = false
      EnableMutatingWebhook     = false
    }
  )
}

Jalankan perintah terraform apply untuk meningkatkan komponen. Jika perintah berhasil dijalankan, komponen telah ditingkatkan.

Ubah parameter konfigurasi kustom komponen kluster

Beberapa komponen ACK mendukung konfigurasi parameter kustom. Anda dapat menggunakan resource alicloud_cs_kubernetes_addon untuk memperbarui konfigurasi komponen Anda. Misalnya, Anda dapat mengubah bidang config untuk memodifikasi konfigurasi komponen gatekeeper.

Klik untuk melihat detail

resource "alicloud_cs_kubernetes_addon" "gatekeeper" {
  cluster_id = "ce36b7c61e126430b8b245730ca6d****"
  name = "gatekeeper"
  version = "v3.8.1.113-geb7947ef-aliyun"

  # Anda dapat memodifikasi dan menerapkan atribut dalam Config untuk mengubah konfigurasi komponen kluster.

}

Untuk melihat semua parameter yang dapat dikonfigurasi yang didukung oleh komponen, Anda dapat menggunakan alicloud_cs_kubernetes_addon_metadata di sumber data untuk mengkuerinya. Hasil yang dikembalikan dalam format JSON Schema. Misalnya, untuk mengkueri parameter komponen gatekeeper, tambahkan konten berikut ke file .tf.

# Definisikan sumber data untuk mendapatkan skema parameter yang dapat dikonfigurasi komponen gatekeeper.
data "alicloud_cs_kubernetes_addon_metadata" "default" {
  cluster_id = "ce36b7c61e126430b8b245730ca6d****"
  name       = "gatekeeper"
  version    = "v3.8.1.113-geb7947ef-aliyun"
}

# Gunakan Output untuk menghasilkan output.
output "addon_config_schema" {
  value = data.alicloud_cs_kubernetes_addon_metadata.default.config_schema
}

Jalankan perintah terraform apply. Hasil yang dikembalikan dalam format JSON Schema. Atribut properties mendefinisikan semua parameter konfigurasi yang didukung. Berdasarkan skema yang dikembalikan, Anda dapat menentukan parameter konfigurasi yang didukung. Parameter yang dapat dikonfigurasi dijelaskan sebagai berikut:

  • default: nilai default.

  • description: deskripsi parameter.

  • pattern: ekspresi reguler untuk format nilai.

  • type: tipe bidang.

Klik untuk melihat detail

addon_config_schema = <<EOT
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "AdmissionPodCpuLimit": {
      "default": "1000m",
      "description": "cpu limit for gatekeeper",
      "pattern": "^(|[1-9][0-9]*(m|\\.\\d+)?)$",
      "type": "string"
    },
    "AdmissionPodCpuRequest": {
      "default": "100m",
      "description": "cpu request for gatekeeper",
      "pattern": "^[1-9][0-9]*(m|\\.\\d+)?$",
      "type": "string"
    },
    "AdmissionPodMemoryLimit": {
      "default": "512Mi",
      "description": "memory limit for gatekeeper",
      "pattern": "^(|[1-9][0-9]*(\\.\\d+)?(K|Ki|M|Mi|G|Gi|T|Ti)?)$",
      "type": "string"
    },

    ......
  },
  "title": "Config",
  "type": "object"
}
EOT

Konfigurasikan komponen jaringan

Di ACK, Anda dapat menggunakan mode jaringan Terway untuk mengimplementasikan fitur jaringan kontainer. Untuk informasi selengkapnya, lihat Jaringan.

Contoh berikut menunjukkan cara mengonfigurasi komponen jaringan menggunakan Terraform.

Klik untuk melihat detail

# Gunakan Terway sebagai komponen jaringan dan gunakan mode ENI eksklusif untuk pod. Ini adalah mode default.
# Dalam mode ini, jumlah pod pada node dibatasi oleh kuota ENI instans ECS.

resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name = "terway-eni"
  }
}

# Gunakan Terway sebagai komponen jaringan dan gunakan mode IPVlan.
# Mode ini menggunakan IPVlan dan eBPF sebagai teknologi virtualisasi untuk berbagi ENI dan hanya dapat digunakan dengan Alibaba Cloud Linux 2.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name   =  "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"false\"}"
  }
}

# Gunakan Terway sebagai komponen jaringan dan aktifkan dukungan untuk kebijakan jaringan dalam mode IPVlan.
# Mode ini menggunakan IPVlan dan eBPF sebagai teknologi virtualisasi untuk berbagi ENI dan hanya dapat digunakan dengan Alibaba Cloud Linux 2.
# Dalam mode IPVlan, kontrol jaringan berbasis kebijakan disediakan.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name   =  "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"true\"}"
  }
}

Konfigurasikan komponen penyimpanan

ACK menyediakan dua jenis komponen penyimpanan: FlexVolume dan Container Storage Interface (CSI). FlexVolume tidak lagi dipelihara. ACK memelihara komponen penyimpanan CSI. Jika Anda tidak menentukan komponen penyimpanan saat membuat kluster menggunakan Terraform, CSI diinstal secara default. Anda dapat mendefinisikan komponen penyimpanan di Terraform dengan cara berikut.

Klik untuk melihat detail

# Saat Anda menggunakan CSI sebagai komponen penyimpanan, CSI mencakup csi-plugin dan csi-provisioner. Jika Anda juga ingin mengaktifkan pembuatan sistem file NAS default dan kelas penyimpanan dinamis CNFS, Anda juga perlu menginstal komponen storage-operator.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name = "csi-plugin"
  }
  addons {
    name = "csi-provisioner"
  }
  addons {
    name   = "storage-operator"
    config = "{\"CnfsOssEnable\":\"false\",\"CnfsNasEnable\":\"true\"}"
  }
}

Konfigurasikan komponen log

Komponen pengumpulan log yang disediakan oleh ACK menyimpan log yang dikumpulkan di Simple Log Service (SLS). Komponen log mendukung dua metode penyimpanan log berikut:

  • Simpan log di proyek SLS yang sudah ada.

  • Buat proyek SLS baru secara otomatis untuk menyimpan log saat kluster dibuat.

Konfigurasi untuk kedua skenario berbeda. Contoh Terraform berikut memberikan detail lebih lanjut.

Klik untuk melihat detail

# Buat proyek SLS secara otomatis untuk menyimpan log.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name = "loongcollector"
  }
}

# Buat proyek SLS secara otomatis untuk menyimpan log. Juga, aktifkan pembuatan otomatis dasbor Ingress.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name = "loongcollector"
    config = "{\"IngressDashboardEnabled\":\"true\"}"
  }
}


# Gunakan proyek SLS yang sudah ada untuk menyimpan log. Juga, aktifkan pembuatan otomatis dasbor Ingress.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name = "loongcollector"
    config = "{\"IngressDashboardEnabled\":\"true\",\"sls_project_name\":\"k8s-log-c55c35ff493df47b88783bea48827****\"}"
  }
}

# Instal dan konfigurasikan Pusat Insiden node-problem-detector.
# Buat proyek SLS secara otomatis untuk menyimpan log Pusat Insiden.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name   = "ack-node-problem-detector"
    config = "{\"sls_project_name\":\"\"}"
  }
}

# Instal dan konfigurasikan Pusat Insiden node-problem-detector.
# Gunakan proyek SLS yang sudah ada untuk menyimpan log Pusat Insiden. Proyek ini dapat berbagi penyimpanan log dengan loongcollector.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name   = "ack-node-problem-detector"
    config = "{\"sls_project_name\":\"k8s-log-c55c35ff493df47b88783bea48827****\"}"
  }
}

Konfigurasikan komponen pemantauan

Komponen pemantauan yang disediakan oleh ACK mencakup agen CloudMonitor, yang diinstal pada node ECS, dan Layanan Prometheus. Di Terraform, instalasi agen CloudMonitor pada node ECS dikontrol oleh parameter install_cloud_monitor.

Klik untuk melihat detail

# Instal Layanan Prometheus.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...
  addons {
    name = "arms-prometheus"
  }
}
# Instal agen CloudMonitor pada node ECS.
resource "alicloud_cs_kubernetes_node_pool" "default" {
  # Parameter lainnya.
  # ...
  install_cloud_monitor = true
}

Konfigurasikan komponen routing Ingress

ACK menyediakan dua solusi ingress trafik: Nginx Ingress dan ALB Ingress.

  • Komponen Nginx Ingress: Komponen ini dioptimalkan berdasarkan edisi komunitas ingress-nginx untuk menyediakan layanan routing yang fleksibel dan andal bagi kluster Kubernetes Anda. Untuk informasi selengkapnya, lihat Ikhtisar Nginx Ingress.

  • Komponen ALB Ingress: Ini adalah komponen ALB Ingress yang sepenuhnya dikelola dan sangat andal yang menyediakan layanan routing yang fleksibel dan andal bagi kluster Kubernetes Anda. Untuk informasi selengkapnya, lihat Gunakan ALB Ingress untuk mengakses layanan.

Contoh berikut menunjukkan cara mengonfigurasi komponen routing menggunakan Terraform.

Klik untuk melihat detail

# Gunakan nginx-ingress-controller untuk routing.
# Jika Anda menggunakan instans SLB yang menghadap publik, atur IngressSlbNetworkType ke internet di Config.
# Jika Anda menggunakan instans SLB internal, atur IngressSlbNetworkType ke intranet di Config.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name   =  "nginx-ingress-controller"
    config = "{\"IngressSlbNetworkType\":\"internet\",\"IngressSlbSpec\":\"slb.s2.small\"}"
  }
}

# Gunakan ALB Ingress untuk routing.
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name   = "alb-ingress-controller"
    config = "{\"albIngress\":{\"CreateDefaultALBConfig\":false}}"  # Jangan buat sekarang.
#   config = "{\"albIngress\":{\"LoadBalancerId\":\"alb-vl8uiXXXXXxdr\",\"CreateDefaultALBConfig\":true}}" # Tentukan instans ALB yang sudah ada.
#   config = "{\"albIngress\":{\"AddressType\":\"Internet\",\"ZoneMappings\":{\"cn-hangzhou-l\":[\"vsw-uf6XXXXXoyb4qe\"],\"cn-hangzhou-m\":[\"vsw-uf6XXXX0rlkiq\"]},\"CreateDefaultALBConfig\":true}}" # Buat yang baru. Anda harus memilih minimal dua zona.
  }
}

Nonaktifkan komponen default

ACK menginstal beberapa komponen secara default untuk memudahkan pengelolaan kluster. Jika Anda tidak ingin menginstal komponen ini saat membuat kluster, Anda dapat mengatur bidang disabled = true untuk menonaktifkannya. Contoh berikut menunjukkan cara menonaktifkan nginx-ingress-controller.

# Nonaktifkan instalasi komponen nginx-ingress-controller.

resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya.
  # ...

  addons {
    name     =  "nginx-ingress-controller"
    disabled = true
  }
}

Komponen yang diinstal secara default saat tidak ada addons yang ditentukan

Jika Anda tidak menentukan addons apa pun saat membuat kluster, komponen berikut diinstal secara default.

Jenis kluster

Jenis komponen

Nama komponen default

Deskripsi komponen

ACK cluster

Komponen sistem

kube-scheduler

Menggunakan Kube Scheduler untuk menjadwalkan sumber daya kluster.

cloud-controller-manager

Menggunakan cloud-controller-manager untuk membuat instans Server Load Balancer (SLB) untuk aplikasi Kubernetes dan mengelola entri rute node.

kube-apiserver

kube-apiserver adalah bus dan gerbang masuk kluster Kubernetes.

kube-controller-manager

kube-controller-manager adalah pengelola sumber daya di dalam kluster Kubernetes.

Log dan pemantauan

alicloud-monitor-controller

Memantau siklus hidup dan perubahan status kontainer aplikasi.

metrics-server

Metrics Server menyediakan metrik pemantauan sumber daya kontainer aplikasi untuk mekanisme penskalaan otomatis kluster.

Penyimpanan

csi-plugin

Menggunakan plug-in csi-plugin untuk mengelola siklus hidup volume penyimpanan (disarankan).

csi-provisioner

Menggunakan plug-in csi-provisioner untuk membuat dan menghapus volume penyimpanan (disarankan).

storage-operator

Menggunakan plug-in storage-operator untuk mengelola O&M penyimpanan (disarankan).

Jaringan

CoreDNS

Server resolusi nama domain kluster Kubernetes.

Gateway API

Model sumber daya gerbang Gateway API.

terway-eniip

Plug-in jaringan Terway.

nginx-ingress-controller (diinstal secara default untuk Edisi Pro)

Kontroler Ingress berbasis penerusan trafik Nginx.

ACK serverless cluster

Komponen sistem

kube-scheduler

Menggunakan Kube Scheduler untuk menjadwalkan sumber daya kluster.

ack-virtual-node

Menggunakan node virtual dan kemampuan elastis ECI.

cloud-controller-manager

Menggunakan cloud-controller-manager untuk membuat instans SLB untuk aplikasi Kubernetes dan mengelola entri rute node.

kube-apiserver

kube-apiserver adalah bus dan gerbang masuk kluster Kubernetes.

kube-controller-manager

kube-controller-manager adalah pengelola sumber daya di dalam kluster Kubernetes.

Jaringan

CoreDNS

Server resolusi nama domain kluster Kubernetes.

ACK Edge cluster

Komponen sistem

kube-scheduler

Menggunakan Kube Scheduler untuk menjadwalkan sumber daya kluster

cloud-controller-manager

Menggunakan cloud-controller-manager untuk membuat instans SLB untuk aplikasi Kubernetes dan mengelola entri rute node.

kube-apiserver

kube-apiserver adalah bus dan gerbang masuk kluster Kubernetes.

kube-controller-manager

kube-controller-manager adalah pengelola sumber daya di dalam kluster Kubernetes.

Log dan pemantauan

alicloud-monitor-controller

Memantau siklus hidup dan perubahan status kontainer aplikasi.

metrics-server

Metrics Server menyediakan metrik pemantauan sumber daya kontainer aplikasi untuk mekanisme penskalaan otomatis kluster

Jaringan

CoreDNS

Server resolusi nama domain kluster Kubernetes.

terway-eniip

Plug-in jaringan Terway.

Lainnya

edge-controller-manager

-

edge-tunnel-agent

edge-tunnel menggunakan arsitektur client-server untuk membangun saluran O&M terbalik antara cloud dan edge.

edge-tunnel-server

edge-tunnel menggunakan arsitektur client-server untuk membangun saluran O&M terbalik antara cloud dan edge.

yurt-app-manager

Menggunakan yurt-app-manager untuk menyediakan fitur penerapan berbasis kelompok node dan unit untuk ACK@Edge.

Contoh konfigurasi umum

Bagian berikut menyediakan contoh umum untuk referensi Anda.

  • Pilih Terway sebagai komponen jaringan.

  • Pilih CSI atau FlexVolume sebagai komponen penyimpanan. Karena FlexVolume tidak lagi dipelihara, kami menyarankan Anda menggunakan CSI.

  • Pilih Nginx Ingress atau ALB Ingress sebagai komponen routing berdasarkan kebutuhan Anda.

  • Anda dapat menginstal dan menggabungkan komponen lain berdasarkan kebutuhan Anda.

Contoh 1: Jangan mengonfigurasi komponen apa pun

# Jika Anda tidak mengonfigurasi komponen apa pun selama pembuatan kluster, hanya komponen default yang diinstal.
# Ini adalah konfigurasi paling sederhana untuk kluster. Ganti variabel dengan variabel kustom Anda.
resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  pod_cidr                     = "172.20.0.0/16"
  service_cidr                 = "172.21.0.0/20"
  worker_vswitch_ids           = [var.vswitch_id]
}

Contoh 2: Gunakan jaringan Terway

# Buat kluster yang menggunakan jaringan Terway.
# Gunakan mode ENI eksklusif untuk pod.

resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  pod_vswitch_ids              = [var.vswitch_id]
  service_cidr                 = "172.21.0.0/20"
  worker_vswitch_ids           = [var.vswitch_id]

  addons {
    name = "terway-eni"
  }
}

# Buat kluster yang menggunakan jaringan Terway.
# Gunakan mode IPVlan dan aktifkan kebijakan jaringan.
resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  service_cidr                 = "172.21.0.0/20"
  pod_vswitch_ids              = [var.vswitch_id]
  worker_vswitch_ids           = [var.vswitch_id]

  addons {
    name   =  "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"true\"}"
  }
}

Contoh 3: Templat umum untuk Terway, CSI, dan nginx-ingress

# Templat umum untuk Terway, CSI, dan nginx-ingress.

resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  service_cidr                 = "172.21.0.0/20"
  pod_vswitch_ids              = [var.vswitch_id]
  worker_vswitch_ids           = [var.vswitch_id]

  addons {
    name = "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"false\"}"
  }
  addons {
    name = "csi-plugin"
  }
  addons {
    name = "csi-provisioner"
  }
  addons {
    name = "storage-operator"
    config = "{\"CnfsOssEnable\":\"false\",\"CnfsNasEnable\":\"true\"}"
  }
  addons {
    name = "loongcollector"
    config = "{\"IngressDashboardEnabled\":\"true\"}"
  }
  addons {
    name = "ack-node-problem-detector"
    config = "{\"sls_project_name\":\"\"}"
  }
  addons {
    name = "nginx-ingress-controller"
    config = "{\"IngressSlbNetworkType\":\"internet\",\"IngressSlbSpec\":\"slb.s2.small\"}"
  }
  addons {
    name = "ack-node-local-dns"
  }
  addons {
    name = "arms-prometheus"
  }
  addons {
    name = "alicloud-monitor-controller"
    config = "{\"group_contact_ids\":\"[10619]\"}"
  }
}