Alat command line nomos
adalah alat opsional untuk Config Sync yang dapat Anda gunakan untuk mendapatkan status Config Sync dan status sinkronisasi sumber kebenaran Anda. Alat
nomos
menyediakan perintah berikut:
Perintah | Penggunaan |
---|---|
nomos status |
Memeriksa status Config Sync |
nomos vet |
Periksa apakah ada error dalam sumber tepercaya |
nomos hydrate |
Melihat semua konfigurasi di sumber tepercaya |
nomos bugreport |
Membuat laporan bug |
nomos migrate |
Bermigrasi dari objek ConfigManagement ke RootSync |
nomos init |
Menginisialisasi sumber tepercaya hierarkis |
Prasyarat
Sebelum Anda dapat menggunakan alat nomos
untuk berinteraksi dengan cluster, Config Sync
harus sudah diinstal di cluster target. Anda juga harus
menginstal dan mengonfigurasi alat command line kubectl
.
Jika Anda berinteraksi dengan cluster Google Kubernetes Engine, pastikan Anda juga menginstal
gke-gcloud-auth-plugin
.
Alat nomos
mendukung pratinjau dan validasi konfigurasi Kustomize dan
diagram Helm. Sebelum dapat menggunakan fitur ini, instal
Kustomize
dan Helm di workstation
lokal Anda. Jika sumber tepercaya Anda hanya berisi konfigurasi yang dirender sepenuhnya, Kustomize dan Helm bersifat opsional.
Menginstal alat nomos
Alat nomos
adalah biner yang dikompilasi dari kode Go dan Anda dapat menginstalnya secara lokal, misalnya, di workstation atau laptop.
Alat nomos
tidak disertakan saat Anda menginstal Config Sync. Anda dapat
menginstal alat nomos
dengan menginstal Google Cloud CLI. Jika
Anda menggunakan Cloud Shell, Google Cloud CLI sudah terinstal.
Jika Anda tidak memiliki Google Cloud CLI, sebaiknya gunakan
gcloud components install nomos
untuk
menginstal alat nomos
. Menginstal alat nomos
dengan Google Cloud CLI
memungkinkan Anda menggunakan
gcloud components update
untuk
mengupdate alat nomos
ke versi terbaru.
Untuk mengetahui informasi tentang cara alternatif untuk menginstal alat nomos
, lihat
Download.
Penggunaan dasar
Untuk sintaksis perintah dasar, gunakan argumen --help
:
nomos --help
Alat nomos
membaca dari clone lokal sumber tepercaya Anda. Gunakan flag --path
untuk menentukan lokasi tingkat teratas sumber kebenaran. Secara default,
--path
disetel ke .
, atau direktori saat ini. Contoh:
nomos vet --path=PATH_TO_SOURCE --source-format unstructured
Memeriksa status Config Sync
Anda dapat memantau status Config Sync di semua cluster yang terdaftar menggunakan
perintah nomos status
. Untuk setiap cluster, nomos status
melaporkan hash commit yang terakhir diterapkan ke cluster dan error apa pun yang terjadi saat mencoba menerapkan perubahan terbaru.
Anda juga dapat menggunakan nomos status
untuk memeriksa apakah resource yang dikelola oleh
Config Sync sudah siap. nomos status
melaporkan status untuk setiap resource
individual di kolom STATUS
pada bagian Managed resources
output.
Contoh berikut menunjukkan beberapa kondisi berbeda yang mungkin dilaporkan oleh perintah
nomos status
:
nomos status
Contoh output:
MANAGED_CLUSTER_1
--------------------
<root> git@github.com:foo-corp/acme@main
SYNCED f52a11e4
Managed resources:
NAMESPACE NAME STATUS
k8snoexternalservices.constraints.gatekeeper.sh/no-internet-services Current
namespace/hello Current
MANAGED_CLUSTER_2
--------------------
<root> git@github.com:foo-corp/acme@main
PENDING 9edf8444
MANAGED_CLUSTER_3
--------------------
<root> git@github.com:foo-corp/acme@main
ERROR f52a11e4
Error: KNV1021: No CustomResourceDefinition is defined for the resource in the cluster.
MANGED_CLUSTER_4
--------------------
NOT INSTALLED
MANAGED_CLUSTER_5
--------------------
<root> git@github.com:foo-corp/acme/admin@main
SYNCED f52a11e4
Managed resources:
NAMESPACE NAME STATUS
namespace/gamestore Current
namespace/monitoring Current
gamestore reposync.configsync.gke.io/repo-sync Current
gamestore rolebinding.rbac.authorization.k8s.io/gamestore-admin Current
gamestore rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin Current
monitoring deployment.apps/prometheus-operator Current
monitoring prometheus.monitoring.coreos.com/acm Current
monitoring service/prometheus-acm Current
monitoring service/prometheus-operator Current
monitoring serviceaccount/prometheus-acm Current
monitoring serviceaccount/prometheus-operator Current
monitoring servicemonitor.monitoring.coreos.com/acm-service Current
--------------------
bookstore git@github.com:foo-corp/acme/bookstore@v1
SYNCED 34d1a8c8
Managed resources:
NAMESPACE NAME STATUS
gamestore configmap/store-inventory Current
gamestore webstore.marketplace.com/gameplace Current
Dalam output ini:
MANAGED_CLUSTER_1
telah menyinkronkan perubahan terbaru ke sumber kebenaran dan semua resource terkelola memiliki statusCurrent
. StatusCurrent
berarti status resource cocok dengan status yang Anda inginkan.MANAGED_CLUSTER_2
masih disinkronkan.MANAGED_CLUSTER_3
memiliki error yang mencegah perubahan diterapkan. Dalam contoh ini,MANAGED_CLUSTER_3
memiliki error KNV1021 karena tidak memiliki CustomResourceDefinition (CRD) yang telah diinstal di cluster lain.MANAGED_CLUSTER_4
tidak menginstal Config Sync.MANAGED_CLUSTER_5
menyinkronkan dari dua repositori Git. Sumber tepercaya<root>
adalah milik admin cluster dan sumber tepercayabookstore
mungkin milik tim pengembangan aplikasi.
Status resource terkelola
Status resource terkelola Anda dapat berupa salah satu nilai berikut:
InProgress
: Status sebenarnya resource belum mencapai status yang Anda tentukan dalam manifes resource. Status ini berarti rekonsiliasi sumber daya belum selesai. Resource yang baru dibuat biasanya dimulai dengan status ini, meskipun beberapa resource seperti ConfigMaps langsungCurrent
.Failed
: Proses mencocokkan status sebenarnya dengan status yang Anda inginkan mengalami error atau progresnya tidak memadai.Current
: Status sebenarnya resource cocok dengan status yang Anda inginkan. Proses rekonsiliasi dianggap selesai hingga ada perubahan pada status yang diinginkan atau status sebenarnya.Terminating
: Resource sedang dalam proses dihapus.NotFound
: Resource tidak ada di cluster.Unknown
: Config Sync tidak dapat menentukan status resource.
Untuk menonaktifkan tampilan status tingkat resource, tambahkan --resources=false
ke
perintah nomos status
.
Tentang commit terakhir yang disinkronkan
Perintah nomos status
menampilkan hash commit terbaru yang diterapkan ke cluster dalam outputnya di bagian status.sync.commit
. Untuk mendapatkan nilai ini, kueri objek RootSync
atau RepoSync
dan lihat kolom status.sync
.
Misalnya, untuk membuat kueri objek RootSync
, jalankan perintah berikut:
kubectl get rootsyncs.configsync.gke.io -n config-management-system root-sync -o yaml
Contoh output:
apiVersion: configsync.gke.io/v1beta1
kind: RootSync
status:
sync:
commit: f1739af550912034139aca51e382dc50c4036ae0
lastUpdate: "2021-04-20T00:25:01Z"
Untuk membuat kueri objek RepoSync
, jalankan perintah berikut:
kubectl get reposync.configsync.gke.io -n NAMESPACE repo-sync -o yaml
Ganti NAMESPACE
dengan namespace tempat Anda membuat sumber tepercaya namespace.
Contoh output:
apiVersion: configsync.gke.io/v1beta1
kind: RepoSync
status:
sync:
commit: ed95b50dd918cf65d8908f7561cb8d8d1f179c2f
lastUpdate: "2021-04-20T00:25:20Z"
Commit ini merepresentasikan commit terbaru terhadap cluster. Namun, tidak
setiap resource dalam cluster terpengaruh oleh setiap commit; untuk melihat commit
terbaru untuk resource tertentu, kueri resource tertentu dan lihat
metadata.annotations.configmanagement.gke.io/token
. Contoh:
kubectl get clusterroles CLUSTER_ROLE_NAME -o yaml
Ganti CLUSTER_ROLE_NAME
dengan nama peran cluster
yang ingin Anda kueri.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
configmanagement.gke.io/token: ed95b50dd918cf65d8908f7561cb8d8d1f179c2f
Tanda status nomos
Untuk menyesuaikan perintah nomos status
, tambahkan tanda berikut:
Flag | Deskripsi |
---|---|
--contexts |
Menerima daftar konteks yang dipisahkan koma untuk digunakan dalam perintah multi-cluster. Setelan defaultnya adalah semua konteks. Gunakan "" jika tidak ada konteks. |
-h atau --help |
Bantuan untuk perintah nomos status . |
--name |
Menerima string. Gunakan flag ini untuk memfilter Sinkronisasi Root dan Repo dengan
nama yang diberikan. Flag ini dapat digunakan bersama dengan
flag namespace . |
--namespace |
Menerima string. Gunakan flag namespace untuk membatasi
perintah ke sumber kebenaran namespace tertentu. Biarkan tidak disetel untuk
mendapatkan semua sumber. Tanda ini hanya tersedia jika Anda mengaktifkan
sinkronisasi dari lebih dari satu sumber tepercaya. |
--poll |
Gunakan tanda poll untuk menjalankan
nomos status secara terus-menerus dan mencetak ulang tabel
status pada interval reguler. Contohnya, 3s . Biarkan flag ini tidak disetel untuk menjalankan nomos status satu kali |
--resources |
Menerima true atau false . Jika true ,
nomos status menampilkan status tingkat resource untuk sumber kebenaran root
atau namespace Anda saat menyinkronkan dari lebih dari satu sumber kebenaran.
Nilai defaultnya adalah true . |
--timeout |
Waktu tunggu untuk terhubung ke setiap cluster. Nilai defaultnya adalah
3s . |
Izin yang diperlukan
Jika Anda adalah pemilik project, Anda memiliki peran RBAC cluster-admin
dan dapat menggunakan perintah nomos status
untuk cluster apa pun dalam project Anda tanpa menambahkan izin lebih lanjut. Jika tidak memiliki peran cluster-admin
, Anda dapat menggunakan
nomos status
dengan membuat ClusterRole berikut:
Buat file bernama
nomos-status-reader.yaml
dan salin ClusterRole berikut ke dalamnya. Aturan yang Anda perlukan berbeda-beda, bergantung pada apakah Anda menggunakan objek RootSync dan RepoSync.Menggunakan objek RootSync dan RepoSync
# nomos-status-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: nomos-status-reader rules: - apiGroups: ["configsync.gke.io"] resources: ["reposyncs", "rootsyncs"] verbs: ["get"] - nonResourceURLs: ["/"] verbs: ["get"]
Tidak menggunakan objek RootSync dan RepoSync
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: nomos-status-reader rules: - apiGroups: ["configmanagement.gke.io"] resources: ["configmanagements", "repos"] verbs: ["get", "list"] - nonResourceURLs: ["/"] verbs: ["get"]
Terapkan file
nomos-status-reader.yaml
:kubectl apply -f nomos-status-reader.yaml
Periksa error dalam sumber kebenaran
Sebelum Anda melakukan konfigurasi ke sumber tepercaya, gunakan perintah nomos vet
untuk
memeriksa sintaksis dan validitas konfigurasi di sumber tepercaya Anda:
nomos vet --source-format unstructured
Jika error sintaksis ditemukan, perintah nomos vet
akan keluar dengan status bukan nol dan mencatat pesan error ke STDERR
.
flag vet nomos
Untuk menyesuaikan perintah nomos vet
, tambahkan tanda berikut:
Flag | Deskripsi |
---|---|
--api-server-timeout |
Menerima string durasi. Menetapkan waktu tunggu sisi klien untuk berkomunikasi dengan
server Kubernetes API. Nilai defaultnya adalah 15s . |
--clusters |
Menerima daftar nama cluster yang dipisahkan koma untuk digunakan dalam perintah multi-cluster. Setelan defaultnya adalah semua cluster. Gunakan "" jika tidak ada cluster. |
--format |
Menerima yaml atau json . Format output. Nilai defaultnya adalah yaml . |
-h atau --help |
Bantuan untuk perintah nomos vet . |
--keep-output |
Menerima Boolean. Jika true , output yang dirender akan disimpan ke
lokasi yang dapat Anda tentukan dengan tanda --output . |
--namespace |
Menerima string. Jika disetel, memvalidasi sumber tepercaya sebagai sumber tepercaya namespace dengan nama yang diberikan. Menetapkan --source-format=unstructured secara otomatis. |
--no-api-server-check |
Menerima Boolean. Jika true , menonaktifkan komunikasi dengan
server Kubernetes API untuk penemuan. Untuk mengetahui informasi selengkapnya tentang tanda ini, lihat bagian Validasi sisi server. |
--output |
Menerima string. Jalur ke output yang dirender. Default-nya adalah
direktori compiled . Jika --keep-output disetel ke
false , tanda ini akan diabaikan. |
--path |
Menerima string. Jalur ke direktori root sumber tepercaya Config Sync Anda. Defaultnya adalah ". " |
--source-format |
Menerima hierarchy atau unstructured . Jika
hierarchy atau tidak ditetapkan, memvalidasi sumber kebenaran sebagai
sumber kebenaran hierarkis. Jika
unstructured , memvalidasi sumber tepercaya sebagai
sumber tepercaya tidak terstruktur.
Flag ini diperlukan jika Anda menggunakan sumber kebenaran yang tidak terstruktur. |
--threshold |
Secara opsional menerima bilangan bulat. Menetapkan jumlah maksimum objek yang diizinkan per
repositori; akan terjadi error jika terlampaui. Hilangkan tanda atau gunakan
--threshold=0 untuk menonaktifkan validasi objek maksimum.
Berikan tanda tanpa nilai untuk menggunakan 1000 default, atau
gunakan --threshold=N untuk menetapkan batas tertentu. |
Validasi sisi server
Jika perintah nomos vet
tidak dapat menentukan apakah jenis memiliki namespace, alat
nomos
akan terhubung ke Server API dari konteks kubectl
saat ini. Karena alat nomos
secara default memahami jenis Kubernetes inti dan CRD Config Sync, alat ini hanya mencoba terhubung ke Server API jika CR tidak memiliki CRD yang dideklarasikan yang sesuai. Dalam hal ini, jika Server API tidak menerapkan CRD, perintah nomos
vet
akan menampilkan error KNV1021. Untuk
menonaktifkan pemeriksaan ini dan menyembunyikan error dari CRD yang tidak ada, teruskan tanda
--no-api-server-check
.
Menge-cache metadata server API
Daripada menekan pemeriksaan server API, Anda dapat menyimpan data dalam cache di server API untuk perintah nomos vet
. Untuk menyimpan api-resources
Anda dalam cache, selesaikan langkah-langkah berikut:
- Hubungkan ke cluster yang memiliki semua CRD yang Anda butuhkan untuk sumber tepercaya Anda. Cluster tidak perlu mengaktifkan Config Sync.
- Buka policyDir sumber tepercaya Anda. Ini adalah direktori yang sama yang ditentukan dalam resource ConfigManagement atau RootSync Anda.
- Jalankan perintah berikut:
kubectl api-resources > api-resources.txt
Perintah ini membuat file bernama api-resources.txt yang berisi output kubectl api-resources yang persis sama.
Mulai sekarang, eksekusi nomos vet
dalam sumber tepercaya akan mengetahui definisi jenis tersebut. Jika file api-resources.txt
dihapus atau diganti namanya, nomos vet
tidak dapat menemukan file tersebut. nomos vet
akan tetap mencoba terhubung ke cluster
jika menemukan manifes untuk jenis yang tidak dideklarasikan di api-resources.txt
(kecuali jika --no-api-server-check
diteruskan).
File api-resources.txt
hanya memengaruhi cara kerja alat nomos
. Opsi ini tidak
mengubah perilaku Config Sync dengan cara apa pun.
Tidak masalah jika ada entri tambahan dalam file api-resources.txt yang ditujukan untuk
jenis yang tidak ada dalam sumber kebenaran yang divalidasi. nomos vet
mengimpor definisi, tetapi tidak melakukan apa pun dengan definisi tersebut.
Memperbarui api-resources.txt
Setelah memastikan semua CRD yang Anda inginkan ada di cluster, jalankan perintah berikut:
kubectl api-resources > api-resources.txt
Memeriksa error sintaksis secara otomatis saat melakukan commit
Jika Anda melakukan commit file dengan error JSON atau YAML, Config Sync tidak akan menerapkan perubahan. Namun, Anda dapat mencegah jenis error ini agar tidak pernah masuk ke sumber tepercaya dengan menggunakan hook sisi klien atau sisi server.
Menggunakan nomos vet
dalam hook pra-commit
Anda dapat mengonfigurasi hook pra-commit yang menjalankan perintah nomos vet
untuk memeriksa
kesalahan sintaksis saat Anda melakukan perubahan pada clone Git lokal repo Anda.
Jika hook pra-commit keluar dengan status bukan nol, operasi git commit
akan gagal.
Untuk menjalankan perintah nomos vet
sebagai hook pra-commit, edit file
.git/hooks/pre-commit
di sumber tepercaya Anda (perhatikan bahwa .git
dimulai dengan karakter .
). Anda mungkin perlu membuat file secara manual. Tambahkan perintah nomos vet
ke baris baru dalam skrip. Argumen --path
bersifat opsional. Tetapkan argumen
--source-format
ke format sumber repositori.
nomos vet --path=/path/to/repo --source-format unstructured
Pastikan file pre-commit
dapat dieksekusi:
chmod +x .git/hooks/pre-commit
Sekarang, saat Anda menjalankan perintah git commit
di clone sumber tepercaya Anda, nomos vet
akan berjalan secara otomatis.
Konten direktori .git/
tidak dilacak oleh
sumber tepercaya itu sendiri, dan tidak dapat di-commit ke sumber tepercaya di lokasi yang sama. Anda dapat membuat direktori di sumber tepercaya untuk hook Git, dan orang yang menggunakan sumber tepercaya dapat menyalin hook ke tempat yang sesuai di clone lokal mereka.
Menggunakan nomos vet
di hook sisi server
Git menyediakan mekanisme untuk menjalankan pemeriksaan di server, bukan di
klien, selama operasi git push
. Jika pemeriksaan gagal, git push
juga akan gagal. Hook sisi server ini tidak dapat dilewati oleh klien. Metode untuk
mengonfigurasi hook sisi server bergantung pada cara server Git Anda dihosting. Lihat salah satu link berikut untuk mengetahui informasi selengkapnya, atau periksa dokumentasi untuk layanan hosting Git Anda.
Menerapkan jumlah maksimum objek yang akan disinkronkan
Config Sync menyimpan referensi ke setiap objek yang disinkronkannya dalam objek inventaris ResourceGroup, beserta status objek saat ini. Karena Kubernetes memiliki batas ukuran byte untuk objek resource, hal ini membatasi jumlah maksimum objek yang dapat disinkronkan Config Sync dengan satu RootSync atau RepoSync.
Secara default, batas ukuran etcd sisi server adalah 1,5 MiB. Untuk mengetahui detail selengkapnya, lihat dokumentasi etcd. Menerapkan objek yang lebih besar dari batas ini akan menyebabkan salah satu error berikut, bergantung pada ukuran objek:
etcdserver: request is too large
rpc error: code = ResourceExhausted desc = trying to send message larger than max
Request entity too large: limit is 3145728
Untuk melindungi objek ResourceGroup agar tidak melebihi batas ukuran Kubernetes, Anda dapat menggunakan nomos vet --threshold
untuk memvalidasi jumlah objek di repositori sumber.
Secara default, saat Anda menggunakan perintah nomos vet
, batas tidak diterapkan.
Penerusan tanda --threshold
akan menyebabkan perintah vet
error jika
jumlah objek di repositori sumber Anda melebihi nilai minimum.
Inventaris ResourceGroup berisi referensi objek dan status objek saat ini. Folder ini dapat menjadi sangat besar jika objek gagal disinkronkan atau disesuaikan.
Untuk menghindari terlampauinya batas ukuran objek Kubernetes, pilih nilai minimum yang akan menyisakan kapasitas yang cukup untuk mencatat error objek. Nilai default
1000
akan berfungsi untuk hampir semua kasus, tetapi Anda dapat menaikkan atau menurunkan
nilai minimum sesuai kebutuhan.
Nilai minimum ini hanya divalidasi oleh perintah nomos vet
, bukan oleh
Config Sync itu sendiri. Untuk menerapkan nilai minimum, gunakan perintah
nomos vet --threshold
dalam pemeriksaan pra-submit repositori sumber atau
hook pra-commit git.
Melihat semua konfigurasi di sumber tepercaya
Anda dapat menggunakan perintah nomos hydrate
untuk melihat gabungan konten
sumber tepercaya Anda di setiap cluster yang terdaftar.
Jika Anda menjalankan nomos hydrate
tanpa opsi, direktori compiled/
akan dibuat
di direktori kerja saat ini. Dalam direktori tersebut, subdirektori
dibuat untuk setiap cluster yang terdaftar, dengan konfigurasi yang sepenuhnya diselesaikan yang
akan diterapkan Operator ke cluster.
Perintah ini juga dapat mengonversi sumber tepercaya hierarkis
menjadi satu atau beberapa sumber tepercaya tidak terstruktur,
menggunakan konten di direktori compiled/
.
flag nomos hydrate
Untuk menyesuaikan perintah nomos hydrate
, tambahkan tanda berikut:
Flag | Deskripsi |
---|---|
--api-server-timeout |
Menerima string durasi. Menetapkan waktu tunggu sisi klien untuk berkomunikasi dengan
server Kubernetes API. Nilai defaultnya adalah 15s . |
--clusters |
Menerima daftar nama cluster yang dipisahkan koma. Gunakan tanda ini untuk membatasi
output ke satu cluster atau daftar cluster. Setelan defaultnya adalah semua
cluster. Gunakan "" jika tidak ada cluster. |
--flat |
Jika diaktifkan, cetak semua output ke satu file. Gunakan tanda ini jika Anda ingin
mengemulasikan perilaku nomos view . |
--format |
Menerima yaml atau json . Format output. Nilai defaultnya adalah yaml . |
-h atau --help |
Bantuan untuk perintah nomos hydrate . |
--no-api-server-check |
Menerima Boolean. Jika true , menonaktifkan komunikasi dengan server API untuk penemuan. Untuk mengetahui informasi selengkapnya tentang tanda ini, lihat bagian
Validasi sisi server. |
--output |
Menerima string. Lokasi untuk menulis konfigurasi yang di-hydrate. Defaultnya
adalah direktori compiled .
Jika --flat tidak diaktifkan, setiap manifes resource akan ditulis sebagai
file terpisah.
Jika --flat diaktifkan, penulisan ke, menulis satu file yang berisi semua manifes resource.
|
--path |
Menerima string. Jalur ke direktori root sumber tepercaya Config Sync Anda. Defaultnya adalah ". " |
--source-format |
Menerima hierarchy atau unstructured . Jika
hierarchy atau tidak ditetapkan, memvalidasi sumber kebenaran sebagai
sumber kebenaran hierarkis. Jika
unstructured , memvalidasi sumber tepercaya sebagai
sumber tepercaya tidak terstruktur.
Flag ini diperlukan jika Anda menggunakan sumber kebenaran yang tidak terstruktur. |
Buat laporan bug
Jika Anda mengalami masalah dengan Config Sync yang memerlukan bantuan dari
Google Cloud dukungan, Anda dapat memberikan informasi
penelusuran masalah yang berharga kepada mereka dengan menggunakan perintah nomos bugreport
. Anda dapat menggunakan perintah ini untuk satu sumber tepercaya dan beberapa repositori.
nomos bugreport
Perintah ini menghasilkan file zip yang diberi stempel waktu dengan informasi tentang cluster Kubernetes yang ditetapkan dalam konteks kubectl
Anda. File ini juga berisi log dari
Config Sync Pod. Tidak berisi informasi dari resource yang disinkronkan dengan Config Sync. Untuk mengetahui informasi selengkapnya tentang isi file ZIP, lihat referensi laporan bug nomos.
Batasan
Perintah nomos bugreport
akan gagal dan menghasilkan file zip yang tidak lengkap jika
ada file individual yang melebihi 1 GiB. Hal ini sering terjadi karena file log yang besar.
Tabel berikut mencakup penyebab paling umum file log berukuran besar dan cara mengatasinya:
Penyebab | Tindakan yang disarankan |
---|---|
Peningkatan panjang log | Mengurangi kejelasan log dengan penggantian level log |
Objek yang sangat besar | Batalkan pengelolaan objek besar atau kurangi ukurannya |
Banyak objek | Membagi repositori menjadi beberapa repositori |
Pertarungan pengontrol | Menghentikan perkelahian |
Bermigrasi dari objek ConfigManagement ke objek RootSync
Anda dapat menjalankan perintah nomos migrate
untuk bermigrasi dari objek ConfigManagement ke objek RootSync guna mengaktifkan API RootSync
dan RepoSync
.
nomos migrate
mendukung uji coba untuk melihat pratinjau proses migrasi.
nomos migrate
memodifikasi objek ConfigManagement Anda langsung di cluster.
Untuk menghindari perubahan yang dilakukan melalui nomos migrate
dikembalikan, pastikan objek
ConfigManagement tidak diperiksa ke sumber tepercaya Anda.
nomos migrate --contexts=KUBECONFIG_CONTEXTS --dry-run
Jika hasil uji coba terlihat baik, Anda dapat memigrasikan objek ConfigManagement
dengan menggunakan nomos migrate
:
nomos migrate --contexts=KUBECONFIG_CONTEXTS
Outputnya mirip dengan hal berikut ini:
--------------------
Enabling the multi-repo mode on cluster "my_managed_cluster-1" ...
- A RootSync object is generated and saved in "/tmp/nomos-migrate/my_managed_cluster-1/root-sync.yaml".
- The original ConfigManagement object is saved in "/tmp/nomos-migrate/my_managed_cluster-1/cm-original.yaml".
- The ConfigManagement object is updated and saved in "/tmp/nomos-migrate/my_managed_cluster-1/cm-multi.yaml".
- Resources for the multi-repo mode have been saved in a temp folder. If the migration process is terminated, it can be recovered manually by running the following commands:
kubectl apply -f /tmp/nomos-migrate/my_managed_cluster-1/cm-multi.yaml && \
kubectl wait --for condition=established crd rootsyncs.configsync.gke.io && \
kubectl apply -f /tmp/nomos-migrate/my_managed_cluster-1/root-sync.yaml.
- Updating the ConfigManagement object ....
- Waiting for the RootSync CRD to be established ....
- The RootSync CRD has been established.
- Creating the RootSync object ....
- Waiting for the reconciler-manager Pod to be ready ....
- Haven't detected running Pods with the label selector "app=reconciler-manager".
- Haven't detected running Pods with the label selector "app=reconciler-manager".
- Haven't detected running Pods with the label selector "app=reconciler-manager".
- The reconciler-manager Pod is running.
- Waiting for the root-reconciler Pod to be ready ....
- Haven't detected running Pods with the label selector "configsync.gke.io/reconciler=root-reconciler".
- Haven't detected running Pods with the label selector "configsync.gke.io/reconciler=root-reconciler".
- Haven't detected running Pods with the label selector "configsync.gke.io/reconciler=root-reconciler".
- The root-reconciler Pod is running.
- The migration process is done. Please check the sync status with `nomos status`.
Finished migration on all the contexts. Please check the sync status with `nomos status`.
Melakukan roll back ke konfigurasi sebelumnya
Jika Anda perlu melakukan roll back setelah melakukan migrasi dengan nomos migrate
,
terapkan objek ConfigManagement asli. nomos migrate
menyimpan objek ConfigManagement asli ke file dan mencetak nama ke terminal.
Nama file dalam bentuk /tmp/nomos-migrate/CURRENT_CONTEXT/cm-original.yaml
.
Untuk melakukan roll back ke konfigurasi sebelumnya, salin jalur file untuk
cm-original.yaml
dan terapkan file ke cluster Anda:
kubectl apply -f CM_ORIGINAL_PATH
tanda migrasi nomos
Untuk menyesuaikan perintah nomos migrate
, tambahkan tanda berikut:
Flag | Deskripsi |
---|---|
--connect-timeout |
Menerima durasi. Durasi waktu tunggu untuk terhubung ke setiap cluster.
Default-nya adalah 3s . |
--contexts |
Menerima daftar konteks yang dipisahkan koma untuk digunakan di lingkungan multi-cluster. Default-nya adalah konteks saat ini. Gunakan "all" untuk
semua konteks. |
--dry-run |
Menerima boolean. Jika true , hanya mencetak output
migrasi. |
-h atau --help |
Bantuan untuk perintah nomos migrate . |
--remove-configmanagement |
Menerima boolean. Jika true , bermigrasi ke OSS Config Sync
dengan menghapus Operator ConfigManagement dan CRD ConfigManagement. |
--wait-timeout |
Menerima durasi. Durasi waktu tunggu untuk menunggu kondisi resource Kubernetes menjadi benar. Nilai defaultnya adalah 10m . |
Menginisialisasi sumber tepercaya hierarkis
Anda dapat mengatur sumber kebenaran secara arbitrer jika Anda menggunakan
sumber kebenaran tidak terstruktur.
Jika Anda menggunakan sumber tepercaya hierarkis,
Anda harus menjalankan perintah nomos init
untuk melakukan inisialisasi direktori hierarkis:
nomos init
Tindakan ini akan membuat struktur direktori dasar sumber kebenaran hierarkis, termasuk direktori
system/
, cluster/
, dan namespaces/
.
Tanda init nomos
Untuk menyesuaikan nomos init
, tambahkan tanda berikut:
Flag | Deskripsi |
---|---|
--force |
Menulis ke direktori meskipun tidak kosong, menimpa file yang bertentangan |
-h atau --help |
Bantuan untuk perintah nomos init . |
--path |
Menerima string. Direktori root yang akan digunakan untuk
sumber tepercaya Anda. Nilai defaultnya adalah "." |
Pemecahan masalah
Di Linux, Anda mungkin melihat error berikut saat menjalankan perintah nomos
:
failed to create client configs: while getting config path: failed to get current user: user: Current not implemented on linux/amd64
Untuk memperbaiki masalah ini, buat variabel lingkungan USER
:
export USER=$(whoami)