Kubernetes CronJob을 사용하여 S3에 대한 MongoDB 백업 예약
5132 단어 cronjobkubernetess3mongodb
소개
Kubernetes CronJob을 사용하면 시간 기반 일정에 따라 Jobs을 매우 쉽게 실행할 수 있습니다. 이러한 자동화된 작업은 Linux 또는 UNIX 시스템에서 Cron 작업처럼 실행됩니다.
이 게시물에서는 Kubernetes CronJob을 사용하여 MongoDB 데이터베이스의 반복 백업을 예약하고 백업 아카이브를 AWS S3에 업로드합니다. 모든 소스 코드는 GitHub 리포지토리에서 사용할 수 있습니다.
툴라다르 / k8s-백업-mongodb
Kubernetes CronJob을 사용하여 S3에 대한 MongoDB 백업을 예약합니다.
시작하다
계속해서 MongoDB에서 최소한의 권한으로 백업을 수행하는 전용 사용자를 생성해 보겠습니다.
루트 사용자로 MongoDB 셸에 로그인합니다.
mongo admin --host <hostname> --authenticationDatabase admin -u root
다음 명령을 실행하여 백업 사용자를 생성합니다.
db.createUser({
user: 'backup_user',
pwd: 'oO9eV5cG6cF2oM1r',
roles: [{ role: 'backup',db:'admin'}]
})
쿠버네티스 네임스페이스
cronjob을 배포하기 위해 Kubernetes에 전용 네임스페이스를 만듭니다.
kubectl apply -f https://raw.githubusercontent.com/tuladhar/k8s-backup-mongodb/main/kubernetes/namespace.yaml
출력은 다음과 유사합니다.
namespace/backup-mongodb created
해당 컨텍스트에서 실행할 모든 후속 kubectl 명령에 대한 네임스페이스를 저장해 보겠습니다.
kubectl config set-context --current --namespace=backup-mongodb
쿠버네티스 시크릿
Kubernetes Secrets을 통해 중요한 정보를 저장하고 관리할 수 있습니다. 비밀에 기밀 정보를 저장하는 것은 Pod 정의 또는 container image 에 그대로 두는 것보다 더 안전하고 유연합니다.
MongoDB URI 저장
export MONGODB_URI=mongodb://backup_user:oO9eV5cG6cF2oM1r@<mongodb-hostname>:27017
kubectl create secret generic mongodb-uri --from-literal=MONGODB_URI=$MONGODB_URI
AWS 자격 증명 및 S3 버킷 URI 저장
export AWS_ACCESS_KEY_ID=***
export AWS_SECRET_ACCESS_KEY=***
export BUCKET_URI=s3://bucket-name
export AWS_DEFAULT_REGION=us-east-1
kubectl create secret generic aws --from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
kubectl create secret generic aws --from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
kubectl create secret generic aws --from-literal=BUCKET_URI=$BUCKET_URI
kubectl create secret generic aws --from-literal=AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION
CronJob 배포
이제 다음 명령을 실행하여 MongoDB 백업 cronjob을 배포할 수 있습니다.
kubectl apply -f https://raw.githubusercontent.com/tuladhar/k8s-backup-mongodb/main/kubernetes/cronjob.yaml
출력은 다음과 유사합니다.
cronjob.batch/backup-mongodb created
기본 일정은 매시간 실행하는 것입니다. 일정을 조정하려면 다음 명령을 실행하고 일정 속성을 수정합니다.
kubectl edit cronjob backup-mongodb
cronjob을 만든 후 다음 명령을 실행하여 해당 상태를 가져올 수 있습니다.
kubectl get cronjob
출력은 다음과 유사합니다.
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE
backup-mongodb 0 */1 * * * False 0 <none>
명령 결과에서 알 수 있듯이 cronjob은 아직 작업을 예약하거나 실행하지 않았습니다. 다음 명령을 실행하여 작업을 나열할 수 있습니다.
kubectl get jobs
작업의 포드 로그를 보려면 다음 명령어를 실행하세요.
pods=**$(**kubectl get pods --selector=job-name=<job-name> --output=jsonpath={.items[*].metadata.name}**)**
kubectl logs $pods
결론
Reference
이 문제에 관하여(Kubernetes CronJob을 사용하여 S3에 대한 MongoDB 백업 예약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ptuladhar3/schedule-mongodb-backup-to-s3-using-kubernetes-cronjob-2bl7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)