Offline 환경에서 GitLab 환경 구성 이슈
Ultimate 라이선스 이용시 사용해야 할 스캐닝 기능
NodeJs 로 Project 를 생성, pipeline 테스트를 진행했을 때의 내용입니다.
GitLab | Ref. template | Stage | Comment |
---|---|---|---|
Build | Jobs/Build.gitlab-ci.yml | build |
|
Build Test | Jobs/Test.gitlab-ci.yml | test |
|
Code Quality | Jobs/Code-Quality.gitlab-ci.yml | test |
|
Deploy | Jobs/Deploy.gitlab-ci.yml | review, cleanup, staging, canary etc |
|
Jobs/Deploy/ECS.gitlab-ci.yml | review | ||
Browser Performance | Jobs/Browser-Performance-Testing.gitlab-ci.yml | performance |
|
Dynamic Application Security Testing (DAST) | Jobs/DAST-Default-Branch-Deploy.gitlab-ci.yml | review, cleanup |
|
Security/DAST.gitlab-ci.yml | dast |
| |
Container Scanning | Security/Container-Scanning.gitlab-ci.yml | test |
|
Dependency List Dependency Scanning | Security/Dependency-Scanning.gitlab-ci.yml | test |
|
License Compliance | Security/License-Scanning.gitlab-ci.yml | test |
|
Static Application Security Testing (SAST) | Security/SAST.gitlab-ci.yml | test |
|
Application Security | Security/Secret-Detection.gitlab-ci.yml | test |
|
이슈 사항
GitLab을 인터넷 연결이 안되는 내부망 내에서 사용하기 위해 다음과 같은 환경을 구성했습니다.
GitLab의 Container Registry를 비활성화
사설 Docker Registry(Harbor)를 설치 후 필요한 도커 이미지를 모두 push함
이러한 환경에 대한 GitLab의 조언을 구했을 때 일반적인 Offline 환경에서도 가능하다는 답변을 받았습니다.(169739번 request)
환경 구성 후 NodeJS로 단순한 GitLab 프로젝트를 구성 후 실행하면 다음과 같은 결과가 있었습니다.
인터넷 연결 시 : 파이프라인의 모든 job 성공
인터넷 연결 해제 시 : 대부분의 job이 실패
위의 결과에 대해 GitLab Support Center에 재문의를 하였고(169739 request), 다음과 같은 답변을 받았습니다.
프로젝트에서 구성된 파이프 라인의 종속성이 있을 경우, 일부 단계가 실패할 수 있음
예를 들어 codeclimate/codeclimate:0.85.10가 harbor에 있음에도 로컬에서 사용할 수 없어 공식 Docker 저장소에 fullback을 시도 → 인테넛 액세스 불가로 작업 실패
일부 CI 작업의 경우 현재 오프라인 사용에 대한 지원이 제한됨 (https://gitlab.com/gitlab-org/ci-cd/codequality/-/merge_requests/13)
위의 내용과 관련된 이슈를 담당자 분께 전달했고, local 환경에서 사용할 수 있는 방안에 대한 확인 요청을 받았습니다. 만약 위의 이슈가 해결되지 않는다면 GitLab Ultimate을 사용할 수 없는 상황입니다.
세부적인 요구 사항은 다음과 같습니다.
GitLab의 사용 환경은 Offline 환경이며, 별도의 Docker Registry를 구성하여 사용할 예정
GitLab Auto DevOps에서 제공하는 모든 Scanning 및 검사 기능을 별도의 파이프라인에 구성하여 전체 기능을 사용해야 함
특히 GitLab 프로젝트는 아래의 3가지 유형으로 구성될 예정이며 각 언어에 맞는 GitLab scanner 및 도커 이미지가 Offline 환경에서 동작해야 함
Java (Maven) Project
Python (PyPI) Project
NodeJS (NPM) Project
위 3가지 종류의 프로젝트가 Offline 환경에서, GitLab이 제공하는 scanning 및 검사 기능을 모두 활용할 수 있어야 함
이에 대한 환경 구성 가이드가 절대적으로 필요함