Personalize a cópia de segurança e o restauro de uma aplicação

Esta página descreve como usar os recursos ProtectedApplication para personalizar o comportamento das cópias de segurança e dos restauros no Google Distributed Cloud (GDC) air-gapped.

Os passos descritos nesta página são opcionais e não são necessários para configurar com êxito a cópia de segurança e o restauro para as suas cargas de trabalho. Os recursos ProtectedApplication são recursos do Kubernetes opcionais em espaços de nomes que personalizam a cópia de segurança e o restauro de aplicações com estado individuais. Sem recursos ProtectedApplication, aplicam-se as seguintes restrições:

  • Restringe o nível de detalhe do âmbito da cópia de segurança e do restauro ao nível do espaço de nomes.
  • Não ocorrem operações de descarga nem de suspensão temporária em cargas de trabalho durante a execução da cópia de segurança.Isto pode resultar em máquinas virtuais com vários discos que não são consistentes em caso de falha após o restauro.

Os recursos ProtectedApplication são recursos de espaço de nomes do Kubernetes opcionais usados para personalizar a cópia de segurança e o restauro de aplicações com estado individuais. O recurso ProtectedApplication define os recursos do Kubernetes que pertencem a uma instância da aplicação. Pode configurar manualmente uma orquestração especializada usando o comando kubectl para criar uma cópia de segurança e restaurar essas aplicações nos seguintes cenários:

  • Para identificar um conjunto de recursos num espaço de nomes que pode ser alvo de uma cópia de segurança ou restauro independentemente dos outros recursos nesse espaço de nomes. Um ProtectedApplication é a entidade de espaço de nomes mais detalhada que pode identificar para um âmbito de cópia de segurança ou restauro.
  • Para fornecer uma orquestração de cópias de segurança especializada sempre que o ProtectedApplication estiver no âmbito de uma cópia de segurança. Em particular, se o ProtectedApplication contiver recursos PersistentVolumeClaim (PVC) diretamente ou através de um modelo de um StatefulSet, pode executar hooks antes e depois de fazer uma cópia de segurança dos volumes. Os hooks são comandos que são executados em contentores de aplicações. Estes hooks são frequentemente usados para operações de descarga, suspensão ou retomada, e fornecem uma cópia de segurança consistente com a aplicação.

Antes de começar

Para usar os recursos do ProtectedApplication, tem de ter o seguinte:

  • Tem de definir o recurso ProtectedApplication antes de criar um plano de cópia de segurança. Para mais informações, consulte o artigo Planeie um conjunto de cópias de segurança.
  • A função de identidade e acesso necessária:

    • Para utilizadores do administrador da plataforma (PA):
      • Administrador de cópias de segurança de clusters de utilizadores: gere recursos de cópia de segurança, como planos de cópia de segurança e restauro, em clusters de utilizadores. Peça ao administrador de IAM da organização para lhe conceder a função de administrador de cópias de segurança de clusters de utilizadores (user-cluster-backup-admin).
    • Para utilizadores do operador de aplicações (AO):
      • Criador de cópias de segurança: cria cópias de segurança manuais e faz restauros. Peça ao administrador de IAM do projeto para lhe conceder a função de criador de cópias de segurança (backup-creator).
    • Para mais informações, consulte o artigo Definições de funções.

Implemente recursos de aplicações protegidos

Segue-se um exemplo de uma especificação Deployment com um recurso ProtectedApplication que faz uma cópia de segurança de todos os recursos associados à aplicação durante a cópia de segurança e restaura todos os recursos durante o restauro:

apiVersion: v1
kind: Namespace
metadata:
  name: "applications"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: protected-application-deployment
  namespace: applications
  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: applications
  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-application-test
  namespace: applications
spec:
  applicationName: protectedApplication
  resourceSelection:
    type: Selector
    selector:
      matchLabels:
        app: protected
  components:
    - name: protect-application-deployment
      resourceKind: Deployment
      resourceNames:
        - protected-application-deployment
      strategy:
        type: BackupAllRestoreAll

Especifique o ProtectedApplication na lista de selectedApplications no backupScope. Por exemplo:

apiVersion: backup.gdc.goog/v1
kind: BackupPlan
metadata:
  name: protected-application-backupplan-test
  namespace: applications
spec:
  clusterName: "cluster-sample"
  backupSchedule:
    cronSchedule: "*/30 * * * *"
    paused: true
  backupConfig:
    backupScope:
      selectedApplications:
        namespacedNames:
        - name: protected-application-test
          namespace: applications
    backupRepository: "backup-repository"
  retentionPolicy:
    backupDeleteLockDays: 10
    backupRetainDays: 10

Este exemplo inclui os seguintes valores:

Valor Descrição
resourceSelection Define como identificar os recursos que pertencem à aplicação protegida:
  • type: Especifique uma das seguintes opções:
    • ApplicationName: faz uma cópia de segurança de uma aplicação sig-apps no mesmo espaço de nomes.
    • Selector: faz uma cópia de segurança dos recursos que correspondem a um determinado seletor no mesmo espaço de nomes.
  • applicationName: se type for ApplicationName, especifica o nome da aplicação sig-apps no mesmo espaço de nomes.
  • selector: se type for Selector, especifica o seletor de etiquetas para selecionar recursos no mesmo espaço de nomes.
components A lista de componentes da aplicação protegida, como implementações ou conjuntos com estado:
  • name: o nome exclusivo do componente.
  • resourceKind: escolha entre Deployment ou StatefulSet.
  • resourceNames: a lista de nomes que identificam o elemento resourceKind no espaço de nomes.

O que se segue?