Backup para o GKE


O backup para o GKE é um serviço de backup e restauração de cargas de trabalho no GKE. Esse serviço pode ser ativado como um complemento ao configurar os clusters do GKE para implantação. Os backups das cargas de trabalho podem ser úteis para recuperação de desastres, pipelines de CI/CD, clonagem de cargas de trabalho ou cenários de upgrade. Proteger suas cargas de trabalho pode ajudar você a atingir objetivos de ponto de recuperação críticos para os negócios.

Introdução

Depois de ativado, o Backup para o GKE se integra à IU do GKE, à Google Cloud CLI e às APIs REST, fornecendo fluxos de trabalho consistentes para desenvolvimento e operações. Duas formas de dados são capturadas em um backup:

  • Backup de configuração: um conjunto de descrições de recursos do Kubernetes extraídas do servidor da API do cluster que está passando pelo backup, capturando o estado do cluster.
  • Backups de volume: um conjunto de volumes que correspondem a recursos PersistentVolumeClaim encontrados no backup de configuração.

É possível escolher as cargas de trabalho que você quer fazer backup ou restaurar ou fazer backup ou restaurar todas as cargas de trabalho. É possível fazer o backup de cargas de trabalho de um cluster e restaurá-las para outro. É possível programar a execução automática dos backups para que você possa responder rapidamente à recuperação das cargas de trabalho no caso de um incidente.

Restaurar uma carga de trabalho envolve recriar os recursos do Kubernetes no cluster de destino. Depois que os recursos são criados, a restauração da funcionalidade da carga de trabalho está sujeita ao processo de reconciliação do cluster. Por exemplo, os pods são programados para os nós e, em seguida, os pods são iniciados nesses nós. Durante a restauração, você tem a opção de aplicar regras de substituição que são usadas para corresponder um conjunto de recursos e substituir o valor atual de um atributo nesses recursos por um novo valor.

A combinação de backup e restauração seletivos com substituições foi projetada para permitir e oferecer suporte a muitos cenários diferentes de backup e restauração, por exemplo:

  • Faça backup de todas as cargas de trabalho em um cluster e restaure-as em um cluster separado para recuperação de desastres.
  • Faça backup de todas as cargas de trabalho, mas reverta seletivamente uma única carga de trabalho no cluster de origem.
  • Faça backup dos recursos em um namespace e clone-os em outro namespace.
  • Migre ou clone uma carga de trabalho de um cluster para outro.
  • Altere os parâmetros de armazenamento de uma carga de trabalho. Por exemplo, mova a carga de um disco permanente zonal para um disco permanente regional.

É necessário criar um cluster de destino com o serviço Backup para GKE ativado antes de fazer backup ou restaurar qualquer carga de trabalho.

Arquitetura

O backup para o GKE consiste em dois componentes principais:

  • Um serviço que é executado no Google Cloud e é compatível com uma API REST baseada em recursos. Esse serviço serve como plano de controle do Backup para o GKE. O serviço inclui elementos da IU do console do Google Cloud que interagem com essa API.
  • Um agente executado em todos os clusters em que os backups ou as restaurações são realizados. O agente executa operações de backup e restauração interagindo com a API de Backup para o GKE.

O diagrama a seguir mostra a relação entre os diferentes componentes do Backup para o GKE:

Backup para a arquitetura do GKE

Visão geral do serviço

O serviço de backup para GKE fornece um endpoint da API para interação dos clientes. A API Backup para GKE, como a maioria das APIs do Google Cloud, opera em recursos da nuvem específicos do aplicativo em uma hierarquia de recursos. O backup para o GKE gerencia um banco de dados desses recursos específicos do aplicativo, e os métodos da API de serviço correspondem principalmente às operações de criação, leitura, atualização ou exclusão desses recursos.

Há dois tipos principais de recursos ativos no modelo de recurso da nuvem:

  • Backup: representa o backup de uma parte específica de um cluster do GKE em um momento específico. A criação de um recurso Backup inicia o processo de backup. Em algum momento, você armazena cópias dos recursos do Kubernetes de destino e cria snapshots dos volumes de disco permanente de destino. A exclusão de um Backup exclui esses artefatos armazenados.
  • Restore: representa a restauração de uma parte selecionada de uma Backup específica em um cluster do GKE. A criação de um recurso Restore inicia o processo de restauração. A exclusão de um Restore não tem efeitos colaterais e simplesmente remove o registro da restauração do banco de dados.

O backup para o GKE também inclui dois tipos de recursos de configuração e controle:

  • BackupPlan: um recurso pai para os recursos Backup que representam uma cadeia de backups. Esse recurso contém uma configuração de backup, incluindo o cluster de origem, a seleção de quais cargas de trabalho fazer backup e a região em que os artefatos Backup produzidos nesse plano são armazenados.
  • RestorePlan: fornece um modelo de restauração reutilizável. Esse recurso contém uma configuração de restauração, incluindo o cluster de destino em que você quer restaurar o backup, o plano de backup de origem, o escopo da restauração, o tratamento de conflitos e as regras de substituição.

Visão geral do agente

O agente do Backup para GKE é implantado e executado em cada cluster do GKE que você configura para ser armazenado em backup pelo serviço de backup do GKE. O agente é responsável por executar as atividades de backup e restauração, por exemplo:

  • Backup:

    • Orquestração do processo de backup.
    • Buscar recursos do servidor da API Kubernetes, serializando-os em um arquivo e armazenando-o.
    • Criar backups de volumes subjacentes associados a PersistentVolumeClaims.
  • Restaurar:

    • Orquestração do processo de restauração.
    • Buscar o arquivo de recursos do Kubernetes do armazenamento, extrair os recursos selecionados, aplicar as modificações apropriadas a esses recursos e criá-los no cluster de destino.
    • Criar volumes e conectá-los à configuração do Kubernetes do cluster de destino.

O agente é empacotado como uma carga de trabalho do Kubernetes em contêiner e executado em uma conta de serviço dedicada em um namespace dedicado em cada cluster.

Os administradores não interagem com o agente porque ele é impulsionado por recursos personalizados do Kubernetes (BackupJob e RestoreJob) criados automaticamente no cluster pelo backup para o serviço do GKE em resposta à criação de backup e restaurar recursos da nuvem. No entanto, os administradores podem influenciar a orquestração de backups por meio da criação opcional ProtectedApplication de recursos do Kubernetes no cluster. Esses recursos ProtectedApplication são exclusivos para Backup do GKE e oferecem opções mais refinadas para definir o escopo de backup e restauração.

O que não tem backup

Só é possível fazer backup de recursos do Kubernetes e volumes permanentes subjacentes com o Backup para GKE. O backup para o GKE não faz backup do seguinte:

  • Informações de configuração do cluster do GKE, como configuração de nós, pools de nós, tamanho inicial do cluster ou recursos ativados.
  • Imagens de contêiner referenciadas por um backup. Apenas os recursos do Kubernetes que descrevem a carga de trabalho e se referem às imagens do contêiner são salvos em backup. Se uma imagem referenciada por uma descrição da carga de trabalho em um backup for removida do repositório de imagens, uma restauração subsequente dessa configuração não restaurará a carga de trabalho.
  • informações de configuração ou estado de serviços fora do cluster, como o Cloud SQL ou balanceadores de carga externos.

A seguir