본문 바로가기

AWS

[AWS] GitLab Self-Managed와 AWS CodeBuild 연동

 

0. 개요

기업에서는 보안성을 위해 내부에서 운영하는 자체 관리형 Gitlab 을 사용하는 경우가 있습니다. 이번 포스팅에서는 GitLab Self-Managed 저장소와 AWS의 CodeSeries 연동을 위해 AWS 개발자 도구에서 '연결'을 생성하는 구체적인 방법에 대해 작성하겠습니다. 

 

 

 

1. Gitlab Self managed (사내 깃랩)과 AWS Codebuild 연동

[AWS 가이드]

Connections for GitLab self-managed - AWS CodePipeline

 

Connections for GitLab self-managed - AWS CodePipeline

This feature is not available in the Asia Pacific (Hong Kong), Asia Pacific (Hyderabad), Asia Pacific (Jakarta), Asia Pacific (Melbourne), Asia Pacific (Osaka), Africa (Cape Town), Middle East (Bahrain), Middle East (UAE), Europe (Spain), Europe (Zurich),

docs.aws.amazon.com

 

1-1. 개발자 도구 - '연결' 생성

[AWS 콘솔] > [개발자도구] > [설정] > [연결] > [연결 생성]

 

    - '연결 생성'에서 공급자를 Gitlab self-managed 로 선택합니다.

 

- VPC 연결 옵션을 통해 내부망에서만 접근할 수 있도록 설정할 수 있으며, 일반적으로 private subnet을 선택합니다.

✅ 설정 정보
   - 공급자 선택 : Gitlab self-managed
   - URL : 예시) https://git.company.net (사내 깃랩 URL)
   - 네트워크 설정
       - VPC 사용 (=CodeBuild 프로젝트가 실행될 때 사용할 네트워크)
       - 예시 설정)
              - VPC ID :  VPC 선택
              - 서브넷 ID : private-a 서브넷 선택
              - 보안그룹 ID : default

→  Gitlab self-managed 연결 생성 

 

 

 

1-2. 호스트 설정 및 인증

❓ "호스트(host)"란?
GitLab Self-managed 인스턴스(예: https://git.company.net)를 AWS 측에서 신뢰할 수 있는 외부 Git 서버로 등록하는 개념입니다.

     - AWS에서는 사내 GitLab을 하나의 Git 서버 호스트(host) 로 인식하고, 해당 호스트에 대한 접근과 인증 정보를 저장합니다.
     - 인증 토큰을 통해 GitLab 호스트의 유효성을 확인하고, 이후 GitLab과의 안전한 연결을 가능하게 합니다.
     - 이 작업이 완료되어야 CodeBuild가 GitLab 저장소에 접근할 수 있습니다!!

 

[AWS 콘솔] > [개발자도구] > [설정] > [연결] > ⚡ [호스트]

 

호스트의 현재 상태 : 보류 중

 

 

A. gitlab.company.net 호스트 선택 후 ‘호스트 설정’ 클릭

B. Gitlab 개인 엑세스 토큰 입력하여 인증

 

 여기에 입력할 Gitlab Access Token 이 필요합니다!

- 이 토큰은 AWS 에서가 아니라 사내 깃랩에서 발급하는 토큰입니다. 깃랩 페이지에서 해야 된다는 말. 

 

보통 PAT 라고 하는데 이때의 PAT 는 Personal Access Token  (개인 엑세스 토큰) 입니다. 

깃랩에서는 Project Access Token 도 발급 받을 수 있는데, 이와는 다른 토큰이니 헷갈리지 말도록 합시다.

 

🚨 토큰 발급 시 주의사항
- api 권한만 가지도록 토큰을 발급합니다. 
- 엔드포인트가 git.company.net 이기 때문에 루트 계정의 엑세스 토큰이 필요합니다. 개인 계정에서 발급받은 토큰은 유효하지 않다는 사실. 계정 관리자에게 요청합시다. 

 


다시 AWS 콘솔로 돌아와 PAT 를 입력하고 계속 버튼을 누르면, Gitlab 호스트가 인증되고 연결이 생성 완료됩니다.

 

호스트 인증 완료 상태 : 사용 가능으로 바뀜

 

 

 

 

1-3. '연결' 업데이트

[개발자도구] > [설정] > [연결] > [연결]

 

연결 현재 상태 : 보류중

 

아직 깃랩의 인증 절차가 완료되지 않았기 때문에 CodeBuild 등에서 소스로 사용할 수 없습니다. 

사용자가 직접 깃랩에 로그인하는 승인 절차를 거치며 연결을 완성하는 단계입니다.

 

  1. ‘보류 중인 업데이트’ 클릭
  2. 팝업 창에서 사내 깃랩 로그인
  3. 로그인 완료 후

연결 업데이트 완료 상태 : 사용 가능 으로 변경

 

 

🚩 이제 AWS CodeSerise 에서 소스로 자체관리형 Gitlab을 사용할 수 있게 되었습니다.

 

 

 

2. 참고 사항

1-2. 의 호스트 인증

1-3. 의 연결 인증에 대해 헷갈릴 수 있어 간단히 정리해보겠습니다.

 

 

1. '호스트 인증' : 

AWS에게 "이 GitLab 서버는 신뢰할 수 있는 서버입니다"라고 알려주는 것

방식 : GitLab의 호스트 URL (예: https://git.company.net)에 대한 개인 엑세스 토큰을 발급받아 인증하는 것.

 GitLab 인스턴스 자체에 대한 등록

→ AWS 가 Gitlab 서버와 통신할 수 있는 환경이 만들어지며, 호스트 등록이 되어야 그 위에 '연결'을 생성할 수 있음

 

 

2. '연결 인증' : 

 GitLab 서버 안의 "특정 사용자 계정" 을 통해, AWS가 레포지토리 접근 권한을 위임받는 과정


"누구"가 사용할지 결정하고, 그 사람의 권한으로 연동

 

방식 : 사용자가 직접 GitLab 로그인 팝업에 로그인

→ OAuth 인증을 통해 사용자 계정의 권한을 AWS에 위임

→ AWS CodePipeline, CodeBuild 등에서 이 연결을 소스로 사용할 수 있는 것

 

 

 

 

3. 마무리

이번 글에서는 사내 GitLab (Self-managed GitLab)AWS CodeBuild 와 연동하여, CI/CD 파이프라인에서 GitLab을 소스 저장소로 활용하는 방법을 핸즈온 해봤습니다.

 

간단해보이지만 연동을 위해 Gitlab 토큰 발급과 로그인과 같은 이중 인증 절차에 대한 이해가 필요했어서 블로그 글을 작성해보았습니다.

 

감사합니다.