Nesta página, descrevemos como configurar repositórios de backup para buckets de duas zonas isolados fisicamente do Google Distributed Cloud (GDC). Isso permite manter a alta disponibilidade de dados e aplicativos críticos, minimizando o tempo de inatividade em caso de falha na zona. Esta página aborda as etapas para criar buckets de duas zonas, copiar segredos de buckets e configurar repositórios de backup em várias zonas.
Esta página é destinada a administradores de TI do grupo de administradores de plataforma responsáveis por gerenciar recursos na organização e a desenvolvedores de aplicativos do grupo de operadores de aplicativos responsáveis por desenvolver e manter aplicativos em um universo do GDC.
Para mais informações, consulte Públicos-alvo da documentação isolada do GDC.
Antes de começar
Antes de usar os serviços de backup e restauração para buckets de dupla zona do GDC, você precisa ter o seguinte:
- Um ambiente provisionado com no mínimo duas zonas.
- Acesso ao cliente global da organização ou ao cliente global da raiz.
- Se a carga de trabalho for provisionada em um projeto, use o cliente global da organização.
- Se a carga de trabalho for provisionada na raiz, use o cliente raiz global.
- O papel
global-project-bucket-admin, necessário para criar buckets de duas zonas.
Criar um bucket de duas zonas
Para criar um bucket de duas zonas, primeiro crie um recurso de projeto para ele. Para criar um projeto, siga estas etapas:
Crie um recurso de projeto em um cluster global da organização:
apiVersion: resourcemanager.global.gdc.goog/v1 kind: Project metadata: namespace: platform name: PROJECT_NAME labels: object.gdc.goog/tenant-category: userSubstitua:
PROJECT_NAME: o nome do projeto.
Crie um bucket de duas zonas:
apiVersion: object.global.gdc.goog/v1 kind: Bucket metadata: name: BUCKET_NAME namespace: PROJECT_NAME spec: location: LOCATION_TYPE description: DESCRIPTION storageClass: StandardSubstitua:
BUCKET_NAME: o nome do bucketLOCATION_TYPE: o tipo de replicação. Para replicação síncrona, o valor ésyncz1z2. Para replicação assíncrona, o valor éasyncz1z2.DESCRIPTION: uma descrição de texto do bucket.
Crie uma conta de serviço e uma vinculação de papel do Identity and Access Management (IAM) para conceder as permissões necessárias ao 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_NAMEAguarde até que o status do bucket seja
ready.
Copie o secret do bucket para as duas zonas
Depois que o bucket e as permissões necessárias são configurados, um secret é gerado em um cluster global da organização, que pode ser identificado pelas anotações.
Verifique se um secret foi gerado com a anotação do 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 :)Recupere o conteúdo do secret:
kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yamlCrie o mesmo secret no cluster de gerenciamento da organização na zona-1 e na zona-2. Limpe
resourceVersion,uidecreationTimeStampdo arquivo YAML para evitar erros de criação:# zone-1 kubectl apply -f bucket_secret.yaml # zone-2 kubectl apply -f bucket_secret.yaml
Criar repositórios de backup
Depois que o bucket e os secrets forem configurados, crie um repositório de backup na zona 1 e na zona 2.
Para receber detalhes do bucket, como FQDN e endpoints, use o seguinte comando em um cluster global da organização. Extraia
fullyQualifiedNameezonalEndpointsda saída:kubectl get buckets.object.global.gdc.goog -n PROJECT_NAME BUCKET_NAME -o yamlPara criar um repositório de leitura-gravação-backup na zona 1 do cluster de gerenciamento, use o seguinte comando. Use o endpoint zonal da zona 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: S3Substitua:
BACKUP_REPOSITORY_NAME: o nome do repositório de backup.ENDPOINT: o endpoint zonal da zona 1.BUCKET_FULL_NAME: o nome do bucket totalmente qualificado.BUCKET_SECRET: o secret do bucket.
Verifique se o repositório de backup foi criado:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAdicione anotações de bucket de duas zonas ao repositório de backup:
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_NAMECrie um repositório somente leitura na zona 2 do cluster de gerenciamento. Use o endpoint zonal da zona 2 para este comando:
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: S3Verifique se o repositório de backup foi criado:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAdicione as seguintes anotações ao recurso do repositório de backup:
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
Fazer backup das cargas de trabalho nos repositórios de backup
Depois que os repositórios de backup forem configurados, siga as etapas para fazer backup e restaurar suas cargas de trabalho.