안녕하세요
이번 시간에는 AWS CodePipeline에서 다른 VPC에 있는 사내 GitLab에 연동하는 실습을 진행하겠습니다.
1. 서비스 구성 설명
현재 Account A는 레거시 환경에서 벗어나 ECS Fargate를 사용하기로 결정했습니다. 기존에는 GitLab Runner를 사용하고 있었으나 ECS Fargate를 사용하며 AWS의 코드시리즈를 사용하기로 논의된 상태입니다.
AWS CodePipeline에는 개발자 도구 > 연결에서 GitLab Self-Managed 기능을 지원하고 있는데 서로 다른 VPC 환경이기 때문에 Account A VPC와 Account B VPC는 VPC Peering, VPN, Private Link 등 내부 네트워크 통신이 되어야 합니다.
2. VPC Peering 연결하기
VPC 서비스에서 좌측 탭을 보면 [피어링 연결]이 있고 [피어링 연결 생성]을 선택합니다.
Account A에서 피어링을 생성해도 되고 Account B에서 피어링을 생성해도 상관없습니다.
다음과 같이 VPC Peering 이름을 지정한 후 내 VPC 정보와 수락할 VPC 정보를 입력합니다. 이 상태에서 생성 버튼을 눌러줍니다. 생성 버튼을 누른다고 해서 바로 피어링이 맺어지진 않습니다. 현재 Account A에서 Peering 요청을 했기 때문에 Account B에서 수락을 눌러주어야 연결됩니다.
수락을 누르면 다음과 같이 Peering 연결이 활성화된 것을 확인할 수 있습니다.
3. Routing Table 설정하기
VPC 서비스에서 좌측 탭을 보면 [라우팅 테이블]이 있습니다. 라우팅 설정을 위해 연결하고자 하는 서브넷과 연결된 라우팅 테이블을 찾습니다.
다음과 같이 Account B VPC 대역으로 라우팅을 설정해 줍니다.
4. Security Group 설정하기
Account A와 Account B 리소스 간 네트워크 통신에 방화벽이 막고 있으면 안 되기 때문에 NACL은 당연히 해당 대역에 대해 Allow 되어 있어야 하고 gitlab 연동 시 443 포트로 요청하기 때문에 443 포트에 대한 인바운드/아웃바운드가 설정되어야 합니다.
5. CodePipeLine에서 GitLab 서버 연동하기
CodePipeLine 서비스에서 좌측 탭에 [설정] - [연결]을 확인하면 다음과 같이 개발자 도구 > 연결이 보입니다. 이때 [연결 생성]을 눌러서 Account B의 GitLab 서버와 연동할 수 있습니다.
연결 생성에서 GitLab은 클라우드 호스팅 서버이기 때문에 반드시 [GitLab self-managed]를 선택해주셔야 합니다.
다음과 같이 연결 이름을 지정하고 연결할 서버의 엔드포인트를 입력합니다. [VPC 사용]을 선택해 주시고 Account A에서 연결할 VPC와 라우팅 설정한 서브넷, 그리고 위에서 설정한 보안 그룹을 넣어준 뒤 생성합니다.
그러면 GitLab 페이지 연동 페이지와 연결되고 GitLab Personal Access Token을 입력하는 화면이 나오는데 GitLab 서버 관리자 계정에서 생성해 준 PAT을 가지고 입력하면 다음과 같이 사용 가능 상태로 바뀌게 됩니다.
*주의사항) 반드시 관리자 계정으로 생성해준 PAT을 가지고만 연동이 가능합니다. 개인 계정으로 생성 시 403 에러가 발생
실습을 하면서 에러가 발생하는 경우 Cloud Trail을 통해 Connection Failed에 대한 에러를 확인할 수 있습니다.
이번 시간에는 ECS Fargate에서 코드 시리즈를 이용해 사내 GitLab 서버에 연동하기 위해서 해당 실습을 진행했습니다.
사내 GitLab 서버가 온프레미스 환경에 있다면 VPN 연결이나 DX 연결이 필요할 수 있습니다.
감사합니다.
'Cloud > Amazon Cloud' 카테고리의 다른 글
[AWS] Korea PLES GameDay 2024 Network Topology Titans 참여 후기 (0) | 2024.09.25 |
---|---|
[AWS] ECR에 이미지 올려서 ECS Fargate Redis 구성하고 접속하기 (0) | 2024.08.06 |
[AWS] Lambda를 이용한 Serverless 형태의 Slack 챗봇 사용하기 - 2 (0) | 2023.11.30 |
[AWS] EC2에서 라이브러리를 S3에 저장하여 S3 업로드로 Lambda에 적용하기 (0) | 2023.11.30 |
[AWS] Lambda에서 Timeout 걸릴 때 해결 가능한 방법 알아보기 (0) | 2023.11.30 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!