Menyesuaikan pencadangan dan pemulihan untuk aplikasi

Halaman ini menjelaskan cara menggunakan resource ProtectedApplication untuk menyesuaikan perilaku pencadangan dan pemulihan di Google Distributed Cloud (GDC) yang terisolasi.

Langkah-langkah yang dijelaskan di halaman ini bersifat opsional dan tidak diperlukan agar Anda berhasil mengonfigurasi pencadangan dan pemulihan untuk beban kerja Anda. Resource ProtectedApplication adalah resource Kubernetes opsional di namespace yang menyesuaikan pencadangan dan pemulihan aplikasi stateful individual. Tanpa resource ProtectedApplication, batasan berikut berlaku:

  • Anda membatasi perincian cakupan pencadangan dan pemulihan ke tingkat namespace.
  • Tidak ada operasi flush dan quiesce yang terjadi pada workload selama eksekusi pencadangan.Hal ini dapat menyebabkan mesin virtual dengan beberapa disk tidak konsisten setelah pemulihan.

Resource ProtectedApplication adalah resource namespace Kubernetes opsional yang digunakan untuk menyesuaikan pencadangan dan pemulihan aplikasi stateful individual. Resource ProtectedApplication menentukan resource Kubernetes mana yang termasuk dalam instance aplikasi. Anda dapat menyiapkan orkestrasi khusus secara manual menggunakan perintah kubectl untuk membuat cadangan dan memulihkan aplikasi tersebut dalam skenario berikut:

  • Untuk mengidentifikasi sekumpulan resource dalam namespace yang dapat dicadangkan atau dipulihkan secara terpisah dari resource lain dalam namespace tersebut. ProtectedApplication adalah entitas namespace dengan perincian paling tinggi yang dapat Anda identifikasi untuk cakupan pencadangan atau pemulihan.
  • Untuk menyediakan orkestrasi pencadangan khusus setiap kali ProtectedApplication berada dalam cakupan pencadangan. Khususnya, jika ProtectedApplication berisi resource PersistentVolumeClaim (PVC) baik secara langsung maupun melalui template dari StatefulSet, Anda dapat menjalankan hook sebelum dan setelah mencadangkan volume. Hook adalah perintah yang berjalan di container aplikasi. Hook ini sering digunakan untuk operasi flush, quiesce, atau unquiesce, dan menyediakan pencadangan yang konsisten dengan aplikasi.

Sebelum memulai

Untuk menggunakan resource ProtectedApplication, Anda harus memiliki hal berikut:

  • Anda harus menentukan resource ProtectedApplication sebelum membuat rencana pencadangan. Untuk mengetahui informasi selengkapnya, lihat Merencanakan serangkaian cadangan.
  • Peran akses dan identitas yang diperlukan:

    • Untuk pengguna Administrator Platform (PA):
      • 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 pengguna Operator Aplikasi (AO):
      • Pembuat Cadangan: membuat cadangan dan pemulihan manual. Minta Admin IAM Project Anda untuk memberi Anda peran Pembuat Cadangan (backup-creator).
    • Untuk mengetahui informasi selengkapnya, lihat Definisi peran.

Men-deploy resource aplikasi yang dilindungi

Berikut adalah contoh spesifikasi Deployment dengan resource ProtectedApplication yang mencadangkan semua resource yang terkait dengan aplikasi selama pencadangan, dan memulihkan semua resource selama pemulihan:

apiVersion: v1
kind: Namespace
metadata:
  name: USER_CLUSTER_NS
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: protected-application-deployment
  namespace: USER_CLUSTER_NS
  labels:
    app: protected
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: unprotected-application-deployment
  namespace: USER_CLUSTER_NS
  labels:
    app: unprotected
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---

apiVersion: gkebackup.gke.io/v1
kind: ProtectedApplication
metadata:
  name: PROTECTED_APP_NAME
  namespace: USER_CLUSTER_NS
spec:
  resourceSelection:
    type: Selector
    selector:
      matchLabels:
        app: protected
  components:
    - name: application-deployment
      resourceKind: Deployment
      resourceNames:
        - protected-application-deployment
      strategy:
        type: BackupAllRestoreAll

Ganti kode berikut:

  • USER_CLUSTER_NS: namespace dalam cluster pengguna tempat aplikasi yang dilindungi berada.
  • PROTECTED_APP_NAME: nama ProtectedApplication Anda.

Contoh ini mencakup nilai berikut untuk ProtectedApplication:

Nilai Deskripsi
resourceSelection Menentukan cara mengidentifikasi resource yang termasuk dalam aplikasi yang dilindungi:
  • type: Tentukan salah satu dari:
    • ApplicationName: Mencadangkan aplikasi sig-apps dalam namespace yang sama.
    • Selector: Mencadangkan resource yang cocok dengan pemilih tertentu dalam namespace yang sama.
  • applicationName: Jika type adalah ApplicationName, menentukan nama Aplikasi sig-apps dalam namespace yang sama. Ini adalah aplikasi yang menerapkan spesifikasi perlindungan data.
  • selector: Jika type adalah Selector, menentukan pemilih label untuk memilih resource dalam namespace yang sama.
components Daftar komponen untuk aplikasi yang dilindungi, seperti deployment atau set stateful:
  • name: Nama unik komponen.
  • resourceKind: Pilih antara Deployment atau StatefulSet.
  • resourceNames: Daftar nama yang mengidentifikasi resourceKind di namespace.
  • strategy: Detail tambahan tentang cara mencadangkan atau memulihkan komponen ini. Untuk mengetahui informasi selengkapnya, lihat Strategi aplikasi yang dilindungi.

Tentukan ProtectedApplication dalam daftar selectedApplications di backupScope. Contoh:

apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
  name: BACKUP_PLAN
  namespace: USER_CLUSTER_NS
spec:
  clusterName: USER_CLUSTER
  backupSchedule:
    cronSchedule: CRON_SCHEDULE
    paused: BACKUP_SCHEDULE_STATUS
  backupConfig:
    backupScope:
      selectedApplications:
        namespacedNames:
        - name: PROTECTED_APP_NAME
          namespace: USER_CLUSTER_NS
    backupRepository: BACKUP_REPOSITORY
    retentionPolicy:
      backupDeleteLockDays: BACKUP_DELETE_LOCK_DAYS
      backupRetainDays: BACKUP_RETAIN_DAYS

Ganti kode berikut:

  • BACKUP_PLAN: nama rencana cadangan Anda.
  • USER_CLUSTER: nama cluster pengguna Anda.
  • CRON_SCHEDULE: jadwal crontab yang menunjukkan kapan pencadangan harus dijadwalkan, seperti "*/30 * * * *". Interval minimum antar-cadangan terjadwal adalah 10 menit.
  • BACKUP_SCHEDULE_STATUS: jika true, pencadangan berkala tidak dijadwalkan.
  • PROTECTED_APP_NAME: nama yang Anda berikan untuk resource ProtectedApplication.
  • BACKUP_REPOSITORY: nama repositori cadangan yang Anda gunakan untuk menyimpan cadangan.
  • BACKUP_DELETE_LOCK_DAYS: mencegah penghapusan cadangan selama jumlah hari yang ditentukan setelah pembuatan cadangan, misalnya, 10 days.
  • BACKUP_RETAIN_DAYS: menentukan jumlah total hari untuk mempertahankan cadangan. Setelah periode ini, cadangan akan otomatis dihapus. Menyetel nilai ini ke angka yang lebih tinggi dapat menyebabkan kehabisan penyimpanan, sementara menyetelnya ke nilai yang lebih rendah dapat meningkatkan risiko kehilangan data. Nilai ini ditetapkan ke 35 secara default jika tidak ditentukan. Kebijakan retensi tidak menggantikan kebijakan retensi lokasi penyimpanan, dan tidak boleh melebihi 90 hari.

Langkah berikutnya