Merencanakan serangkaian pemulihan

Dokumen ini menjelaskan cara membuat, mengedit, dan menghapus rencana pemulihan di Google Distributed Cloud (GDC) dengan air gap.

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

Backup Creator 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 workload dari satu namespace ke namespace lainnya.

Sebelum memulai

Meminta peran IAM

Untuk membuat rencana pemulihan, minta Admin Org IAM Anda untuk memberi Anda peran User Cluster Backup Admin (user-cluster-backup-admin). Peran ini membuat, mendapatkan, mencantumkan, memantau, memperbarui, mem-patch, dan menghapus resource cadangan seperti rencana pencadangan dan rencana pemulihan di cluster pengguna.

Jika Anda adalah Operator Aplikasi, minta administrator dengan hak istimewa User Cluster Backup Admin 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 Create Restore Plan.
  4. Di bagian Restore plan basics, selesaikan langkah-langkah berikut, lalu klik Next:
    1. Di bagian Restore plan name, masukkan nama rencana pemulihan Anda.
    2. (Opsional) Di Restore plan description, masukkan deskripsi untuk paket pemulihan.
    3. Dalam daftar Source cluster, pilih cluster sumber untuk rencana pemulihan.
    4. Dalam daftar Project, pilih project untuk rencana pemulihan.
    5. Pilih project yang terpasang 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 Resource dengan namespace yang dipilih untuk menentukan namespace dalam cadangan yang akan dipulihkan.
        1. Klik Edit cluster namespaces, lalu Add cluster namespace untuk memasukkan namespace.
      2. 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 untuk tidak memulihkan data cadangan volume. Setiap PersistentVolumeClaims terikat dengan volume yang merujuk pada persistent disk yang ada.
  6. Opsional: Di bagian Choose cluster-scoped resources, selesaikan langkah-langkah berikut, lalu klik Next:
    1. Klik Jangan pulihkan resource cakupan cluster untuk membiarkan versi resource yang ada tidak tersentuh.
    2. Klik Pulihkan resource cakupan cluster menurut GroupKind untuk memulihkan resource ini.
      1. Klik Edit GroupKind untuk menambahkan lebih banyak resource cakupan cluster. Masukkan API group dan Object kind untuk mencocokkan resource dalam jenis tersebut.
    3. Klik Pertahankan resource yang ada untuk membuat resource jika resource tersebut belum ada di cluster target.
    4. Klik Ganti resource dalam cluster target untuk menghapus resource jika sudah ada dalam cluster target, dan memulihkan salinan dari cadangan.
  7. Opsional: Di bagian Add substitution rules, selesaikan langkah-langkah berikut, lalu klik Next:
    1. Klik Tambahkan aturan baru.
    2. Di kotak Cluster namespaces, ketik daftar namespace untuk mencocokkan resource dalam namespace tersebut.
    3. Untuk menambahkan GroupKind, klik Add GroupKind, lalu masukkan API group dan Object kind untuk mencocokkan resource dalam jenis tersebut.
    4. Di kolom JSON path, ketik jalur JSON yang mengidentifikasi kolom di dalam resource yang cocok dan menerapkan substitusi.
    5. Di kolom Original value pattern, 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 Create.

API

Buat resource kustom ClusterRestorePlan untuk merencanakan pemulihan dari ClusterBackupPlan yang ada. ClusterRestorePlan menetapkan kumpulan resource dan namespace yang tepat yang diizinkan untuk dipulihkan oleh Backup Creator. Berikut contoh ClusterRestorePlan:

apiVersion: backup.gdc.goog/v1
kind: ClusterRestorePlan
metadata:
  name: RESTORE_PLAN_NAME
  namespace:  PROJECT_NAME
spec:
  targetCluster:
    targetClusterType: UserCluster
    targetClusterName:
      kind: "Cluster"
      name: CLUSTER_NAME
  description: RESTORE_PLAN_DESCRIPTION
  clusterBackupPlanName: CLUSTER_BACKUP_PLAN_NAME
  clusterRestoreConfig:
    volumeDataRestorePolicy: RestoreVolumeDataFromBackup
    clusterResourceConflictPolicy: UseBackupVersion
    namespacedResourceRestoreMode: DeleteAndRestore
    namespacedResourceRestoreScope:
      selectedNamespaces:
        namespaces: [NAME_SPACE]
    clusterBackupRepositoryRef: CLUSTER_BACKUP_REPOSITORY
    substitutionRules:
      - newValue: NEW_CONFIG_VALUE
        originValuePattern: VALUE_PATTERN
        target:
          groupKinds:
          jsonPath: '{.metadata.name}'
          namespaces:
          - NAME_SPACE
      - newValue: NEW_CONFIG_VALUE
        originValuePattern: VALUE_PATTERN
        target:
          groupKinds:
          jsonPath: '{.metadata.name}'
          namespaces:
          - NAME_SPACE

Ganti kode berikut:

  • Ganti RESTORE_PLAN_NAME dengan nama rencana pemulihan Anda.
  • Ganti PROJECT_NAME dengan nama project GDC Anda.
  • Ganti CLUSTER_NAME dengan nama cluster Anda.

Contoh ini menggunakan nilai berikut:


Nilai

Atribut

Deskripsi
targetClusterName Nama cluster sumber dalam project yang terkait dengan rencana ini.
description Deskripsi yang diberikan pengguna untuk tujuan ClusterRestorePlan.
clusterBackupPlanName Nama ClusterBackupPlan yang akan dipulihkan. ClusterBackupPlan harus ada di namespace yang sama dengan ClusterRestorePlan.
clusterRestoreConfig Konfigurasi untuk proses pemulihan.
volumeDataRestorePolicy Tentukan salah satu dari:
  • 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.
clusterResourceConflictPolicy Menentukan perilaku untuk menangani konflik resource cluster, seperti jika resource sudah ada di cluster. Tentukan salah satu dari:
  • UseExistingVersion: Tidak menimpa resource yang ada selama konflik
  • UseBackupVersion: Menghapus dan membuat ulang resource cluster yang ada selama konflik. Resource khusus cluster yang ada di cluster target akan ditimpa oleh versi dari cadangan. Ini adalah opsi berbahaya yang dapat menyebabkan kehilangan data yang tidak disengaja jika digunakan secara tidak tepat. Misalnya, menghapus definisi resource kustom akan menyebabkan Kubernetes menghapus semua resource kustom dari jenis tersebut.
namespacedResourceRestoreMode Menangani situasi saat set resource dengan namespace yang sedang dipulihkan sudah ada di cluster target. Tentukan salah satu dari:
  • DeleteAndRestore: Jika terjadi konflik resource level teratas seperti Namespaces atau ProtectedApplications, hal ini akan memicu penghapusan resource yang bertentangan dan semua resource yang direferensikan sebelum memulihkan resource dari Backup. Gunakan mode ini hanya jika Anda ingin mengembalikan sebagian cluster ke status sebelumnya.
  • FailOnConflict: Jika resource level teratas yang bertentangan, seperti resource Namespace atau ProtectedApplication, ditemukan di awal proses pemulihan atau selama proses pemulihan, 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 dalam cluster.
namespacedResourceRestoreScope Menentukan Namespaces atau ProtectedApplications mana yang diizinkan untuk pemulihan.
  • selectedApplications mengaitkan aplikasi yang dilindungi dengan pemulihan ini.
  • selectedNamespaces berisi NAME_SPACE yang menentukan namespace yang akan dipulihkan dari cadangan.
clusterBackupRepositoryRef Menentukan repositori untuk menyimpan resource Restore. Repositori ini dapat berbeda dari repositori tempat cadangan berasal. Repositori harus berupa repositori ReadWrite dalam cluster.
substitutionRules Aturan untuk mengganti nilai dalam resource Kubernetes yang dicadangkan selama pemulihan. Daftar kosong berarti tidak ada penggantian yang terjadi. Aturan penggantian diterapkan secara berurutan sesuai urutan yang ditentukan. Urutan ini penting, karena perubahan yang dibuat oleh aturan dapat memengaruhi logika pencocokan aturan berikutnya. Setiap aturan menentukan target, originValuePattern yang akan dicocokkan (VALUE_PATTERN), dan newValue (NEW_CONFIG_VALUE) yang akan diganti. target dapat menyertakan namespaces untuk mencakup aturan (NAME_SPACE).

Setelah ClusterRestorePlan dibuat, pengguna dengan peran Backup Creator dapat memulihkan cadangan secara manual.

Melihat paket pemulihan

Lihat paket pemulihan menggunakan konsol GDC:

  1. Login ke konsol GDC.
  2. Di menu navigasi, klik Backup for Clusters.
  3. Klik Select project untuk memilih organisasi atau project, bergantung pada peran Anda:
    1. User Cluster Backup Admin: Pilih organisasi untuk melihat semua rencana pemulihan dalam organisasi atau pilih project untuk melihat semua rencana pemulihan dalam project.
    2. Backup Creator: 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 Linked Cluster(read-only) saat rencana pemulihan dibuat, repositori tersebut akan dibuat dua kali. Paket pemulihan diterapkan ke cluster baca-tulis dan hanya baca.

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

Edit rencana pemulihan menggunakan konsol GDC:

  1. Login ke konsol GDC.
  2. Di menu navigasi, klik Backup for Clusters.
  3. Klik Select project untuk memilih organisasi atau project, bergantung pada peran Anda:
    1. User Cluster Backup Admin: Pilih organisasi untuk melihat semua rencana pemulihan dalam organisasi atau pilih project untuk melihat semua rencana pemulihan dalam project.
    2. Backup Creator: 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 Plan Configuration untuk melihat kolom yang dapat diubah.
  7. Klik ikon Edit di samping Namespaced resources untuk mengedit resource tersebut:

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

      1. 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.
      2. Pilih Aplikasi dilindungi yang dipilih untuk memulihkan resource dari aplikasi dilindungi yang dipilih dalam cadangan:

        1. Pilih Edit Protected Applications untuk memilih namespace dan aplikasi yang dilindungi.
        2. Di kolom Namespace 1, masukkan nama untuk namespace.
        3. Di kolom Protected application 1, masukkan nama aplikasi yang dilindungi.
        4. Klik tombol Save.
  8. Klik ikon Edit di samping Resource cakupan cluster untuk mengedit resource tersebut:

    1. Opsional: Di bagian Choose cluster-scoped resources, pilih resource cakupan cluster yang akan dipulihkan dengan menentukan grup API dan GroupKinds, lalu tentukan cara menyelesaikan konflik:

      1. Pilih Jangan pulihkan resource cakupan cluster untuk menghapus resource cakupan cluster dari proses pemulihan.
      2. Pilih Restore cluster-scoped resources by GroupKind untuk memulihkan resource berdasarkan 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 Conflict handling, tentukan tindakan yang harus diambil jika resource sudah ada di cluster target:

      1. Pilih Preserve existing resources untuk membuat resource jika belum ada di cluster.
      2. Pilih Overwrite existing resources untuk menghapus resource yang ada, dan mengganti resource ini dengan resource yang dipulihkan.
    3. Klik tombol Simpan untuk mengonfirmasi perubahan Anda.

  9. Di bagian Substitution rules, klik tombol Add New Rule untuk menambahkan aturan substitusi baru:

    1. Di kolom Cluster namespaces, masukkan nama namespace cluster yang akan menerapkan aturan penggantian ini.
    2. Klik tombol Add GroupKind untuk menerapkan aturan ini ke objek GroupKind tertentu.
    3. Di kolom JSON path, 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 menggantikan kolom target. Jika kolom ini kosong, kolom target akan dihapus dari resource.
    6. Klik tombol Save untuk menyelesaikan pembuatan aturan penggantian baru.
  10. Di bagian Substitution rules, klik ikon Edit untuk mengedit aturan penggantian yang ada.

  11. Di bagian Substitution rules, 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 API Kubernetes. Tindakan ini akan menghapus semua artefak RestorePlan terkait dari penyimpanan objek.

Konsol

  1. Login ke konsol GDC.
  2. Di menu navigasi, klik Backup for Clusters.
  3. Klik Select project untuk memilih organisasi atau project, bergantung pada peran Anda:
    1. User Cluster Backup Admin: Pilih organisasi untuk melihat semua rencana pemulihan dalam organisasi, atau pilih project untuk melihat semua rencana pemulihan dalam project.
    2. Backup Creator: 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 Delete .
  7. Masukkan nama paket pemulihan ke dalam kolom.
  8. Klik tombol Delete 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