Memecahkan masalah saat menghubungkan ke sumber tepercaya

Halaman ini menunjukkan cara menyelesaikan masalah yang terjadi jika Config Sync tidak dapat terhubung dengan sumber tepercaya Anda.

Masalah Authentication

Jika autentikasi gagal, Config Sync tidak dapat terhubung ke sumber tepercaya. Bagian berikut menunjukkan cara menyelesaikan beberapa masalah autentikasi.

Verifikasi sertifikat server gagal untuk server Git

Koneksi ke server Git pribadi menggunakan TLS untuk memverifikasi keaslian server. Untuk melakukan validasi ini, Anda harus memberikan sertifikat yang mengidentifikasi root certificate authority dan intermediate certificate authority yang mensertifikasi identitas server Git. Jika verifikasi sertifikat server Git gagal, itu berarti rantai kepercayaan tidak dapat dibuat.

Jika Anda menerima error yang menunjukkan bahwa verifikasi sertifikat server gagal, salah satu masalah berikut mungkin menjadi penyebabnya:

  • Sertifikat certificate authority (CACert) tidak ditentukan. Untuk memperbaiki masalah ini, tambahkan CACert sebagai Secret dan referensikan Secret tersebut di kolom spec.git.caCertSecretRef dari objek RootSync atau RepoSync Anda.
  • CACert ini tidak lengkap. Untuk memperbaiki masalah ini, perbaiki CACert Secret agar berisi rantai kepercayaan lengkap, termasuk root dan intermediate certificate.
  • CACert tidak valid. Untuk memperbaiki masalah ini, download rantai sertifikat dari link yang ditentukan oleh sertifikat yang diberikan oleh server, lalu update Secret CACert.

Tidak dapat memasang Git Secret

Jika Anda menerima error berikut saat container git-sync mencoba menyinkronkan repositori dengan Secret, berarti Git Secret tidak berhasil dipasang ke container git-sync:

KNV2004: unable to sync repo Error in the git-sync container: ERROR: can't configure SSH: can't access SSH key: stat /etc/git-secret/ssh: no such file or directory: lstat /repo/root/rev: no such file or directory

Error ini dapat disebabkan oleh pengalihan jenis autentikasi repositori Git Anda dari none, gcenode, atau gcpserviceaccount ke jenis lain yang memerlukan Secret.

Untuk mengatasi masalah ini, jalankan perintah berikut untuk memulai ulang Reconciler Manager dan Reconcilers:

# Stop the reconciler-manager Pod. The reconciler-manager Deployment spins
# up a new Pod which can pick up the latest `spec.git.auth`.
kubectl delete po -l app=reconciler-manager -n config-management-system

# Delete the reconciler Deployments. The reconciler-manager recreates the
# reconciler Deployments with correct volume mount.
kubectl delete deployment -l app=reconciler -n config-management-system

Masalah konfigurasi

Sering kali, masalah pada konfigurasi dapat menyebabkan Config Sync tidak dapat terhubung ke sumber tepercaya Anda. Bagian berikut menjelaskan cara mengidentifikasi dan menyelesaikan masalah konfigurasi umum.

Nama diagram tidak valid

Saat menyinkronkan dari repositori Helm, pastikan Anda menetapkan nilai yang benar untuk spec.helm.chart. Nama diagram tidak berisi nama repositori, versi diagram, atau .tgz. Anda dapat memverifikasi nama diagram dengan perintah helm template.

Direktori konfigurasi tidak valid

Periksa konfigurasi Anda untuk menemukan kesalahan seperti nilai yang salah untuk policyDir pada objek ConfigManagement atau spec.git.dir atau spec.oci.dir dalam objek RootSync atau RepoSync. Nilai direktori disertakan dalam setiap pesan error KNV2004 yang Anda terima; verifikasi nilai terhadap repositori Git atau image OCI Anda.

Cabang Git tidak valid

Periksa log container git-sync untuk menemukan error seperti Remote branch BRANCH_NAME not found in upstream origin atau warning: Could not find remote branch BRANCH_NAME to clone. Cabang default ditetapkan ke master jika tidak ditentukan.

Kredensial Git, Helm, atau OCI tidak valid

Periksa log Config Sync untuk penampung git-sync, helm-sync, atau oci-sync untuk salah satu error berikut:

  • Could not read from remote repository. Ensure you have the correct access rights and the repository exists.
  • Invalid username or password. Authentication failed for ...
  • 401 Unauthorized

Untuk repositori Git, pastikan kredensial Git dan Secret git-creds dikonfigurasi dengan benar.

Untuk repositori Helm, pastikan kredensial Helm dikonfigurasi dengan benar.

Untuk image OCI, pastikan kredensial OCI dikonfigurasi dengan benar.

URL repositori Git tidak valid

Periksa log penampung git-sync untuk menemukan error seperti Repository not found.

Pastikan Anda menggunakan format URL yang benar. Misalnya, jika Anda menggunakan pasangan kunci SSH untuk melakukan autentikasi ke repositori Git, pastikan URL yang Anda masukkan untuk repositori Git saat mengonfigurasi Config Sync menggunakan protokol SSH.

URL repositori Helm tidak valid

Periksa log penampung helm-sync untuk menemukan error seperti ...not a valid chart repository. Anda dapat memverifikasi URL repositori Helm dengan perintah helm template.

URL registry OCI tidak valid

Nilai yang tidak valid di kolom spec.oci.image atau spec.oci.dir dari objek RootSync atau RepoSync dapat menyebabkan masalah koneksi. Periksa apakah nilai-nilai ini sudah benar. Misalnya, jika Anda menyinkronkan dari registry OCI, URL harus diawali dengan oci://.

Anda juga dapat memeriksa log untuk container oci-sync guna mendapatkan informasi selengkapnya.

Masalah jaringan

Jika Anda mencurigai bahwa masalahnya terkait dengan jaringan cluster, mulailah dengan mengikuti langkah-langkah pemecahan masalah berikut.

Tidak dapat me-resolve host: github.com

Saat Config Sync mencoba terhubung ke repositori Git Anda, Config Sync akan menggunakan DNS untuk me-resolve IP dari nama host yang ditentukan. Jika host tidak dapat di-resolve, hal ini biasanya menunjukkan adanya masalah dengan jaringan DNS atau cluster.

Untuk mendiagnosis masalah, lihat Memecahkan Masalah DNS di GKE.

Repositori Git tidak dapat dijangkau dari dalam cluster

Terkadang, penampung git-sync menampilkan error dalam log yang menunjukkan bahwa container tidak dapat mencapai repositori. Contoh, ssh: connect to host source.developers.google.com port 2022: Network is unreachable. Untuk memperbaiki masalah ini, sesuaikan konfigurasi firewall atau jaringan cluster Anda.

Jumlah permintaan API sumber yang tinggi

Config Sync menggunakan strategi multi-instancing untuk menskalakan dan mengisolasi tenant dan domain fault. Karena itu, setiap objek RootSync dan RepoSync mendapatkan instance rekonsilernya sendiri. Setiap instance rekonsiler memiliki file bantuan khusus sumbernya sendiri, git-sync, oci-sync, atau helm-sync. File sespan ini memeriksa sumber kebenaran. Saat Anda menambahkan objek RootSync atau RepoSync lain, hal ini menyebabkan peningkatan linear jumlah permintaan API yang dibuat oleh rekonsiler yang mengumpulkan sumber kebenaran. Jadi, jika Anda memiliki banyak objek RootSync dan RepoSync yang semuanya melakukan polling pada sumber tepercaya yang sama, hal ini terkadang dapat menyebabkan beban traffic yang signifikan pada server sumber.

Pertimbangkan salah satu strategi berikut untuk memitigasi masalah ini:

  • Gabungkan beberapa objek RootSyncs atau RepoSync untuk mengurangi jumlah rekonsiliasi yang membuat permintaan API sumber.
  • Ubah jenis sumber dari Git ke OCI. Repositori OCI, seperti Artifact Registry, cenderung diskalakan dengan lebih baik daripada sebagian besar server Git, karena dapat menskalakan secara horizontal tanpa perlu menyinkronkan antarreplika server.

Langkah selanjutnya

  • Jika Anda masih mengalami masalah, periksa apakah masalah Anda adalah masalah umum.