툴박스
상세 정보: Tier: Free, Premium, Ultimate Offering: Self-managed
GitLab 애플리케이션 내에서 주기적인 정리 작업을 실행하는 데 사용되는 툴박스 Pod입니다. 이러한 작업에는 백업, Sidekiq 유지 관리 및 Rake 작업이 포함됩니다.
구성
다음 구성 설정은 툴박스 차트에서 제공하는 기본 설정입니다:
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'
매개변수 | 설명 | 기본값 |
---|---|---|
annotations
| 툴박스 Pods 및 작업에 추가될 주석 | {}
|
common.labels
| 이 차트에 의해 생성된 모든 개체에 적용되는 보충 라벨 | {}
|
antiAffinityLabels.matchLabels
| 반-근절 옵션을 설정하기 위한 라벨 | |
backups.cron.activeDeadlineSeconds
| 백업 CronJob의 활성 기한(값이 null이면 적용되는 활성 기한이 없음) | null
|
backups.cron.safeToEvict
| 오토스케일링 safe-to-evict 주석 | false |
backups.cron.backoffLimit
| 백업 CronJob backoff 제한 | 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 | 50m
|
backups.cron.resources.requests.memory
| 필요한 최소 메모리 | 350M
|
backups.cron.restartPolicy
| 백업 cron 재시작 정책 (Never 또는 OnFailure )
| OnFailure
|
backups.cron.schedule
| 크론 스타일 일정 문자열 | 0 1 * * *
|
backups.cron.startingDeadlineSeconds
| 초 단위로 백업 cron 작업 시작 기한(값이 null이면 시작 기한이 적용되지 않음) | null
|
backups.cron.successfulJobsHistoryLimit
| 이력 목록에 표시되는 성공한 백업 작업의 수 | 3
|
backups.cron.suspend
| 백업 cron 작업이 중지됨 | false
|
backups.objectStorage.backend
| 사용할 Object storage 공급업체 (s3 , gcs 또는 azure )
| s3
|
backups.objectStorage.config.gcpProject
| 백엔드가 gcs 인 경우 사용할 GCP 프로젝트
| ”” |
backups.objectStorage.config.key
| 시크릿에서 자격 증명을 포함하는 키 | ”” |
backups.objectStorage.config.secret
| Object storage 자격 증명 시크릿 | ”” |
common.labels
| 이 차트에 의해 생성된 모든 개체에 적용되는 보충 라벨 | {}
|
deployment.strategy
| 배포에 의해 사용되는 업데이트 전략 구성을 허용 | { type : Recreate }
|
enabled
| 툴박스 활성화 플래그 | true |
extra
|
추가 gitlab.yml 구성을 위한 YAML 블록
| {} |
image.pullPolicy
| 툴박스 이미지 가져오기 정책 | IfNotPresent
|
image.pullSecrets
| 툴박스 이미지 pull 시크릿 | |
image.repository
| 툴박스 이미지 저장소 | registry.gitlab.com/gitlab-org/build/cng/gitlab-toolbox-ee
|
image.tag
| 툴박스 이미지 태그 | master
|
init.image.repository
| 툴박스 init 이미지 저장소 | |
init.image.tag
| 툴박스 init 이미지 태그 | |
init.resources
| 툴박스 init 컨테이너 자원 요구 사항 | { requests : { cpu : 50m }}
|
init.containerSecurityContext
| 특정 securityContext를 시작하는 initContainer 컨테이너 | {} |
nodeSelector
| 툴박스 및 백업 작업 노드 선택 | |
persistence.accessMode
| 툴박스 지속성 액세스 모드 | ReadWriteOnce
|
persistence.enabled
| 툴박스 지속성 활성화 플래그 | false |
persistence.matchExpressions
| 바인딩하기 위한 라벨 표현식 일치 | |
persistence.matchLabels
| 바인딩하기 위한 라벨 값 일치 | |
persistence.size
| 툴박스 지속성 볼륨 크기 | 10Gi
|
persistence.storageClass
| 프로비저닝을 위한 StorageClass 이름 | |
persistence.subPath
| 툴박스 지속성 볼륨 마운트 경로 | |
persistence.volumeName
| 기존 PersistentVolume 이름 | |
podLabels
| 실행 중인 툴박스 Pods를 위한 라벨 | {} |
priorityClassName
| Pods에 할당된 우선 순위 클래스 | |
replicas
| 실행할 툴박스 Pods의 수 | 1
|
resources.requests
| 툴박스에서 필요로 하는 최소한의 자원 | { cpu : 50m , memory : 350M
|
securityContext.fsGroup
| Pod가 시작될 때 사용되는 그룹 ID | 1000
|
securityContext.runAsUser
| 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
| 툴박스에 추가할 tolerations | |
extraEnvFrom
| 노출시킬 다른 데이터 소스로부터의 추가 환경 변수 목록 |
백업 구성
백업 및 복원 설명서에서 백업 구성에 대한 정보를 찾을 수 있습니다. 백업이 수행되는 기술적 구현에 대한 추가 정보는 백업 및 복원 아키텍처 설명서에서 찾을 수 있습니다.
지속성 구성
백업 및 복원을 위해 지속적인 저장소는 개별적으로 구성됩니다. GitLab을 백업 및 복원 작업을 구성할 때 다음을 고려해 주세요.
백업에는 backups.cron.persistence.*
속성이 사용되고, 복원에는 persistence.*
속성이 사용됩니다. 지속적인 저장소의 구성에 대한 추가 설명은 최종 속성 키(예: .enabled
또는 .size
)만 사용하며 적절한 접두사가 추가되어야 합니다.
지속적인 저장소는 기본적으로 비활성화되어 있으므로, 백업이나 복원 시 .enabled
를 반드시 true
로 설정해야 합니다. 또한, PersistentVolume가 Kubernetes에 의해 생성되도록 하려면 .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 팟 이름> -- bash
# Rails 콘솔 열기
gitlab-rails console -e production
# Rake 작업 실행
gitlab-rake gitlab:env:info