All Products
Search
Document Center

Container Service for Kubernetes:FAQ GitOps

Last Updated:Jun 21, 2026

Topik ini menjawab pertanyaan umum (FAQ) tentang penggunaan GitOps.

Menghubungkan ke repositori Git privat

Karena alasan keamanan, repositori Git privat biasanya tidak dapat diakses dari internet publik. Untuk menghubungkan ACK One GitOps ke repositori Git privat, Anda harus menetapkan konektivitas jaringan terlebih dahulu, lalu melakukan konfigurasi yang diperlukan.

Langkah 1: Konfigurasikan resolusi nama domain

Langkah-langkah berikut menggunakan git.abc.cn sebagai contoh nama domain untuk repositori Git.

  1. Hubungkan jaringan on-premises Anda ke jaringan VPC ACK One. Untuk informasi lebih lanjut, lihat Menghubungkan IDC on-premises ke VPC.

  2. Gunakan PrivateZone untuk resolusi nama domain dalam VPC.

    1. Login ke Konsol DNS Alibaba Cloud. Di halaman Private Zone, klik tab User Defined Zones, lalu klik Add Zone. Di kotak dialog, konfigurasikan parameter berikut dan klik OK.

      • Authoritative Zone: abc.cn (menggunakan domain repositori Git git.abc.cn sebagai contoh)

      • Recursive Resolution Proxy for Subdomain Names: Enable

      • Effective Scope > Alibaba Cloud VPC: Pilih VPC yang terikat dengan ACK One.

    2. Dalam daftar nama domain, temukan PrivateZone yang baru saja Anda buat. Di kolom Actions, klik Settings untuk membuka halaman Settings.

    3. Di halaman Settings, klik Add Record. Di kotak dialog, konfigurasikan parameter berikut dan klik OK.

      • Record Type: A

      • Hostname: git (menggunakan git.abc.cn sebagai contoh)

      • Record Value: Masukkan alamat IP repositori Git internal.

Langkah 2: Menghubungkan ke repositori Git

Setelah Anda mengonfigurasi resolusi nama domain, ACK One GitOps dapat mengakses repositori Git privat. Anda kemudian dapat menghubungkan ke repositori Git tersebut dari konsol GitOps atau command-line interface (CLI) untuk menerapkan aplikasi. Untuk informasi lebih lanjut, lihat Private Repositories.

Pengelompokan aplikasi di konsol

Saat Anda memiliki banyak aplikasi, mengelompokkannya dapat meningkatkan kegunaan. Di panel navigasi kiri konsol GitOps, Anda dapat:

  • Filter berdasarkan Favorites Only, SYNC STATUS, atau HEALTH STATUS.

  • Mengelompokkan berdasarkan LABELS, PROJECTS, CLUSTERS, NAMESPACES, atau AUTO SYNC.

Mengontrol penerapan aplikasi

Anda sering kali perlu mengontrol penerapan aplikasi, terutama dalam pipeline CI/CD otomatis. Anda dapat menggunakan metode berikut:

  • Gunakan aplikasi dalam mode ManualSync. Setelah kode didorong, insinyur O&M meninjau dan memverifikasi aplikasi tersebut. Jika memenuhi persyaratan, mereka dapat secara manual mengklik Sync untuk menyinkronkan aplikasi ke kluster tujuan.

  • Perbarui secara manual versi gambar di repositori deployment. Jika Anda tidak memantau repositori gambar secara otomatis untuk perubahan, insinyur O&M harus memverifikasi gambar baru tersebut. Setelah diverifikasi, mereka dapat memperbarui secara manual versi gambar di repositori deployment aplikasi, yang akan memicu sinkronisasi aplikasi di Argo CD.

  • Tetapkan mekanisme tinjauan kode untuk repositori kode bisnis dalam pipeline CI/CD otomatis Anda. Setelah insinyur O&M menyetujui tinjauan kode dan menggabungkan kode tersebut, pipeline CI secara otomatis membangun dan mendorong gambar. Argo CD kemudian secara otomatis mendeteksi perubahan gambar dan menerapkannya ke lingkungan yang dikonfigurasi dengan AutoSync. Anda juga dapat menerapkan secara manual ke lingkungan yang dikonfigurasi untuk ManualSync.

Apa yang dapat saya lakukan jika repo-server Argo CD melaporkan error Out of diskspace?

Gejala

Saat Anda memeriksa log dengan menjalankan perintah kubectl -nargocd logs xxxx, repo-server mengembalikan pesan error 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 ruang disk yang tidak mencukupi menyebabkan kegagalan penulisan ke file .git/index.lock. Untuk mengatasinya, tingkatkan penyimpanan sementara untuk Pod komponen Argo CD ACK One GitOps. Komponen-komponen ini berjalan di Elastic Container Instance (ECI) dan memiliki penyimpanan sementara default sebesar 30 GiB. Ikuti langkah-langkah berikut untuk menambah kapasitas penyimpanan. Untuk informasi penagihan, lihat Penagihan ruang penyimpanan sementara.

  1. Dapatkan KubeConfig untuk instans fleet dari Konsol ACK One dan hubungkan ke instans fleet menggunakan kubectl. Untuk informasi lebih lanjut, lihat Mendapatkan KubeConfig kluster dan menggunakan kubectl untuk menghubungkan ke kluster.

  2. Di Templat Pod Deployment terkait, tambahkan anotasi k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi" ke Pod. Anda dapat menyesuaikan jumlah penyimpanan sementara.

    • Jika GitOps berada dalam mode default, tambahkan anotasi ke Deployment argocd-server.

      kubectl edit deployment -nargocd argocd-server
    • Jika GitOps berada dalam Mode Ketersediaan Tinggi, tambahkan anotasi ke Deployment argocd-dex-imageupdate-repo-server.

      kubectl edit deployment -nargocd argocd-dex-imageupdate-repo-server
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      ...
    ...
    spec:
      template:
        metadata:
          annotations:
            # Ini menambahkan 20 GiB ke penyimpanan default 30 GiB, sehingga total menjadi 50 GiB. Jumlah tambahan penyimpanan sementara dapat disesuaikan.
            k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi"
          ...
        ...
      ...

Mencegah pelacakan resource non-aplikasi

Informasi Latar Belakang

Argo CD menggunakan label app.kubernetes.io/instance untuk melacak resource Kubernetes. Jika suatu resource memiliki label ini dan nilainya cocok dengan nama Aplikasi, Argo CD akan melacaknya. Hal ini dapat menyebabkan status Aplikasi tetap OutOfSync dan berpotensi menghapus resource non-aplikasi secara tidak disengaja. Untuk mencegah perilaku ini, gunakan salah satu solusi berikut.

Solusi

  • Solusi 1: Di ConfigMap argocd/argocd-cm instans fleet, tambahkan resource.exclusions untuk mengabaikan resource non-aplikasi yang dilacak. Konfigurasi berikut mengabaikan resource CiliumIdentity.

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: Di ConfigMap argocd/argocd-cm instans fleet, tambahkan label pelacakan kustom application.instanceLabelKey: argocd.argoproj.io/instance. Setelah perubahan ini, resource yang dikelola oleh Argo CD akan menggunakan label argocd.argoproj.io/instance. Hal ini mencegah Argo CD melacak resource lain yang hanya memiliki label app.kubernetes.io/instance. Setelah menerapkan konfigurasi ini, Aplikasi yang sudah ada mungkin menunjukkan status OutOfSync hingga disinkronkan ulang.

    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

Me-restart komponen setelah perubahan ConfigMap

Di Argo CD, beberapa perubahan ConfigMap hanya berlaku setelah komponen Argo CD terkait di-restart.

Tabel berikut mencantumkan ConfigMap yang umum dimodifikasi.

Parameter

Deskripsi

Apakah perlu restart?

argocd-cm

Digunakan untuk mengonfigurasi pengaturan seperti OpenID Connect (OIDC) kustom, url akses kustom, dan pengguna lokal.

Restart biasanya tidak diperlukan. Namun, jika konfigurasi tidak berlaku, restart argocd-server.

argocd-cmd-params-cm

Digunakan untuk mengonfigurasi variabel lingkungan untuk komponen Argo CD.

Restart komponen terkait atau argocd-server diperlukan.

argocd-rbac-cm

Digunakan untuk mengonfigurasi izin Role-Based Access Control (RBAC) Argo CD.

Biasanya tidak perlu restart.

argocd-image-updater-config

Digunakan untuk mengelola konfigurasi image-updater.

Restart komponen terkait atau argocd-server diperlukan.

argocd-notifications-cm

Digunakan untuk mengelola konfigurasi argocd-notification-controller.

Restart komponen terkait atau argocd-server diperlukan.

Catatan

ACK One GitOps menyediakan dua mode operasional:

  1. Dalam mode default, semua komponen berjalan dalam satu Deployment. Untuk menerapkan perubahan, restart Deployment argocd-server.

  2. Dalam Mode Ketersediaan Tinggi, komponen dibagi menjadi beberapa Deployment. Anda dapat me-restart komponen individual sesuai kebutuhan.

    1. argocd-server

    2. argocd-application-controller: berisi application-controller dan applicationset-controller.

    3. argocd-repo-server

    4. argocd-dex-imageupdate-notification: berisi image-updater, notification-controller, dan dex.

    5. argocd-redis

Ikuti langkah-langkah berikut untuk me-restart komponen:

  1. Di halaman Multi-cluster GitOps, temukan bagian Argo CD Component dalam panel lipat GitOps.

  2. Klik Restart di sebelah Argo CD Component.

  3. Di kotak dialog, pilih komponen yang akan di-restart dari daftar drop-down Select Application to Restart, misalnya argocd-server, lalu klik OK.

Generator Git tidak mencerminkan perubahan direktori

Gejala

Saat menggunakan generator Git dengan ApplicationSet Argo CD, Anda mungkin menemukan bahwa resource Application baru gagal dibuat setelah direktori dependen di repositori Git ditambahkan atau diganti namanya. Masalah ini dapat terjadi meskipun Anda langsung memperbarui resource ApplicationSet agar mengarah ke path direktori baru.

Solusi

Masalah ini terjadi karena Argo CD tidak secara otomatis merefresh cache-nya saat path direktori berubah. Untuk mengatasinya, paksa refresh dengan menambahkan anotasi argocd.argoproj.io/application-set-refresh="true" ke ApplicationSet yang berisi generator Git. Lihat contoh berikut:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  ···
  annotations:
    ···
    argocd.argoproj.io/application-set-refresh: "true"
spec:
  ···
  generators:
    - git:
        ···     
  template:
    ···