ApplicationSet memungkinkan Anda membuat dan menerapkan satu atau lebih aplikasi ke beberapa kluster menggunakan satu template orkestrasi. Topik ini menjelaskan cara menggunakan ApplicationSet untuk membuat beberapa aplikasi.
Prasyarat
Anda telah masuk ke sistem GitOps. Untuk informasi lebih lanjut, lihat Masuk ke Sistem GitOps.
kubectl telah diinstal dan file kubeconfig yang digunakan untuk masuk ke instance ACK One Fleet yang ingin Anda gunakan telah diperoleh. Jalur default file kubeconfig adalah ~/.kube/config.
Contoh
Dalam contoh ini, aplikasi echo-server diterapkan ke Cluster Production dan Cluster Staging. Berikut adalah struktur direktori manifests dalam repositori Git yang digunakan untuk menerapkan aplikasi echo-server:
.
├── Dockerfile
├── go.mod
├── go.sum
├── main.go
└── manifests
└── directory
├── production
│ ├── deployment.yaml
│ └── service.yaml
└── staging
├── deployment.yaml
└── service.yamlAplikasi echo-server di Cluster Production berbeda dari aplikasi echo-server di Cluster Staging dalam hal versi aplikasi dan cara aplikasi tersebut diekspos. Oleh karena itu, subdirektori production dan staging dibuat untuk memisahkan template orkestrasi untuk aplikasi echo-server di Cluster Production dan Cluster Staging.
Prosedur
Buat file bernama applicationset.yaml berdasarkan konten berikut:
ApplicationSet digunakan untuk membuat dua aplikasi bernama
production-echo-serverdanstaging-echo-server. Aplikasiproduction-echo-serverditerapkan berdasarkan file manifest di subdirektori manifests/directory/production. Aplikasistaging-echo-serverditerapkan berdasarkan file manifest di subdirektori manifests/directory/staging.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 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-serverJalankan perintah berikut untuk menerapkan ApplicationSet:
kubectl -n argocd apply -f applicationset.yamlJalankan perintah berikut untuk menanyakan aplikasi yang dibuat:
kubectl -n argocd get applicationOutput yang Diharapkan:
NAME SYNC STATUS HEALTH STATUS production-echo-server OutOfSync Missing staging-echo-server OutOfSync MissingJalankan perintah berikut untuk menyinkronkan aplikasi ke kluster:
argocd app sync production-echo-server staging-echo-serverUji akses ke aplikasi echo-server.
Jalankan perintah berikut untuk mengakses aplikasi echo-server di Cluster Production:
curl XX.XX.XX.XX:8080/version #Ganti XX.XX.XX.XX dengan alamat IP aplikasi echo-server.Output yang Diharapkan:
"Hello Echo Server v1.0"Jalankan perintah berikut untuk mengakses aplikasi echo-server di Cluster Staging:
curl XX.XX.XX.XX:8080/version #Ganti XX.XX.XX.XX dengan alamat IP aplikasi echo-server.Output yang Diharapkan:
"Hello Echo Server v2.0"
Referensi
Untuk informasi lebih lanjut tentang cara menggunakan ApplicationSets, lihat ApplicationSet.