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.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Components and Add-ons.
-
Pada halaman Add-ons, temukan add-on target lalu klik Install atau Configuration.
-
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
}
}
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. |
|
|
progressive-delivery-tool |
Application management |
Memungkinkan rilis bertahap aplikasi. |
|
|
alicloud-monitor-controller |
Logging and monitoring |
Mengaktifkan integrasi dengan CloudMonitor. |
|
|
metrics-server |
Logging and monitoring |
Mengumpulkan metrik resource berdasarkan Metrics Server open source. Menyediakan Metrics API dan mendukung Horizontal Pod Autoscaler (HPA). |
|
|
ack-node-problem-detector |
Logging and monitoring |
Memantau kesehatan node berdasarkan Node Problem Detector (NPD) open source. Terhubung ke platform pemantauan pihak ketiga. |
|
|
ags-metrics-collector |
Logging and monitoring |
Memantau penggunaan resource per-node dalam alur kerja Alibaba Cloud Genomics Service (AGS). |
|
|
ack-arms-prometheus |
Logging and monitoring |
Memantau kluster ACK dengan menggunakan Managed Service for Prometheus. |
|
|
loongcollector |
Logging and monitoring |
Mengumpulkan log kontainer dengan menggunakan Log Service. |
|
|
csi-plugin |
Storage |
Memasang dan melepas volume. Diinstal secara otomatis saat CSI dipilih saat pembuatan kluster. |
|
|
csi-provisioner |
Storage |
Mengotomatiskan penyediaan volume. Diinstal secara otomatis saat CSI dipilih saat pembuatan kluster. |
|
|
storage-operator |
Storage |
Mengelola siklus hidup add-on volume. |
|
|
alicloud-disk-controller |
Storage |
Mengotomatiskan penyediaan volume disk. |
|
|
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. |
|
|
nginx-ingress-controller |
Networking |
Mengurai aturan routing Ingress dan meneruskan permintaan yang cocok ke layanan Backend. |
|
|
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. |
|
|
ack-node-local-dns |
Networking |
Solusi caching DNS lokal yang dikembangkan berdasarkan proyek open source NodeLocal DNSCache. |
|
|
aliyun-acr-credential-helper |
Security |
Menarik gambar privat tanpa kata sandi dari Container Registry Edisi Perusahaan dan Edisi Personal. |
|
|
gatekeeper |
Security |
Mengelola dan memberlakukan kebijakan OPA di kluster ACK serta mengelola label namespace. |
|
|
kritis-validation-hook |
Security |
Memverifikasi tanda tangan gambar. |
|
|
security-inspector |
Security |
Menjalankan inspeksi keamanan. |
|
|
ack-kubernetes-webhook-injector |
Security |
Mengelola alamat IP pod secara dinamis dalam daftar putih layanan Alibaba Cloud. |
|
|
ack-arena |
Others |
Menginstal Arena open source di konsol ACK. |
|
|
ack-cost-exporter |
Others |
Mengaktifkan pemrosesan data analisis biaya. |
|
|
ack-kubernetes-cronhpa-controller |
Others |
Menskalakan beban kerja berdasarkan jadwal. |
|
|
ack-virtual-node |
Others |
Berdasarkan Virtual Kubelet open source dengan dukungan Aliyun Provider. Memungkinkan integrasi tanpa hambatan antara Kubernetes dan Elastic Container Instance. |
|
|
aesm |
Others |
Add-on sistem Intel SGX yang menyediakan dukungan peluncuran untuk SGX Enclave, termasuk layanan seperti penyediaan kunci dan attestation jarak jauh. |
|
|
aliyun-acr-acceleration-suite |
Others |
Mengaktifkan pemuatan gambar sesuai permintaan. Diterapkan sebagai DaemonSet pada node pekerja. |
|
|
migrate-controller |
Others |
Memigrasikan aplikasi Kubernetes berdasarkan Velero open source. |
|
|
resource-controller |
Others |
Mengontrol resource pod secara dinamis. Diperlukan untuk penjadwalan CPU yang sadar topologi di kluster ACK Pro. |
|
|
sandboxed-container-controller |
Others |
Menambah dan memperluas fitur kontainer sandbox dalam runtime Sandboxed-Container. |
|
|
sandboxed-container-helper |
Others |
Menjalankan pemeriksaan kesehatan dan operasi O&M pada kontainer sandbox. |
|
|
sgx-device-plugin |
Others |
Menyederhanakan penggunaan Intel SGX dalam kontainer. Dikembangkan oleh tim ACK dan Ant Group. |
|
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
jsonencodeuntuk 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.
-
Buat file .tf dan definisikan Resource. Jika Anda sudah memiliki file .tf, definisikan Resource di sana.
Resource
alicloud_cs_kubernetes_addonmengelola add-on kluster. Biarkan kosong pada awalnya.resource "alicloud_cs_kubernetes_addon" "nginx-ingress-controller" { } -
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 -
Jalankan
terraform plan. Output menunjukkan perbedaan konfigurasi antara nginx-ingress-controller dan Resource.Perbarui Resource dari Langkah 1 berdasarkan diff dan .state. Ketika
terraform plantidak 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.
-
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
configdenganjsonencode. Tanyakan parameter yang didukung dengan Data Sourcealicloud_cs_kubernetes_addon_metadata. Lihat Kustomisasi parameter add-on.
-
-
Instal add-on:
terraform applyOutput 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.
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.
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.
Konfigurasikan add-on jaringan
Kluster ACK menggunakan Terway untuk jaringan kontainer. Lihat Ikhtisar.
Contoh berikut mengonfigurasi add-on jaringan dengan Terraform:
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.
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:
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.
Konfigurasikan add-on Ingress
ACK menyediakan nginx-ingress-controller dan alb-ingress-controller untuk mengarahkan traffic ke aplikasi.
-
nginx-ingress-controller: Berbasis ingress-nginx open source. Menyediakan routing yang fleksibel dan andal. Lihat Ikhtisar NGINX Ingress.
-
alb-ingress-controller: Dikelola oleh ACK. Menyediakan routing yang fleksibel dan andal. Lihat Akses Layanan dengan ALB Ingress.
Contoh berikut mengonfigurasi add-on Ingress dengan Terraform:
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.