icon

DevOps Service를 활용한 개발·검증·운영 환경 CI/CD 구축

DevOps Service를 활용한 개발·검증·운영 환경 CI/CD 구축

개요

DevOps Service와 CI/CD 도구를 연계하여 개발·검증·운영 환경을 위한 빌드 및 배포 파이프라인을 구성할 수 있습니다.

이 문서에서는 GitLab(소스 코드 저장소)에 개발·검증·운영 환경별 브랜치를 생성하고, 브랜치별 빌드 및 배포 파이프라인을 구성하여 각 환경의 Kubernetes Engine에 애플리케이션을 배포하는 방법을 설명합니다.

아키텍처 다이어그램

DevOps 아키텍처
그림. DevOps Service를 활용한 개발·검증·운영 환경 구성 아키텍처
  1. 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를 사용합니다.
  2. 개발자는 작업 브랜치(예: dev-feature-1)에 소스 코드를 푸시한 후 개발 환경에 배포하기 위해 개발 브랜치(예: dev)로 병합 요청(Pull Request 또는 Merge Request)을 생성합니다. 코드 리뷰가 완료되면 작업 브랜치의 소스 코드를 개발 브랜치에 병합합니다.
  3. 소스 코드가 개발 브랜치에 병합되면 CI/CD 파이프라인이 실행되어 소스 코드 체크아웃, 애플리케이션 빌드, 컨테이너 이미지 생성을 순서대로 수행합니다.
  4. 생성된 컨테이너 이미지를 Container Registry에 푸시합니다.
  5. 개발 브랜치에서 생성한 컨테이너 이미지를 개발 환경의 Kubernetes Engine에 배포하고 결과를 확인합니다.
  6. 개발 환경에서 배포 결과를 확인한 후 검증 브랜치(예: stage)를 대상으로 2~5단계와 동일한 절차를 수행하여 검증 환경에 애플리케이션을 배포합니다.
  7. 검증 환경에서 배포 결과를 확인한 후 운영 브랜치(예: 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 ToolsDevOps Service개발 환경을 쉽게 구성하고 빌드와 배포를 간소화하는 서비스
ContainerKubernetes EngineKubernetes 컨테이너 오케스트레이션 서비스
ContainerContainer Registry컨테이너 이미지를 손쉽게 저장, 관리, 공유하는 서비스
NetworkingVPC클라우드 환경에서 독립된 가상 네트워크를 제공하는 서비스
NetworkingLoad Balancer서버 트래픽 부하를 자동으로 분산하는 서비스
표. 관련 서비스 목록