DevOps Service를 활용한 개발·검증·운영 환경 CI/CD 구축
개요
DevOps Service와 CI/CD 도구를 연계하여 개발·검증·운영 환경을 위한 빌드 및 배포 파이프라인을 구성할 수 있습니다.
이 문서에서는 GitLab(소스 코드 저장소)에 개발·검증·운영 환경별 브랜치를 생성하고, 브랜치별 빌드 및 배포 파이프라인을 구성하여 각 환경의 Kubernetes Engine에 애플리케이션을 배포하는 방법을 설명합니다.
아키텍처 다이어그램
- DevOps Service를 신청한 후 CI/CD VPC에 GitLab, Jenkins와 같은 CI/CD 도구를 구성하고 DevOps Service와 연계합니다. CI/CD 도구는 외부에서 발생하는 Git 요청과 Webhook 호출을 수신할 수 있도록 Load Balancer와 Internet Gateway를 통해 필요한 범위에서 인터넷에 공개합니다. 개발·검증·운영 환경의 Kubernetes Engine은 인터넷에 직접 노출하지 않습니다. CI/CD 도구는 VPC Peering을 통해 각 환경의 Kubernetes Engine에 사설 네트워크로 접속하여 애플리케이션을 배포합니다. CI/CD 도구가 프라이빗 서브넷에 있고 외부 소스 코드 저장소, 패키지 저장소, 컨테이너 이미지 저장소 등에 연결해야 하는 경우에는 아웃바운드 통신을 위해 NAT Gateway를 사용합니다.
- 개발자는 작업 브랜치(예:
dev-feature-1)에 소스 코드를 푸시한 후 개발 환경에 배포하기 위해 개발 브랜치(예:dev)로 병합 요청(Pull Request 또는 Merge Request)을 생성합니다. 코드 리뷰가 완료되면 작업 브랜치의 소스 코드를 개발 브랜치에 병합합니다. - 소스 코드가 개발 브랜치에 병합되면 CI/CD 파이프라인이 실행되어 소스 코드 체크아웃, 애플리케이션 빌드, 컨테이너 이미지 생성을 순서대로 수행합니다.
- 생성된 컨테이너 이미지를 Container Registry에 푸시합니다.
- 개발 브랜치에서 생성한 컨테이너 이미지를 개발 환경의 Kubernetes Engine에 배포하고 결과를 확인합니다.
- 개발 환경에서 배포 결과를 확인한 후 검증 브랜치(예:
stage)를 대상으로 2~5단계와 동일한 절차를 수행하여 검증 환경에 애플리케이션을 배포합니다. - 검증 환경에서 배포 결과를 확인한 후 운영 브랜치(예:
prod)를 대상으로 2~5단계와 동일한 절차를 수행하여 운영 환경에 애플리케이션을 배포합니다.
사용 사례
환경 분리를 통한 보안성과 운영 안정성 강화
CI/CD 환경과 개발·검증·운영 환경을 각각 별도의 VPC로 분리하여 환경 간 장애와 보안 위협의 확산을 방지합니다. 또한 운영 환경에 대한 불필요한 접근을 최소화하여 안정적으로 서비스를 운영할 수 있습니다.
CI/CD 중심의 안전하고 일관된 배포 체계
CI/CD VPC와 각 환경의 VPC를 VPC Peering으로 연결하여 배포 트래픽이 인터넷을 거치지 않도록 구성할 수 있습니다. 배포 경로를 CI/CD 파이프라인으로 일원화하여 개발부터 운영까지 일관된 배포 절차와 통제 체계를 적용할 수 있습니다.
선결 사항
없음
제약 사항
- Jenkins와 GitLab은 관리형 서비스가 아니므로 사용자가 직접 설치하고 구성·운영해야 합니다. 버전 관리, 보안 패치, 백업, 가용성 관리 및 장애 대응은 사용자 책임입니다.
- 기존에 사용하던 GitLab은 DevOps Console에 등록하여 계속 사용할 수 있습니다.
- 기존에 사용하던 Jenkins는 DevOps Console에 등록할 수 없거나, 등록 후 연계 과정에서 오류가 발생할 수 있습니다. DevOps Console의 기능을 안정적으로 사용하려면 Jenkins를 신규로 설치하여 등록하는 것을 권장합니다.
고려 사항
- CI/CD 도구의 외부 공개 지점은 Load Balancer로 한정하고 허용 IP 주소, 포트, 인증 정책을 최소 권한 원칙에 따라 설정합니다.
- 개발·검증·운영 환경의 Kubernetes API 서버는 인터넷에서 직접 접근할 수 없도록 구성합니다.
- CI/CD VPC와 각 환경 VPC 간 배포 통신은 VPC Peering 및 보안 정책을 통해서만 허용합니다.
- NAT Gateway는 CI/CD 도구에서 외부 서비스로 향하는 아웃바운드 통신에 사용하고, 외부에서 CI/CD 도구로 들어오는 인바운드 통신은 Load Balancer를 통해 처리합니다.
관련 서비스
본 가이드에서 설명하는 기능 또는 구성과 관련된 Samsung Cloud Platform 서비스 목록입니다. 서비스 선택 및 설계 시 참고하세요.
| 서비스군 | 서비스 | 상세 설명 |
|---|---|---|
| DevOps Tools | DevOps Service | 개발 환경을 쉽게 구성하고 빌드와 배포를 간소화하는 서비스 |
| Container | Kubernetes Engine | Kubernetes 컨테이너 오케스트레이션 서비스 |
| Container | Container Registry | 컨테이너 이미지를 손쉽게 저장, 관리, 공유하는 서비스 |
| Networking | VPC | 클라우드 환경에서 독립된 가상 네트워크를 제공하는 서비스 |
| Networking | Load Balancer | 서버 트래픽 부하를 자동으로 분산하는 서비스 |
표. 관련 서비스 목록
