All Products
Search
Document Center

Container Service for Kubernetes:mengelola aplikasi edge ACK menggunakan yurtappset

Last Updated:Mar 07, 2026

Dalam kluster ACK Edge, gunakan application set (YurtAppSet) untuk mendistribusikan aplikasi ke beberapa node pool. YurtAppSet menyediakan mekanisme responsif yang mendeteksi perubahan pada label node pool, memungkinkan pengelolaan terpadu konfigurasi workload—seperti jumlah instans dan versi perangkat lunak—di berbagai node pool. Topik ini menjelaskan cara mengelola dan menerapkan aplikasi secara efisien dalam kluster ACK Edge menggunakan YurtAppSet.

Informasi Latar Belakang

Solusi Tradisional

Dalam skenario komputasi tepi, node komputasi sering kali memiliki karakteristik distribusi regional yang berbeda. Aplikasi yang sama mungkin perlu diterapkan pada node komputasi di wilayah yang berbeda. Misalnya, saat menggunakan Deployment, pendekatan tradisional adalah memberikan label identik pada node komputasi dalam satu wilayah yang sama, lalu membuat beberapa Deployment yang masing-masing menggunakan NodeSelector untuk menargetkan label berbeda. Pendekatan ini memungkinkan penerapan aplikasi yang sama di beberapa wilayah.

image

Seiring meluasnya distribusi regional dan meningkatnya variasi kebutuhan aplikasi antarwilayah, operasi dan pemeliharaan menjadi lebih kompleks. Kompleksitas ini terlihat dalam beberapa aspek:

  • Pembaruan yang membosankan: Saat versi aplikasi berubah, Anda harus memperbarui semua Deployment secara manual agar tetap konsisten di seluruh wilayah, sehingga mengurangi efisiensi pembaruan.

  • Pengelolaan yang rumit: Seiring bertambahnya jumlah wilayah yang dikelola, Anda harus membedakan dan memelihara Deployment untuk setiap wilayah secara manual, yang meningkatkan beban operasi dan pemeliharaan.

  • Konfigurasi redundan: Konfigurasi Deployment di berbagai wilayah sangat mirip, sehingga pengelolaannya menjadi rumit dan rentan terhadap kesalahan.

Solusi Manajemen Set Aplikasi

Application set (YurtAppSet) adalah fitur yang disediakan oleh Container Service for Edge. Fitur ini menyederhanakan penerapan terdistribusi dalam skenario komputasi tepi dengan menyediakan abstraksi tingkat lebih tinggi untuk pengelolaan terpadu beberapa workload—seperti sumber daya Deployment—termasuk pembuatan, pembaruan, dan penghapusan.

YurtAppSet mengatasi masalah umum dalam solusi tradisional—seperti efisiensi pembaruan rendah, pengelolaan rumit, dan konfigurasi redundan—serta meningkatkan efisiensi operasi dan pemeliharaan serta fleksibilitas penerapan aplikasi.

  • workloadTemplate: Definisi templat terpadu

    YurtAppSet memungkinkan Anda mendefinisikan satu workloadTemplate untuk mengelola workload di berbagai wilayah. Hal ini mengurangi konfigurasi penerapan redundan dan membuat operasi batch—seperti pembuatan, pembaruan, dan penghapusan—lebih efisien dan konsisten.

  • nodepoolSelector: Penerapan otomatis

    YurtAppSet menggunakan mekanisme nodepoolSelector untuk memilih node pool target secara fleksibel. Mekanisme ini tersinkronisasi dengan perubahan dinamis pada node pool. Saat node pool baru dibuat atau yang sudah ada dihapus, nodepoolSelector secara otomatis mendeteksi dan mencocokkan node pool yang paling sesuai untuk distribusi dan penerapan workload, sehingga mengurangi beban operasi dan pemeliharaan.

  • workloadTweaks: Konfigurasi kustom spesifik wilayah

    Saat kebutuhan aplikasi berbeda antarwilayah, YurtAppSet menyediakan fitur workloadTweaks yang memungkinkan Anda menyesuaikan workload di wilayah tertentu agar memenuhi kebutuhan spesifik tanpa harus mengelola atau memperbarui setiap workload secara terpisah.

image

Buat Instans Application Set

  • Jika kluster ACK Edge menjalankan versi 1.26 atau lebih baru, terapkan aplikasi menggunakan YurtAppSet.

  • Jika kluster ACK Edge menjalankan versi sebelum 1.26, terapkan aplikasi menggunakan UnitedDeployment.

Versi 1.26 dan Lebih Baru

Buat instans application set YurtAppSet yang menggunakan templat workload Deployment.

Contoh templat YAML lengkap adalah sebagai berikut:

apiVersion: apps.openyurt.io/v1beta1
kind: YurtAppSet
metadata:
  name: example
  namespace: default
spec:
  revisionHistoryLimit: 5
  pools:
  - np1xxxxxx
  - np2xxxxxx
  nodepoolSelector:
    matchLabels:
      yurtappset.openyurt.io/type: "nginx"
  workload:
    workloadTemplate:
      deploymentTemplate:
        metadata:
          labels:
            app: example
        spec:
          replicas: 2
          selector:
            matchLabels:
              app: example
          template:
            metadata:
              labels:
                app: example
            spec:
              containers:
              - image: nginx:1.19.1
                imagePullPolicy: Always
                name: nginx
    workloadTweaks:
    - pools:
      - np2xxxxxx
      tweaks:
        replicas: 3
        containerImages:
        - name: nginx
          targetImage: nginx:1.20.1
        patches:
        - path: /metadata/labels/test
          operation: add
          value: test

Tabel berikut menjelaskan bidang-bidang terkait:

Bidang

Deskripsi

Wajib

spec.pools

Tentukan daftar nama node pool (tipe slice) tempat aplikasi perlu diterapkan. Lebih disarankan menggunakan nodepoolSelector untuk menentukan node pool.

Tidak

spec.nodepoolSelector

Pilih node pool tempat aplikasi perlu diterapkan menggunakan labelSelector. Jika pools dan nodepoolSelector keduanya ditentukan, gabungan keduanya akan digunakan.

nodepoolSelector memilih node pool dengan mencocokkan label (metadata.Labels) dari sumber daya NodePool. Untuk mengubah label tersebut, cari dan edit YAML NodePool yang sesuai pada halaman Custom Resources di konsol kluster.

Tidak

spec.workload.workloadTemplate

Tentukan templat Workload yang akan dikelola. Saat ini, templat deploymentTemplate dan statefulSetTemplate didukung.

Ya

spec.workload.workloadTweaks

Tentukan modifikasi kustom untuk Workload.

Tidak

spec.workload.workloadTweaks[*].pools

Tentukan node pool (tipe slice) tempat modifikasi ini berlaku.

Tidak

spec.workload.workloadTweaks[*].nodepoolSelector

Pilih node pool yang akan dimodifikasi menggunakan labelSelector.

Tidak

spec.workload.workloadTweaks[*].tweaks.replicas

Tentukan jumlah replika untuk Workload yang dimodifikasi.

Tidak

spec.workload.workloadTweaks[*].tweaks.containerImages

Tentukan gambar kontainer untuk Workload yang dimodifikasi.

Tidak

spec.workload.workloadTweaks[*].tweaks.patches

Ubah bidang apa pun dari workloadTemplate menggunakan bidang `patch`.

Tidak

spec.workload.workloadTweaks[*].tweaks.patches[*].path

Tentukan jalur bidang yang akan diubah dalam workloadTemplate.

Tidak

spec.workload.workloadTweaks[*].tweaks.patches[*].operation

Tentukan operasi yang akan dilakukan pada jalur tersebut (saat ini mendukung: add/remove/replace).

Tidak

spec.workload.workloadTweaks[*].tweaks.patches[*].value

Tentukan nilai terbaru setelah modifikasi (hanya berlaku untuk operasi add/replace).

Tidak

status.conditions

Menunjukkan status saat ini dari YurtAppSet, termasuk status pemilihan node pool dan status Workload.

status.readyWorkloads

Menunjukkan jumlah Workload yang dikelola oleh YurtAppSet di mana semua replika siap.

status.updatedWorkloads

Menunjukkan jumlah Workload yang dikelola oleh YurtAppSet di mana semua replika telah diperbarui ke versi terbaru.

status.totalWorkloads

Menunjukkan jumlah total Workload yang dikelola oleh YurtAppSet.

Versi Sebelum 1.26

Buat instans UnitedDeployment yang menggunakan templat workload Deployment.

Contoh templat YAML lengkap adalah sebagai berikut:

apiVersion: apps.kruise.io/v1alpha1
kind: UnitedDeployment
metadata:
  name: example
  namespace: default
spec:
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      app: example
  template:
    deploymentTemplate:
      metadata:
        creationTimestamp: null
        labels:
          app: example
      spec:  
        selector:
          matchLabels:
            app: example
        template:
          metadata:
            creationTimestamp: null
            labels:
              app: example
          spec:
            containers:
            - image: nginx:1.19.3
              imagePullPolicy: Always
              name: nginx
            dnsPolicy: ClusterFirst
            restartPolicy: Always
  topology:
    subsets:
    - name: cloud
      nodeSelectorTerm:
        matchExpressions:
        - key: alibabacloud.com/nodepool-id
          operator: In
          values:
          - np4b9781c40f0e46c581b2cf2b6160****
      replicas: 2
    - name: edge
      nodeSelectorTerm:
        matchExpressions:
        - key: alibabacloud.com/nodepool-id
          operator: In
          values:
          - np47832359db2e4843aa13e8b76f83****
      replicas: 2
      tolerations:
      - effect: NoSchedule
        key: apps.openyurt.io/taints
        operator: Exists

Tabel berikut menjelaskan bidang-bidang terkait:

Bidang

Deskripsi

spec.workloadTemplate

Merupakan templat Workload yang didukung. Node pool saat ini mendukung templat deploymentTemplate/statefulSetTemplate.

spec.topology.subsets

Tentukan beberapa node pool.

spec.topology.subsets[*].name

Nama node pool.

spec.topology.pools[*].nodeSelectorTerm

Untuk konfigurasi afinitas host node pool agar sesuai dengan NodePool, gunakan apps.openyurt.io/nodepool sebagai Key dan ID node pool sebagai Value.

Catatan

Pada halaman Node Pools, lihat ID node pool di bawah Name node pool cloud dan edge yang sesuai.

spec.topology.pools[*].tolerations

Konfigurasi toleransi host untuk node pool.

spec.topology.pools[*].replicas

Jumlah instans Pod di setiap node pool.

Kelola Aplikasi Edge Menggunakan Application Set

  • Tingkatkan versi aplikasi: Ubah bidang dalam spec.workload.workloadTemplate untuk memicu proses upgrade. Controller menerapkan templat yang diperbarui ke workload di setiap node pool, yang kemudian memicu controller node pool untuk melakukan upgrade pod.

  • Lakukan pembaruan grayscale untuk aplikasi di suatu wilayah: Ubah konfigurasi spec.workload.workloadTweak[*].containerImages untuk memicu pembaruan gambar pada pod aplikasi di node pool yang sesuai.

  • Skalakan aplikasi di suatu wilayah: Ubah konfigurasi spec.workload.workloadTweak[*].replicas untuk memicu operasi penskalaan pada pod aplikasi di node pool yang sesuai.

  • Terapkan aplikasi ke wilayah baru: Buat node pool baru yang cocok dengan label spec.nodepoolSelector. YurtAppSet mendeteksi perubahan pada sumber daya node pool dan secara otomatis membuat workload untuk node pool tersebut. Kemudian, tambahkan node dari wilayah tersebut ke node pool.

  • Hentikan aplikasi di suatu wilayah: Hapus node pool di wilayah yang sesuai. YurtAppSet secara otomatis menghapus workload yang terkait dengan wilayah tersebut.