GitLab 설치 백업
GitLab 백업은 차트에서 제공되는 Toolbox pod에서 backup-utility
명령을 실행하여 수행됩니다. 백업은 또한 이 차트의 기반되는 Cron 기반 백업 기능을 활성화하여 자동화할 수도 있습니다.
처음으로 백업을 실행하기 전에, 프로그램 상자가 객체 저장소에 액세스할 수 있도록 올바르게 구성되었는지 확인해야 합니다.
GitLab Helm 차트 기반 설치의 백업을 수행하는 데는 다음 단계를 따르십시오.
백업 만들기
-
다음 명령을 실행하여 프로그램 상자 pod가 실행 중인지 확인합니다.
kubectl get pods -lrelease=릴리즈_이름,app=toolbox
-
백업 유틸리티 실행
kubectl exec <프로그램 상자 pod 이름> -it -- backup-utility
-
객체 저장소 서비스의
gitlab-backups
버킷을 방문하여 tar 볼이 추가되었는지 확인합니다. 이는<타임스탬프>_gitlab_backup.tar
형식으로 명명될 것입니다. 백업 타임스탬프에 대한 내용을 읽어보세요. -
이 tar 볼은 복원에 필요합니다.
Cron 기반 백업
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
주석을 설정합니다. GKE Autopilot과 같은 일부 Kubernetes 환경은 이 주석을 설정할 수 없으며 백업을 위한 Job Pods를 생성하지 않습니다. gitlab.toolbox.backups.cron.safeToEvict
매개변수를 true
로 설정하여이 주석을 변경할 수 있지만, 이는 Job이 생성되지만 추방되어 백업이 손상될 수 있는 위험을 갖게 됩니다.이 차트에서 정기적인 간격으로 발생하도록 Cron 기반 백업을 활성화할 수 있습니다. 이는 Kubernetes 스케줄에 정의된 정기적인 간격으로 발생합니다.
다음과 같은 매개변수를 설정해야 합니다:
-
gitlab.toolbox.backups.cron.enabled
: Cron 기반 백업을 활성화하려면 true로 설정 -
gitlab.toolbox.backups.cron.schedule
: Kubernetes 스케줄 문서에 따라 설정 -
gitlab.toolbox.backups.cron.extraArgs
: backup-utility에 대한 옵션 추가 인수를 선택적으로 설정 (예:--skip db
또는--s3tool awscli
와 같은)
백업 유틸리티 추가 인수
백업 유틸리티는 일부 추가 인수를 취할 수 있습니다.
구성 요소 건너뛰기
--skip
인수를 사용하여 구성 요소를 건너뜁니다. 유효한 구성 요소 이름은 백업에서 특정 데이터 제외에서 찾을 수 있습니다.
각 구성 요소는 자체 --skip
인수를 가져야 합니다. 예를 들어:
kubectl exec <프로그램 상자 pod 이름> -it -- backup-utility --skip db --skip lfs
백업 정리만
새로운 백업을 만들지 않고 백업 정리를 실행합니다.
kubectl exec <프로그램 상자 pod 이름> -it -- backup-utility --cleanup
사용할 S3 도구 지정
backup-utility
명령은 객체 저장소에 연결하기 위해 기본적으로 s3cmd
를 사용합니다. 기본 s3cmd
가 다른 S3 도구보다 신뢰성이 낮은 경우 이러한 추가 인수를 재정의할 수 있습니다.
GitLab이 S3 버킷을 CI 작업 아티팩트 저장소로 사용하고 기본 s3cmd
CLI 도구가 사용될 때 ERROR: S3 error: 404 (NoSuchKey): The specified key does not exist.
와 같은 오류로 백업 작업이 실패하는 알려진 문제가 있습니다. s3cmd
에서 awscli
로 전환하면 백업 작업이 성공적으로 실행됩니다. 자세한 내용은 이슈 3338을 참조하세요.
사용할 S3 CLI 도구는 s3cmd
또는 awscli
가 될 수 있습니다.
kubectl exec <프로그램 상자 pod 이름> -it -- backup-utility --s3tool awscli
awscli로 MinIO 사용
awscli
를 사용할 때 MinIO를 객체 저장소로 사용하려면 다음과 같이 매개변수를 설정하세요:
gitlab:
toolbox:
extraEnvFrom:
AWS_ACCESS_KEY_ID:
secretKeyRef:
name: <MINIO-SECRET-NAME>
key: accesskey
AWS_SECRET_ACCESS_KEY:
secretKeyRef:
name: <MINIO-SECRET-NAME>
key: secretkey
extraEnv:
AWS_DEFAULT_REGION: us-east-1 # MinIO 기본값
backups:
cron:
enabled: true
schedule: "@daily"
extraArgs: "--s3tool awscli --aws-s3-endpoint-url <MINIO-INGRESS-URL>"
s5cmd
지원은 조사 중입니다.
진행 상황을 추적하려면 이슈 523을 참조하세요.기타 매개변수
사용 가능한 매개변수의 완전한 목록을 보려면 다음 명령을 실행하세요.
kubectl exec <Toolbox pod name> -it -- backup-utility --help
시크릿 백업
또한 보안상의 이유로 백업에 포함되지 않는 레일 시크릿의 사본을 저장해야 합니다. 데이터베이스를 포함하는 전체 백업과 시크릿의 사본을 별도로 유지하는 것을 권장합니다.
-
레일 시크릿의 객체 이름 찾기
kubectl get secrets | grep rails-secret
-
레일 시크릿의 사본 저장
kubectl get secrets <rails-secret-name> -o jsonpath="{.data['secrets\.yml']}" | base64 --decode > gitlab-secrets.yaml
-
gitlab-secrets.yaml
을 안전한 위치에 저장하세요. 백업을 복원하는 데 필요합니다.