GitLab 차트 개발 환경의 Troubleshooting
여기서 기술된 모든 단계는 개발 환경에만 해당됩니다. 관리자들은 정보를 유익하게 여길 수 있지만, 기술된 수정 사항은 파괴적이며 프로덕션 시스템에 중대한 부정적인 영향을 미칠 수 있습니다.
비밀번호 및 비밀값의 실패 또는 비동기화
개발자들은 주로 동일한 클러스터로 반복해서 릴리스를 배포, 삭제 및 재배포합니다. StatefulSets에 의해 생성된 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의 백업을 사용합니다. 필요할 때 백업을 업데이트하기 위해 다음 단계를 완료하세요:
- 매칭되는 stable 브랜치에 대한 CI 파이프라인을 실행하여 원하는 백업을 생성합니다.
- 예: 현재 릴리스가
5-5-stable
인 경우 브랜치5-4-stable
에 대한 CI 파이프라인을 실행하여 14.4의 백업을 생성합니다. - 유지자 역할이 필요하다는 점을 유의하십시오.
- 예: 현재 릴리스가
- 해당 파이프라인에서 QA 작업을 취소합니다(단, 스펙 테스트는 남깁니다)하여 백업에 추가 데이터가 포함되지 않도록 합니다.
- 스펙 테스트가 완료될 때까지 기다립니다. 이 작업에서는 이전 백업이 설치되고 우리가 원하는 버전으로 인스턴스가 마이그레이션됩니다.
-
gitlab-runner
배포 복제본을 0으로 설정하여 Runner를 중지합니다. - UI에 로그인하여 관리자 섹션에서 Runner를 삭제합니다. 이렇게 하면 나중에 암호화 오류를 방지하는 데 도움이 될 것입니다.
- 백그라운드 마이그레이션이 모두 완료되었는지 확인하고 필요한 경우 완료하도록 합니다.
- 백업을 작은 크기로 유지하기 위해
toolbox
Pod를 삭제합니다. - 백업 내용을 수정하는 데 수동 작업이 필요한 경우, 다음 단계로 진행하기 전에 작업을 완료하세요.
- 새로운
toolbox
Pod에서 새 백업을 생성합니다. -
gitlab-backups
버킷의 MinIO 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 차트의 설치를 제거할 수 있는지 확인하는 것입니다.
일반적으로 설치는 파이프라인의 Review Apps 로직에 의해 자동적으로 정리되지만, 다양한 이유로 실패할 수 있습니다. 더 자세한 내용은 다음 이슈들을 참조하세요:
임시방편으로, 연관된 stop_review
작업을 CI에서 실행하여 이러한 설치를 수동으로 삭제할 수 있습니다. 이 작업을 더 간단하게 만들기 위해 helm_ci_triage.sh
스크립트를 사용하여 실행 중인 설치 목록을 가져오고 연관된 파이프라인을 열어 stop_review
작업을 실행하세요. 스크립트에서 추가 사용법을 확인할 수 있습니다.