All Products
Search
Document Center

Container Service for Kubernetes:Buat beberapa aplikasi dengan ApplicationSet

Last Updated:Aug 21, 2026

ApplicationSet menyederhanakan orkestrasi aplikasi multi-kluster: dari satu templat dan generator, secara otomatis membuat satu atau lebih Argo CD Applications. Topik ini menjelaskan cara menggunakan ApplicationSet untuk membuat beberapa aplikasi.

Gunakan pendekatan ini ketika:

  • Penerapan multi-lingkungan: Terapkan aplikasi yang sama di lingkungan production dan staging dengan konfigurasi khusus lingkungan.

  • Add-on kluster: Instal alat bersama (monitoring, logging, ingress) di seluruh armada kluster.

  • Penerapan mandiri (self-service): Izinkan tim menerapkan ke kluster yang mereka miliki tanpa mengubah konfigurasi bersama.

Cara kerja

Kontroler ApplicationSet memproses manifes Anda dalam empat langkah:

  1. Generator menghasilkan parameter berupa pasangan kunci-nilai — pada generator List, setiap elemen menjadi satu set parameter.

  2. Parameter tersebut disubstitusikan ke dalam templat, sekali untuk setiap set parameter.

  3. Setiap templat yang telah dirender menjadi sebuah resource Argo CD Application.

  4. Kontroler Argo CD mengambil resource Application baru tersebut dan mengelola siklus hidup sinkronisasinya.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Masuk ke sistem GitOps.

  • Menginstal kubectl dengan kubeconfig untuk instans ACK One Fleet target. Jalur default: ~/.kube/config.

Terapkan ApplicationSet

Contoh ini menerapkan echo-server ke dua kluster (production dan staging), masing-masing dengan subdirektori manifes tersendiri untuk konfigurasi khusus lingkungan.

Struktur repositori:

.
├── Dockerfile
├── go.mod
├── go.sum
├── main.go
└── manifests
    └── directory
        ├── production
        │   ├── deployment.yaml
        │   └── service.yaml
        └── staging
            ├── deployment.yaml
            └── service.yaml

Buat manifes ApplicationSet

Buat applicationset.yaml dengan konten berikut.

Generator List menentukan dua set parameter — satu untuk setiap kluster. {{cluster}} dan {{url}} disubstitusikan ke dalam templat, menghasilkan dua Application: production-echo-server dan staging-echo-server. Masing-masing mengarah ke subdirektori manifes lingkungannya.

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: echo-server
spec:
  generators:
  - list:
      elements:
      - cluster: production
        url: https://47.91.XX.XX:6443
      - cluster: staging
        url: https://47.111.XX.XX:6443
      # Untuk menambahkan lebih banyak kluster, tambahkan elemen lain di sini:
      # - cluster: <cluster-name>
      #   url: <cluster-api-server-url>
  template:
    metadata:
      name: '{{cluster}}-echo-server'
    spec:
      project: default
      source:
        repoURL: https://code.aliyun.com/shuwei.hsw/echo-server.git
        targetRevision: main
        path: manifests/directory/{{cluster}}
      destination:
        server: '{{url}}'
        namespace: multi-echo-server

Terapkan ApplicationSet

kubectl -n argocd apply -f applicationset.yaml

Verifikasi pembuatan aplikasi

kubectl -n argocd get application

Output yang diharapkan:

NAME                     SYNC STATUS   HEALTH STATUS
production-echo-server   OutOfSync     Missing
staging-echo-server      OutOfSync     Missing

OutOfSync menunjukkan bahwa Application sudah ada tetapi belum diterapkan.

Sinkronkan aplikasi

argocd app sync production-echo-server staging-echo-server

Verifikasi akses

Uji akses ke masing-masing lingkungan setelah proses sinkronisasi selesai.

Cluster Production (echo-server v1.0):

curl XX.XX.XX.XX:8080/version

Output yang diharapkan:

"Hello Echo Server v1.0"

Cluster Staging (echo-server v2.0):

curl XX.XX.XX.XX:8080/version

Output yang diharapkan:

"Hello Echo Server v2.0"

Ganti XX.XX.XX.XX dengan IP eksternal Service echo-server di masing-masing kluster.

Langkah berikutnya