Merencanakan serangkaian pemulihan

Halaman ini menjelaskan cara membuat, mengedit, dan menghapus rencana pemulihan di Google Distributed Cloud (GDC) yang terisolasi.

Paket pemulihan adalah skenario pemulihan yang telah dikonfigurasi sebelumnya untuk baris cadangan yang sesuai. Rencana pemulihan dapat menetapkan izin bagi pengguna dengan peran Pembuat Cadangan untuk menggunakan konfigurasi ini.

Pembuat Cadangan dapat dengan cepat dan mandiri memulihkan cadangan saat terjadi insiden. Misalnya, data persisten mungkin rusak karena update software pada aplikasi yang di-deploy sehingga membuat namespace aplikasi berada dalam status tidak valid dan memerlukan pemulihan.

Selama pemulihan, Anda dapat memilih untuk menerapkan serangkaian aturan substitusi yang digunakan untuk mencocokkan serangkaian resource dan mengganti nilai atribut saat ini pada resource tersebut dengan nilai baru. Misalnya, aturan substitusi dapat mengubah namespace resource yang dicadangkan selama pemulihan untuk memigrasikan beban kerja dari satu namespace ke namespace lain.

Sebelum memulai

Untuk membuat rencana pemulihan, Anda harus memiliki hal berikut:

  • Peran akses dan identitas yang diperlukan:

    • Admin Pencadangan Cluster Pengguna: mengelola resource pencadangan seperti rencana pencadangan dan pemulihan di cluster pengguna. Minta Admin IAM Organisasi Anda untuk memberi Anda peran User Cluster Backup Admin (user-cluster-backup-admin). Untuk mengetahui informasi selengkapnya, lihat Definisi peran.
    • Jika Anda adalah Operator Aplikasi, minta administrator yang memiliki hak istimewa Admin Pencadangan Cluster Pengguna untuk membuat rencana pemulihan bagi Anda.

Membuat paket pemulihan

Buat rencana pemulihan menggunakan konsol GDC atau API.

Konsol

  1. Login ke konsol GDC.
  2. Di menu navigasi, klik Backup for Clusters.
  3. Klik Buat Rencana Pemulihan.
  4. Di bagian Dasar-dasar rencana pemulihan, selesaikan langkah-langkah berikut, lalu klik Berikutnya:
    1. Di bagian Nama paket pemulihan, masukkan nama paket pemulihan Anda.
    2. (Opsional) Di Deskripsi paket pemulihan, masukkan deskripsi untuk paket pemulihan.
    3. Di daftar Source cluster, pilih cluster sumber untuk rencana pemulihan.
    4. Dalam daftar Project, pilih project untuk paket pemulihan.
    5. Pilih project yang terlampir ke cluster sumber.
    6. Di kolom Backup plan, pilih rencana pencadangan untuk cluster yang ada dan sesuai dengan cadangan yang ingin Anda pulihkan.
    7. Di kolom Target cluster, pilih cluster target tempat Anda ingin memulihkan cadangan.
  5. Di bagian Pilih resource dengan namespace, selesaikan langkah-langkah berikut lalu klik Berikutnya:
    1. Pilih namespace yang akan dipulihkan:
      1. Klik Semua resource dengan namespace untuk memulihkan semua resource dengan namespace dalam cadangan.
      2. Klik Resource dengan namespace yang dipilih untuk menentukan namespace dalam cadangan yang akan dipulihkan.
        1. Klik Edit namespace cluster, lalu Tambahkan namespace cluster untuk memasukkan namespace.
      3. Klik Aplikasi dilindungi yang dipilih untuk menambahkan resource dengan menentukan namespace dan nama aplikasi.
    2. Pilih cara menangani konflik:
      1. Klik Gagal karena konflik (non-destruktif) untuk menggagalkan pemulihan jika ada namespace yang ditargetkan untuk dipulihkan dari cadangan yang sudah ada di cluster target.
      2. Klik Rollback (destruktif) untuk menghapus namespace yang ada sebelum memulihkan namespace baru jika ada namespace yang ditargetkan untuk pemulihan dari cadangan yang sudah ada di cluster target.
    3. Pilih cara memulihkan data volume:
      1. Klik Sediakan volume baru dan pulihkan data volume dari cadangan untuk memulihkan data volume dari cadangan di persistent disk baru.
      2. Klik Jangan pulihkan data volume untuk menyediakan volume persisten baru. Jika cluster target berisi volume persisten tidak terikat yang memenuhi persyaratan PersistentVolumeClaim, cluster tersebut akan terikat dengan volume.
      3. Klik Gunakan kembali volume yang ada dan berisi data Anda agar tidak memulihkan data cadangan volume. Setiap PersistentVolumeClaims terikat dengan volume yang merujuk pada persistent disk yang ada.
  6. Opsional: Di bagian Pilih resource cakupan cluster, selesaikan langkah-langkah berikut, lalu klik Berikutnya:
    1. Klik Jangan pulihkan resource cakupan cluster agar versi resource yang ada tidak berubah.
    2. Klik Pulihkan resource cakupan cluster menurut GroupKind untuk memulihkan resource ini.
      1. Klik Edit GroupKinds untuk menambahkan lebih banyak resource cakupan cluster. Masukkan grup API dan jenis objek untuk mencocokkan resource dalam jenis tersebut.
    3. Klik Pertahankan resource yang ada untuk membuat resource jika resource tersebut tidak ada di cluster target.
    4. Klik Timpa resource dalam cluster target untuk menghapus resource jika sudah ada dalam cluster target, dan memulihkan salinan dari cadangan.
  7. Opsional: Di bagian Tambahkan aturan substitusi, selesaikan langkah-langkah berikut, lalu klik Berikutnya:
    1. Klik Tambahkan aturan baru.
    2. Di kotak Cluster namespaces, masukkan daftar namespace untuk mencocokkan resource dalam namespace tersebut.
    3. Untuk menambahkan GroupKind, klik Tambahkan GroupKind, lalu masukkan grup API dan Jenis objek untuk mencocokkan resource dalam jenis tersebut.
    4. Di kolom Jalur JSON, ketik jalur JSON yang mengidentifikasi kolom di dalam resource yang cocok dan menerapkan substitusi.
    5. Di kolom Pola nilai asli, ketik pola asli untuk dibandingkan dengan nilai baru.
    6. Di kolom Nilai baru, ketik nilai baru yang menggantikan nilai saat ini dari atribut yang cocok.
    7. Klik Simpan.
  8. Klik Buat.

API

Buat resource kustom ClusterRestorePlan untuk merencanakan pemulihan dari ClusterBackupPlan yang ada. ClusterRestorePlan menetapkan kumpulan resource dan namespace yang persis sama yang diizinkan untuk dipulihkan oleh Pembuat Cadangan. Berikut contoh ClusterRestorePlan:

apiVersion: backup.gdc.goog/v1
kind: ClusterRestorePlan
metadata:
  name: restoreplan-sample
  namespace:  PROJECT_NAME
spec:
  targetCluster:
    targetClusterType: UserCluster
    targetClusterName:
      kind: "Cluster"
      name: "user-vm-1"
  description: "restores test clusters"
  clusterBackupPlanName: "backupplan-sample"
  clusterRestoreConfig:
    volumeDataRestorePolicy: RestoreVolumeDataFromBackup
    clusterResourceConflictPolicy: UseBackupVersion
    namespacedResourceRestoreMode: DeleteAndRestore
    namespacedResourceRestoreScope:
      selectedNamespaces:
        namespaces: ["nginx-2"]
    clusterBackupRepositoryRef: "backup-repository"
    substitutionRules:
      - newValue: "newhippo"
        originValuePattern: game-config-2
        target:
          groupKinds:
          jsonPath: '{.metadata.name}'
          namespaces:
          - nginx-2
      - newValue: "hippo"
        originValuePattern: game-config
        target:
          groupKinds:
          jsonPath: '{.metadata.name}'
          namespaces:
          - nginx-2

Ganti PROJECT_NAME dengan nama project GDC Anda.

Contoh ini menggunakan nilai berikut:


Nilai

Atribut

Deskripsi
clusterBackupPlanName Nama ClusterBackupPlan yang akan dipulihkan. ClusterBackupPlan harus ada di namespace yang sama dengan ClusterRestorePlan.
targetClusterName Nama cluster sumber dalam project yang terkait dengan rencana ini.
description Deskripsi yang diberikan pengguna untuk tujuan ClusterRestorePlan.
clusterRestoreConfig Konfigurasi untuk proses pemulihan.
clusterBackupRepositoryRef Menentukan repositori untuk menyimpan Restore resource. Repositori ini dapat berbeda dengan repositori yang menjadi sumber cadangan. Repositori harus berupa repositori ReadWrite di cluster.
clusterResourceConflictPolicy Menentukan perilaku untuk menangani konflik resource cluster, seperti jika resource sudah ada di cluster. Tentukan salah satu dari:
  • UseExistingVersion: Tidak mengganti resource yang ada selama konflik
  • UseBackupVersion: Menghapus dan membuat ulang resource cluster yang ada selama konflik. Ini adalah opsi berbahaya yang dapat menyebabkan kehilangan data yang tidak disengaja jika digunakan secara tidak tepat. Misalnya, menghapus definisi resource kustom menyebabkan Kubernetes menghapus semua resource kustom dari jenis tersebut.
volumeDataRestorePolicy Tentukan salah satu opsi:
  • NoVolumeDataRestoration: PV/PVC tidak dipulihkan.
  • RestoreVolumeDataFromBackup: PV dan PVC baru dibuat dari cadangan.
  • ReuseVolumeHandleFromBackup: Membuat PV baru, tetapi mencoba memulihkan PVC menggunakan PV aslinya. Ditujukan untuk memulihkan ke cluster yang sama dengan tempat cadangan diambil.
namespacedResourceRestoreMode Menangani situasi saat set resource dengan namespace yang dipulihkan sudah ada di cluster target. Tentukan salah satu opsi:
  • DeleteAndRestore: Jika resource tingkat teratas yang bertentangan seperti Namespaces atau ProtectedApplications ditemukan, hal ini akan memicu penghapusan resource yang bertentangan dan semua resource yang direferensikannya sebelum memulihkan resource dari Backup. Gunakan mode ini hanya jika Anda ingin mengembalikan sebagian cluster ke status sebelumnya.
  • FailOnConflict: Jika resource tingkat teratas yang bertentangan seperti resource Namespace atau ProtectedApplication ditemukan di awal proses pemulihan atau selama proses pemulihan, maka Restore akan gagal.
  • MergeSkipOnConflict: Jika resource yang bertentangan ditemukan selama proses pemulihan, mode ini akan melewati pemulihan resource yang bertentangan dari cadangan dan melanjutkan pemulihan resource lain yang tidak ada di cluster.
  • MergeReplaceOnConflict: Jika resource yang bertentangan ditemukan selama proses pemulihan, mode ini akan mengganti resource yang bertentangan dari cadangan dan terus memulihkan resource lain yang tidak ada di cluster.
namespacedResourceRestoreScope Menentukan Namespaces atau ProtectedApplications mana yang diizinkan untuk pemulihan.
  • selectedApplications mengaitkan aplikasi yang dilindungi dengan pemulihan ini.
  • selectedNamespaces mengaitkan namespace dengan pemulihan ini.
substitutionRules Aturan untuk mengganti nilai di resource Kubernetes yang dicadangkan selama pemulihan. Daftar kosong berarti tidak ada penggantian. Aturan substitusi diterapkan secara berurutan sesuai urutan yang ditentukan. Urutan ini penting, karena perubahan yang dilakukan oleh suatu aturan dapat memengaruhi logika pencocokan aturan berikutnya.

Setelah ClusterRestorePlan dibuat, pengguna dengan peran Pembuat Cadangan dapat memulihkan cadangan secara manual.

Melihat paket pemulihan

Melihat rencana pemulihan menggunakan konsol GDC:

  1. Login ke konsol GDC.
  2. Di menu navigasi, klik Backup for Clusters.
  3. Klik Pilih project untuk memilih organisasi atau project, bergantung pada peran Anda:
    1. Admin Pencadangan Cluster Pengguna: Pilih organisasi untuk melihat semua rencana pemulihan dalam organisasi atau pilih project untuk melihat semua rencana pemulihan dalam project.
    2. Pembuat Cadangan: Pilih project untuk melihat semua rencana pemulihan dalam project.
  4. Klik tab Pulihkan Paket.
  5. Klik rencana pemulihan dalam daftar untuk melihat detailnya.

Mengedit paket pemulihan

Jika repositori cadangan yang terkait dengan rencana pemulihan yang ingin Anda edit memiliki nilai di kolom Cluster Tertaut(hanya baca) saat rencana pemulihan dibuat, rencana tersebut akan dibuat dua kali. Paket pemulihan disebarkan ke cluster baca-tulis dan hanya baca.

Saat mengedit paket pemulihan yang dimiliki oleh repositori cadangan yang memiliki setelan cluster baca-tulis dan hanya baca, Anda harus mengedit paket pemulihan yang memiliki setelan TARGET CLUSTER ke cluster baca-tulis.

Mengedit rencana pemulihan menggunakan konsol GDC:

  1. Login ke konsol GDC.
  2. Di menu navigasi, klik Backup for Clusters.
  3. Klik Pilih project untuk memilih organisasi atau project, bergantung pada peran Anda:
    1. Admin Pencadangan Cluster Pengguna: Pilih organisasi untuk melihat semua rencana pemulihan dalam organisasi atau pilih project untuk melihat semua rencana pemulihan dalam project.
    2. Pembuat Cadangan: Pilih project untuk melihat semua rencana pemulihan dalam project.
  4. Klik tab Pulihkan Paket.
  5. Klik nama rencana pemulihan yang ingin Anda edit.
  6. Klik tab Konfigurasi Paket untuk melihat kolom yang dapat diubah.
  7. Klik ikon Edit di samping Resource dengan namespace untuk mengedit resource tersebut:

    1. Di bagian Pilih resource dengan namespace, pilih resource dengan namespace dalam cadangan yang ingin Anda pulihkan:

      1. Pilih Semua resource dengan namespace untuk memulihkan semua resource dengan namespace dalam cadangan.
      2. Pilih Resource dengan namespace yang dipilih untuk memulihkan resource dari namespace yang dipilih dalam cadangan:

        1. Pilih Edit Cluster Namespaces untuk memilih namespace cluster.
        2. Di kolom Cluster namespace 1, masukkan nama untuk namespace.
        3. Klik tombol Save.
      3. Pilih Aplikasi yang dilindungi yang dipilih untuk memulihkan resource dari aplikasi yang dilindungi yang dipilih dalam cadangan:

        1. Pilih Edit Aplikasi yang Dilindungi untuk memilih namespace dan aplikasi yang dilindungi.
        2. Di kolom Namespace 1, masukkan nama untuk namespace.
        3. Di kolom Aplikasi yang dilindungi 1, masukkan nama aplikasi yang dilindungi.
        4. Klik tombol Save.
  8. Klik ikon Edit di samping Cluster-scoped resources untuk mengedit resource tersebut:

    1. Opsional: Di bagian Pilih resource cakupan cluster, pilih resource cakupan cluster yang akan dipulihkan dengan menentukan grup API dan GroupKinds, lalu tentukan cara konflik harus diselesaikan:

      1. Pilih Jangan pulihkan resource cakupan cluster untuk menghapus resource cakupan cluster dari proses pemulihan.
      2. Pilih Pulihkan resource cakupan cluster menurut GroupKind untuk memulihkan resource menurut GroupKind yang ditentukan:

      3. Untuk menentukan GroupKind, klik tombol Edit GroupKind.

      4. Klik tombol Add GroupKind.

      5. Masukkan nama GroupKind.

      6. Klik tombol Save.

    2. Di bagian Penanganan konflik, tentukan tindakan yang akan dilakukan jika resource sudah ada di cluster target:

      1. Pilih Pertahankan resource yang ada untuk membuat resource jika resource belum ada di cluster.
      2. Pilih Timpa resource yang ada untuk menghapus semua resource yang ada dan ditemukan, lalu ganti resource ini dengan resource yang dipulihkan.
    3. Klik tombol Simpan untuk mengonfirmasi perubahan Anda.

  9. Di bagian Aturan substitusi, klik tombol Tambahkan Aturan Baru untuk menambahkan aturan substitusi baru:

    1. Di kolom Cluster namespaces, masukkan nama namespace cluster yang akan menerapkan aturan penggantian ini.
    2. Klik tombol Tambahkan GroupKind untuk menerapkan aturan ini ke objek GroupKind tertentu.
    3. Di kolom Jalur JSON, masukkan jalur ke atribut resource yang ingin Anda ganti, dalam format JSON.
    4. Di kolom Pola nilai asli, masukkan ekspresi reguler yang cocok dengan nilai asli atribut.
    5. Di kolom Nilai baru, masukkan nilai yang digantikan untuk kolom target. Jika kolom ini kosong, kolom target akan dihapus dari resource.
    6. Klik tombol Simpan untuk menyelesaikan pembuatan aturan penggantian baru.
  10. Di bagian Aturan penggantian, klik ikon Edit untuk mengedit aturan penggantian yang ada.

  11. Di bagian Aturan penggantian, klik ikon Hapus untuk menghapus aturan penggantian yang ada.

Menghapus paket pemulihan

RestorePlans dapat dihapus melalui konsol GDC atau dengan menghapus resource langsung dari server Kubernetes API. Tindakan ini akan membersihkan artefak RestorePlan terkait dari penyimpanan objek.

Konsol

  1. Login ke konsol GDC.
  2. Di menu navigasi, klik Backup for Clusters.
  3. Klik Pilih project untuk memilih organisasi atau project, bergantung pada peran Anda:
    1. Admin Pencadangan Cluster Pengguna: Pilih organisasi untuk melihat semua paket pemulihan di organisasi, atau pilih project untuk melihat semua paket pemulihan di project.
    2. Pembuat Cadangan: Pilih project untuk melihat semua rencana pemulihan dalam project.
  4. Klik tab Pulihkan Paket.
  5. Klik nama rencana pemulihan yang ingin Anda hapus.
  6. Klik tombol Hapus.
  7. Masukkan nama paket pemulihan ke dalam kolom.
  8. Klik tombol Hapus untuk mengonfirmasi penghapusan rencana pemulihan ini.

API

Hapus resource paket pemulihan:

kubectl delete clusterRestoreplan RESTORE_PLAN_NAME -n NAMESPACE

Ganti kode berikut:

  • RESTORE_PLAN_NAME: nama paket pemulihan.
  • NAMESPACE: namespace yang berisi paket pemulihan.

Langkah berikutnya