GitLab 차트 개발 환경 문제 해결
여기에 언급된 모든 단계는 개발 환경 전용입니다.
관리자는 이 정보를 유용하게 생각할 수 있지만, 설명된 수정 사항은 파괴적이며 프로덕션 시스템에 큰 부정적인 영향을 미칠 수 있습니다.
비밀번호 및 비밀이 실패하거나 동기화되지 않음
개발자는 일반적으로 같은 클러스터에 여러 번 릴리스를 배포, 삭제 및 재배포합니다. StatefulSet에 의해 생성된 Kubernetes 비밀 및 지속 볼륨 청구는 helm delete RELEASE_NAME
에 의해 의도적으로 제거되지 않습니다.
Kubernetes 비밀만 제거하면 흥미로운 문제가 발생합니다. 예를 들어, 새 배포의 마이그레이션 포드는 GitLab Rails가 잘못된 비밀번호로 인해 데이터베이스에 연결할 수 없기 때문에 실패합니다.
개발 환경에서 비밀을 포함하여 릴리스를 완전히 삭제하려면 개발자는 비밀과 지속 볼륨 청구를 모두 제거해야 합니다.
# 프로덕션 환경에서 이 명령을 실행하지 마십시오. 재난이 발생할 것입니다.
kubectl delete secrets,pvc -lrelease=RELEASE_NAME
참고:
이는 TLS 인증서 및 데이터베이스의 모든 데이터를 포함하여 모든 Kubernetes 비밀을 삭제합니다. 프로덕션 인스턴스에서 이 작업은 수행하지 않아야 합니다.
데이터베이스가 손상되어 재설정이 필요함
개발 환경에서 데이터베이스 환경을 재설정하려면 다음을 수행합니다:
- PostgreSQL StatefulSet을 삭제합니다.
- PostgreSQL PersistentVolumeClaim을 삭제합니다.
-
helm upgrade --install
로 GitLab을 다시 배포합니다.
참고:
이는 데이터베이스의 모든 데이터를 삭제하며 프로덕션에서는 실행하지 않아야 합니다.
테스트에 사용되는 백업을 업데이트해야 함
CI의 특정 작업은 테스트 중에 GitLab 백업을 사용합니다. 필요할 때 이 백업을 업데이트하려면 아래 단계를 완료하세요:
- 일치하는 안정적인 브랜치에 대해 CI 파이프라인을 실행하여 원하는 백업을 생성합니다.
- 예를 들어: 현재 릴리스가
5-5-stable
일 때5-4-stable
브랜치의 CI 파이프라인을 실행하여 14.4의 백업을 생성합니다. - 이는 Maintainer 역할이 필요합니다.
- 예를 들어: 현재 릴리스가
- 해당 파이프라인에서 QA 작업을 취소합니다(사양 테스트는 그대로 두어 백업에 추가 데이터를 얻지 않도록 합니다).
- 사양 테스트를 완료합니다. 이들은 이전 백업을 설치하고 원하는 버전으로 인스턴스를 마이그레이션합니다.
-
gitlab-runner
배포 복제본을 0으로 변경하여 Runner가 꺼지게 합니다. - UI에 로그인하여 관리 섹션에서 Runner를 삭제합니다. 이는 나중에 암호화 오류를 피하는 데 도움이 될 것입니다.
- 모든 백그라운드 마이그레이션이 완료되었는지 확인합니다, 필요시 강제로 완료합니다.
- 백업을 작게 유지하기 위해 기존
tmp
데이터가 없도록toolbox
Pod를 삭제합니다. - 백업의 내용을 수정하기 위해 수동 작업이 필요하다면, 다음 단계로 진행하기 전에 완료합니다.
- 새로운
toolbox
Pod에서 새 백업을 생성합니다. -
gitlab-backups
버킷의 CI 인스턴스에서 새 백업을 다운로드합니다. - Google Cloud Storage(GCS)의 적절한 위치에 백업을 업로드합니다:
- 프로젝트:
cloud-native-182609
, 경로:gitlab-charts-ci/test-backups/
- 액세스를 편집하고
Entity=Public
,Name=allUsers
,Access=Reader
를 추가합니다.
- 프로젝트:
- 마지막으로,
.gitlab-ci.yml
의.variables.TEST_BACKUP_PREFIX
를 새 버전의 백업으로 업데이트합니다.- 예를 들어: 파일 이름이
1708623546_2024_02_22_16.9.1-ee_gitlab_backup
이면 접두사는1708623546_2024_02_22_16.9.1-ee
입니다.
- 예를 들어: 파일 이름이
이제 향후 파이프라인은 테스트 중에 새 백업 아티팩트를 사용할 것입니다.
CI 클러스터의 사용 가능한 리소스 부족
하나 이상의 CI 클러스터에서 CPU 및 메모리와 같은 사용 가능한 리소스가 부족하다는 것을 느낄 수 있습니다. 우리의 클러스터는 사용 가능한 노드를 자동으로 확장하도록 구성되어 있지만, 가끔 상한선에 도달하여 더 이상 노드를 생성할 수 없습니다. 이 경우, 첫 번째 좋은 단계는 클러스터에서 GitLab Helm Charts의 설치가 제거될 수 있는지 확인하는 것입니다.
설치는 일반적으로 파이프라인의 Review Apps 논리에 의해 자동으로 정리되지만, 이는 다양한 이유로 실패할 수 있습니다. 더 많은 세부 정보는 다음 문제를 참조하세요:
우회 방법으로, 이러한 설치는 CI에서 관련된 stop_review
작업을 실행하여 수동으로 삭제할 수 있습니다.
이를 쉽게 하기 위해, helm_ci_triage.sh
스크립트를 사용하여
실행 중인 설치 목록을 가져오고, 관련된 파이프라인을 열어 stop_review
작업을 실행하세요.
추가 사용 세부 정보는 스크립트에서 확인할 수 있습니다.