GitLab 차트 개발 환경 문제 해결

여기에 언급된 모든 단계는 개발 환경 전용입니다.

관리자는 이 정보를 유용하게 생각할 수 있지만, 설명된 수정 사항은 파괴적이며 프로덕션 시스템에 큰 부정적인 영향을 미칠 수 있습니다.

비밀번호 및 비밀이 실패하거나 동기화되지 않음

개발자는 일반적으로 같은 클러스터에 여러 번 릴리스를 배포, 삭제 및 재배포합니다. StatefulSet에 의해 생성된 Kubernetes 비밀 및 지속 볼륨 청구는 helm delete RELEASE_NAME에 의해 의도적으로 제거되지 않습니다.

Kubernetes 비밀만 제거하면 흥미로운 문제가 발생합니다. 예를 들어, 새 배포의 마이그레이션 포드는 GitLab Rails가 잘못된 비밀번호로 인해 데이터베이스에 연결할 수 없기 때문에 실패합니다.

개발 환경에서 비밀을 포함하여 릴리스를 완전히 삭제하려면 개발자는 비밀과 지속 볼륨 청구를 모두 제거해야 합니다.

# 프로덕션 환경에서 이 명령을 실행하지 마십시오. 재난이 발생할 것입니다.
kubectl delete secrets,pvc -lrelease=RELEASE_NAME

참고:
이는 TLS 인증서 및 데이터베이스의 모든 데이터를 포함하여 모든 Kubernetes 비밀을 삭제합니다. 프로덕션 인스턴스에서 이 작업은 수행하지 않아야 합니다.

데이터베이스가 손상되어 재설정이 필요함

개발 환경에서 데이터베이스 환경을 재설정하려면 다음을 수행합니다:

  1. PostgreSQL StatefulSet을 삭제합니다.
  2. PostgreSQL PersistentVolumeClaim을 삭제합니다.
  3. helm upgrade --install로 GitLab을 다시 배포합니다.

참고:
이는 데이터베이스의 모든 데이터를 삭제하며 프로덕션에서는 실행하지 않아야 합니다.

테스트에 사용되는 백업을 업데이트해야 함

CI의 특정 작업은 테스트 중에 GitLab 백업을 사용합니다. 필요할 때 이 백업을 업데이트하려면 아래 단계를 완료하세요:

  1. 일치하는 안정적인 브랜치에 대해 CI 파이프라인을 실행하여 원하는 백업을 생성합니다.
    1. 예를 들어: 현재 릴리스가 5-5-stable일 때 5-4-stable 브랜치의 CI 파이프라인을 실행하여 14.4의 백업을 생성합니다.
    2. 이는 Maintainer 역할이 필요합니다.
  2. 해당 파이프라인에서 QA 작업을 취소합니다(사양 테스트는 그대로 두어 백업에 추가 데이터를 얻지 않도록 합니다).
  3. 사양 테스트를 완료합니다. 이들은 이전 백업을 설치하고 원하는 버전으로 인스턴스를 마이그레이션합니다.
  4. gitlab-runner 배포 복제본을 0으로 변경하여 Runner가 꺼지게 합니다.
  5. UI에 로그인하여 관리 섹션에서 Runner를 삭제합니다. 이는 나중에 암호화 오류를 피하는 데 도움이 될 것입니다.
  6. 모든 백그라운드 마이그레이션이 완료되었는지 확인합니다, 필요시 강제로 완료합니다.
  7. 백업을 작게 유지하기 위해 기존 tmp 데이터가 없도록 toolbox Pod를 삭제합니다.
  8. 백업의 내용을 수정하기 위해 수동 작업이 필요하다면, 다음 단계로 진행하기 전에 완료합니다.
  9. 새로운 toolbox Pod에서 새 백업을 생성합니다.
  10. gitlab-backups 버킷의 CI 인스턴스에서 새 백업을 다운로드합니다.
  11. Google Cloud Storage(GCS)의 적절한 위치에 백업을 업로드합니다:
    1. 프로젝트: cloud-native-182609, 경로: gitlab-charts-ci/test-backups/
    2. 액세스를 편집하고 Entity=Public, Name=allUsers, Access=Reader를 추가합니다.
  12. 마지막으로, .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 작업을 실행하세요. 추가 사용 세부 정보는 스크립트에서 확인할 수 있습니다.