DevOps Service를 활용하기 위한 CI/CD 도구 환경 구성
개요
DevOps Service는 애플리케이션의 빌드·테스트·배포 프로세스를 자동화하여 개발 생산성을 높입니다. 또한 소스 코드 이력 관리와 코드 검증을 지원하는 CI/CD 도구를 연계하여 코드 품질을 향상할 수 있습니다.
사용자는 Samsung Cloud Platform 또는 온프레미스에 CI/CD 도구를 설치하고 DevOps Service와 연계하여 환경 요구 사항에 맞는 CI/CD 파이프라인을 구성할 수 있습니다.
아키텍처 다이어그램
Samsung Cloud Platform에 CI/CD 도구 설치
- 마켓플레이스를 통해 Jenkins를 설치합니다.
- 마켓플레이스를 통해 GitLab(소스 코드 저장소)을 설치합니다.
- Container Registry를 신청하여 CI/CD 파이프라인에서 생성하는 애플리케이션 컨테이너 이미지를 저장합니다.
- DevOps Console에 Jenkins, GitLab, Kubernetes Engine, Container Registry를 등록합니다.
- DevOps Console에서 CI/CD 도구로 접근하는 인바운드 통신에는 Internet Gateway와 Load Balancer를 사용하고, CI/CD 도구에서 DevOps Console 또는 외부 서비스로 연결하는 아웃바운드 통신에는 NAT Gateway를 사용합니다.
- DevOps Console에 등록한 CI/CD 도구를 활용하여 애플리케이션의 빌드·테스트·배포를 자동화하는 CI/CD 파이프라인을 생성합니다.
- 생성한 CI/CD 파이프라인을 사용하여 변경된 애플리케이션을 지속적으로 빌드·테스트·배포합니다.
온프레미스에 CI/CD 도구 설치
- 온프레미스 환경에 Jenkins를 설치합니다.
- 온프레미스 환경에 GitHub Enterprise Server(소스 코드 저장소)를 설치합니다.
- 온프레미스 환경에 Harbor(이미지 레지스트리)를 설치하고 CI/CD 파이프라인에서 생성하는 애플리케이션 컨테이너 이미지를 저장합니다.
- Samsung Cloud Platform의 Kubernetes Engine이 온프레미스 환경의 Harbor에서 컨테이너 이미지를 가져올 수 있도록 Direct Connect를 신청하여 온프레미스 환경과 Kubernetes Engine이 속한 VPC를 연결합니다.
- Direct Connect를 통한 Harbor 접근 경로와 별도로, 온프레미스의 CI/CD 도구가 DevOps Console과 통신할 수 있도록 Samsung Cloud Platform의 Public Endpoint에 연결되는 네트워크 경로를 구성합니다.
- DevOps Console에 Jenkins, GitHub Enterprise Server, Kubernetes Engine, Harbor를 등록합니다.
- DevOps Console에 등록한 CI/CD 도구를 활용하여 애플리케이션의 빌드·테스트·배포를 자동화하는 CI/CD 파이프라인을 생성합니다.
- 생성한 CI/CD 파이프라인을 사용하여 변경된 애플리케이션을 지속적으로 빌드·테스트·배포합니다.
사용 사례
환경 요구 사항에 따른 유연한 CI/CD 도구 구성
조직의 보안, 네트워크 및 운영 정책에 따라 Jenkins, 소스 코드 저장소, 이미지 레지스트리 등의 CI/CD 도구를 Samsung Cloud Platform 또는 온프레미스에 구성할 수 있습니다. 기존 온프레미스 CI/CD 도구를 유지하면서 Kubernetes Engine과 연계할 수 있어 기존 도구와 운영 체계를 계속 활용할 수 있습니다.
CI/CD 도구 통합을 통한 빌드 및 배포 자동화
DevOps Console에 소스 코드 저장소, 빌드 도구, 이미지 레지스트리 및 배포 대상을 등록하여 CI/CD 파이프라인을 통합 구성할 수 있습니다. 소스 코드 변경부터 빌드·테스트·배포까지 반복되는 작업을 자동화하여 수동 작업을 줄이고 일관된 배포 절차를 적용할 수 있습니다.
선결 사항
없음
제약 사항
- Jenkins, GitLab, GitHub Enterprise Server, Harbor는 관리형 서비스가 아니므로 사용자가 직접 설치하고 구성·운영해야 합니다. 버전 관리, 보안 패치, 백업, 가용성 관리 및 장애 대응은 사용자 책임입니다.
- 기존에 사용하던 GitLab, GitHub Enterprise Server 및 Harbor는 DevOps Console에 등록하여 계속 사용할 수 있습니다.
- 기존에 사용하던 Jenkins는 DevOps Console에 등록할 수 없거나, 등록 후 연계 과정에서 오류가 발생할 수 있습니다. DevOps Console의 기능을 안정적으로 사용하려면 Jenkins를 신규로 설치하여 등록하는 것을 권장합니다.
고려 사항
DevOps Console과 CI/CD 도구의 연결
DevOps Console에 CI/CD 도구를 등록하려면 DevOps Console과 각 도구가 필요한 방향으로 통신할 수 있도록 네트워크 경로를 구성해야 합니다. 인터넷에 공개하는 엔드포인트는 필요한 IP 주소와 포트만 허용하도록 제한합니다.
- CI/CD 도구가 Samsung Cloud Platform에 설치되어 있다면, 외부 인바운드 통신에는 Internet Gateway와 Load Balancer를 사용하고 아웃바운드 통신에는 NAT Gateway를 사용합니다.
- CI/CD 도구가 온프레미스에 설치되어 있다면, 온프레미스 네트워크에서 Samsung Cloud Platform의 Public Endpoint에 접근할 수 있도록 네트워크 및 방화벽 정책을 구성합니다.
온프레미스와 Samsung Cloud Platform 연결
- 온프레미스에 설치된 CI/CD 도구를 Samsung Cloud Platform의 Kubernetes Engine과 연결하려면 Direct Connect를 신청해야 합니다.
- Kubernetes Engine을 신청할 때 사용하는 VPC의 서브넷 IP 주소 대역이 고객 네트워크의 IP 주소 대역과 겹치지 않도록 설정해야 합니다.
- Kubernetes Engine의 노드 풀에서 고객 온프레미스의 Container Registry에 연결할 수 있도록 VPC 방화벽과 Security Group 규칙을 구성해야 합니다.
관련 서비스
본 가이드에서 설명하는 기능 또는 구성과 연결되는 Samsung Cloud Platform의 서비스 목록입니다. 서비스 선택 및 설계 시에 참고하세요.
| 서비스군 | 서비스 | 상세 설명 |
|---|---|---|
| DevOps Tools | DevOps Service | 개발 환경을 쉽게 구성하고 빌드와 배포를 간소화하는 서비스 |
| Container | Kubernetes Engine | Kubernetes 컨테이너 오케스트레이션 서비스 |
| Container | Container Registry | 컨테이너 이미지를 손쉽게 저장, 관리, 공유하는 서비스 |
| Networking | VPC | 클라우드 환경에서 독립된 가상 네트워크를 제공하는 서비스 |
| Networking | Security Group | VM의 트래픽을 제어하는 가상 방화벽 |
| Networking | Load Balancer | 서버 트래픽 부하를 자동으로 분산하는 서비스 |
| Networking | Direct Connect | 고객 네트워크와 Samsung Cloud Platform을 안전하고 빠르게 연결하는 서비스 |

