Halaman ini menunjukkan cara menyelesaikan masalah yang terjadi jika Config Sync tidak dapat membuat koneksi dengan sumber kebenaran.
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. Kepada melakukan validasi ini, Anda harus memberikan sertifikat yang mengidentifikasi akar otoritas sertifikat dan otoritas sertifikat perantara mana pun yang menyatakan identitas server Git. Jika verifikasi sertifikat server Git gagal, itu berarti rantai kepercayaan tidak dapat dibangun.
Jika Anda menerima pesan {i>error<i} yang menunjukkan bahwa verifikasi sertifikat server gagal, salah satu masalah berikut mungkin 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 objekRootSync
atauRepoSync
. - CACert tidak lengkap. Untuk memperbaiki masalah ini, perbaiki rahasia CACert untuk berisi rantai kepercayaan yang lengkap, termasuk {i>root <i}dan setiap perantara CA {i>root<i}.
- CACert tidak valid. Untuk memperbaiki masalah ini, download rantai sertifikat dari tautan yang ditentukan oleh sertifikat yang diberikan oleh server dan kemudian memperbarui Rahasia CACert.
Tidak dapat memasang Git Secret
Jika Anda menerima error berikut saat penampung git-sync
mencoba menyinkronkan
repositori dengan Secret, maka Secret Git tidak berhasil dipasang ke
Penampung 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 mungkin disebabkan oleh pengalihan autentikasi repositori Git Anda
mengetik dari none
, gcenode
, atau gcpserviceaccount
ke jenis lain yang memerlukan
Rahasia.
Untuk mengatasi masalah ini, jalankan perintah berikut untuk memulai ulang Rekonsiliasi Pengelola dan Rekonsiliasi:
# 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 Anda dapat menyebabkan Config Sync tidak dapat untuk terhubung ke sumber kebenaran. 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, diagram
versi, 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
di
objek ConfigManagement
atau spec.git.dir
atau spec.oci.dir
dalam
RootSync
atau RepoSync
. Nilai direktori disertakan dalam setiap
KNV2004
pesan error yang Anda terima; memverifikasi nilai terhadap Git Anda
repositori atau image OCI.
Cabang Git tidak valid
Periksa log untuk penampung 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 akan ditetapkan ke master
jika tidak ditentukan.
Kredensial Git, Helm, atau OCI tidak valid
Periksa log Config Sync untuk 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 bahwa 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 untuk penampung git-sync
untuk menemukan error seperti Repository not
found
.
Pastikan Anda menggunakan format URL yang benar. Misalnya, jika Anda menggunakan pasangan kunci SSH ke melakukan autentikasi ke repositori Git, pastikan bahwa URL yang Anda masukkan untuk repositori Git Anda saat mengonfigurasi Config Sync menggunakan protokol SSH.
URL repositori Helm tidak valid
Periksa log untuk 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 di kolom spec.oci.image
atau spec.oci.dir
tidak valid untuk RootSync
atau objek RepoSync
dapat menyebabkan masalah koneksi. Periksa bahwa
sudah benar. Misalnya, jika Anda menyinkronkan dari {i>registry<i} OCI,
URL harus diawali dengan oci://
.
Anda juga dapat memeriksa log penampung oci-sync
untuk mengetahui informasi selengkapnya.
Masalah jaringan
Jika Anda menduga masalah ini terkait dengan jaringan cluster Anda, mulailah dengan langkah-langkah pemecahan masalah.
Tidak dapat me-resolve host: github.com
Saat mencoba terhubung ke repositori Git Anda, Config Sync akan menggunakan DNS menyelesaikan IP nama {i>host<i} yang ditentukan. Jika {i>host<i} tidak dapat diselesaikan, biasanya menunjukkan masalah dengan DNS atau jaringan cluster.
Untuk mendiagnosis masalah, lihat Memecahkan masalah DNS di GKE.
Repositori Git tidak dapat dijangkau dari dalam cluster
Terkadang, container git-sync
menampilkan error dalam lognya yang menunjukkan
bahwa ia tidak dapat
mencapai repositori. Contoh, ssh: connect to host
source.developers.google.com port 2022: Network is unreachable
. Untuk memperbaiki masalah
sesuaikan firewall atau konfigurasi 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
akan mendapatkannya sendiri
instance rekonsiliasi. Setiap instance rekonsiliasi memiliki sumber khusus masing-masing
file bantuan, git-sync
, oci-sync
, atau helm-sync
. File bantuan ini mengkueri sumber
yang sesungguhnya. Saat Anda menambahkan objek RootSync
atau RepoSync
lain, hal ini akan menyebabkan
peningkatan linear dalam jumlah permintaan API yang dibuat oleh polling rekonsiliasi
yang sesungguhnya. Jadi, jika Anda memiliki banyak objek RootSync
dan RepoSync
memilih sumber kebenaran yang sama, hal ini terkadang dapat menyebabkan lalu lintas data
melakukan pemuatan di server sumber.
Pertimbangkan salah satu strategi berikut untuk memitigasi masalah ini:
- Gabungkan beberapa objek
RootSyncs
atauRepoSync
untuk mengurangi jumlah rekonsiliasi yang membuat permintaan API sumber. - Ubah jenis sumber Anda dari Git ke OCI. Repositori OCI, seperti Artifact Registry, cenderung diskalakan dengan lebih baik daripada kebanyakan server Git, karena secara horizontal tanpa perlu menyinkronkan antara replika server.
Masalah lainnya
Bagian ini berisi masalah lain yang tidak termasuk dalam bagian sebelumnya.
File kunci Git yang masih tersimpan
Jika Anda melihat error berikut dari git-sync
, berarti pemanggilan git
sebelumnya
mungkin gagal dan meninggalkan file kunci yang ada di penampung:
KNV2004: error in the git-sync container: ... fatal: Unable to create '/repo/source/.git/shallow.lock': File exists. ...
Untuk mengatasi masalah ini, mulai ulang Pod rekonsiliasi yang terpengaruh untuk memberinya volume efemeral:
kubectl delete pod -n config-management-system RECONCILER_NAME
Langkah selanjutnya
- Jika Anda masih mengalami masalah, periksa apakah adalah masalah umum.