All Products
Search
Document Center

Container Service for Kubernetes:Gunakan Terraform untuk mengelola add-on

Last Updated:Jun 16, 2026

Container Service for Kubernetes (ACK) add-ons memperluas kemampuan kluster—tentukan saat pembuatan kluster dan kelola siklus hidupnya setelahnya dengan Terraform.

Jenis add-on

ACK add-ons terdiri dari system add-ons atau optional add-ons. Lihat Add-ons.

System add-ons

System add-ons adalah layanan dasar yang diinstal secara default selama pembuatan kluster.

Contoh:

  • kube-apiserver

  • kube-controller-manager

  • cloud-controller-manager

  • kube-proxy

  • CoreDNS

Optional add-ons

Optional add-ons tidak wajib, tetapi dapat diinstal untuk memperluas kemampuan kluster. Add-on ini dikelompokkan ke dalam kategori berikut:

  • Application management

  • Logging and monitoring

  • Storage

  • Networking

  • Security

Hasilkan parameter konfigurasi Terraform dari konsol

Konsol ACK dapat secara otomatis menghasilkan konfigurasi Terraform untuk mengelola add-on kluster.

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

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Components and Add-ons.

  3. Pada halaman Add-ons, temukan add-on target lalu klik Install atau Configuration.

  4. Pada kotak dialog, klik Console-to-Code. Klik tab Terraform lalu salin konfigurasi yang ditampilkan.

Praktik terbaik untuk pengelolaan add-on

Tentukan add-on saat pembuatan kluster dan kelola siklus hidupnya setelahnya. Bagian berikut mencakup manajemen siklus hidup dan praktik terbaik untuk berbagai skenario.

Tentukan add-on saat pembuatan kluster

Resource Terraform berikut sesuai dengan jenis kluster yang berbeda:

  • 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

Atur objek addons dalam Resource untuk menentukan add-on. Blok kode berikut menunjukkan atribut objek addons:

# Contoh ini menggunakan ACK managed cluster. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya. 
  # ...

  # Objek addons berupa daftar. Anda dapat mengatur objek addons dalam Resource untuk menentukan add-on yang akan diinstal saat sistem membuat kluster. 
  addons {
    # Nama add-on. Anda dapat menanyakan nama add-on dengan menggunakan Data Source alicloud_cs_kubernetes_addons. 
    # Add-on yang telah diinstal dan dapat diinstal di kluster serta versi add-on tersebut. 
    name = "XXX"

    # Parameter kustom add-on. Anda dapat mengatur atribut ini untuk add-on kluster yang mendukung parameter kustom. Untuk informasi lebih lanjut, lihat bagian Memodifikasi parameter kustom add-on kluster. 
    config = jsonencode(
      {
        ....
      }
    )

    # Nilainya bertipe Boolean dengan nilai default false. Secara default, ACK secara otomatis menginstal add-on tertentu agar Anda dapat mengelola kluster. Jika Anda tidak ingin ACK menginstal add-on saat pembuatan kluster, atur disabled=true. 
    disabled = XXX
  }
}
Penting

Objek addons hanya berlaku saat pembuatan kluster. Anda tidak dapat memodifikasinya setelahnya untuk memperbarui, menguninstall, atau mengonfigurasi ulang add-on. Lihat Mengelola add-on setelah pembuatan kluster.

Tabel berikut mencantumkan add-on yang dapat dikonfigurasi dengan Terraform.

Add-on

Jenis add-on

Deskripsi

Cara mengonfigurasi dengan Terraform

appcenter

Application management

Mengelola penerapan dan siklus hidup aplikasi secara terpusat di berbagai kluster.

addon { name = "appcenter" }

progressive-delivery-tool

Application management

Memungkinkan rilis bertahap aplikasi.

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

alicloud-monitor-controller

Logging and monitoring

Mengaktifkan integrasi dengan CloudMonitor.

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

metrics-server

Logging and monitoring

Mengumpulkan metrik resource berdasarkan Metrics Server open source. Menyediakan Metrics API dan mendukung Horizontal Pod Autoscaler (HPA).

addon { name = "metrics-server" }

ack-node-problem-detector

Logging and monitoring

Memantau kesehatan node berdasarkan Node Problem Detector (NPD) open source. Terhubung ke platform pemantauan pihak ketiga.

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

ags-metrics-collector

Logging and monitoring

Memantau penggunaan resource per-node dalam alur kerja Alibaba Cloud Genomics Service (AGS).

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

ack-arms-prometheus

Logging and monitoring

Memantau kluster ACK dengan menggunakan Managed Service for Prometheus.

addons { name = "arms-prometheus" }

loongcollector

Logging and monitoring

Mengumpulkan log kontainer dengan menggunakan Log Service.

addons { name = "loongcollector" }

csi-plugin

Storage

Memasang dan melepas volume. Diinstal secara otomatis saat CSI dipilih saat pembuatan kluster.

addons { name = "csi-plugin" }

csi-provisioner

Storage

Mengotomatiskan penyediaan volume. Diinstal secara otomatis saat CSI dipilih saat pembuatan kluster.

addons { name = "csi-plugin" }

storage-operator

Storage

Mengelola siklus hidup add-on volume.

addons { name = "storage-operator" }

alicloud-disk-controller

Storage

Mengotomatiskan penyediaan volume disk.

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

flexvolume

Storage

Mekanisme ekstensi volume penyimpanan awal yang dikembangkan oleh komunitas Kubernetes. Memasang dan melepas volume. Diinstal secara otomatis saat FlexVolume dipilih saat pembuatan kluster.

addons { name = "flexvolume" }

nginx-ingress-controller

Networking

Mengurai aturan routing Ingress dan meneruskan permintaan yang cocok ke layanan Backend.

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

terway-eniip

Networking

Add-on CNI Alibaba Cloud yang bekerja dengan VPC dan mendukung kebijakan jaringan Kubernetes standar. Menyiapkan konektivitas jaringan dalam kluster. Diinstal secara otomatis saat Terway dipilih saat pembuatan kluster.

addons { name = "terway-eniip" }

ack-node-local-dns

Networking

Solusi caching DNS lokal yang dikembangkan berdasarkan proyek open source NodeLocal DNSCache.

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

aliyun-acr-credential-helper

Security

Menarik gambar privat tanpa kata sandi dari Container Registry Edisi Perusahaan dan Edisi Personal.

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

gatekeeper

Security

Mengelola dan memberlakukan kebijakan OPA di kluster ACK serta mengelola label namespace.

addons { name = "gatekeeper" }

kritis-validation-hook

Security

Memverifikasi tanda tangan gambar.

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

security-inspector

Security

Menjalankan inspeksi keamanan.

addons { name = "security-inspector" }

ack-kubernetes-webhook-injector

Security

Mengelola alamat IP pod secara dinamis dalam daftar putih layanan Alibaba Cloud.

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

ack-arena

Others

Menginstal Arena open source di konsol ACK.

addons { name = "ack-arena" }

ack-cost-exporter

Others

Mengaktifkan pemrosesan data analisis biaya.

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

ack-kubernetes-cronhpa-controller

Others

Menskalakan beban kerja berdasarkan jadwal.

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

ack-virtual-node

Others

Berdasarkan Virtual Kubelet open source dengan dukungan Aliyun Provider. Memungkinkan integrasi tanpa hambatan antara Kubernetes dan Elastic Container Instance.

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

aesm

Others

Add-on sistem Intel SGX yang menyediakan dukungan peluncuran untuk SGX Enclave, termasuk layanan seperti penyediaan kunci dan attestation jarak jauh.

addons { name = "aesm" }

aliyun-acr-acceleration-suite

Others

Mengaktifkan pemuatan gambar sesuai permintaan. Diterapkan sebagai DaemonSet pada node pekerja.

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

migrate-controller

Others

Memigrasikan aplikasi Kubernetes berdasarkan Velero open source.

addons { name = "migrate-controller" }

resource-controller

Others

Mengontrol resource pod secara dinamis. Diperlukan untuk penjadwalan CPU yang sadar topologi di kluster ACK Pro.

addons { name = "resource-controller" }

sandboxed-container-controller

Others

Menambah dan memperluas fitur kontainer sandbox dalam runtime Sandboxed-Container.

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

sandboxed-container-helper

Others

Menjalankan pemeriksaan kesehatan dan operasi O&M pada kontainer sandbox.

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

sgx-device-plugin

Others

Menyederhanakan penggunaan Intel SGX dalam kontainer. Dikembangkan oleh tim ACK dan Ant Group.

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

Mengelola add-on setelah pembuatan kluster

Pastikan Anda memiliki kluster ACK sebelum mengelola siklus hidup add-on.

Gunakan resource alicloud_cs_kubernetes_addon untuk menginstal, memperbarui, menguninstall, dan mengonfigurasi add-on. Blok kode berikut menunjukkan atribut alicloud_cs_kubernetes_addon:

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

  # Nama add-on. Anda dapat menanyakan add-on yang telah diinstal dan dapat diinstal beserta versinya dengan menggunakan Data Source alicloud_cs_kubernetes_addons. 
  name = "XXXX"

  # Versi add-on. 
  version = "XXXX"

  # Parameter kustom add-on dalam string JSON. Anda dapat menggunakan metode jsonencode Terraform untuk menentukan parameter atau langsung menentukan parameter dalam string JSON. Perhatikan escaping karakter jika Anda langsung menentukan parameter dalam string JSON. Anda dapat mengatur atribut ini untuk add-on kluster yang mendukung parameter kustom. Untuk informasi lebih lanjut, lihat bagian Memodifikasi parameter kustom add-on kluster. 
  config = jsonencode(
    {
      ....
    }
  )
}

Anda juga dapat menentukan parameter kustom langsung dalam string JSON. Perhatikan escaping karakter. Misalnya, konfigurasikan nginx-ingress-controller menggunakan salah satu metode berikut:

  • Gunakan jsonencode untuk mengonfigurasi parameter kustom:

    config = jsonencode(   
      {       
        IngressSlbNetworkType="internet"       
        IngressSlbSpec="slb.s2.small"     
      }  
    )
  • Langsung tentukan parameter kustom dalam string JSON:

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

Impor add-on yang telah diinstal ke Terraform

Gunakan terraform import untuk mengimpor add-on kluster ke Terraform guna dikelola. Contoh berikut menggunakan nginx-ingress-controller.

  1. Buat file .tf dan definisikan Resource. Jika Anda sudah memiliki file .tf, definisikan Resource di sana.

    Resource alicloud_cs_kubernetes_addon mengelola add-on kluster. Biarkan kosong pada awalnya.

    resource "alicloud_cs_kubernetes_addon" "nginx-ingress-controller" {
    }
  2. Impor nginx-ingress-controller:

    Terraform menarik konfigurasi nginx-ingress-controller dari kluster ke .state.

    terraform import alicloud_cs_kubernetes_addon.nginx-ingress-controller <cluster_id>:nginx-ingress-controller
  3. Jalankan terraform plan. Output menunjukkan perbedaan konfigurasi antara nginx-ingress-controller dan Resource.

    Perbarui Resource dari Langkah 1 berdasarkan diff dan .state. Ketika terraform plan tidak menunjukkan perbedaan, impor selesai.

    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 add-on kluster

Gunakan resource alicloud_cs_kubernetes_addon untuk menginstal add-on. Contoh berikut menggunakan Gatekeeper.

  1. Tentukan add-on dalam file .tf Anda:

    • ID kluster.

    • Nama dan versi add-on:

      Tanyakan add-on yang dapat diinstal dan versinya dengan Data Source alicloud_cs_kubernetes_addons. Hanya versi terbaru yang ditampilkan; untuk versi sebelumnya, periksa catatan rilis add-on.

    • (Opsional) Konfigurasi add-on kustom:

      Kustomisasi bidang config dengan jsonencode. Tanyakan parameter yang didukung dengan Data Source alicloud_cs_kubernetes_addon_metadata. Lihat Kustomisasi parameter add-on.

    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. Instal add-on:

    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.

    Ketika Apply complete! muncul, add-on telah diinstal.

Perbarui add-on kluster

Tanyakan versi yang tersedia dengan Data Source alicloud_cs_kubernetes_addons, lalu ubah nomor versi untuk memperbarui. Contoh berikut menggunakan Gatekeeper.

Klik untuk melihat detail

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

  # Ubah versi ke nomor versi yang ingin Anda gunakan. 
  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 terraform apply untuk memperbarui add-on. Apply complete! menunjukkan pembaruan berhasil.

Kustomisasi parameter add-on

Modifikasi bidang config dalam alicloud_cs_kubernetes_addons untuk mengkustomisasi konfigurasi add-on. Contoh berikut menggunakan 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 mengkustomisasi konfigurasi add-on kluster. 

}

Tanyakan parameter kustom yang didukung dengan Data Source alicloud_cs_kubernetes_addon_metadata, yang mengembalikan skema JSON. Misalnya, untuk menanyakan parameter Gatekeeper, tambahkan berikut ke file .tf Anda:

# Definisikan Data Source untuk mendapatkan skema yang mencakup parameter kustom yang didukung oleh add-on Gatekeeper. 
data "alicloud_cs_kubernetes_addon_metadata" "default" {
  cluster_id = "ce36b7c61e126430b8b245730ca6d****"
  name       = "gatekeeper"
  version    = "v3.8.1.113-geb7947ef-aliyun"
}

# Keluarkan skema. 
output "addon_config_schema" {
  value = data.alicloud_cs_kubernetes_addon_metadata.default.config_schema
}

Jalankan terraform apply. Hasilnya adalah skema JSON di mana atribut properties mencantumkan semua parameter kustom yang didukung:

  • default: nilai default.

  • Description: deskripsi parameter.

  • pattern: ekspresi reguler untuk nilai yang valid.

  • type: tipe data.

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 add-on jaringan

Kluster ACK menggunakan Terway untuk jaringan kontainer. Lihat Ikhtisar.

Contoh berikut mengonfigurasi add-on jaringan dengan Terraform:

Klik untuk melihat detail

# Konfigurasikan add-on jaringan Terway dan aktifkan mode Assign One ENI to Each Pod. Ini adalah mode default. 
# Dalam mode ini, jumlah pod pada node dibatasi oleh kuota antarmuka jaringan elastis (ENI) instans Elastic Compute Service (ECS). 

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

  addons {
    name = "terway-eniip"
  }
}

# Konfigurasikan add-on jaringan Terway dan aktifkan mode IPVLAN. 
# Anda hanya dapat menggunakan sistem operasi Alibaba Cloud Linux 2 karena mode One ENI for Multi-Pod menggunakan teknologi virtualisasi IPVLAN + eBPF. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya. 
  # ...

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

# Konfigurasikan add-on jaringan Terway dan aktifkan kebijakan jaringan Kubernetes dalam mode IPVLAN. 
# Anda hanya dapat menggunakan sistem operasi Alibaba Cloud Linux 2 karena mode One ENI for Multi-Pod menggunakan teknologi virtualisasi IPVLAN + eBPF. 
# Mode IPVLAN menyediakan kontrol akses jaringan berdasarkan kebijakan jaringan Kubernetes. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya. 
  # ...

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

Konfigurasikan add-on volume

ACK menyediakan add-on volume FlexVolume dan CSI. FlexVolume telah dihentikan; gunakan CSI sebagai gantinya. Jika tidak ada add-on penyimpanan yang ditentukan saat pembuatan kluster, CSI akan diinstal secara default.

Klik untuk melihat detail

# Add-on volume CSI terdiri dari csi-plugin dan csi-provisioner. Jika Anda menggunakan add-on CSI dan ingin ACK membuat sistem file NAS default dan sistem file CNFS untuk volume penyimpanan dinamis, Anda juga harus menginstal add-on 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 add-on logging

Add-on pengumpulan log ACK menyimpan log di Simple Log Service (SLS) menggunakan salah satu dari dua metode berikut:

  • Gunakan proyek SLS yang sudah ada.

  • Biarkan ACK secara otomatis membuat proyek SLS selama pembuatan kluster.

Contoh berikut mengonfigurasi loongcollector dengan Terraform berdasarkan pilihan proyek Log Service Anda:

Klik untuk melihat detail

# Gunakan proyek SLS yang dibuat secara otomatis. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya. 
  # ...

  addons {
    name = "loongcollector"
  }
}

# Gunakan proyek SLS yang dibuat secara otomatis. Aktifkan dashboard Ingress yang dibuat secara otomatis. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya. 
  # ...

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


# Gunakan proyek SLS yang sudah ada. Aktifkan dashboard Ingress yang dibuat secara otomatis. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya. 
  # ...

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

# Instal dan konfigurasikan node-problem-detector. 
# Konfigurasikan node-problem-detector untuk menggunakan proyek SLS yang dibuat secara otomatis untuk menyimpan event. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya. 
  # ...

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

# Instal dan konfigurasikan node-problem-detector. 
# Konfigurasikan node-problem-detector untuk menggunakan proyek SLS yang sudah ada untuk menyimpan event. node-problem-detector dapat berbagi penyimpanan log yang digunakan oleh loongcollector. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya. 
  # ...

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

Konfigurasikan add-on pemantauan

ACK menyediakan Agen CloudMonitor untuk node ECS dan add-on Managed Service for Prometheus. Konfigurasikan parameter install_cloud_monitor dengan Terraform untuk menginstal Agen CloudMonitor.

Klik untuk melihat detail

# Instal Managed Service for 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 add-on Ingress

ACK menyediakan nginx-ingress-controller dan alb-ingress-controller untuk mengarahkan traffic ke aplikasi.

Contoh berikut mengonfigurasi add-on Ingress dengan Terraform:

Klik untuk melihat detail

# Konfigurasikan nginx-ingress-controller. 
# Jika Anda menggunakan instans Server Load Balancer (SLB) yang menghadap Internet, Anda harus mengatur parameter IngressSlbNetworkType ke internet dalam Config. 
# Jika Anda menggunakan instans SLB internal, Anda harus mengatur parameter IngressSlbNetworkType ke intranet dalam Config. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya. 
  # ...

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

# Konfigurasikan alb-ingress-controller. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Parameter lainnya. 
  # ...

  addons {
    name   = "alb-ingress-controller"
    config = "{\"albIngress\":{\"CreateDefaultALBConfig\":false}}"  # Belum dibuat 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 instans ALB baru. Anda harus menentukan minimal dua zona yang tersedia.
 
  }
}

Nonaktifkan instalasi add-on default

ACK menginstal add-on default selama pembuatan kluster. Untuk mencegah instalasi add-on tertentu, atur disabled = true. Contoh berikut menonaktifkan nginx-ingress-controller:

# Nonaktifkan sistem untuk menginstal add-on nginx-ingress-controller. 

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

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

Add-on yang diinstal secara default

Tanpa konfigurasi addons eksplisit, sistem menginstal add-on berikut:

Jenis kluster

Jenis add-on

Nama add-on default yang diinstal

Deskripsi

ACK cluster

System add-ons

kube-scheduler

Menjadwalkan resource kluster.

cloud-controller-manager

Membuat instans SLB dan mengelola entri rute node.

kube-apiserver

Bus dan gerbang Ingress kluster ACK.

kube-controller-manager

Manajer resource internal kluster.

Logging and monitoring add-ons

alicloud-monitor-controller

Memantau siklus hidup dan status kontainer.

metrics-server

Mengumpulkan metrik resource kontainer untuk penskalaan otomatis.

Volume add-ons

csi-plugin

Mengelola siklus hidup volume. Add-on ini direkomendasikan.

csi-provisioner

Membuat dan menghapus volume. Add-on ini direkomendasikan.

storage-operator

Mengelola siklus hidup add-on penyimpanan. Add-on ini direkomendasikan.

Network add-ons

CoreDNS

Berfungsi sebagai server DNS untuk kluster Kubernetes.

Gateway API

Model resource gerbang.

terway-eniip

Add-on jaringan Terway.

nginx-ingress-controller (edisi Pro diinstal secara default)

Mengurai aturan pengalihan lalu lintas NGINX Ingress.

ACK Serverless cluster

System add-ons

kube-scheduler

Menjadwalkan resource kluster.

ack-virtual-node

Menyekalakan resource dengan node virtual dan instans kontainer elastis.

cloud-controller-manager

Membuat instans SLB dan mengelola entri rute node.

kube-apiserver

Bus dan gerbang Ingress kluster ACK.

kube-controller-manager

Manajer resource internal kluster.

Network add-ons

CoreDNS

Berfungsi sebagai server DNS untuk kluster Kubernetes.

ACK Edge cluster

System add-ons

kube-scheduler

Menjadwalkan resource kluster.

cloud-controller-manager

Membuat instans SLB dan mengelola entri rute node.

kube-apiserver

Bus dan gerbang Ingress kluster ACK.

kube-controller-manager

Manajer resource internal kluster.

Logging and monitoring add-ons

alicloud-monitor-controller

Memantau siklus hidup dan status kontainer.

metrics-server

Mengumpulkan metrik penggunaan resource kontainer untuk mekanisme penskalaan otomatis.

Network add-ons

CoreDNS

Berfungsi sebagai server DNS untuk kluster Kubernetes.

terway-eniip

Add-on jaringan Terway.

Others

edge-controller-manager

-

edge-tunnel-agent

Membuat saluran data O&M terbalik untuk kolaborasi cloud-edge menggunakan arsitektur C/S.

edge-tunnel-server

Membuat saluran data O&M terbalik untuk kolaborasi cloud-edge menggunakan arsitektur C/S.

yurt-app-manager

Menyediakan kelompok node dan penerapan berbasis sel untuk kluster ACK Edge.

Contoh konfigurasi umum

Contoh berikut mencakup konfigurasi add-on umum.

  • Gunakan Terway sebagai add-on jaringan.

  • Gunakan CSI (direkomendasikan) atau FlexVolume. FlexVolume telah dihentikan.

  • Pilih nginx-ingress-controller atau alb-ingress-controller sesuai kebutuhan Anda.

  • Pilih add-on lain sesuai kebutuhan Anda.

Contoh 1: Jangan instal add-on apa pun

# Jangan instal add-on apa pun saat membuat kluster. Dalam skenario ini, hanya add-on default yang diinstal. 
# Templat sederhana. Ganti variabel dengan nilai yang diinginkan. 
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: Instal Terway

# Buat kluster yang memiliki Terway terinstal. 
# Aktifkan mode Assign One ENI to Each 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 memiliki Terway terinstal. 
# Aktifkan mode IPVLAN dan aktifkan kebijakan jaringan Kubernetes. 
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: Instal add-on Terway, CSI, dan nginx-ingress-controller

# Templat untuk menginstal add-on Terway, CSI, dan nginx-ingress-controller. 

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]\"}"
  }
}