Skip to content

Velero GCP

sobre

Estamos instalando o velero em cluster K8S usando driver da GCP.

O cluster k8s usa volumes GCP com suporte a snapshot.

Kubeconfig

Carregue o kubeconfig

cd /diretorio/do/projeto
export KUBECONFIG=$PWD/kube_config_cluster.yml

Pré-requisitos

Bucket GCS já criado

  • nome_do_bucket

Service Account com permissões:

  • roles/storage.objectAdmin
  • roles/compute.storageAdmin

Se não puder usar permissões administratives, use:

    compute.disks.get
    compute.disks.create
    compute.disks.createSnapshot
    compute.projects.get
    compute.snapshots.get
    compute.snapshots.create
    compute.snapshots.useReadOnly
    compute.snapshots.delete
    compute.snapshots.setLabels
    compute.zones.get
    storage.objects.create
    storage.objects.delete
    storage.objects.get
    storage.objects.list
    iam.serviceAccounts.signBlob

Configurando credenciais

Crie o arquivo credentials-velero.json com suas credenciais

{
  "type": "service_account",
  "project_id": "MEU_PROJECT_ID",
  "private_key_id": "...",
  "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
  "client_email": "velero@MEU_PROJECT_ID.iam.gserviceaccount.com",
  "client_id": "...",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token"
}

se voce já estiver logando com a conta certa, você pode simplesmente rodar esse comando

gcloud iam service-accounts keys create credentials-velero.json

ele vai gerar o arquivo json pra você.

Instalando

Instale o velero

velero install velero-infra \
    --provider gcp \
    --plugins velero/velero-plugin-for-gcp:v1.13.2 \
    --bucket NOME_DO_BUCKET \
    --prefix NOME_DO_DIRETORIO \
    --secret-file ./credentials-velero.json

O que cada parâmetro faz

--provider define o provedor
--plugins define o plugin a ser usado
--bucket define o nome do bucket da ser usado
--prefix define o o diretorio a ser usado
--secret-file define o arquivo com as credenciais

Checando a instalação

kubectl get deployment/velero --namespace velero

Saída esperada

NAME     READY   UP-TO-DATE   AVAILABLE   AGE
velero   1/1     1            1           2m

Verifique se o location está disponivel

velero get backup-location

Saída esperada

NAME      PROVIDER   BUCKET/PREFIX      PHASE       LAST VALIDATED                  ACCESS MODE   DEFAULT
default   gcp        velero-infra   Available   2025-04-07 07:41:11 -0300 -03   ReadWrite     true

Se aparecer "PHASE Available" o location está funcionando.

Pronto, tudo instalado, agora vamos ver os comandos para fazer backup, restore e agendamentos.

Marcando volumes para backup

Você pode espeficiar os volumes de um POD que precisam ir pro backup assim

kubectl annotate pod meu-pod backup.velero.io/backup-volumes=meu-volume

Ou se preferir, pode definir que todos os volumes do NS devem ir pro backup

kubectl annotate namespace meu-namespace backup.velero.io/backup-volumes=true

Obviamente isso dependente de um agendamento com a regra para fazer backup de recursos com essas anotações.

Operando o velero

Acesse

  • https://mkdocs.gutocarvalho.net/k8s/install/velero/comandos/

refs

  • https://velero.io
  • https://velero.io/docs
  • https://velero.io/docs/v1.17/basic-install/
  • https://velero.io/docs/v1.17/backup-reference/
  • https://velero.io/docs/v1.17/restore-reference/
  • https://velero.io/docs/v1.17/resource-filtering/