Menggunakan alat command line nomos

Alat command line nomos adalah alat opsional untuk Config Sync yang yang dapat Anda gunakan untuk mendapatkan status Config Sync dari sumber kebenaran Anda. Tujuan Alat nomos memberi Anda perintah berikut:

Perintah Penggunaan
nomos status Memeriksa status Config Sync
nomos vet Memeriksa error dalam sumber tepercaya
nomos hydrate Lihat semua konfigurasi di sumber tepercaya
nomos bugreport Membuat laporan bug
nomos migrate Melakukan migrasi dari objek ConfigManagement ke RootSync
nomos init Melakukan inisialisasi sumber kebenaran 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 berinteraksi dengan cluster Google Kubernetes Engine, pastikan Anda juga instal gke-gcloud-auth-plugin

Alat nomos mendukung pratinjau dan memvalidasi konfigurasi Kustomize serta Diagram helm. Sebelum Anda dapat menggunakan fitur ini, instal Melakukan penyesuaian dan Helm di jaringan lokal Anda Infrastruktur Cloud. Jika sumber tepercaya Anda hanya berisi informasi yang dirender, 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 instal alat nomos dengan menginstal Google Cloud CLI. Jika Anda menggunakan Cloud Shell, Google Cloud CLI sudah diinstal sebelumnya.

Jika Anda tidak memiliki Google Cloud CLI, sebaiknya gunakan gcloud components install nomos ke instal alat nomos. Menginstal alat nomos dengan Google Cloud CLI memungkinkan Anda menggunakan gcloud components update ke mengupdate alat nomos ke versi terbaru.

Untuk mengetahui informasi tentang cara alternatif 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. Menggunakan --path untuk menentukan lokasi level teratas sumber tepercaya. Secara {i>default<i}, --path disetel ke ., atau direktori saat ini. Contoh:

nomos --path=PATH_TO_SOURCE vet

Memeriksa status Config Sync

Anda dapat memantau status Config Sync di semua cluster yang terdaftar menggunakan menggunakan perintah nomos status. Untuk setiap cluster, nomos status melaporkan hash commit yang terakhir diterapkan ke cluster dan error apa pun yang muncul saat mencoba menerapkan perubahan terbaru apa pun.

Anda juga dapat menggunakan nomos status untuk memeriksa apakah resource dikelola oleh Config Sync sudah siap. nomos status melaporkan status untuk setiap individu resource di kolom STATUS pada bagian Managed resources dari output.

Contoh berikut menunjukkan beberapa kondisi berbeda yang Perintah nomos status mungkin melaporkan:

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 status Current. Status Current berarti agar status resource sesuai 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 ada CustomResourceDefinition (CRD) yang telah diinstal oleh cluster lain.
  • MANAGED_CLUSTER_4 belum menginstal Config Sync.
  • MANAGED_CLUSTER_5 sedang disinkronkan dari dua repositori Git. Sumber tepercaya <root> adalah milik admin cluster dan bookstore yang tepercaya mungkin milik tim pengembangan aplikasi.

Status resource terkelola

Status resource terkelola dapat berupa salah satu dari nilai berikut:

  • InProgress: Status resource sebenarnya belum mencapai status status yang Anda tetapkan dalam manifes resource. Status ini berarti bahwa rekonsiliasi resource belum selesai. Sumber daya yang baru dibuat biasanya memulai dengan status ini, meskipun beberapa resource seperti ConfigMaps adalah Current segera.

  • Failed: Proses merekonsiliasi status yang sebenarnya dengan status yang Anda ingin mengalami {i>error<i} atau progresnya tidak mencukupi.

  • Current: Status resource sebenarnya sesuai dengan status yang Anda inginkan. Proses rekonsiliasi dianggap selesai hingga ada perubahan pada yang diinginkan atau yang sebenarnya.

  • Terminating: Resource sedang dalam proses penghapusan.

  • NotFound: Resource tidak ada di cluster.

  • Unknown: Config Sync tidak dapat menentukan status resource.

Untuk menonaktifkan penayangan status level resource, tambahkan --resources=false ke perintah nomos status.

Tentang commit yang terakhir disinkronkan

Perintah nomos status menampilkan hash commit terbaru yang diterapkan ke cluster dalam outputnya di bagian status.sync.commit. Untuk mendapatkannya nilai, buat kueri objek RootSync atau RepoSync, lalu lihat status.sync kolom tersebut.

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 yang Anda buat sumber kebenaran namespace Anda.

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, bukan setiap resource di cluster terpengaruh oleh setiap commit; untuk melihat cara commit terbaru untuk resource tertentu, buat kueri resource spesifik, dan lihat metadata.annotations.configmanagement.gke.io/token. Contoh:

kubectl get clusterroles CLUSTER_ROLE_NAME -o yaml

Ganti CLUSTER_ROLE_NAME dengan nama cluster peran 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:

Tanda Deskripsi
--contexts Menerima daftar konteks yang dipisahkan koma untuk digunakan dalam multi-cluster perintah. Setelan defaultnya adalah semua konteks. Gunakan "" tanpa konteks.
-h atau --help Bantuan untuk perintah nomos status.
--namespace Menerima string. Gunakan flag namespace untuk membatasi perintah ke sumber kebenaran namespace tertentu. Biarkan tidak disetel pada mendapatkan semua sumber. Tanda ini hanya tersedia jika Anda mengaktifkan menyinkronkan data dari lebih dari satu sumber yang terpercaya.
--poll Gunakan flag poll untuk menjalankan nomos status secara terus-menerus dan meminta untuk mencetak ulang statusnya tabel pada interval reguler. Contohnya, 3s. Tinggalkan tanda ini tidak disetel untuk menjalankan nomos status sekali
--resources Menerima true atau false. Jika true, nomos status menampilkan status level resource untuk root Anda atau namespace saat menyinkronkan data dari lebih dari satu sumber tepercaya. Nilai defaultnya adalah true.
--timeout Waktu tunggu untuk terhubung ke setiap cluster. Nilai defaultnya adalah 3s.
--name Menerima string. Gunakan tanda ini untuk memfilter Sinkronisasi Root dan Repo dengan nama yang diberikan. Penanda ini dapat digunakan bersama namespace.

Izin yang diperlukan

Jika Anda adalah pemilik project, Anda memiliki peran RBAC cluster-admin dan dapat gunakan perintah nomos status untuk setiap cluster dalam project Anda tanpa menambahkan izin akses lebih lanjut. Jika tidak memiliki peran cluster-admin, Anda dapat menggunakan nomos status dengan membuat ClusterRole berikut:

  1. Buat file bernama nomos-status-reader.yaml dan salin perintah berikut ClusterRole ke dalamnya. Aturan yang diperlukan berbeda bergantung pada baik 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"]
    
  2. Terapkan file nomos-status-reader.yaml:

    kubectl apply -f nomos-status-reader.yaml
    

Memeriksa error dalam sumber kebenaran

Sebelum Anda meng-commit konfigurasi ke sumber kebenaran, gunakan perintah nomos vet untuk periksa sintaksis dan validitas konfigurasi di sumber tepercaya Anda:

nomos vet

Jika ditemukan error sintaksis, perintah nomos vet akan keluar dengan status bukan nol dan mencatat pesan error ke STDERR.

tanda dokter hewan nomos

Untuk menyesuaikan perintah nomos vet, tambahkan tanda berikut:

Tanda Deskripsi
--clusters Menerima daftar nama cluster yang dipisahkan koma untuk digunakan dalam multi-cluster perintah. Setelan defaultnya adalah semua cluster. Gunakan "" jika tidak ada cluster.
-h atau --help Bantuan untuk perintah nomos vet.
--namespace Menerima string. Jika ditetapkan, memvalidasi sumber kebenaran sebagai namespace menjadi sumber tepercaya dengan nama yang diberikan. Otomatis menetapkan --source-format=unstructured.
--no-api-server-check Menerima Boolean. Jika true, menonaktifkan berkomunikasi dengan API server agar mudah ditemukan. Untuk informasi selengkapnya tentang tanda ini, lihat Bagian Validasi sisi server.
--path Menerima string. Jalur ke direktori utama Config Sync yang sesungguhnya. Defaultnya adalah "."
--source-format Menerima hierarchy atau unstructured. Jika hierarchy atau tidak disetel, memvalidasi sumber kebenaran sebagai sumber kebenaran hierarkis. Jika unstructured, memvalidasi sumber kebenaran sebagai sumber tepercaya tidak terstruktur. Tanda ini diperlukan jika Anda menggunakan sumber kebenaran yang tidak terstruktur.
--keep-output Menerima Boolean. Jika true, output yang dirender akan disimpan ke lokasi yang dapat Anda tentukan dengan flag --output.
--output Menerima string. Jalur ke output yang dirender. Default-nya adalah Direktori compiled. Jika --keep-output disetel ke false, tanda ini diabaikan.
--format Menerima yaml atau json. Format {i>output<i} tersebut. Nilai defaultnya adalah yaml.

Validasi sisi server

Jika perintah nomos vet tidak dapat menentukan apakah jenis diberi namespace, Alat nomos terhubung ke Server API. Karena alat nomos secara default memahami jenis Kubernetes inti dan CRD Config Sync, yang hanya mencoba untuk hubungkan ke Server API jika ada CR yang tidak sesuai dengan yang dideklarasikan CRD. Dalam hal ini, jika Server API tidak menerapkan CRD, perintah nomos vet akan menampilkan error KNV1021. Kepada nonaktifkan pemeriksaan ini dan menyembunyikan error dari CRD yang hilang, --no-api-server-check.

Menyimpan metadata server API ke cache

Daripada menghentikan pemeriksaan server API, Anda dapat meng-cache data di API server untuk perintah nomos vet. Untuk menyimpan api-resources ke dalam cache, selesaikan langkah-langkah berikut langkah:

  1. Hubungkan ke cluster yang memiliki semua CRD yang Anda perlukan untuk sumber kebenaran Anda. Cluster tidak perlu mengaktifkan Config Sync.
  2. Buka policyDir dari sumber kebenaran Anda. Ini adalah direktori yang sama dengan yang ditentukan di resource ConfigManagement atau RootSync.
  3. Jalankan perintah berikut: kubectl api-resources > api-resources.txt Perintah ini akan membuat file bernama api-resources.txt yang berisi output dari kubectl api-resources.

Mulai sekarang, operasi nomos vet dalam sumber kebenaran mengetahui jenis tersebut definisi. Jika file api-resources.txt dihapus atau diganti namanya, nomos vet tidak dapat menemukan file. nomos vet akan tetap mencoba terhubung ke cluster jika menemukan manifes untuk jenis yang tidak dideklarasikan dalam api-resources.txt (kecuali jika --no-api-server-check diteruskan).

File api-resources.txt hanya memengaruhi cara kerja alat nomos. Tidak mengubah perilaku Config Sync dengan cara apa pun.

Tidak apa-apa untuk memiliki entri tambahan di file api-resources.txt yang untuk jenis yang tidak ada dalam sumber kebenaran yang sedang divalidasi. nomos vet mengimpor definisi, tetapi tidak melakukan apa pun.

Mengupdate api-resources.txt

Setelah memastikan semua CRD yang Anda inginkan ada di cluster, jalankan perintah berikut berikut:

kubectl api-resources > api-resources.txt

Secara otomatis memeriksa kesalahan {i>syntax<i} saat melakukan

Jika Anda meng-commit file dengan error JSON atau YAML, Config Sync tidak menerapkan perubahan tersebut. Namun, Anda dapat mencegah jenis kesalahan ini masuk ke sumber tepercaya menggunakan sisi klien atau hook sisi server.

Menggunakan nomos vet dalam hook pra-commit

Anda dapat mengonfigurasi hook pra-commit yang menjalankan perintah nomos vet untuk memeriksa untuk error sintaksis saat Anda melakukan perubahan ke clone Git lokal repo Anda. Jika hook pra-commit keluar dengan status bukan nol, operasi git commit 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 . tertentu). Anda mungkin perlu membuat file secara manual. Menambahkan nomos vet perintah ke baris baru dalam skrip. Argumen --path bersifat opsional.

nomos vet --path=/path/to/repo

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 berjalan secara otomatis.

Konten direktori .git/ tidak dilacak oleh kebenaran itu sendiri, dan tidak dapat berkomitmen pada sumber kebenaran lokasi HTTP/HTTPS. Anda dapat membuat direktori di sumber kebenaran untuk hook Git, dan orang yang menggunakan sumber tepercaya dapat menyalin {i>hook<i} ke tempat yang sesuai di dan membuat clone lokal Anda.

Menggunakan nomos vet di hook sisi server

Git menyediakan mekanisme untuk menjalankan pemeriksaan di server, bukan selama operasi git push. Jika pemeriksaan gagal, git push juga gagal. Hook sisi server ini tidak dapat diabaikan oleh klien. Metode untuk mengonfigurasi hook sisi server tergantung pada cara server Git Anda dihosting. Lihat satu tautan berikut untuk informasi lebih lanjut, atau periksa dokumentasi untuk Layanan hosting Git.

Lihat semua konfigurasi di sumber kebenaran

Anda dapat menggunakan perintah nomos hydrate untuk melihat gabungan konten tepercaya pada setiap cluster yang terdaftar.

Jika Anda menjalankan nomos hydrate tanpa opsi, tindakan ini akan membuat direktori compiled/ pada direktori kerja saat ini. Dalam direktori itu, suatu sub direktori adalah yang dibuat untuk setiap cluster yang terdaftar, dengan konfigurasi yang telah diselesaikan sepenuhnya Operator akan diterapkan ke cluster.

Perintah ini juga dapat mengonversi sumber kebenaran hierarkis ke satu atau beberapa sumber kebenaran tidak terstruktur, menggunakan konten dalam direktori compiled/.

tanda nomos hydrate

Untuk menyesuaikan perintah nomos hydrate, tambahkan tanda berikut:

Tanda Deskripsi
--clusters Menerima daftar nama cluster yang dipisahkan koma. Gunakan tanda ini untuk membatasi output ke satu cluster atau daftar cluster. Default-nya adalah semua klaster. Gunakan "" jika tidak ada cluster.
--flat Jika diaktifkan, cetak semua output ke satu file. Gunakan penanda ini jika Anda ingin untuk mengemulasi perilaku nomos view.
-h atau --help Bantuan untuk perintah nomos hydrate.
--format Menerima yaml atau json. Format {i>output<i} tersebut. Nilai defaultnya adalah yaml.
--no-api-server-check Menerima Boolean. Jika true, menonaktifkan berkomunikasi dengan API server agar mudah ditemukan. Untuk informasi selengkapnya tentang tanda ini, lihat Bagian Validasi sisi server.
--output Menerima string. Lokasi untuk menulis konfigurasi terhidrasi. Tujuan defaultnya adalah direktori compiled. Jika --flat tidak diaktifkan, setiap manifes resource akan ditulis sebagai file terpisah. Jika --flat diaktifkan, operasi tulis ke, akan menulis satu file yang menyimpan semua manifes resource.
--path Menerima string. Jalur ke direktori utama Config Sync yang sesungguhnya. Defaultnya adalah "."
--source-format Menerima hierarchy atau unstructured. Jika hierarchy atau tidak disetel, memvalidasi sumber kebenaran sebagai sumber kebenaran hierarkis. Jika unstructured, memvalidasi sumber kebenaran sebagai sumber tepercaya tidak terstruktur. Tanda ini diperlukan jika Anda menggunakan sumber kebenaran yang tidak terstruktur.

Buat laporan bug

Jika mengalami masalah dengan Config Sync yang memerlukan bantuan dari Dukungan Google Cloud, Anda dapat memberi mereka informasi berharga informasi proses debug dengan menggunakan perintah nomos bugreport. Anda dapat menggunakan perintah untuk satu sumber tepercaya dan beberapa repositori.

nomos bugreport

Perintah ini menghasilkan file ZIP dengan stempel waktu yang berisi informasi tentang Kubernetes cluster yang ditetapkan dalam konteks kubectl. File ini juga berisi log dari Konfigurasi Pod Sinkronisasi. Salinan ini tidak berisi informasi dari sumber daya yang disinkronkan dengan Config Sync. Untuk informasi lebih lanjut tentang isi file zip, lihat referensi laporan bug nomo.

Batasan

Perintah nomos bugreport gagal dan menghasilkan file ZIP yang tidak lengkap jika file apa pun melebihi 1GiB. Hal ini sering terjadi karena file log yang besar.

Tabel berikut berisi penyebab paling umum dari file log besar dan bagaimana Anda dapat menyelesaikannya:

Penyebab Tindakan yang disarankan
Meningkatkan panjang log Mengurangi panjang log dengan penggantian level log
Objek yang sangat besar Batalkan pengelolaan objek besar atau kurangi ukurannya
Banyak objek Membagi repositori Anda menjadi beberapa repositori
Perkelahian pengontrol Selesaikan pertarungan

Bermigrasi dari objek ConfigManagement ke objek RootSync

Anda dapat menjalankan perintah nomos migrate untuk bermigrasi dari ConfigManagement ke objek RootSync untuk mengaktifkan API RootSync dan RepoSync.

nomos migrate mendukung uji coba untuk melihat pratinjau proses migrasi.

nomos migrate mengubah objek ConfigManagement di cluster secara langsung. Agar perubahan yang dibuat melalui nomos migrate tidak dikembalikan, pastikan Objek ConfigManagement tidak diperiksa di sumber tepercaya Anda.

nomos migrate --contexts=KUBECONFIG_CONTEXTS --dry-run

Jika hasil uji coba terlihat bagus, Anda dapat memigrasikan objek ConfigManagement 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`.

Roll back ke konfigurasi sebelumnya

Jika Anda perlu melakukan roll back setelah melakukan migrasi dengan nomos migrate, menerapkan objek ConfigManagement asli. nomos migrate menyimpan objek ConfigManagement asli ke file dan mencetak namanya ke terminal. Nama filenya adalah /tmp/nomos-migrate/CURRENT_CONTEXT/cm-original.yaml.

Untuk melakukan roll back ke konfigurasi sebelumnya, salin jalur file untuk cm-original.yaml, lalu terapkan file tersebut ke cluster Anda:

kubectl apply -f CM_ORIGINAL_PATH

tanda migrasi nomos

Untuk menyesuaikan perintah nomos migrate, tambahkan tanda berikut:

Tanda Deskripsi
--connect-timeout Menerima durasi. Durasi waktu tunggu untuk terhubung ke setiap cluster. Nilai defaultnya adalah 3s.
--contexts Menerima daftar konteks yang dipisahkan koma untuk digunakan dalam multi-cluster lingkungan fleksibel App Engine. Setelan defaultnya adalah konteks saat ini. Gunakan "all" untuk semua konteks.
--dry-run Menerima boolean. Jika true, hanya mencetak migrasi {i>output<i} tersebut.
-h atau --help Bantuan untuk perintah nomos migrate.
--wait-timeout Menerima durasi. Durasi waktu tunggu untuk menunggu Kubernetes resource kondisi tertentu menjadi true. Nilai defaultnya adalah 10m.

Melakukan inisialisasi sumber kebenaran hierarkis

Anda dapat mengatur sumber kebenaran secara acak jika Anda menggunakan sumber tepercaya tidak terstruktur. Jika Anda menggunakan sumber kebenaran hierarkis, Anda harus menjalankan perintah nomos init untuk menginisialisasi direktori hierarkis:

nomos init

Ini menciptakan struktur direktori dasar dari sumber kebenaran hierarkis, termasuk Direktori system/, cluster/, dan namespaces/.

flag init nomos

Untuk menyesuaikan nomos init, tambahkan tanda berikut:

Tanda Deskripsi
--force Menulis ke direktori meskipun tidak kosong, menimpa file yang bentrok
-h atau --help Bantuan untuk perintah nomos init.
--path Menerima string. Direktori {i>root<i} yang akan digunakan untuk yang sesungguhnya. 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)

Langkah selanjutnya