Menyiapkan repositori cadangan untuk bucket zona ganda

Halaman ini menjelaskan cara mengonfigurasi repositori cadangan untuk bucket dual-zone yang terisolasi dari internet di Google Distributed Cloud (GDC). Dengan begitu, Anda dapat mempertahankan ketersediaan tinggi untuk data dan aplikasi penting sekaligus meminimalkan waktu non-operasional jika terjadi kegagalan zona. Halaman ini mencakup langkah-langkah untuk membuat bucket zona ganda, menyalin rahasia bucket, dan menyiapkan repositori cadangan di beberapa zona.

Halaman ini ditujukan bagi administrator IT dalam grup administrator platform yang bertanggung jawab untuk mengelola resource dalam organisasi mereka, dan developer aplikasi dalam grup operator aplikasi yang bertanggung jawab untuk mengembangkan dan memelihara aplikasi di semesta GDC.

Untuk mengetahui informasi selengkapnya, lihat Audiens untuk dokumentasi GDC yang terisolasi dari internet.

Sebelum memulai

Sebelum menggunakan layanan pencadangan dan pemulihan untuk bucket dual-zone GDC, Anda harus memiliki hal berikut:

  • Lingkungan yang disediakan dengan minimal dua zona.
  • Akses ke klien organisasi global atau klien root global.
    • Jika workload Anda disediakan di dalam project, gunakan klien org global.
    • Jika workload Anda disediakan di root, gunakan klien root global.
  • Peran global-project-bucket-admin, yang diperlukan untuk membuat bucket dual-zona.

Membuat bucket dual-zona

Untuk membuat bucket zona ganda, Anda harus membuat resource project terlebih dahulu agar bucket dapat berada di dalamnya. Untuk membuat project, ikuti langkah-langkah berikut:

  1. Buat resource project di cluster org global:

    apiVersion: resourcemanager.global.gdc.goog/v1
    kind: Project
    metadata:
      namespace: platform
      name: PROJECT_NAME
      labels:
        object.gdc.goog/tenant-category: user
    

    Ganti kode berikut:

    • PROJECT_NAME: nama project.
  2. Buat bucket zona ganda:

    apiVersion: object.global.gdc.goog/v1
    kind: Bucket
    metadata:
      name: BUCKET_NAME
      namespace: PROJECT_NAME
    spec:
      location: LOCATION_TYPE
      description: DESCRIPTION
      storageClass: Standard
    

    Ganti kode berikut:

    • BUCKET_NAME: nama bucket.
    • LOCATION_TYPE: jenis replikasi. Untuk replikasi sinkron, nilainya adalah syncz1z2. Untuk replikasi asinkron, nilainya adalah asyncz1z2.
    • DESCRIPTION: deskripsi teks bucket.
  3. Buat akun layanan dan pengikatan peran Identity and Access Management (IAM) untuk memberikan izin yang diperlukan bagi bucket:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: BUCKET_NAME-sa
      namespace: PROJECT_NAME
    ---
    apiVersion: iam.global.gdc.goog/v1
    kind: IAMRoleBinding
    metadata:
      namespace: PROJECT_NAME
      name: BUCKET_NAME-admin-binding
    spec:
      roleRef:
        apiGroup: iam.global.gdc.goog
        kind: IAMRole
        name: project-bucket-object-admin
      subjects:
        - kind: ServiceAccount
          name: BUCKET_NAME-sa
          namespace: PROJECT_NAME
    
  4. Tunggu hingga status bucket menampilkan ready.

Salin rahasia bucket ke kedua zona

Setelah bucket dan izin yang diperlukan dikonfigurasi, secret akan dibuat di cluster org global yang dapat diidentifikasi berdasarkan anotasinya.

  1. Periksa apakah secret telah dibuat dengan anotasi bucket:

    export BUCKET_SECRET=$(kubectl get secret -n PROJECT_NAME -o jsonpath="{range .items[*]}{.metadata.name}{':'}{.metadata.annotations['object\.gdc\.goog/subject']}{'\n'}{end}" | grep :BUCKET_NAME | cut -f1 -d :)
    
  2. Mendapatkan konten rahasia:

    kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yaml
    
  3. Buat secret yang sama di cluster pengelolaan organisasi di zone-1 dan zone-2. Pastikan untuk menghapus resourceVersion, uid, dan creationTimeStamp dari file YAML untuk mencegah kesalahan pembuatan:

    # zone-1
    kubectl apply -f bucket_secret.yaml
    
    # zone-2
    kubectl apply -f bucket_secret.yaml
    

Membuat repositori cadangan

Setelah bucket dan secret dikonfigurasi, buat repositori cadangan di zone-1 dan zone-2.

  1. Untuk mendapatkan detail bucket seperti FQDN dan endpoint, gunakan perintah berikut di cluster org global. Ekstrak fullyQualifiedName dan zonalEndpoints dari output:

    kubectl get buckets.object.global.gdc.goog -n PROJECT_NAME BUCKET_NAME -o yaml
    
  2. Untuk membuat repositori cadangan baca-tulis di zone-1 di cluster pengelolaan, gunakan perintah berikut. Pastikan untuk menggunakan endpoint zona zone-1:

    apiVersion: backup.gdc.goog/v1
    kind: BackupRepository
    metadata:
      annotations:
        backup.gdc.goog/dz-bucket: "true"
        backup.gdc.goog/dz-bucket-info-namespace: PROJECT_NAME
      finalizers:
      - backup.gdc.goog/sentinel-finalizer
      generation: 1
      name: BACKUP_REPOSITORY_NAME
    spec:
      endpoint: ENDPOINT
      force: false
      importPolicy: ReadWrite
      s3Options:
        bucket: BUCKET_FULL_NAME
        forcePathStyle: true
        region: zone2
      secretReference:
        name: BUCKET_SECRET
        namespace: PROJECT_NAME
      type: S3
    

    Ganti kode berikut:

    • BACKUP_REPOSITORY_NAME: nama repositori cadangan.
    • ENDPOINT: endpoint zonal zone-1.
    • BUCKET_FULL_NAME: nama bucket yang sepenuhnya memenuhi syarat.
    • BUCKET_SECRET: secret bucket.
  3. Periksa repositori cadangan untuk memastikan pembuatan berhasil:

    kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME
    
  4. Anotasikan repositori cadangan dengan anotasi bucket zona ganda:

    kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket="true"
    
    kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket-info-namespace=PROJECT_NAME
    
  5. Buat repositori hanya baca di zone-2 di cluster pengelolaan. Gunakan endpoint zonal zona-2 untuk perintah ini:

    apiVersion: backup.gdc.goog/v1
    kind: ClusterBackupRepository
    metadata:
      annotations:
        backup.gdc.goog/dz-bucket: "true"
        backup.gdc.goog/dz-bucket-info-namespace: PROJECT_NAME
      finalizers:
      - backup.gdc.goog/sentinel-finalizer
      generation: 1
      name: BACKUP_REPOSITORY_NAME
    spec:
      endpoint: ENDPOINT
      force: false
      importPolicy: ReadOnly
      s3Options:
        bucket: BUCKET_FULL_NAME
        forcePathStyle: true
        region: zone2
      secretReference:
        name: BUCKET_SECRET
        namespace: PROJECT_NAME
      type: S3
    
  6. Periksa repositori cadangan untuk memastikan pembuatan berhasil:

    kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME
    
  7. Anotasikan resource repositori cadangan yang mendasarinya dengan anotasi berikut:

    kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket="true"
    
    kubectl -n PROJECT_NAME annotate --overwrite backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAME backup.gdc.goog/dz-bucket-info-namespace=PROJECT_NAME
    

Mencadangkan workload ke repositori cadangan

Setelah repositori cadangan dikonfigurasi, ikuti langkah-langkah untuk mencadangkan dan memulihkan beban kerja Anda.

Langkah berikutnya