Será agendado um cronjob que armazenará os arquivos em um compartilhamento NFS.
Você pode adaptar facilmente esta tarefa para armazenar backups em outras SANs.
Inicialmente, eu fiz um playbook para criar backups do etcd. Ele usava o comando cli etcdctl
. Mas depois de um tempo, percebi que era muito mais eficiente usar os recursos nativos do OpenShift.
Essa configuração foi validada no OpenShift 4.14, mas também é válida para as versões 4.10+.
Requisitos:
1] Acesso administrativo ao cluster do OpenShift 4
2] Servidor NFS
Crie um namespace para alocar os recursos necessários.
$ oc new-project ocp-etcd-backup --description "Openshift Backup Automation Tool" --display-name "Backup ETCD Automation"
O job deve ser executado por uma conta de serviço.
kind: ServiceAccount
apiVersion: v1
metadata:
name: openshift-backup
namespace: ocp-etcd-backup
labels:
app: openshift-backup
Precisamos de um cluster role customizado para que o processo de backup tenha acesso aos recursos necessários.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cluster-etcd-backup
rules:
- apiGroups: [""]
resources:
- "nodes"
verbs: ["get", "list"]
- apiGroups: [""]
resources:
- "pods"
- "pods/log"
- "pods/attach"
verbs: ["get", "list", "create", "delete", "watch"]
- apiGroups: [""]
resources:
- "namespaces"
verbs: ["get", "list", "create"]
Associe a custom role à conta de serviço criada para o job de backup.
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: openshift-backup
labels:
app: openshift-backup
subjects:
- kind: ServiceAccount
name: openshift-backup
namespace: ocp-etcd-backup
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-etcd-backup
A conta de serviço precisa ter privilégios no SCC.
$ oc adm policy add-scc-to-user privileged -z openshift-backup
O agendamento executará os backups à 01:00 AM.
*
Altere NFS-SERVER-IP
:SHARED-PATH
para refletir os detalhes do seu servidor NFS.
kind: CronJob
apiVersion: batch/v1
metadata:
name: openshift-backup
namespace: ocp-etcd-backup
labels:
app: openshift-backup
spec:
schedule: "0 1 * * *"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 5
failedJobsHistoryLimit: 5
jobTemplate:
metadata:
labels:
app: openshift-backup
spec:
backoffLimit: 0
template:
metadata:
labels:
app: openshift-backup
spec:
containers:
- name: backup
image: "registry.redhat.io/openshift4/ose-cli"
command:
- "/bin/bash"
- "-c"
- oc get no -l node-role.kubernetes.io/master --no-headers -o name | head -n 1 | xargs -I {} -- oc debug {} --to-namespace=ocp-etcd-backup -- bash -c 'chroot /host rm -rf /home/core/backup && chroot /host mkdir -p /home/core/backup && chroot /host sudo -E mount -t nfs <NFS-SERVER-IP>:<SHARED-PATH> /home/core/backup && chroot /host sudo -E /usr/local/bin/cluster-backup.sh /home/core/backup && chroot /host sudo -E find /home/core/backup/ -type f -mmin +"1" -delete'
restartPolicy: "Never"
terminationGracePeriodSeconds: 30
activeDeadlineSeconds: 500
dnsPolicy: "ClusterFirst"
serviceAccountName: "openshift-backup"
serviceAccount: "openshift-backup"
Executar o job de backup manualmente.
$ oc create job backup --from=cronjob/openshift-backup
Caso executado corretamente, o resultado será semelhante ao mostrado abaixo.
$ oc get jobs.batch
NAME COMPLETIONS DURATION AGE
backup 1/1 24s 18m
Os outros backups realizados podem ser consultados no job.
$ oc get jobs.batch
NAME COMPLETIONS DURATION AGE
backup 1/1 24s 18m
openshift-backup-28514510 1/1 24s 10m
openshift-backup-28514520 0/1 17s 17s <-- RUNNING BACKUP
Para ver o resultado de um job, use o seguinte comando:
$ oc describe jobs.batch openshift-backup-28514520
Para ver os detalhes técnicos do que está acontecendo no cluster quando é acionado o job, use o comando abaixo.
$ oc get events -n ocp-etcd-backup
Backup PODs:
$ oc get pods -n ocp-etcd-backup
NAME READY STATUS RESTARTS AGE
pod/backup-jcn87 1/1 Running 0 67s
pod/ocp-j8gcn-master-0-debug 0/1 Running 0 6s
Os pods de backup são efêmeros e serão excluídos no final do backup.
O processo apresentado fornece uma base para automatizar o backup do OpenShift etcd. Adapte-o às suas necessidades específicas e configure as opções de acordo com sua infraestrutura.
Espero que este post tenha te ajudado a entender como automatizar os backups de um banco de dados etcd.
Você gostou do conteúdo? Dê uma olhada nestes outros artigos interessantes! 🔥
Por favor apóie este conteúdo clicando em um banner de nossos anunciantes. ❤️