NCP를 사용하면서 CI/CD 를 NCP안에서 구축할 수 있었습니다. 그럼 뭘 사용했고 어떻게 사용했는지 정리해보겠습니다.
저는 크게 [Source Commit] => [Source Build] => [Source Deploy] 를 통해 CI/CD 을 구축했고 이를 [Source Pipeline]을 통해 pipeline 을 구축했습니다. 아래는 제가 구축했던 파이프라인의 구조도입니다.
1. Source Commit
Source Commit 은 naver 에서 제공하는 private git 입니다. 이를 통해서 코드 관리를 보다 편하게 할 수 있었습니다.
1) Source Commit 생성
- [리포지토리 생성] 클릭
- [기본 정보] 입력하고 계속 [다음] 버튼을 누르면 생성됩니다.
2)Source Commit 에 code push /pull 하기
- 크게 2가지 방식이 있는데 https 나 SSH 을 활용하기
https 을 활용하는 방식은 sub account 로 접속한뒤 비밀번호를 설정한뒤 적용하면 됩니다.
하고 생성한 레포지토리에서 git clone 을 할때 아이디 비번을 입력하라고 하면 설정해놓은 아이디 비번을 활용해 사용하면 됩니다.
서버에서 SSH-Keygen을 이용하여 Public key 를 생성한 후 해당 퍼블릭 키를 SSH 설정에 등록하면 등록된 SSH public key 에 해당 키가 설정됩니다. 사용방법은 windows 에서 사용중이시면 git bash 를 활용해서 ssh-keygen을 명령어를 입력하고 .ssh가 저장되있는 폴더로 위치를 파악해 위치만 지정해주면 됩니다.
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/SourceCommit/.ssh/id_rsa): /Users/USER/.ssh/id_sourcecommit
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/USER/.ssh/id_sourcecommit.
Your public key has been saved in /Users/USER/.ssh/id_sourcecommit.pub.
The key fingerprint is:
SHA256:oHdc0iQA7I25CvtEwmgzBHIalk67UgKHyygw0fihDl8 USER@0000000000
The key's randomart image is:
+---[RSA 2048]----+
| o++o*. |
| .*oX.+ |
| .*.O.+. . |
| .=.o+.= |
| SooBo* . |
| ..+o+ +.o|
| E .+o|
| . =o|
| o.=|
+----[SHA256]-----+
Bash
아래와 같이 뜨면
cat /Users/USER/.ssh/id_sourcecommit.pub |
을 입력하면 아래 key값이 나오는데 이를 복사해서 위에 나오는 SSH-퍼블릭 키를 등록하고 나면 SSH 키 값이 생성됩니다.
그럼 이를 복사해서
$ vi ~/.ssh/config
Host devtools.ncloud.com
User [콘솔에 등록된 SSH 키 값]
IdentityFile ~/.ssh/id_sourcecommit
을 통해 사용할 수 있습니다.
이를 통해 git push를 하면 됩니다.https 로 하시면 https 에 있는 public URL 을 통해 접근하면 되고 SSH 방식을 활용하면 SSH 에 있는 URL 을 통해 접근 할 수 있습니다.
git 명령어는 원래 push 하는 방식이나 clone 하는 방식과 같습니다. 하시다가 혹시 오류가 나시면
git remote add origin https://[아이디]:[비번]@devtools.ncloud.com/[https주소뒷부분].git
을 활용해서 저는 오류를 해결했던 경험이 있습니다.
2.Source Build
Source build 는 네이버에서 제공하는 소스 코드를 빌드하고 패키징할 수 있는 서비스입니다.Source Commit 에 있는 Dockerfile 을 통해 자체 빌드 서버를 구축할 필요가 없고, 동시에 여러 빌드를 수행할 수 있습니다.이를 활용하기 전에 Object Storage 와 Container Registry 를 미리 구축해놓으면 편합니다.
1)SourceBuild 생성
-[빌드 프로젝트 생성]
-[다음] 클릭
- 기본설정 입력 => 여기서 중요한건 [빌드 대상]에서 Source Commit 에 배포한 리포지토리와 브랜치를 알고 있어야합니다.
- [Container Registry의 이미지] 로 변경하고 미리 생성해둔 Container Registry 에 레지스트리를 클릭하고 이미지이름과 태그를 선택하고 [도커 이미지 빌드] 하는 부분에 체크를 하고 그 이후 컴퓨팅 유형은 자유롭게 해주시고 환경변수 등록 하실꺼 있으면 등록하시고 넘어갑니다.
-빌드 전 명령어 및 빌드 명령어 빌드후 명령어가 필요하시면 설정해놓고 [도커 이미지 빌드 설정]에 사용을 하면 Dockerfile 경로를 선택할 수 있습니다. 설정한 후 Container Registry와 이미지 이름/태그를 설정하고 [다음]을 누르시면 설정은 완료됩니다.
2)Source Build 사용법
위에 같이 생성하시면 [프로젝트이름] 에 설정해두신 이름이 뜨실텐데 이를 클릭하시고 [빌드 시작하기]를 누르시면 빌드가 시작됩니다. 빌드가 제대로 되고 있는지는 [작업결과]를 통해 확인하실 수 있습니다. 여기서 로그를 통해 오류를 확인하거나 제대로 빌드되고 있는지 파악할 수 있습니다.
3. Source Deploy
SourceDeploy 는 자동화 배포 프로세스를 제공하는 배포 서비스입니다. 이를 통해 소스 배포 및 실행, 검증 자동화를 통해 배포 소요시간을 줄일 수 있습니다. 저같은 경우는 Naver Kubernetes Service 에 등록되있는 서비스를 통해 서비스를 하고 있는데요. 미리 작성해둔 yaml 파일이 있으셔야 배포가 가능합니다. Kubernetes Service 를 기준으로 정리하겠습니다.
1)SourceDeploy 생성
-[배포 프로젝트 생성] 클릭
-[프로젝트 이름] 설정
- [배포 stage]에 사용하시는 stage 를 확인하고 stage 에 [설정] 하고 배포 타겟은[ Ncloud Kubernetes Service] 와 생성된 Cluster 를 클릭하시고 [다음] 누르시면 생성됩니다.
2) Source Deploy 사용법
-직전에 생성한 프로젝트이름 옆 버튼을 누르면 아래와 같이 뜨는데 [배포 시나리오] 아래 있는 [생성] 버튼 클릭
- 기본설정하시고 [다음] 버튼을 클릭하시면 아래와 같은 창이 뜨는데 SourceCommit 에 코드를 배포 하셨으면 여기에 있는 리포지토리를 설정하시고 파일경로는 [yaml파일이름].yaml을 작성해주시고 [추가버튼]을 누르고 넘어가면 됩니다
- 하면 배포 전략에 따라 3가지 버튼이 뜹니다.
각각에 대해 가볍게 설명하면
Rolling:인스턴스를 점진적으로 교체하며 배포
블루/그린: 두 환경을 운영하여 전환하며 배포
Canary: 일부 트래픽만 새 버전에 할당하여 점진적 배포
로 무중단 배포를 위한겁니다. 이거에 대한 자세한 얘기는 Kubernetes 정리할때 정리하겠습니다.
이를 통해 Source Deploy 까지 완성할 수 있습니다. 마지막으로 pipeline까지 활용해 완벽한 CI/CD 를 구축할 수 있습니다.
4.Sourcepipeline
위에 있는 Source Build 와 Source Deploy 에서 별다른 오류가 없었다면 pipeline 을 생성하는데는 전혀 문제가 없습니다.
1)Source Pipeline 생성
-기본설정을 해주시고 넘어가시면 아래 창이 뜨는데 [작업 추가]를 클릭
- 위에서 만든Build 와 Deploy 를 활용해 작업설정을해주시고 [확인]버튼을 클릭
- 하시면 왼쪽에 + 버튼 을 통해 선행작업을 정리하고 트리거 설정에 push 를 설정해놓으시면 Push 하실때마다 자동적으로 실행되는 pipeline 이 구축됩니다.
이를 통해 NCP 에 제공하는 서비스를 활용해 CI/CD 를 구축할 수 있었습니다. NCP 의 최대 강점은 Document 가 한글로 작성 되있어서 보기 편한게 장점입니다.
'Study > Naver Cloud Platform' 카테고리의 다른 글
NCP활용하기(4)- NKS 로 배포한 웹서버 배포를 도메인 구매 및 연결, SSL 인증서 적용하기 (0) | 2024.10.29 |
---|---|
NCP 활용하기(3) - NKS 구축 및 활용 (Next.js , SpringBoot) (0) | 2024.10.29 |
NCP(Naver Cloud Platform)활용하기 (1) - VPC, Subnet (0) | 2024.10.26 |