Mengubah resource selama pemulihan (tidak digunakan lagi)


Halaman ini menjelaskan cara memodifikasi resource Kubernetes selama proses pemulihan.

Ringkasan

Ada beberapa alasan mengapa Anda perlu mengubah resource Kubernetes sebagai bagian dari proses pemulihan. Contoh:

  • Anda mungkin ingin menyediakan PVC menggunakan penyedia penyimpanan yang berbeda (misalnya, beralih dari driver in-tree Kubernetes ke driver CSI).

  • Anda mungkin ingin memulihkan namespace dengan nama yang berbeda.

  • Anda mungkin ingin mengubah jumlah replika di Deployment atau StatefulSet.

Pencadangan untuk GKE menyediakan mekanisme untuk melakukan hal ini yang disebut aturan substitusi, yang dapat Anda tentukan secara opsional sebagai bagian dari RestorePlan.

Aturan substitusi adalah serangkaian kriteria pencocokan yang ditentukan bersama dengan nilai kolom pengganti. Anda dapat menggunakan aturan substitusi dalam proses pemulihan sebagai berikut:

  1. Pertama, Pencadangan untuk GKE menghitung kumpulan resource yang akan dipulihkan, berdasarkan parameter cakupan dalam konfigurasi pemulihan (misalnya: namespace, grup/jenis, dll.)

  2. Pencadangan untuk GKE mengevaluasi setiap resource yang dipilih untuk dipulihkan berdasarkan daftar aturan substitusi yang diurutkan. Jika aturan cocok dengan resource, resource akan diperbarui dengan nilai kolom yang diganti. Semua resource dicocokkan dengan semua aturan, dan resource yang sama berpotensi memiliki beberapa substitusi.

  3. Setelah semua aturan dievaluasi, Pencadangan untuk GKE akan membuat serangkaian resource yang dihasilkan di cluster target.

Parameter aturan substitusi

Untuk menentukan aturan substitusi, Anda memberikan parameter berikut:

Parameter Wajib Deskripsi
targetNamespaces opsional Daftar ini merupakan daftar namespace. Agar cocok dengan aturan ini, resource harus berupa resource dengan namespace dan memiliki salah satu namespace yang ditentukan:
  • Jika tidak ada yang disediakan untuk parameter ini, semua resource akan cocok (semua resource dengan namespace dan cakupan cluster).
  • Jika string kosong ("") disediakan, string tersebut hanya akan cocok dengan resource cakupan cluster. Di konsol Google Cloud, Anda dapat mencentang Exclude resource dengan namespace untuk menyetel daftar ke satu string kosong.
targetGroupKinds opsional Berikut adalah daftar tule grup/jenis resource Kubernetes:
  • Jika tidak ada yang disediakan untuk parameter ini, semua resource akan cocok (tidak ada batasan berdasarkan grup/jenis).
  • Jika satu atau beberapa grup/jenis diberikan, resource harus cocok dengan salah satu grup/jenis tersebut agar cocok dengan aturan.
targetJsonPath wajib Ini adalah ekspresi JSONPath yang dicocokkan dengan resource. Perlu diperhatikan bahwa aturan ini tidak hanya cocok dengan resource, tetapi juga mencocokkan atribut tertentu dalam resource tersebut.
originalValuePattern opsional Ini adalah ekspresi reguler yang dicocokkan dengan nilai atribut saat ini. Jika tidak diberikan, atribut tersebut akan selalu cocok.
newValue wajib Ini adalah nilai baru yang akan digunakan untuk nilai atribut yang cocok.

Untuk mempelajari lebih lanjut cara menentukan aturan penggantian di Konsol Google Cloud, lihat Merencanakan kumpulan pemulihan.

Untuk menentukan aturan substitusi menggunakan gcloud CLI, buat file yang berisi array YAML dari subsstitutionRules dan sertakan parameter --substitution-rules-file= ke perintah gcloud beta container backup-restore restore-plans create.

Contoh aturan substitusi

Contoh berikut tersedia dalam format YAML yang digunakan oleh gcloud CLI.

Ubah StorageClass

Dalam contoh ini, kami mengubah StorageClass di semua resource PersistentVolumeClaim yang dipulihkan dari standard menjadi premium-rwo:

substitutionRules:
- targetGroupKinds:
  - resourceGroup: ''
    resourceKind: PersistentVolumeClaim
  targetJsonPath: "{..storageClassName}"
  originalValuePattern: standard
  newValue: premium-rwo

Melakukan cloning Namespace

Dalam contoh ini, kita meng-clone namespace dari alfa ke beta—membuat namespace baru "beta" dan memulihkan semua resource dari "alpha" ke namespace "beta" baru. Perhatikan bahwa contoh ini memerlukan dua aturan substitusi—satu untuk namespace itu sendiri, dan satu untuk resource dalam namespace.

substitutionRules:
- targetNamespaces:
  - ''
  targetGroupKinds:
  - resourceGroup: ''
    resourceKind: Namespace
  targetJsonPath: "{.metadata.name}"
  originalValuePattern: alpha
  newValue: beta
- targetNamespaces:
  - alpha
  targetJsonPath: "{.metadata.namespace}"
  originalValuePattern: alpha
  newValue: beta

Mengubah jumlah StorageClass dan replika dalam namespace yang dilakukan cloning

Dalam contoh ini, kita meng-clone namespace, lalu menerapkan serangkaian perubahan pada resource dalam namespace baru:

  • Mengubah StorageClass pada PVC dari standard menjadi premium-rwo

  • Mengubah jumlah replika pada Deployment dari 7 menjadi 3

substitutionRules:
- targetNamespaces:
  - ''
  targetGroupKinds:
  - resourceGroup: ''
    resourceKind: Namespace
  targetJsonPath: "{.metadata.name}"
  originalValuePattern: alpha
  newValue: beta
- targetNamespaces:
  - alpha
  targetJsonPath: "{.metadata.namespace}"
  originalValuePattern: alpha
  newValue: beta
- targetNamespaces:
  - beta
  targetGroupKinds:
  - resourceGroup: ''
    resourceKind: PersistentVolumeClaim
  targetJsonPath: "{..storageClassName}"
  originalValuePattern: standard
  newValue: premium-rwo
- targetNamespaces:
  - beta
  targetGroupKinds:
  - resourceGroup: apps
    resourceKind: Deployment
  targetJsonPath: "{$.spec.replicas}"
  originalValuePattern: '7'
  newValue: '3'