GitLab 업그레이드
GitLab Operator는 GitLab의 버전 간 업그레이드를 관리할 수 있습니다. 이 문서에는 업그레이드 흐름이 하부에서 어떻게 작동하는지에 대한 백그라운드 컨텍스트와 GitLab 업그레이드를 수행하는 지침이 포함되어 있습니다.
오퍼레이터가 GitLab 업그레이드를 처리하는 방법
컨트롤러 재조정 루프의 시작에서 오퍼레이터는 현재 버전이 원하는 버전과 일치하는지 확인합니다.
- 이러한 버전이 일치하면 일반 재조정 루프가 실행되어 CR 스펙에서 제공된 구성을 만족시키는 개체가 존재하는지 확인합니다.
- 이러한 버전이 일치하지 않는 경우에도 일반 재조정 루프가 실행되지만, 업그레이드 흐름을 처리하기 위해 추가 논리 분기가 실행됩니다.
업그레이드 흐름은 다음과 같이 작동합니다.
- 컨트롤러는 모든 배포를 재조정합니다.
- Webservice 및 Sidekiq 배포는 재조정되지만 “일시 중지”됩니다. 이는 “이전” 파드가 새로운 배포가 일시 중지될 때까지 유지되는 것을 의미합니다.
- 사전 마이그레이션이 실행됩니다.
- 이것은 사실상 마이그레이션 작업을 실행하지만, 배포 후 마이그레이션을 건너뛰게 됩니다.
- 컨트롤러는 Webservice 및 Sidekiq 배포의 일시 중지를 해제합니다.
- 컨트롤러는 새로운 Webservice 및 Sidekiq 파드가 실행되도록 대기합니다.
- 사후 마이그레이션이 실행됩니다.
- 이는 마이그레이션 작업을 실행합니다(배포 후 마이그레이션을 건너뛰지 않음).
- 컨트롤러는 Webservice 및 Sidekiq 배포에 롤링 업데이트를 수행합니다.
- 컨트롤러는 다시 시작된 Webservice 및 Sidekiq 파드가 실행되기를 대기합니다.
향후 재조정 루프에서는 spec.chart.version
에서 원하는 버전이 status.version
에서 현재 버전과 일치하기 때문에 해당 논리 분기가 건너뜁니다.
GitLab 업데이트 방법
아래는 GitLab Operator를 사용하여 GitLab 인스턴스를 업그레이드하는 단계입니다.
단계 1
GitLab CR의 spec.chart.version
필드를 새 버전으로 업데이트하세요. 예:
apiVersion: apps.gitlab.com/v1beta1
kind: GitLab
metadata:
name: gitlab
spec:
chart:
- version: "5.0.6"
+ version: "5.1.1"
values:
...
단계 2
수정된 GitLab CR을 클러스터에 적용하세요:
kubectl -n gitlab-system apply -f mygitlab.yaml
다음 메시지가 표시됩니다:
gitlab.apps.gitlab.com/gitlab created
단계 3
컨트롤러 로그를 통해 진행 상황을 모니터링할 수 있습니다:
$ kubectl -n gitlab-system logs deployment/gitlab-controller-manager -c manager -f
2021-09-14T20:59:12.342Z INFO controllers.GitLab Reconciling GitLab {"gitlab": "gitlab-system/gitlab"}
2021-09-14T20:59:12.344Z DEBUG controllers.GitLab version information {"gitlab": "gitlab-system/gitlab", "upgrade": true, "current version": "", "desired version": "5.0.6"}
2021-09-14T20:59:18.168Z INFO controllers.GitLab reconciling Webservice and Sidekiq Deployments (paused) {"gitlab": "gitlab-system/gitlab"}
...
위에서 설명한 업그레이드 흐름을 따르는 로그 항목을 확인할 수 있습니다.
또한 클러스터에서 GitLab CR 상태를 확인할 수 있습니다:
$ kubectl -n gitlab-system get gitlab
NAME STATUS VERSION
gitlab Preparing 5.2.4
애플리케이션이 준비되어 새 버전으로 업그레이드되면 STATUS
열에 반영된 것을 확인할 수 있습니다.
$ kubectl -n gitlab-system get gitlab
NAME STATUS VERSION
gitlab Running 5.2.4
GitLab 객체 자체의 상태 조건은 애플리케이션에 대한 더 자세한 정보를 제공합니다.
추가적인 업그레이드 고려 사항
GitLab 인스턴스를 업그레이드하기 전에 고려해야 할 추가 주제들은 다음과 같습니다.
- PersistentVolumeClaim 구성 변경 시 데이터 복원: 특히 오퍼레이터 0.6.4에서 관련된 사항으로, !419가 GitLab Helm 차트의 MinIO 개체를 Operator-defined MinIO 개체로 대체했을 때 특히 관련이 있습니다.