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:
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: userGanti kode berikut:
PROJECT_NAME: nama project.
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: StandardGanti kode berikut:
BUCKET_NAME: nama bucket.LOCATION_TYPE: jenis replikasi. Untuk replikasi sinkron, nilainya adalahsyncz1z2. Untuk replikasi asinkron, nilainya adalahasyncz1z2.DESCRIPTION: deskripsi teks bucket.
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_NAMETunggu 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.
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 :)Mendapatkan konten rahasia:
kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yamlBuat secret yang sama di cluster pengelolaan organisasi di zone-1 dan zone-2. Pastikan untuk menghapus
resourceVersion,uid, dancreationTimeStampdari 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.
Untuk mendapatkan detail bucket seperti FQDN dan endpoint, gunakan perintah berikut di cluster org global. Ekstrak
fullyQualifiedNamedanzonalEndpointsdari output:kubectl get buckets.object.global.gdc.goog -n PROJECT_NAME BUCKET_NAME -o yamlUntuk 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: S3Ganti 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.
Periksa repositori cadangan untuk memastikan pembuatan berhasil:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnotasikan 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_NAMEBuat 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: S3Periksa repositori cadangan untuk memastikan pembuatan berhasil:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnotasikan 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.