GitLab 차트 개발 환경의 Troubleshooting

여기서 기술된 모든 단계는 개발 환경에만 해당됩니다. 관리자들은 정보를 유익하게 여길 수 있지만, 기술된 수정 사항은 파괴적이며 프로덕션 시스템에 중대한 부정적인 영향을 미칠 수 있습니다.

비밀번호 및 비밀값의 실패 또는 비동기화

개발자들은 주로 동일한 클러스터로 반복해서 릴리스를 배포, 삭제 및 재배포합니다. StatefulSets에 의해 생성된 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. 매칭되는 stable 브랜치에 대한 CI 파이프라인을 실행하여 원하는 백업을 생성합니다.
    1. 예: 현재 릴리스가 5-5-stable인 경우 브랜치 5-4-stable에 대한 CI 파이프라인을 실행하여 14.4의 백업을 생성합니다.
    2. 유지자 역할이 필요하다는 점을 유의하십시오.
  2. 해당 파이프라인에서 QA 작업을 취소합니다(단, 스펙 테스트는 남깁니다)하여 백업에 추가 데이터가 포함되지 않도록 합니다.
  3. 스펙 테스트가 완료될 때까지 기다립니다. 이 작업에서는 이전 백업이 설치되고 우리가 원하는 버전으로 인스턴스가 마이그레이션됩니다.
  4. gitlab-runner 배포 복제본을 0으로 설정하여 Runner를 중지합니다.
  5. UI에 로그인하여 관리자 섹션에서 Runner를 삭제합니다. 이렇게 하면 나중에 암호화 오류를 방지하는 데 도움이 될 것입니다.
  6. 백그라운드 마이그레이션이 모두 완료되었는지 확인하고 필요한 경우 완료하도록 합니다.
  7. 백업을 작은 크기로 유지하기 위해 toolbox Pod를 삭제합니다.
  8. 백업 내용을 수정하는 데 수동 작업이 필요한 경우, 다음 단계로 진행하기 전에 작업을 완료하세요.
  9. 새로운 toolbox Pod에서 새 백업을 생성합니다.
  10. gitlab-backups 버킷의 MinIO 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 차트의 설치를 제거할 수 있는지 확인하는 것입니다.

일반적으로 설치는 파이프라인의 Review Apps 로직에 의해 자동적으로 정리되지만, 다양한 이유로 실패할 수 있습니다. 더 자세한 내용은 다음 이슈들을 참조하세요:

임시방편으로, 연관된 stop_review 작업을 CI에서 실행하여 이러한 설치를 수동으로 삭제할 수 있습니다. 이 작업을 더 간단하게 만들기 위해 helm_ci_triage.sh 스크립트를 사용하여 실행 중인 설치 목록을 가져오고 연관된 파이프라인을 열어 stop_review 작업을 실행하세요. 스크립트에서 추가 사용법을 확인할 수 있습니다.