Memigrasikan objek ConfigManagement Anda

Halaman ini menunjukkan cara memigrasikan konfigurasi Git dari objek ConfigManagement ke objek RootSync. Migrasi ini mengaktifkan RootSync dan RepoSync API, yang memungkinkan Anda menggunakan fitur tambahan:

Anda dapat mengaktifkan API ini meskipun hanya ingin menggunakan repositori root dan tidak ingin menggunakan repositori namespace apa pun.

Memigrasikan setelan ConfigManagement

Jika Anda menggunakan RootSync dengan spec.enableLegacyFields, ikuti petunjuk untuk Berhenti menggunakan kolom lama.

Jika objek ConfigManagement Anda menggunakan spec.git, tetapi spec.enableMultiRepo ditetapkan ke salah (false), ikuti petunjuk untuk Bermigrasi ke RootSync.

Berhenti menggunakan kolom lama

Setelah versi 1.19.0 dan yang lebih baru, kolom spec.enableLegacyFields tidak didukung dan menetapkan kolom ini akan menyebabkan error. Untuk menggunakan Config Sync versi 1.19.0 dan yang lebih baru, selesaikan langkah-langkah berikut untuk menghapus kolom lama:

  1. Buka objek ConfigManagement.

  2. Di objek ConfigManagement, hapus kolom spec.enableLegacyFields dan spec.git. Objek ConfigManagement Anda akan terlihat seperti berikut:

    # config-management.yaml
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      enableMultiRepo: true
    
  3. Terapkan perubahan:

    kubectl apply -f config-management.yaml
    

Kolom lama kini dinonaktifkan tanpa memengaruhi objek RootSync yang dihasilkan dari kolom spec.git objek ConfigManagement Anda. Migrasi telah selesai dan Anda kini dapat menggunakan kolom git di objek RootSync secara langsung.

Bermigrasi ke RootSync

Jika objek ConfigManagement Anda menggunakan spec.git, tetapi spec.enableMultiRepo ditetapkan ke salah (false), ikuti panduan ini untuk mengaktifkan RootSync dan RepoSync API.

Gunakan nomos migrate

Mulai dari versi 1.10.0, nomos menyediakan perintah nomos migrate untuk mengaktifkan API RootSync dan RepoSync. Anda harus mengupdate nomos ke 1.10.0 dan yang lebih baru.

Untuk mengetahui detail selengkapnya tentang cara menjalankan perintah, ikuti Bermigrasi dari objek ConfigManagement ke objek RootSync. Pastikan objek ConfigManagement Anda tidak diperiksa ke dalam sumber tepercaya dan dikelola oleh Config Sync. Jika ya, Anda harus mengubah objek ConfigManagement di sumber tepercaya dengan mengikuti langkah-langkah di Migrasi manual.

Migrasi manual

Jika versi nomos Anda lebih lama dari 1.10.0, Anda dapat memigrasikan setelan secara manual. Anda perlu menetapkan spec.enableMultiRepo ke true di objek ConfigManagement dan membuat objek RootSync yang menyinkronkan repositori root ke cluster. Repositori root dapat berupa repositori tidak terstruktur atau repositori hierarkis. Setelah bermigrasi untuk menggunakan objek RootSync, Anda dapat membagi repositori menjadi beberapa repositori dan mengonfigurasi sinkronisasi dari beberapa repositori.

Untuk mengonfigurasi repositori root dengan memigrasikan konfigurasi, selesaikan tugas berikut:

  1. Buka objek ConfigManagement.
  2. Buat salinan nilai di kolom spec.git. Anda menggunakan nilai ini saat membuat objek RootSync.
  3. Hapus semua kolom spec.git (termasuk git:) dari objek ConfigManagement.
  4. Dalam objek ConfigManagement, tetapkan kolom spec.enableMultiRepo ke true:

    # config-management.yaml
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      enableMultiRepo: true
    
  5. Terapkan perubahan:

    kubectl apply -f config-management.yaml
    
  6. Tunggu hingga CRD RootSync dibuat.

    kubectl wait --for=condition=established crd rootsyncs.configsync.gke.io
    
  7. Dengan menggunakan nilai yang Anda salin dari objek ConfigManagement, buat objek RootSync. Contoh:

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: root-sync
      namespace: config-management-system
    spec:
      sourceFormat: ROOT_FORMAT
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: "ROOT_DIRECTORY"
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        # secretRef should be omitted if the auth type is none, gcenode, or gcpserviceaccount.
        secretRef:
          name: git-creds
    

    Ganti kode berikut:

    • ROOT_FORMAT: tambahkan unstructured untuk menggunakan repositori tidak terstruktur atau tambahkan hierarchy untuk menggunakan repositori hierarkis. Nilai ini peka huruf besar/kecil. Kolom ini bersifat opsional dan nilai defaultnya adalah hierarchy. Sebaiknya tambahkan unstructured karena format ini memungkinkan Anda mengatur konfigurasi dengan cara yang paling nyaman bagi Anda.
    • ROOT_REPOSITORY: menambahkan URL repositori Git untuk digunakan sebagai repositori root. Anda dapat memasukkan URL menggunakan protokol HTTPS atau SSH. Misalnya, https://github.com/GoogleCloudPlatform/anthos-config-management-samples menggunakan protokol HTTPS. Jika Anda tidak memasukkan protokol, URL akan diperlakukan sebagai URL HTTPS. Kolom ini wajib diisi.
    • ROOT_REVISION: menambahkan revisi Git (tag atau hash) yang akan diperiksa. Kolom ini bersifat opsional dan nilai defaultnya adalah HEAD.
    • ROOT_BRANCH: menambahkan cabang repositori yang akan disinkronkan. Kolom ini bersifat opsional dan nilai defaultnya adalah master.
    • ROOT_DIRECTORY: tambahkan jalur di repositori Git ke direktori root yang berisi konfigurasi yang ingin Anda sinkronkan. Kolom ini bersifat opsional dan defaultnya adalah direktori utama (/) repositori.
    • ROOT_AUTH_TYPE: menambahkan salah satu jenis autentikasi berikut:

      • none: Tidak menggunakan autentikasi
      • ssh: Menggunakan pasangan kunci SSH
      • cookiefile: Menggunakan cookiefile
      • token: Menggunakan token
      • gcpserviceaccount: Menggunakan akun layanan Google untuk mengakses repositori di Cloud Source Repositories.
      • gcenode: Menggunakan akun layanan Google untuk mengakses repositori di Cloud Source Repositories. Hanya pilih opsi ini jika Workload Identity Federation untuk GKE tidak diaktifkan di cluster Anda.

        Untuk mengetahui informasi selengkapnya tentang jenis autentikasi ini, lihat Memberikan akses hanya baca ke Git kepada Config Sync.

      Kolom ini wajib diisi.

    • ROOT_EMAIL: Jika Anda menambahkan gcpserviceaccount sebagai ROOT_AUTH_TYPE, tambahkan alamat email akun layanan Google Anda. Contoh, acm@PROJECT_ID.iam.gserviceaccount.com.

  8. Terapkan perubahan:

    kubectl apply -f root-sync.yaml
    

Tabel perbandingan ConfigManagement dan RootSync

Tabel berikut memberikan ringkasan tentang cara kolom dalam objek ConfigMangent dipetakan ke kolom dalam objek RootSync.

Kolom ConfigManagement Kolom RootSync
spec.git.gcpServiceAccountEmail spec.git.gcpServiceAccountEmail
spec.git.syncRepo spec.git.repo
spec.git.syncBranch spec.git.branch
spec.git.policyDir spec.git.dir
spec.git.syncWait spec.git.period
spec.git.syncRev spec.git.revision
spec.git.secretType spec.git.auth
git-creds (ini adalah nilai tetap dalam objek ConfigManagement) spec.git.secretRef.name
spec.sourceFormat spec.sourceFormat
spec.git.proxy.httpProxy atau spec.git.proxy.httpsProxy spec.git.proxy

Langkah selanjutnya