Toolbox
Toolbox Pod는 GitLab 애플리케이션 내에서 주기적인 정리 작업을 실행하는 데 사용됩니다. 이러한 작업에는 백업, Sidekiq 유지관리 및 Rake 작업이 포함됩니다.
Configuration
다음 구성 설정은 Toolbox 차트에서 제공하는 기본 설정입니다:
gitlab:
## doc/charts/gitlab/toolbox
toolbox:
enabled: true
replicas: 1
backups:
cron:
enabled: false
concurrencyPolicy: Replace
failedJobsHistoryLimit: 1
schedule: "0 1 * * *"
successfulJobsHistoryLimit: 3
suspend: false
backoffLimit: 6
safeToEvict: false
restartPolicy: "OnFailure"
resources:
requests:
cpu: 50m
memory: 350M
persistence:
enabled: false
accessMode: ReadWriteOnce
useGenericEphemeralVolume: false
size: 10Gi
objectStorage:
backend: s3
config: {}
persistence:
enabled: false
accessMode: 'ReadWriteOnce'
size: '10Gi'
resources:
requests:
cpu: '50m'
memory: '350M'
securityContext:
fsGroup: '1000'
runAsUser: '1000'
runAsGroup: '1000'
containerSecurityContext:
runAsUser: '1000'
Parameter | Description | Default |
---|---|---|
annotations
| Toolbox Pods 및 작업에 추가할 주석 | {}
|
common.labels
| 이 차트에 의해 생성된 모든 개체에 적용되는 보충 라벨 | {}
|
antiAffinityLabels.matchLabels
| Anti-affinity 옵션 설정을 위한 라벨 | |
backups.cron.activeDeadlineSeconds
| 백업 CronJob 활성 마감 시간(값이 null이면 마감 시간이 적용되지 않음) | null
|
backups.cron.safeToEvict
| 자동 스케일링 ‘safe-to-evict’ 주석 | false |
backups.cron.backoffLimit
| 백업 CronJob 백오프 한도 | 6
|
backups.cron.concurrencyPolicy
| Kubernetes Job 동시성 정책 | Replace
|
backups.cron.enabled
| 백업 CronJob 활성화 플래그 | false |
backups.cron.extraArgs
| 백업 유틸리티에 전달할 인수 문자열 | |
backups.cron.failedJobsHistoryLimit
| 실패한 백업 작업의 히스토리 디렉터리 수 | 1
|
backups.cron.persistence.accessMode
| 백업 cron 지속성 액세스 모드 | ReadWriteOnce
|
backups.cron.persistence.enabled
| 백업 cron 지속성 활성화 플래그 | false |
backups.cron.persistence.matchExpressions
| 바인딩할 라벨 식 일치 | |
backups.cron.persistence.matchLabels
| 바인딩할 라벨 값 일치 | |
backups.cron.persistence.useGenericEphemeralVolume
| 일반 순간 볼륨 사용 | false |
backups.cron.persistence.size
| 백업 cron 지속성 볼륨 크기 | 10Gi
|
backups.cron.persistence.storageClass
| 프로비저닝을 위한 StorageClass 이름 | |
backups.cron.persistence.subPath
| 백업 cron 지속성 볼륨 마운트 경로 | |
backups.cron.persistence.volumeName
| 기존 지속 볼륨 이름 | |
backups.cron.resources.requests.cpu
| 필요한 최소 CPU 백업 cron | 50m
|
backups.cron.resources.requests.memory
| 필요한 최소 메모리 백업 cron | 350M
|
backups.cron.restartPolicy
| 백업 cron 재시작 정책 (Never 또는 OnFailure )
| OnFailure
|
backups.cron.schedule
| Cron 형식 스케줄 문자열 | 0 1 * * *
|
backups.cron.startingDeadlineSeconds
| 시작 마감 시간(값이 null이면 시작 마감 시간이 적용되지 않음) | null
|
backups.cron.successfulJobsHistoryLimit
| 성공한 백업 작업의 히스토리 디렉터리 수 | 3
|
backups.cron.suspend
| 백업 cron 작업이 일시 중지됨 | false
|
backups.objectStorage.backend
| 사용할 오브젝트 스토리지 공급자 (s3 , gcs , azure )
| s3
|
backups.objectStorage.config.gcpProject
| backend가 gcs 인 경우 사용할 GCP 프로젝트
| ”” |
backups.objectStorage.config.key
| 비밀번호의 인증 키를 포함하는 키 | ”” |
backups.objectStorage.config.secret
| 오브젝트 스토리지 공급자 자격 증명 비밀 | ”” |
common.labels
| 이 차트에 의해 생성된 모든 개체에 적용되는 보충 라벨 | {}
|
deployment.strategy
| 배포에서 사용하는 업데이트 전략을 구성할 수 있음 | { type : Recreate }
|
enabled
| Toolbox 활성화 플래그 | true |
extra
| 추가 gitlab.yml 구성에 대한 YAML 블록입니다. (https://gitlab.com/gitlab-org/gitlab/-/blob/8d2b59dbf232f17159d63f0359fa4793921896d5/config/gitlab.yml.example#L1193-1199)
| {} |
image.pullPolicy
| Toolbox 이미지 풀 정책 | IfNotPresent
|
image.pullSecrets
| Toolbox 이미지 풀 시크릿 | |
image.repository
| Toolbox 이미지 리포지터리 | registry.gitlab.com/gitlab-org/build/cng/gitlab-toolbox-ee
|
image.tag
| Toolbox 이미지 태그 | master
|
init.image.repository
| Toolbox init 이미지 리포지터리 | |
init.image.tag
| Toolbox init 이미지 태그 | |
init.resources
| Toolbox init 컨테이너 자원 요구 사항 | { requests : { cpu : 50m }}
|
init.containerSecurityContext
| 컨테이너 별도 securityContext | {} |
nodeSelector
| Toolbox 및 백업 작업 노드 선택 | |
persistence.accessMode
| Toolbox 지속성 액세스 모드 | ReadWriteOnce
|
persistence.enabled
| Toolbox 지속성 활성화 플래그 | false |
persistence.matchExpressions
| 바인딩할 라벨 식 일치 | |
persistence.matchLabels
| 바인딩할 라벨 값 일치 | |
persistence.size
| Toolbox 지속성 볼륨 크기 | 10Gi
|
persistence.storageClass
| 프로비저닝을 위한 StorageClass 이름 | |
persistence.subPath
| Toolbox 지속성 볼륨 마운트 경로 | |
persistence.volumeName
| 기존 지속성 볼륨 이름 | |
podLabels
| 실행 중인 Toolbox Pods를 위한 라벨 | {} |
priorityClassName
| pod에 할당된 우선 순위 클래스 | |
replicas
| 실행할 Toolbox Pods의 수 | 1
|
resources.requests
| 필요한 최소 리소스 요청 | { cpu : 50m , memory : 350M
|
securityContext.fsGroup
| pod이 시작될 파일 시스템 그룹 ID | 1000
|
securityContext.runAsUser
| pod이 시작될 사용자 ID | 1000
|
securityContext.runAsGroup
| pod이 시작될 그룹 ID | 1000
|
securityContext.fsGroupChangePolicy
| 볼륨 소유권 및 권한을 변경하는 정책 (Kubernetes 1.23이 필요함) | |
containerSecurityContext
| 컨테이너 시작 시 오버라이드 securityContext | |
containerSecurityContext.runAsUser
| 컨테이너 시작 시 특정 보안 컨텍스트를 덮어쓸 수 있음 | 1000
|
serviceAccount.annotations
| ServiceAccount를 위한 주석 | {} |
serviceAccount.enabled
| ServiceAccount 사용 플래그 | false |
serviceAccount.create
| ServiceAccount 생성 플래그 | false |
serviceAccount.name
| 사용할 ServiceAccount의 이름 | |
tolerations
| Toolbox에 추가할 Toleration | |
extraEnvFrom
| 노출할 다른 데이터 소스의 추가 환경 변수 디렉터리 |
백업 구성
백업 및 복원 설명서에서 백업 구성에 관한 정보를 찾을 수 있습니다. 추가적으로 백업 작업이 수행되는 기술적인 구현에 대한 자세한 내용은 백업 및 복원 아키텍처 설명서에서 확인할 수 있습니다.
지속성 구성
백업 및 복원을 위해 영구 리포지터리는 별도로 구성됩니다. GitLab을 백업 및 복원 작업을 위해 구성할 때 다음을 고려해 주세요.
백업은 backups.cron.persistence.*
속성을 사용하고, 복원은 persistence.*
속성을 사용합니다. 영구 리포지터리 구성과 관련된 자세한 설명은 최종 속성 키(예: .enabled
또는 .size
)만 사용하고 적절한 접두사를 추가해야 합니다.
영구 리포지터리는 기본적으로 비활성화되어 있으므로, 중요한 크기의 백업 또는 복원의 경우 .enabled
를 true
로 설정해야 합니다. 또한, Kubernetes에서 PersistentVolume이 작성되려면 .storageClass
를 지정하거나 PersistentVolume을 매뉴얼으로 작성해야 합니다. .storageClass
가 '-'
로 지정된 경우, PersistentVolume은 Kubernetes 클러스터에서 기본 StorageClass로 생성됩니다.
매뉴얼으로 PersistentVolume을 생성하는 경우, 볼륨은 .volumeName
속성을 사용하거나 선택기인 .matchLables
/ .matchExpressions
속성을 사용하여 지정할 수 있습니다.
대부분의 경우 .accessMode
의 기본값은 Toolbox만 PersistentVolumes에 액세스하는 데 충분한 제어를 제공합니다. 올바른 설정인지 확인하려면 Kubernetes 클러스터에 설치된 CSI 드라이버에 대한 설명서를 참조해 주세요.
백업 고려사항
백업 작업은 백업 오브젝트 리포지터리에 기록되기 전에 백업되는 개별 컴포넌트를 보유하기 위한 디스크 공간이 필요합니다. 디스크 공간의 크기는 다음과 같은 요소에 따라 달라집니다:
- 프로젝트 수 및 각 프로젝트에 저장된 데이터 양
- PostgresSQL 데이터베이스의 크기 (이슈, MR 등)
- 각 오브젝트 리포지터리 백엔드의 크기
대략적인 크기를 결정한 후, backups.cron.persistence.size
속성을 설정하여 백업을 시작할 수 있습니다.
복원 고려사항
백업을 복원하는 동안, 파일이 실행 중인 인스턴스에서 대체되기 전에 백업을 디스크에 추출해야 합니다. 복원 디스크 공간의 크기는 persistence.size
속성으로 제어됩니다. GitLab 설치의 크기가 커지면 복원 디스크 공간의 크기도 그에 따라 늘어나야 함을 명심해 주세요. 대부분의 경우 복원 디스크 공간의 크기는 백업 디스크 공간의 크기와 동일해야 합니다.
Toolbox 포함된 도구
Toolbox 컨테이너에는 Rails 콘솔, Rake 작업 등과 같은 유용한 GitLab 도구가 포함되어 있습니다. 이러한 명령을 사용하여 데이터베이스 마이그레이션 상태를 확인하거나 관리 작업용으로 Rake 작업을 실행하고 Rails 콘솔과 상호 작용할 수 있습니다:
# Toolbox 파드 찾기
kubectl get pods -lapp=toolbox
# 파드 내에서 셸 실행
kubectl exec -it <Toolbox pod 이름> -- bash
# Rails 콘솔 열기
gitlab-rails console -e production
# Rake 작업 실행
gitlab-rake gitlab:env:info