Menggunakan alat command line nomos

Alat command line nomos adalah alat opsional untuk Config Sync yang dapat Anda gunakan untuk mendapatkan status Config Sync dan status sinkronisasi sumber tepercaya. Alat nomos memberi Anda perintah berikut:

Perintah Penggunaan
nomos status Memeriksa status Config Sync
nomos vet Memeriksa error di sumber tepercaya
nomos hydrate Melihat semua konfigurasi di sumber tepercaya
nomos bugreport Membuat laporan bug
nomos migrate Melakukan migrasi dari objek ConfigManagement ke RootSync
nomos init Melakukan inisialisasi 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 diinstal sebelumnya.

Jika tidak memiliki Google Cloud CLI, sebaiknya gunakan gcloud components install nomos untuk menginstal alat nomos. Dengan menginstal alat nomos menggunakan Google Cloud CLI, Anda dapat menggunakan gcloud components update untuk mengupdate alat nomos ke versi terbaru.

Untuk 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 level teratas sumber tepercaya. Secara default, --path ditetapkan 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 di kolom STATUS pada bagian Managed resources output.

Contoh berikut menunjukkan beberapa kondisi yang 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 tepercaya dan semua resource terkelola memiliki status Current. Status Current 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 oleh 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 tepercaya bookstore mungkin milik tim pengembangan aplikasi.

Status resource terkelola

Status resource terkelola Anda dapat berupa salah satu nilai berikut:

  • InProgress: Status sebenarnya dari resource belum mencapai status yang Anda tentukan dalam manifes resource. Status ini berarti bahwa rekonsiliasi resource belum selesai. Resource yang baru dibuat biasanya mulai dengan status ini, meskipun beberapa resource seperti ConfigMap langsung menjadi Current.

  • Failed: Proses rekonsiliasi status sebenarnya dengan status yang Anda inginkan mengalami error atau tidak cukup progres.

  • Current: Status sebenarnya dari resource cocok dengan status yang Anda inginkan. Proses rekonsiliasi dianggap selesai hingga ada perubahan pada status yang diinginkan atau yang 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 output-nya di bagian status.sync.commit. Untuk mendapatkan nilai ini, buat 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 mewakili commit terbaru terhadap cluster. Namun, tidak setiap resource dalam cluster terpengaruh oleh setiap commit; untuk melihat commit terbaru untuk resource tertentu, buat 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

flag status nomos

Untuk menyesuaikan perintah nomos status, tambahkan flag berikut:

Flag Deskripsi
--contexts Menerima daftar konteks yang dipisahkan koma untuk digunakan dalam perintah multi-cluster. Setelan defaultnya adalah semua konteks. Gunakan "" untuk tidak ada konteks.
-h atau --help Bantuan untuk perintah nomos status.
--namespace Menerima string. Gunakan flag namespace untuk membatasi perintah ke sumber tepercaya namespace tertentu. Biarkan tidak ditetapkan untuk mendapatkan semua sumber. Flag ini hanya tersedia jika Anda mengaktifkan sinkronisasi dari lebih dari satu sumber tepercaya.
--poll Gunakan flag poll untuk menjalankan nomos status secara terus-menerus dan mencetak ulang tabel status pada interval reguler. Contohnya, 3s. Biarkan flag ini tidak ditetapkan untuk menjalankan nomos status satu kali
--resources Menerima true atau false. Jika true, nomos status akan menampilkan status tingkat resource untuk root atau sumber tepercaya namespace Anda saat menyinkronkan 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 flag ini untuk memfilter Root dan Repo Sync dengan nama yang diberikan. Flag ini dapat digunakan bersama dengan flag namespace.

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 tanpa menambahkan izin 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 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"]
    
  2. Terapkan file nomos-status-reader.yaml:

    kubectl apply -f nomos-status-reader.yaml
    

Memeriksa error di sumber tepercaya

Sebelum Anda melakukan konfigurasi ke sumber tepercaya, gunakan perintah nomos vet untuk memeriksa sintaksis dan validitas konfigurasi di sumber tepercaya:

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 nomos vet

Untuk menyesuaikan perintah nomos vet, tambahkan flag berikut:

Flag Deskripsi
--clusters Menerima daftar nama cluster yang dipisahkan koma untuk digunakan dalam perintah multi-cluster. Setelan defaultnya adalah semua cluster. Gunakan "" untuk tidak ada cluster.
-h atau --help Bantuan untuk perintah nomos vet.
--namespace Menerima string. Jika ditetapkan, memvalidasi sumber tepercaya sebagai sumber tepercaya namespace dengan nama yang diberikan. Secara otomatis menetapkan --source-format=unstructured.
--no-api-server-check Menerima Boolean. Jika true, menonaktifkan komunikasi dengan server API untuk penemuan. Untuk mengetahui informasi selengkapnya tentang flag ini, lihat bagian Validasi sisi server.
--path Menerima string. Jalur ke direktori utama sumber tepercaya Config Sync Anda. Defaultnya adalah "."
--source-format Menerima hierarchy atau unstructured. Jika hierarchy atau tidak ditetapkan, validasi sumber tepercaya sebagai sumber tepercaya hierarkis. Jika unstructured, validasi sumber tepercaya sebagai sumber tepercaya yang tidak terstruktur. Flag ini diperlukan jika Anda menggunakan sumber tepercaya 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. Setelan defaultnya adalah direktori compiled. Jika --keep-output ditetapkan ke false, tanda ini akan diabaikan.
--format Menerima yaml atau json. Format output. Nilai defaultnya adalah yaml.

Validasi sisi server

Jika perintah nomos vet tidak dapat menentukan apakah jenisnya memiliki namespace, alat nomos akan terhubung ke Server API. Karena alat nomos secara default memahami jenis Kubernetes inti dan CRD Config Sync, alat ini hanya mencoba terhubung ke Server API jika ada CR yang tidak memiliki CRD yang dideklarasikan. 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 hilang, teruskan flag --no-api-server-check.

Menyimpan cache metadata server API

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

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

Mulai sekarang, pengoperasian nomos vet dalam sumber tepercaya 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 dalam api-resources.txt (kecuali jika --no-api-server-check diteruskan).

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

Anda dapat memiliki entri tambahan dalam file api-resources.txt yang ditujukan untuk jenis yang tidak ada dalam sumber tepercaya yang sedang 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 pada file dengan error JSON atau YAML, Config Sync tidak akan menerapkan perubahan tersebut. Namun, Anda dapat mencegah jenis error ini agar tidak masuk ke sumber tepercaya dengan menggunakan hook sisi klien atau sisi server.

Menggunakan nomos vet di hook pra-commit

Anda dapat mengonfigurasi hook pra-commit yang menjalankan perintah nomos vet untuk memeriksa error 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, 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-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 klien, selama operasi git push. Jika pemeriksaan gagal, git push juga akan gagal. Hook sisi server ini tidak dapat diabaikan 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 lihat dokumentasi untuk layanan hosting Git Anda.

Melihat semua konfigurasi di sumber tepercaya

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

Jika Anda menjalankan nomos hydrate tanpa opsi, tindakan ini akan membuat direktori compiled/ di direktori kerja saat ini. Dalam direktori tersebut, subdirektori dibuat untuk setiap cluster yang terdaftar, dengan konfigurasi yang sepenuhnya di-resolve 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 flag berikut:

Flag Deskripsi
--clusters Menerima daftar nama cluster yang dipisahkan koma. Gunakan flag ini untuk membatasi output ke satu cluster atau daftar cluster. Setelan defaultnya adalah semua cluster. Gunakan "" untuk tidak ada cluster.
--flat Jika diaktifkan, cetak semua output ke satu file. Gunakan tanda ini jika Anda ingin mengemulasikan perilaku nomos view.
-h atau --help Bantuan untuk perintah nomos hydrate.
--format Menerima yaml atau json. Format output. Nilai defaultnya adalah yaml.
--no-api-server-check Menerima Boolean. Jika true, menonaktifkan komunikasi dengan server API untuk penemuan. Untuk mengetahui informasi selengkapnya tentang flag ini, lihat bagian Validasi sisi server.
--output Menerima string. Lokasi untuk menulis konfigurasi yang di-hydrate. Defaultnya adalah direktori compiled. Jika --flat tidak diaktifkan, tulis setiap manifes resource sebagai file terpisah. Jika --flat diaktifkan, menulis ke, menulis satu file yang menyimpan semua manifes resource.
--path Menerima string. Jalur ke direktori utama sumber tepercaya Config Sync Anda. Defaultnya adalah "."
--source-format Menerima hierarchy atau unstructured. Jika hierarchy atau tidak ditetapkan, validasi sumber tepercaya sebagai sumber tepercaya hierarkis. Jika unstructured, validasi sumber tepercaya sebagai sumber tepercaya yang tidak terstruktur. Flag ini diperlukan jika Anda menggunakan sumber tepercaya yang tidak terstruktur.

Membuat laporan bug

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

nomos bugreport

Perintah ini menghasilkan file zip berstempel waktu dengan informasi tentang cluster Kubernetes yang ditetapkan dalam konteks kubectl Anda. File ini juga berisi log dari Config Sync Pods. File ini tidak berisi informasi dari resource yang disinkronkan dengan Config Sync. Untuk informasi selengkapnya tentang konten file ZIP, lihat referensi bugreport nomos.

Batasan

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

Tabel berikut menyertakan penyebab paling umum file log berukuran besar dan cara Anda dapat mengatasinya:

Penyebab Tindakan yang disarankan
Peningkatan panjang log Mengurangi panjang log dengan penggantian level log
Objek yang sangat besar Batalkan pengelolaan objek besar atau kurangi ukurannya
Banyak objek Memisahkan repositori menjadi beberapa repositori
Pertarungan pengontrol Menyelesaikan pertengkaran

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.

Jika Anda menggunakan spec.enableLegacyFields untuk mem-bootstrap RootSync, ikuti panduan untuk menonaktifkan kolom lama, bukan menggunakan nomos migrate. Kolom lama tidak didukung mulai versi 1.19.0.

nomos migrate mendukung uji coba untuk melihat pratinjau proses migrasi.

nomos migrate mengubah objek ConfigManagement Anda di cluster secara langsung. Untuk menghindari perubahan yang dibuat melalui nomos migrate yang dikembalikan, pastikan objek ConfigManagement tidak diperiksa ke dalam 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`.

Melakukan roll back ke konfigurasi sebelumnya

Jika Anda perlu melakukan rollback setelah melakukan migrasi dengan nomos migrate, terapkan objek ConfigManagement asli. nomos migrate menyimpan objek ConfigManagement asli ke file dan mencetak namanya ke terminal. Nama filenya adalah 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

flag migrasi nomos

Untuk menyesuaikan perintah nomos migrate, tambahkan flag 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. Setelan defaultnya 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.
--wait-timeout Menerima durasi. Durasi waktu tunggu untuk menunggu kondisi resource Kubernetes menjadi benar. Nilai defaultnya adalah 10m.

Melakukan inisialisasi sumber tepercaya hierarkis

Anda dapat mengatur sumber tepercaya secara arbitrer jika menggunakan sumber tepercaya yang tidak terstruktur. Jika menggunakan sumber tepercaya hierarkis, Anda harus menjalankan perintah nomos init untuk melakukan inisialisasi direktori hierarkis:

nomos init

Tindakan ini akan membuat struktur direktori dasar dari sumber tepercaya hierarkis, termasuk direktori system/, cluster/, dan namespaces/.

flag init nomos

Untuk menyesuaikan nomos init, tambahkan flag berikut:

Flag Deskripsi
--force Menulis ke direktori meskipun tidak kosong, menimpa file yang mengalami konflik
-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)

Langkah selanjutnya