Esta página descreve como configurar repositórios de cópias de segurança para contentores de duas zonas isolados do Google Distributed Cloud (GDC). Isto permite-lhe manter a elevada disponibilidade de dados e aplicações críticos, ao mesmo tempo que minimiza o tempo de inatividade em caso de falha de uma zona. Esta página aborda os passos para criar contentores de duas zonas, copiar segredos de contentores e configurar repositórios de cópia de segurança em várias zonas.
Esta página destina-se a administradores de TI no grupo de administradores da plataforma que são responsáveis pela gestão de recursos na respetiva organização e a programadores de aplicações no grupo de operadores de aplicações que são responsáveis pelo desenvolvimento e manutenção de aplicações num universo da GDC.
Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.
Antes de começar
Antes de usar os serviços de cópia de segurança e restauro para contentores de zona dupla do GDC, tem de ter o seguinte:
- Um ambiente aprovisionado com um mínimo de duas zonas.
- Acesso ao cliente da organização global ou ao cliente raiz global.
- Se a sua carga de trabalho for aprovisionada num projeto, use o cliente da organização global.
- Se a sua carga de trabalho for aprovisionada na raiz, use o cliente raiz global.
- A função
global-project-bucket-admin, que é necessária para criar contentores de duas zonas.
Crie um contentor de duas zonas
Para criar um contentor de duas zonas, primeiro tem de criar um recurso de projeto no qual o contentor vai residir. Para criar um projeto, siga estes passos:
Crie um recurso de projeto num cluster de organização global:
apiVersion: resourcemanager.global.gdc.goog/v1 kind: Project metadata: namespace: platform name: PROJECT_NAME labels: object.gdc.goog/tenant-category: userSubstitua o seguinte:
PROJECT_NAME: o nome do projeto.
Crie um contentor 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 o seguinte:
BUCKET_NAME: o nome do segmento.LOCATION_TYPE: o tipo de replicação. Para a replicação síncrona, o valor ésyncz1z2. Para a replicação assíncrona, o valor éasyncz1z2.DESCRIPTION: uma descrição de texto do depósito.
Crie uma conta de serviço e uma associação de função de gestão de identidade e de acesso (IAM) para conceder as autorizações necessárias para o contentor:
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 estado do contentor apresente
ready.
Copie o segredo do contentor para ambas as zonas
Depois de configurar o contentor e as autorizações necessárias, é gerado um segredo num cluster da organização global que pode ser identificado pelas respetivas anotações.
Verifique se foi gerado um segredo com a anotação do contentor:
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 secreto:
kubectl get secret -n PROJECT_NAME BUCKET_SECRET -o yaml > bucket_secret.yamlCrie o mesmo segredo no cluster de gestão da organização na zona 1 e na zona 2. Certifique-se de que limpa
resourceVersion,uidecreationTimeStampdo ficheiro YAML para evitar erros de criação:# zone-1 kubectl apply -f bucket_secret.yaml # zone-2 kubectl apply -f bucket_secret.yaml
Crie repositórios de cópias de segurança
Depois de configurar o contentor e os segredos, crie um repositório de cópias de segurança na zona 1 e na zona 2.
Para obter detalhes do contentor, como o FQDN e os pontos finais, use o seguinte comando num cluster da organização global. Extrai
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/cópia de segurança na zona 1 no cluster de gestão, use o seguinte comando. Certifique-se de que usa o ponto final 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 o seguinte:
BACKUP_REPOSITORY_NAME: o nome do repositório de cópias de segurança.ENDPOINT: o ponto final zonal da zona 1.BUCKET_FULL_NAME: o nome do contentor totalmente qualificado.BUCKET_SECRET: o segredo do balde.
Verifique se o repositório de cópias de segurança foi criado com êxito:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnotar o repositório de cópias de segurança com anotações de contentores de duas zonas:
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 só de leitura na zona 2 no cluster de gestão. Use o ponto final 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 cópias de segurança foi criado com êxito:
kubectl get backuprepositories.backup.gdc.goog BACKUP_REPOSITORY_NAMEAnote o recurso do repositório de cópias de segurança subjacente com as seguintes anotações:
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
Faça uma cópia de segurança das cargas de trabalho nos repositórios de cópias de segurança
Depois de configurar os repositórios de cópias de segurança, siga os passos para fazer uma cópia de segurança e restaurar as suas cargas de trabalho.
Passos seguintes
- Saiba mais sobre os restauros manuais de cópias de segurança
- Crie um restauro manual para uma cópia de segurança