Pertanyaan umum dan solusi untuk GitOps ACK One.
Pengaturan dan konfigurasi
Operasi
Pemecahan Masalah
Pengaturan dan konfigurasi
Bagaimana cara menghubungkan GitOps ke repositori Git privat?
Repositori Git privat biasanya tidak dapat diakses melalui internet publik. Untuk menghubungkan ACK One GitOps ke repositori tersebut, terlebih dahulu buat konektivitas jaringan, lalu daftarkan repositorinya.
Langkah 1: Konfigurasikan resolusi DNS untuk repositori Git privat
Contoh berikut menggunakan domain repositori Git git.abc.cn.
Hubungkan jaringan on-premises Anda ke Virtual Private Cloud (VPC) ACK One. Untuk detailnya, lihat Hubungkan IDC on-premises ke VPC.
Siapkan resolusi DNS internal di dalam VPC:
Masuk ke Konsol Alibaba Cloud DNS. Di halaman Private Zone, klik tab User Defined Zones di bawah tab Authoritative Zone, lalu klik Add Zone. Atur parameter berikut dan klik OK.
Parameter Nilai Authoritative Zone abc.cn(domain induk repositori Git Anda)Recursive Resolution Proxy for Subdomain Names Enable Effective Scope > Current Account > Standard VPC Pilih VPC yang disambungkan ke ACK One Di daftar zona, temukan zona yang telah Anda buat. Di kolom Actions, klik Settings.
Di tab Settings, klik Add Record. Atur parameter berikut dan klik OK.
Parameter Nilai Record Type A Hostname git(bagian subdomain darigit.abc.cn)Record Values Alamat IP repositori Git privat Anda
Langkah 2: Daftarkan repositori di GitOps
Setelah DNS dikonfigurasi, ACK One GitOps dapat mengakses repositori Git privat Anda. Daftarkan repositori tersebut melalui konsol atau CLI GitOps. Untuk opsi autentikasi (kredensial HTTPS, kunci SSH, dan lainnya), lihat Private Repositories dalam dokumentasi Argo CD.
Bagaimana cara mengelompokkan aplikasi di konsol GitOps?
Di bilah menu sisi kiri konsol GitOps, Anda dapat memfilter dan mengelompokkan aplikasi:
Filter berdasarkan: Favorites Only, SYNC STATUS, atau HEALTH STATUS
Kelompokkan berdasarkan: LABELS, PROJECTS, CLUSTERS, NAMESPACES, atau AUTO SYNC

Operasi
Bagaimana insinyur O&M dapat mengontrol penerbitan aplikasi?
Dalam pipeline CI/CD otomatis, Anda memiliki tiga opsi agar insinyur O&M tetap mengontrol apa yang diterbitkan.
Opsi 1: Gunakan mode ManualSync
Konfigurasikan lingkungan dengan ManualSync. Setelah kode didorong, insinyur O&M meninjau dan memverifikasi perubahan tersebut, lalu secara manual mengklik Sync untuk menerapkan ke kluster tujuan.
Opsi 2: Perbarui versi gambar secara manual
Jika Argo CD Image Updater tidak memantau repositori, insinyur O&M mengonfirmasi gambar baru dan memperbarui versi gambar secara manual di repositori deployment. Hal ini akan memicu sinkronisasi Argo CD secara otomatis.
Opsi 3: Wajibkan tinjauan kode sebelum pipeline CI dijalankan
Tambahkan gerbang tinjauan kode ke pipeline CI/CD Anda. Setelah insinyur O&M menyetujui tinjauan tersebut, kode digabungkan (merge), yang memicu pipeline CI untuk membangun dan mendorong gambar. Argo CD kemudian mendeteksi perubahan gambar dan menerbitkan aplikasi. Aplikasi dengan AutoSync diterapkan secara otomatis; aplikasi dengan ManualSync menunggu sinkronisasi manual.
Komponen Argo CD mana yang perlu direstart setelah saya memodifikasi ConfigMap?
Hal ini bergantung pada ConfigMap yang dimodifikasi:
| ConfigMap | Tujuan | Perlu restart? |
|---|---|---|
argocd-cm | OpenID Connect (OIDC) kustom, URL akses kustom, pengguna lokal | Tidak — jika perubahan tidak berlaku, restart argocd-server |
argocd-cmd-params-cm | Variabel lingkungan untuk komponen Argo CD | Ya — restart komponen yang terpengaruh atau argocd-server |
argocd-rbac-cm | Izin kontrol akses berbasis peran (RBAC) | Tidak |
argocd-image-updater-config | Pengaturan Argo CD Image Updater | Ya — restart komponen yang terpengaruh atau argocd-server |
argocd-notifications-cm | Pengaturan controller notifikasi | Ya — restart komponen yang terpengaruh atau argocd-server |
Deployment mana yang perlu direstart tergantung pada mode GitOps Anda:
Mode default: Semua komponen berjalan dalam satu deployment. Restart
argocd-server.Mode Ketersediaan Tinggi: Komponen dibagi ke beberapa deployment terpisah. Restart hanya deployment yang diperlukan:
Deployment Komponen yang dikandung argocd-serverargocd-server argocd-application-controllerapplication-controller, applicationset-controller argocd-repo-serverrepo-server argocd-dex-imageupdate-notificationimage-updater, notification-controller, dex argocd-redisredis
Untuk merestart komponen dari konsol:
Di halaman Multi-cluster GitOps, temukan Argo CD Component di bagian GitOps.
Klik Restart di samping Argo CD Component.
Pilih komponen dari daftar drop-down (misalnya, argocd-server) dan klik OK.
Pemecahan Masalah
repo-server Argo CD melaporkan "Out of disk space" — bagaimana cara memperbaikinya?
Periksa log terlebih dahulu untuk mengonfirmasi error ini:
kubectl -n argocd logs <repo-server-pod-name>Jika Anda melihat pesan seperti berikut, pod kehabisan penyimpanan sementara:
'git checkout --force xxx' failed exit status 128: error: unable to write file templates/deployment.yaml
fatal: sha1 file '/tmp/_argocd-repo/xxx/.git/index.lock' write error. Out of diskspace...Secara default, ACK One GitOps menjalankan komponen Argo CD pada Elastic Container Instances (ECI) dengan penyimpanan sementara sebesar 30 GiB. Untuk memperbaiki masalah ini, tambahkan anotasi k8s.aliyun.com/eci-extra-ephemeral-storage untuk meningkatkan batas penyimpanan.
Ambil file kubeconfig untuk instans armada Anda dari Konsol ACK One dan hubungkan dengan kubectl. Untuk detailnya, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk menghubungkan ke kluster.
Edit deployment yang menjalankan repo-server:
Mode default — edit
argocd-server:kubectl edit deployment -n argocd argocd-serverMode Ketersediaan Tinggi — edit
argocd-dex-imageupdate-repo-server:kubectl edit deployment -n argocd argocd-dex-imageupdate-repo-server
Di
metadata.annotationstemplat pod, tambahkan anotasi tersebut. Contoh berikut menambahkan 20 GiB, sehingga total menjadi 50 GiB. Sesuaikan nilainya sesuai beban kerja Anda.spec: template: metadata: annotations: # Menambahkan 20 GiB ke default 30 GiB (total: 50 GiB). Sesuaikan sesuai kebutuhan. k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi"
Untuk detail penagihan penyimpanan sementara, lihat Penagihan ruang penyimpanan sementara.
Sebuah aplikasi melacak resource yang seharusnya tidak dilacak — bagaimana cara menghentikannya?
Ada dua cara untuk memperbaiki masalah ini.
Opsi 1: Kecualikan jenis resource yang terpengaruh
Tambahkan resource.exclusions ke ConfigMap argocd-cm di armada. Contoh berikut mengecualikan resource CiliumIdentity dari semua kluster:
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
labels:
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
data:
resource.exclusions: |
- apiGroups:
- cilium.io
kinds:
- CiliumIdentity
clusters:
- "*"Opsi 2: Beralih ke label pelacakan kustom
Tambahkan application.instanceLabelKey: argocd.argoproj.io/instance ke ConfigMap argocd-cm. Setelah perubahan ini, Argo CD melacak resource menggunakan argocd.argoproj.io/instance alih-alih app.kubernetes.io/instance, sehingga resource yang hanya memiliki label lama tidak lagi dilacak.
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
labels:
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
data:
application.instanceLabelKey: argocd.argoproj.io/instanceSetelah menerapkan perubahan ini, aplikasi yang sudah ada mungkin menampilkan status OutOfSync hingga rekonsiliasi berikutnya.Latar belakang: Argo CD menggunakan label app.kubernetes.io/instance untuk melacak resource Kubernetes — resource apa pun yang memiliki label ini dengan nilai nama aplikasi dianggap sebagai bagian dari aplikasi tersebut. Jika controller lain di kluster Anda menetapkan label ini secara independen, Argo CD mungkin mulai mengelola resource tersebut, menyebabkannya tampak OutOfSync atau dihapus pada sinkronisasi berikutnya.
Setelah saya mengganti nama direktori di Git, generator git ApplicationSet tidak membuat Application yang diharapkan — mengapa?
Ini adalah masalah cache. Saat Anda mengganti nama atau menambahkan direktori yang menjadi acuan generator git, Argo CD tidak secara otomatis membatalkan cache revisinya. Generator terus membaca status cache lama, sehingga resource Application baru tidak dibuat — meskipun Anda telah memperbarui ApplicationSet agar mengarah ke path baru.
Untuk memaksa refresh, tambahkan anotasi argocd.argoproj.io/application-set-refresh: "true" ke ApplicationSet:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
annotations:
argocd.argoproj.io/application-set-refresh: "true"
spec:
generators:
- git:
# ...
template:
# ...