全部产品
Search
文档中心

Container Service for Kubernetes:FAQ GitOps

更新时间:Nov 11, 2025

Topik ini membahas masalah umum dan memberikan solusi untuk penggunaan GitOps.

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.

  1. Sambungkan jaringan lokal Anda ke jaringan VPC ACK One. Untuk informasi selengkapnya, lihat Sambungkan IDC lokal ke VPC.

  2. Gunakan resolusi DNS internal untuk menerapkan resolusi nama domain dalam VPC.

    1. 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.cn digunakan sebagai contoh.)

      • Subdomain Recursive Resolution Proxy: Aktifkan

      • Zone Scope > Alibaba Cloud VPC: Pilih VPC tempat ACK One terhubung.

    2. Pada daftar nama domain, temukan PrivateZone yang telah Anda buat. Di kolom Actions, klik DNS Records untuk menuju ke halaman DNS Records.

    3. 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.cn digunakan 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.

image

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 mengklik Sync untuk 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 AutoSync diterbitkan secara otomatis. Aplikasi di lingkungan yang dikonfigurasi dengan ManualSync dapat 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.

  1. 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.

  2. 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-server
    • Jika 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-cm armada, tambahkan resource.exclusions untuk mencegah sumber daya non-aplikasi dilacak. Konfigurasi berikut mengabaikan sumber daya 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: Dalam file argocd/argocd-cm armada, tambahkan tag kustom application.instanceLabelKey: argocd.argoproj.io/instance. Setelah Anda menambahkan tag tersebut, sumber daya aplikasi yang dikirimkan oleh Argo CD akan memiliki label argocd.argoproj.io/instance. Oleh karena itu, sumber daya yang hanya memiliki label app.kubernetes.io/instance tidak akan dilacak. Setelah konfigurasi diterapkan, status aplikasi yang sudah ada mungkin ditampilkan sebagai OutOfSync.

    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 url, pengguna lokal, dan pengaturan lainnya.

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.

Catatan

ACK One GitOps memiliki dua mode:

  1. Mode default: Semua komponen berada dalam satu deployment. Untuk me-restart komponen, Anda harus me-restart argocd-server.

  2. Mode Ketersediaan Tinggi: Komponen-komponen tersebar dalam deployment berikut. Untuk me-restart komponen, Anda dapat me-restart deployment yang sesuai.

    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.

Anda dapat melakukan langkah-langkah berikut untuk me-restart komponen:

  1. Pada halaman Multi-cluster GitOps, temukan Argo CD Components di bagian GitOps.

  2. Klik Restart di samping Argo CD Components.

  3. 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:
    ···