Topik ini membahas masalah umum dan memberikan solusi untuk penggunaan GitOps.
Bagaimana cara menghubungkan GitOps ke repositori Git pribadi?
Bagaimana cara mengelompokkan aplikasi untuk ditampilkan di konsol GitOps?
Bagaimana insinyur O&M dapat mengontrol penerbitan aplikasi?
Apa yang harus saya lakukan jika repo-server Argo CD melaporkan kesalahan 'Out of disk space'?
Bagaimana cara mencegah aplikasi GitOps melacak sumber daya non-aplikasi?
Bagaimana cara me-restart komponen Argo CD yang sesuai setelah memodifikasi ConfigMap Argo CD?
Bagaimana cara menghubungkan GitOps ke repositori Git pribadi?
Repositori Git privat biasanya tidak dapat diakses melalui Internet karena alasan keamanan. Oleh karena itu, untuk menghubungkan ACK One GitOps ke repositori Git privat, Anda harus menetapkan konektivitas jaringan dan melakukan konfigurasi yang diperlukan.
Langkah 1: Konfigurasikan resolusi nama domain agar repositori Git privat dapat diakses oleh GitOps
Contoh berikut menunjukkan cara melakukan konfigurasi untuk nama domain repositori Git git.abc.cn.
Sambungkan jaringan lokal Anda ke jaringan VPC ACK One. Untuk informasi selengkapnya, lihat Sambungkan IDC lokal ke VPC.
Gunakan resolusi DNS internal untuk menerapkan resolusi nama domain dalam VPC.
Masuk ke Konsol DNS Alibaba Cloud. Pada halaman PrivateZone, klik tab Custom Domain Names. Lalu, klik Add Zone. Pada panel yang muncul, konfigurasikan parameter berikut dan klik OK.
Built-in Authoritative Domain Name (Zone): abc.cn (Nama domain repositori Git
git.abc.cndigunakan sebagai contoh.)Subdomain Recursive Resolution Proxy: Aktifkan
: Pilih VPC tempat ACK One terhubung.
Pada daftar nama domain, temukan PrivateZone yang telah Anda buat. Di kolom Actions, klik DNS Records untuk menuju ke halaman DNS Records.
Pada halaman DNS Records, klik Add Record. Pada panel yang muncul, konfigurasikan parameter berikut dan klik OK.
Record Type: A
Host: git (Nama domain repositori Git
git.abc.cndigunakan sebagai contoh.)Record Value: Masukkan alamat IP repositori Git pribadi.
Langkah 2: Hubungkan ke repositori Git menggunakan konsol atau CLI
Setelah Anda mengonfigurasi resolusi nama domain, ACK One GitOps dapat mengakses repositori Git privat. Anda kemudian dapat menghubungkan ke repositori Git dari konsol GitOps atau antarmuka baris perintah (CLI) untuk menerbitkan aplikasi. Untuk informasi selengkapnya, lihat Private Repositories.
Bagaimana cara mengelompokkan aplikasi untuk ditampilkan di konsol GitOps?
Jika Anda memiliki banyak aplikasi, Anda dapat mengelompokkannya untuk meningkatkan pengalaman pengguna. Di bilah menu sebelah kiri konsol GitOps, Anda dapat:
Memfilter aplikasi berdasarkan Hanya Favorit, STATUS SYNC, atau STATUS KESEHATAN.
Mengelompokkan aplikasi berdasarkan LABEL, PROYEK, KLUSTER, NAMESPACE, atau AUTO SYNC.

Bagaimana insinyur O&M dapat mengontrol penerbitan aplikasi?
Anda dapat mengontrol proses penerbitan aplikasi, terutama dalam pipeline CI/CD otomatis, dengan metode berikut:
Gunakan aplikasi dalam mode
ManualSync. Setelah kode didorong, insinyur O&M memverifikasi aplikasi tersebut. Jika aplikasi memenuhi persyaratan, insinyur O&M dapat secara manual mengklikSyncuntuk menyinkronkannya ke kluster tujuan.Ubah versi citra di repositori penerapan aplikasi. Jika perubahan citra di repositori tidak dipantau secara otomatis, insinyur O&M harus mengonfirmasi citra tersebut. Setelah dikonfirmasi, insinyur dapat secara manual mengubah versi citra di repositori penerapan aplikasi untuk memicu sinkronisasi aplikasi secara otomatis di Argo CD.
Tetapkan mekanisme tinjauan kode untuk repositori kode bisnis dalam pipeline CI/CD otomatis Anda. Setelah insinyur O&M menyetujui tinjauan kode, kode tersebut digabungkan. Penggabungan ini secara otomatis memicu pipeline CI untuk membangun dan mendorong citra. Argo CD kemudian secara otomatis memantau perubahan citra dan menerbitkan aplikasi. Aplikasi di lingkungan yang dikonfigurasi dengan
AutoSyncditerbitkan secara otomatis. Aplikasi di lingkungan yang dikonfigurasi denganManualSyncdapat diterbitkan secara manual.
Apa yang harus saya lakukan jika repo-server Argo CD melaporkan kesalahan Out of disk space?
Gejala
Jalankan perintah kubectl -n argocd logs xxxx untuk melihat log. Repo-server melaporkan pesan kesalahan berikut:
'git checkout --force xxx' failed exit status 128: error: unable to write file templates/deployment.yaml\nfatal: sha1 file '/tmp/_argocd-repo/xxx/.git/index.lock' write error. Out of diskspace...
Solusi
Masalah ini terjadi karena sistem tidak dapat menulis data ke file .git/index.lock akibat ruang disk yang tidak mencukupi. Untuk mengatasi masalah ini, tingkatkan ruang penyimpanan sementara untuk pod komponen Argo CD ACK One GitOps. Secara default, komponen-komponen ini berjalan di ECI dan memiliki ruang penyimpanan sementara sebesar 30 GiB. Langkah-langkah berikut menjelaskan cara menambah ruang tersebut. Untuk informasi lebih lanjut tentang penagihan, lihat Penagihan ruang penyimpanan sementara.
Dapatkan file KubeConfig instans armada dari Konsol ACK One dan gunakan kubectl untuk terhubung ke instans armada. Untuk informasi selengkapnya, lihat Dapatkan file KubeConfig kluster dan gunakan kubectl untuk terhubung ke kluster.
Pada templat pod deployment yang sesuai, tambahkan anotasi
k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi"ke pod. Anda dapat menyesuaikan ukuran ruang penyimpanan sementara.Jika GitOps berada dalam mode default, tambahkan anotasi ke deployment argocd-server.
kubectl edit deployment -n argocd argocd-serverJika GitOps berada dalam Mode Ketersediaan Tinggi, tambahkan anotasi ke deployment argocd-dex-imageupdate-repo-server.
kubectl edit deployment -n argocd argocd-dex-imageupdate-repo-server
apiVersion: apps/v1 kind: Deployment metadata: ... ... spec: template: metadata: annotations: # Tambahkan ruang penyimpanan sementara 20 GiB ke default 30 GiB. Total ruang penyimpanan sementara menjadi 50 GiB. Anda dapat menyesuaikan ukuran ruang penyimpanan sementara yang akan ditambahkan. k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi" ... ... ...
Bagaimana cara mencegah aplikasi GitOps melacak sumber daya non-aplikasi?
Informasi latar belakang
Argo CD menggunakan label app.kubernetes.io/instance untuk melacak sumber daya Kubernetes. Jika suatu sumber daya memiliki label ini dan nilainya sama dengan nama aplikasi, sumber daya tersebut dilacak oleh aplikasi. Hal ini dapat menyebabkan aplikasi tetap berada dalam status OutOfSync atau menyebabkan sumber daya non-aplikasi terus-menerus dihapus. Untuk menghindari perilaku tak terduga ini, Anda dapat menggunakan salah satu solusi berikut.
Solusi
Solusi 1: Dalam file
argocd/argocd-cmarmada, tambahkanresource.exclusionsuntuk mencegah sumber daya non-aplikasi dilacak. Konfigurasi berikut mengabaikan sumber dayaCiliumIdentity.
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:
- "*"Solusi 2: Dalam file
argocd/argocd-cmarmada, tambahkan tag kustomapplication.instanceLabelKey: argocd.argoproj.io/instance. Setelah Anda menambahkan tag tersebut, sumber daya aplikasi yang dikirimkan oleh Argo CD akan memiliki labelargocd.argoproj.io/instance. Oleh karena itu, sumber daya yang hanya memiliki labelapp.kubernetes.io/instancetidak akan dilacak. Setelah konfigurasi diterapkan, status aplikasi yang sudah ada mungkin ditampilkan sebagaiOutOfSync.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/instance
Bagaimana cara me-restart komponen Argo CD yang sesuai setelah memodifikasi ConfigMap Argo CD?
Di Argo CD, setelah Anda memodifikasi ConfigMap, Anda mungkin perlu me-restart komponen Argo CD yang sesuai agar modifikasi tersebut berlaku.
Tabel berikut menjelaskan ConfigMap yang sering dimodifikasi:
Item konfigurasi | Deskripsi | Apakah perlu me-restart komponen Argo CD |
argocd-cm | Digunakan untuk mengonfigurasi OpenID Connect (OIDC) kustom, akses kustom ke | Anda tidak perlu me-restart komponen Argo CD. Jika konfigurasi tidak berlaku, Anda dapat me-restart argocd-server. |
argocd-cmd-params-cm | Digunakan untuk mengonfigurasi variabel lingkungan untuk komponen Argo CD. | Anda perlu me-restart komponen yang sesuai atau argocd-server agar konfigurasi berlaku. |
argocd-rbac-cm | Digunakan untuk mengonfigurasi izin Kontrol akses berbasis peran (RBAC) Argo CD. | Anda tidak perlu me-restart komponen. |
argocd-image-updater-config | Digunakan untuk mengelola konfigurasi terkait image-updater. | Anda perlu me-restart komponen yang sesuai atau argocd-server agar konfigurasi berlaku. |
argocd-notifications-cm | Digunakan untuk mengelola konfigurasi terkait argocd-notification-controller. | Anda perlu me-restart komponen yang sesuai atau argocd-server agar konfigurasi berlaku. |
ACK One GitOps memiliki dua mode:
Mode default: Semua komponen berada dalam satu deployment. Untuk me-restart komponen, Anda harus me-restart argocd-server.
Mode Ketersediaan Tinggi: Komponen-komponen tersebar dalam deployment berikut. Untuk me-restart komponen, Anda dapat me-restart deployment yang sesuai.
argocd-server.
argocd-application-controller: berisi application-controller dan applicationset-controller.
argocd-repo-server.
argocd-dex-imageupdate-notification: berisi image-updater, notification-controller, dan dex.
argocd-redis.
Anda dapat melakukan langkah-langkah berikut untuk me-restart komponen:
Pada halaman Multi-cluster GitOps, temukan Argo CD Components di bagian GitOps.
Klik Restart di samping Argo CD Components.
Pada kotak dialog yang muncul, pilih nama komponen yang ingin Anda restart dari daftar drop-down Select An Application To Restart, seperti argocd-server, lalu klik OK.
Saat saya menggunakan generator git dari ApplicationSet, apakah perubahan pada direktori repositori Git tidak didukung?
Gejala
Saat Anda menggunakan generator Git dari ApplicationSet Argo CD, Anda mungkin mengalami masalah. Jika Anda menambahkan atau mengganti nama direktori di repositori Git yang digunakan generator tersebut, sumber daya Application yang diharapkan mungkin tidak dibuat. Hal ini dapat terjadi bahkan jika Anda langsung memperbarui sumber daya ApplicationSet agar mengarah ke jalur direktori baru.
Solusi
Masalah ini terjadi karena Argo CD tidak secara otomatis memperbarui cache-nya setelah nama direktori diubah. Untuk mengatasi masalah ini, Anda dapat memaksa pembaruan dengan menambahkan anotasi argocd.argoproj.io/application-set-refresh="true" ke ApplicationSet yang menggunakan generator Git. Kode berikut memberikan contohnya:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
···
annotations:
···
argocd.argoproj.io/application-set-refresh: "true"
spec:
···
generators:
- git:
···
template:
···