사용하기 전에

Q. SourceDeploy는 무엇인가요?

  • SourceDeploy는 새로 작성되거나 업데이트된 소스들을 자동으로 서버에 배포하고 적용해주는 배포 자동화 서비스입니다.
  • SourceDeploy는 미리 설정된 사용자 기반 명령어들을 통해 소스 배포, 실행 및 검증을 자동화할 수 있고 배포 중 서비스 중단 시간을 최소화할 수 있습니다.
  • SourceDeploy는 배포 실행 관리자를 통해 배포 실행을 제어하여 필수적으로 필요한 배포만 적용하여 서비스의 품질을 보장할 수 있습니다.

Q. SourceDeploy의 사용 절차는 어떻게 되나요?

devtools-4-1-101

  1. 배포 프로젝트 생성: 콘솔의 Dev Tools > SourceDeploy에서 새로운 배포 프로젝트를 생성합니다.
  2. 에이전트 설치: 배포하고자 하는 타겟 서버에 SourceDeploy용 에이전트를 설치합니다.
  3. 배포 시나리오 생성: 배포할 파일과 명령어를 설정할 수 있는 배포 시나리오를 생성합니다.
  4. 배포 실행: 생성된 프로젝트를 클릭하여 배포 실행 페이지에서 배포를 실행합니다.

Q. SourceDeploy용 에이전트는 필수로 설치되어야 하나요?

SourceDeploy를 사용하기 위해서는 배포하고자 하는 타겟 서버에 SourceDeploy용 에이전트가 필수로 설치되어야 합니다. 에이전트를 설치하는 방법은 다음 링크를 통해 확인하세요.(에이전트 설치 가이드 바로 가기)

Q. SourceDeploy가 지원하는 배포 환경은 무엇인가요?

SourceDeploy는 네이버 클라우드 플랫폼에서 생성한 서버, Auto Scaling, Kubernetes를 대상으로 배포를 지원합니다. 따라서 SourceDeploy를 사용하기 위해서는 사전에 서버, Auto Scaling Group, Kubernetes가 생성되어 있어야 합니다.

또한, CentOS, Ubuntu 이미지 타입을 지원합니다. 좀 더 자세한 사항은 에이전트 설치 가이드에서 확인해 주세요.

참고: 네이버 클라우드 플랫폼 Secure Zone 내에 생성된 서버는 SourceDeploy를 통해 배포할 수 없습니다.

Q. 생성한 배포 프로젝트는 어디서 확인할 수 있나요?

SourceDeploy에서 생성한 배포 프로젝트는 네이버 클라우드 플랫폼 콘솔에서 확인할 수 있습니다.

  • 배포 프로젝트 및 배포 스테이지, 배포 시나리오를 생성하고 변경 및 삭제할 수 있습니다.
  • 배포 프로젝트를 사용할 서브 계정을 추가하고 권한을 변경할 수 있니다.
  • 배포를 실행할 수 있습니다.
  • 배포 히스토리와 배포 로그를 확인할 수 있습니다.

SourceDeploy 사용 권한

SourceDeploy는 다음과 같은 권한이 있습니다.

배포 프로젝트 생성 권한

해당 권한은 고객 계정이 Management > Sub Account 메뉴에서 서브 계정에 부여할 수 있습니다.(Sub Account 이용 안내 바로 가기)

1. NCP_SOURCE_DEPLOY_MANAGER

  • 콘솔에서 '배포 프로젝트 생성'을 통해 배포 프로젝트를 생성할 수 있고, 자신이 생성한 배포 프로젝트를 관리 및 다른 서브 계정에 공유할 수 있습니다.

  • 고객 계정은 해당 권한이 기본으로 부여되어 있으며, 서브 계정은 고객 계정 사용자로부터 Management > Sub Account 메뉴에서 해당 권한을 할당받을 수 있습니다.

    참고: NCP_SOURCE_DEPLOY_MANGER 권한 부여하기

    devtools-4-1-102

    ① 서브 계정에 SourceDeploy 관리자 권한을 부여하기 위해서는 Sub Account 메뉴의 Sub Accounts를 선택합니다.

    ② 부여할 서브 계정을 선택합니다.

    devtools-4-1-103

    ① 선택한 서브 계정의 정책에 NCP_SOURCE_DEPLOY_MANAGER 정책을 선택합니다.

    ② 해당 정책을 추가합니다.

배포 프로젝트 사용 권한

해당 권한은 고객 계정이나 SourceDeploy 관리자(서브 계정)가 SourceDeploy에서 배포 프로젝트를 공유할 서브 계정에 부여하는 권한입니다.

1. ADMIN

  • 배포 프로젝트 조회, 설정 변경, 삭제 권한을 포함하고 있습니다.
  • 배포 프로젝트 내의 배포 스테이지 생성, 설정 변경, 삭제 권한을 포함하고 있습니다.
  • 배포 스테이지 내의 배포 시나리오 생성, 설정 변경, 삭제 권한을 포함하고 있습니다.
  • 배포 프로젝트를 생성한 계정은 자동으로 ADMIN 권한이 부여됩니다.
  • 배포 프로젝트 사용자 계정(서브 계정)을 할당하고 권한을 부여할 수 있습니다.
  • 배포를 실행할 수 있습니다.

2. USER

  • 배포 프로젝트, 배포 스테이지, 배포 시나리오 조회 권한을 포함하고 있습니다.
  • 배포를 실행할 수 있습니다.

배포 프로젝트 생성

Step 1. 콘솔 접속

콘솔에서 Dev Tools > SourceDeploy 메뉴로 접속합니다.

devtools-4-3-104

배포 프로젝트 생성 버튼을 클릭하여 새로운 배포 프로젝트를 생성합니다.

  • 배포 프로젝트를 생성하기 위해서는 로그인한 계정이 고객 계정이거나, NCP_SOURCE_DEPLOY_MANAGER 권한 혹은 NCP_INFRA_MANAGER 권한을 가지고 있는 서브 계정이어야 합니다.
  • NCP_SOURCE_DEPLOY_MANAGER 권한 혹은 NCP_INFRA_MANAGER 권한은 콘솔의 Management > Sub Account 메뉴에서 할당할 수 있습니다.

② SourceDeploy에 처음 접속하면 다음과 같은 문구가 표시됩니다.

  • 현재 생성된 배포 프로젝트가 없습니다. 배포 프로젝트 생성 버튼을 클릭하여 배포 프로젝트를 생성하세요.

Step 2. 기본 설정

배포 프로젝트 생성에 필요한 정보를 입력합니다.

devtools-4-3-105

① 생성할 배포 프로젝트의 이름을 입력합니다.

Step 3. 배포 환경 설정

배포 환경을 설정합니다.

devtools-4-3-106

① 배포 Stage는 기본적으로 dev, test, real이 노출됩니다. 필요한 Stage를 설정하여 환경을 구성할 수 있습니다.

② 새로운 이름의 Stage를 생성할 수 있습니다.

③ 설정된 서버에는 SourceDeploy용 에이전트가 설치되어 있어야 합니다.(에이전트 설치 가이드 바로 가기)

④ Stage를 설정으로 변경하면 상세 정보를 설정할 수 있습니다.

  • 배포 타겟은 네이버 클라우드 플랫폼에서 생성한 서버, Auto Scaling Kubernetes Service 중 선택할 수 있습니다.
  • 현재 보유한 서버, Auto Scaling, Kubernetes Service 리스트가 노출됩니다. 배포할 타겟을 선택합니다.
  • 서버, Auto Scaling, Kubernetes Service 은 네이버 클라우드 플랫폼의 각 상품에서 생성할 수 있습니다.
  • 배포 타겟이 Auto Scaling Group일 경우 해당 그룹에서 스케일 아웃 된 서버에 대해 자동 배포가 실행됩니다. (이전에 해당 Auto Scaling Group에 배포한 적이 있을 경우에만 실행됩니다.)

Step 4. 사용자 공유

배포 프로젝트를 공유할 사용자 및 배포 실행 관리자를 설정합니다.

devtools-4-3-107

① 선택한 빌드 프로젝트에 설정되어있는 서브 계정들이 테이블에 자동으로 추가됩니다.

② 배포 프로젝트를 공유할 사용자를 리스트에서 선택합니다.

  • 배포 프로젝트를 공유할 사용자는 서브 계정 중에서 선택할 수 있습니다. 서브 계정 사용자를 추가하기 위해서는 우선 Sub Account 메뉴에서 계정을 추가 등록하기 바랍니다.(Sub Account 이용 안내 바로 가기)

③ 공유할 사용자에게 할당할 접근 권한을 선택합니다. 접근 권한은 2가지입니다.

  • ADMIN: 배포 프로젝트 설정 변경/삭제, Stage, 시나리오 생성/설정 변경/삭제 및 배포 실행권한을 포함합니다.
  • USER: 배포 프로젝트, Stage, 시나리오 조회 및 배포 실행권한을 포함합니다.

④ 배포 실행에 대한 승인 절차가 필요하다면 배포 실행 관리자를 설정합니다.

  • 배포 실행 관리자를 설정하면 해당 Stage에서 발생하는 배포는 배포 실행 관리자로부터 승인을 받아야 실행됩니다.
  • 배포 실행 관리자는 사용자 공유에 추가된 서브 계정 및 고객 계정 중에서 선택할 수 있습니다.

⑤ 배포 승인 프로세스를 적용할 Stage를 선택합니다.

  • Stage는 Step 2.배포 환경 설정 단계에서 설정한 Stage 중에서 선택할 수 있습니다.

⑥ 배포를 실행시킬 배포 승인에 필요한 최소 인원을 선택합니다.

  • 1명: 최소 한 명의 배포 실행 관리자로부터 승인을 받으면 배포가 실행됩니다.
  • 모두: 설정된 모든 배포 실행 관리자로부터 승인을 받으면 배포가 실행됩니다.

Step 5. 최종 확인

배포 프로젝트 생성을 완료합니다.

devtools-4-3-108

① 이전 단계에서 설정한 배포 프로젝트 정보를 확인합니다.

배포 프로젝트 생성 버튼을 클릭하여 생성을 완료합니다.

배포 시나리오 생성 (배포 타겟 : Server, Auto Scaling 인 경우)

배포 파일과 배포 명령어를 설정할 수 있는 배포 시나리오를 생성합니다.

Step 1. 배포 시나리오 생성

devtools-4-3-109

① 생성된 배포 프로젝트를 선택합니다.

생성 버튼을 클릭합니다.

  • 배포 시나리오를 생성하기 위해서는 로그인한 계정이 고객 계정이거나, NCP_INFRA_MANAGER 권한 혹은 선택한 배포 프로젝트에 대해 ADMIN 권한을 가지고 있는 서브계정이어야 합니다.
  • NCP_INFRA_MANAGER 권한은 콘솔의 Management > Sub Account 메뉴에서 할당할 수 있습니다.

Step 2. 기본 설정

devtools-4-3-110

① 선택한 배포 프로젝트입니다.

② 선택한 배포 stage입니다.

③ 생성할 배포 시나리오의 이름을 입력합니다.

④ 생성할 배포 시나리오의 설명을 입력합니다.

Step 3. 배포 전략 설정

배포 타겟 : Server

devtools-4-3-133

① 배포 전략을 설정합니다.

  • 기본: 설정된 배포 서버에 대해 순차적으로 배포를 진행합니다.
배포 타겟 : Auto Scaling

devtools-4-3-150

① 배포 전략을 설정합니다.

  • 기본: 설정된 Auto Scaling Group 내 서버에 대해 순차적으로 배포를 진행합니다.
  • 블루/그린: 설정된 Auto Scaling Group을 복사하여 새로운 Auto Scaling Group을 생성하고 해당 그룹에 배포를 진행합니다. 배포가 정상적으로 완료되면 새로운 Auto Scaling Group 내 서버가 로드밸런서 Target Group에 연결되고 해당 Group으로 트래픽이 라우팅됩니다. 블루/그린 전략을 통해 배포 중단 시간을 최소화할 수 있습니다.

② 새로운 Auto Scaling Group에 연결할 로드밸런서 Target Group를 선택합니다. 배포 타겟으로 설정된 Auto Scaling Group에 연결된 Target Group 리스트 중 선택할 수 있습니다.

③ 블루/그린 배포 완료 후, 기존 AutoScaling Group 내 서버에 대한 처리 방법을 선택합니다.

  • 유지: 블루/그린 배포가 완료되어도 기존 AutoScaling Group 내 서버는 반납되지 않고 로드밸런서 Target Group에서만 연결이 해제됩니다.
  • 자동반납: 블루/그린 배포가 완료되면 기존 AutoScaling Group 내 서버를 자동으로 반납합니다. 서버만 반납되고 AutoScaling Group 자체는 삭제되지 않습니다.

Step 4. 배포 파일 설정

devtools-4-3-111

① 배포할 파일을 선택합니다.

  • SourceBuild: 선택된 빌드 프로젝트의 가장 마지막 빌드 결과를 조회하여 해당 빌드 결과물을 자동으로 배포합니다. 만약 가장 마지막 빌드 결과가 실패이거나 빌드 결과물을 업로드하지 않았을 경우에는 배포가 실행되지 않습니다.

  • Object Storage: 보유한 Object Storage 내의 버킷 중에서 배포 파일을 선택합니다. 배포 파일은 zip 포맷으로 압축된 파일만 배포할 수 있습니다.

  • 나중에 설정: 배포 파일은 나중에 설정할 수 있습니다.

Step 5. 배포 명령어 설정

devtools-4-3-112

① 배포 전에 서버에서 실행할 명령어를 설정합니다. 여러 개를 입력할 수 있으며, 순차적으로 실행됩니다.

  • 실행 계정: 명령어를 수행할 서버 계정을 입력합니다.
  • 실행 명령: 서버에서 실행할 명령어를 입력합니다.

② 파일의 배포할 경로를 설정합니다. 여러 개를 입력할 수 있으며, 순차적으로 배포됩니다.

  • 소스 파일 경로: 배포할 파일 경로를 입력합니다. 경로는 배포 파일을 기준으로 작성합니다.
  • 배포 파일 경로: 배포할 서버 경로를 입력합니다. 서버의 전체 경로를 작성합니다.
  • 배포 파일을 '나중에 설정'하거나 SourceBuild 마지막 빌드 결과물이 없을 경우에는 메시지가 노출됩니다.

③ 배포 후 서버에서 실행할 명령어를 설정합니다. 여러 개를 입력할 수 있으며, 순차적으로 실행됩니다.

  • 실행 계정: 명령어를 수행할 서버 계정을 입력합니다.
  • 실행 명령: 서버에서 실행할 명령어를 입력합니다.

④ 롤백을 사용하면 배포가 실패했을 경우 자동으로 이전 버전으로 롤백합니다.

  • 롤백은 해당 Stage를 기준으로 마지막으로 성공한 배포를 재실행시킴으로써 롤백이 진행됩니다.

  • 이전에 배포했던 파일이 Object Storage에 존재하지 않거나, 마지막 성공 배포가 없을 경우에는 롤백이 실패됩니다.

Step 6. 최종 확인

배포 시나리오 생성을 완료합니다.

devtools-4-3-113

① 이전 단계에서 설정한 배포 시나리오 정보를 확인합니다.

배포 시나리오 생성 버튼을 클릭하여 생성을 완료합니다.

배포 시나리오 생성하기 (배포 타겟 : Kubernetes인 경우)

배포 시나리오 생성

devtools-4-3-134

① 생성된 배포 프로젝트를 선택합니다.

배포 시나리오 생성 버튼을 클릭합니다.

  • 배포 시나리오를 생성하기 위해서는 로그인한 계정이 고객 계정이거나, NCP_FIN_INFRA_MANAGER 권한 혹은 선택한 배포 프로젝트에 대해 ADMIN 권한을 가지고 있는 서브계정이어야 합니다.
  • NCP_FIN_INFRA_MANAGER 권한은 콘솔의 Management > Sub Account 메뉴에서 할당할 수 있습니다.

배포 시나리오 기본 설정

devtools-4-3-135

① 선택한 배포 프로젝트입니다.

② 선택한 배포 stage입니다.

③ 생성할 배포 시나리오의 이름을 입력합니다.

④ 생성할 배포 시나리오의 설명을 입력합니다.

매니페스트 설정

devtools-4-3-136

① SourceCommit 내의 보유한 리파지토리와 브랜치를 선택합니다.

② 배포할 매니페스트 파일의 경로를 입력하여, 추가/삭제 할 수 있습니다.

매니페스트 작성

Kubernetes 클러스터에 오브젝트를 배포하기 위해서는 매니페스트를 작성이 필요하며, 배포에 사용할 매니페스트는 SourceCommit 리파지토리에 저장이 되어있어야 합니다.

  • 블루/그린, Canary 업데이트를 위한 새로운 매니페스트를 작성하실 필요가 없습니다. 블루/그린, Canary에 필요할 새로운 오브젝트는 SourceDeploy에서 자동으로 배포합니다.
  • 블루/그린 배포의 경우 새로운 버전(Green)의 오브젝트가 배포되기 때문에 오브젝트 이름이 변경됩니다. 배포되는 오브젝트의 이름이 변경되더라도 매니페스트의 이름을 매번 변경하실 필요는 없습니다.

Ex ) 기존 배포된 kubernetes 오브젝트 (kind : Deployment, name : sampleapp, namespace : dev)

devtools-4-1-137

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sampleapp
  namespace: dev

--생략--

배포 전략 설정

  • Rolling 업데이트 전략의 경우, 기존 배포되어 있는 오브젝트가 없는 경우 새로운 오브젝트가 배포됩니다.
  • 블루/그린, Canary 업데이트 전략의 경우, 기존 배포되어 있는 오브젝트가 없는 경우 배포가 실패합니다.
  • 블루/그린 배포의 경우 새로운 버전(Green)의 오브젝트가 배포되기 때문에 오브젝트 이름이 변경됩니다. 배포되는 오브젝트의 이름이 변경되더라도 매니페스트의 이름을 매번 변경하실 필요는 없습니다.

배포 전략 설정(Rolling)

devtools-4-3-138

① Rolling 배포 전략을 설정합니다.

배포 전략 설정(블루/그린)

devtools-4-3-139

① 블루/그린 배포 전략을 설정합니다.

배포 전략 설정(Canary - 분석 방법 : 수동)

devtools-4-3-140

① Canary 배포 전략을 설정합니다.

② Baseline, Canary 버전의 Pod 개수를 설정 할 수 있으며, 1~10 까지 설정 가능합니다.

  • Baseline, Canary 버전의 어플리케이션에 적용할 replicas를 설정합니다.

③ Canary 분석 방법을 수동으로 설정 합니다.

  • Baseline, Canary 버전의 어플리케이션을 사용자가 수동으로 분석하여, 배포 승인/취소 여부를 결정합니다.

④ 사용자가 Canary 배포/취소를 결정할 수 있는 최대 시간 이며, 1 분 ~ 360 분까지 설정 가능합니다.

  • 설정된 시간이 초과되면 자동으로 배포가 취소 되며, baseline, canary 어플리케이션은 종료됩니다.

배포 전략 설정(Canary - 분석 방법 : 자동)

devtools-4-3-141

① Canary 배포 전략을 설정합니다.

② Baseline, Canary 버전의 Pod 개수를 설정 할 수 있으며, 1~10 까지 설정 가능합니다.

  • Baseline, Canary 버전의 어플리케이션에 적용할 replicas를 설정합니다.

③ Canary 분석 방법을 자동으로 설정 합니다.

  • Baseline 과 Canary 버전의 어플리케이션을 자동으로 분석하여, 분석 결과에 따라 배포를 진행합니다.

④ Prometheus 수집 로그 요청을 위한 Prometheus endpoint 를 입력합니다.

  • 어플리케이션을 자동으로 분석하기 위해 Kubernetes Cluster 에 Prometheus 가 설치 되어있어야 합니다.
  • 엔드포인트는 SourceDeploy에서 접근이 가능해야하기 때문에 공인 IP 로 설정되어야 합니다. (Prometheus Service 를 LB type으로 설정해 주세요.)

⑤ Prometheus 분석 시, Baseline 과 Canary 를 구분하기 위해서 사용합니다.

  • 해당 입력값은 PromQL 구문에서 ${basecanary} 로 활용할 수 있습니다.
  • 분석 환경 변수는 Baseline, Canary 각각 Pod Label 의 ncp_sourcedeploy_canary="baselineenv" / ncp_sourcedeploy_canary="canaryenv" 으로 설정되며, 해당 값을 Canary 분석 시 활용 할 수 있습니다.

⑥ 평가 대상이 될 Metric 을 생성, 변경, 삭제 할 수 있습니다.

  • 모든 Metric Weight의 총합은 100이 되어야합니다.
  • 생성 : 생성 버튼을 클릭합니다. (자세한 "Metric 생성" 내용은 아래 내용을 참고해주세요.)
  • 설정 변경 : 변경할 Metric 을 선택 후 설정 변경을 클릭합니다.
  • 삭제 : 변경할 Metric 을 선택 후 삭제를 클릭합니다.

⑦ 분석 설정 :

  • 분석 지연 시간 : Baseline, Canary 버전 어플리케이션 배포 후 설정한 시간 이후에 분석을 시작하며, 0~60분 까지 설정 가능합니다.

  • 분석 시간 : 총 분석을 수행할 시간이며, 10분 ~ 360분 까지 설정 가능합니다.

  • 분석 주기 : 분석을 수행할 주기이며, 1분 ~ 360 분 까지 설정이 가능하며, 분석 시간을 넘을 수 없습니다.

  • Metric 수집 주기 : 분석 시 수집된 metric 값을 샘플링 할 주기 이며, 1초 ~ 360초 까지 설정이 가능합니다.

분석 성공 점수 : 분석 시 모든 메트릭에 대한 분석 점수 이며, 1 ~ 100 까지 설정이 가능합니다.

  • 분석 단계 마다 해당 점수를 만족하여야 배포가 진행됩니다.
  • 분석 단계에서 해당 점수를 만족하지 못할 경우, 분석이 바로 중지 되며 Baseline, Canary 버전의 어플리케이션은 종료 됩니다.
  • 등록된 모든 메트릭 점수의 합산입니다. (메트릭 점수에 대한 자세한 내용은 “Metric 생성” 단계를 참고하세요)

Metric 생성

devtools-4-1-142

이름 : 해당 Metric의 설정할 이름을 설정합니다.

성공 기준: 등록된 query 의 질의 결과에 대한 성공 기준으로, 성공 또는 실패로 분석됩니다.

  • 질의 결과는 n 개가 나올수 있으며, 각 질의 결과 마다 성공/실패가 결정됩니다.

  • 등록된 메트릭의 점수는 (성공한 질의 결과/전체 질의 결과) 가중치 로 계산됩니다.

  • baseline > canary : baseline version의 값이 canary version 의 값보다 큰 경우 성공 (편차의 값이 음수이거나 동일할 경우 성공)

  • baseline < canary : canary version의 값이 baseline version 의 값보다 큰 경우 성공 (편차의 값이 양수이거나 동일할 경우 성공)

쿼리 타입 :Default

  • Label selector만을 활용할때 사용할 수 있습니다.

    Metric : 입력한 Prometheus Url 의 설정된 Metric 리스트 입니다.

    Filter : 원하는 라벨 조건들을 입력합니다.

    Ex) Filter 예시

    kubernetes_namespace="dev" , ncp_sourcedeploy_canary="${basecanary}"
    

쿼리 타입 :PromQL

  • 쿼리 : 사용자가 직접 PromQL을 입력하여 사용 할 수 있습니다.

    Ex) 웹 어플리케이션 requests 성공율 PromQL 예시

    sum(requests_total{kubernetes_namespace="dev",custom_status="good", ncp_sourcedeploy_canary="${basecanary}"})/sum(requests_total{kubernetes_namespace="dev", ncp_sourcedeploy_canary="${basecanary}"})
    

    ==> success_rate = sum( 성공 request ) / sum( 전체 request )

⑤ ${basecanary}

  • Baseline 과 Canary 의 비교 분석을 위해 ${basecanary} 를 예약어로 제공하며, 쿼리에 해당 예약어를 사용하여 분석 시 분석 환경 변수값으로 치환되어 질의 합니다.

  • Ex) Metric: requests_total / Filter : ncp_sourcedeploy_canary=${basecanary} /

    canary: canaryenv, baseline: baselineenv (배포 전략 설정(Canary - 분석방법:자동 > 5 참고)

[Baseline 버전 쿼리] requests_total{ncp_sourcedeploy_canary="baselineenv"}

[canary 버전 쿼리] requests_total{ncp_sourcedeploy_canary="canaryenv"}

Weight : 해당 Metric의 적용할 가중치를 설정합니다. 1~100 까지 입력 가능합니다.

배포 시나리오 최종 확인

devtools-4-3-143

① 이전 단계에서 설정한 배포 시나리오 정보를 확인합니다.

배포 시나리오 생성 버튼을 클릭하여 생성을 완료합니다.

kubernetes cluster 에 CI/CD 환경 구축

  1. SourceDeploy 상품을 사용하여 kubernetes cluster 에 지속적 배포를 구성하기 위해서는 배포 이미지가 Container Registry 에 저장 되어 있어야 합니다.

  2. 이미지 tag 를 latest 로 설정합니다. SourceDeploy에서 자동으로 latest tag를 digest 형태로 변경하여 배포를 시도하기 때문에 이미지 설정이 변경되지 않더라도 정상적으로 지속적 배포를 수행할 수 있습니다.

  3. SourceBuild 상품과 SourcePipeline 상품을 함께 사용하면 편리하게 CI/CD 환경을 구축할 수 있습니다.

    • SourceBuild 가이드 바로 가기

      • Docker image 빌드 기능을 사용하여 도커 이미지를 빌드, Container Registry에 저장할 수 있습니다.
      • 이미지 버전 관리와 함께 'latest로 설정' 옵션을 이용하여 항상 latest 이미지를 빌드 할 수 있습니다.
    • SourcePipeline 가이드 바로 가기

      • Docker image 빌드 설정된 SourceBuild 프로젝트와 Kubernetes Service 배포가 설정된 SourceDeploy 프로젝트를 파이프라인으로 구성하여 CI/CD 환경을 구축할 수 있습니다.
      • 'trigger 설정' 기능을 이용하여 SourceCommit 에 push 함과 동시에 Docker image, Kubernetes Service의 cluster에 새로운 오브젝트를 배포하여 서비스를 운영할 수 있습니다.

Kubernetes 클러스터에 오브젝트 배포시 주의 사항

  • 매니페스트가 여러개일 경우 하나라도 실패하면 모든 오브젝트가 롤백됩니다.
  • 오브젝트 업데이트시 동일한 네임스페이스로의 업데이트만 가능합니다.
  • 오브젝트 업데이트가 아닌 새로운 오브젝트를 배포시 rolling update 전략을 사용하세요. 블루/그린, Canary 전략으로 새로운 오브젝트를 배포할 수 없습니다.
  • 매니페스트의 kind 에 상관없이 SourceDeploy는 배포 전략 메커니즘에 따라 배포를 수행합니다.
  • 블루/그린 업데이트 전략으로 배포시 새로운 버전(Green)의 오브젝트가 배포되기 때문에 오브젝트의 이름이 변경됩니다. 오브젝트 이름이 변경되더라도 SourceDeploy 를 통해 배포시 매니페스트 수정 없이 지속적 배포가 가능합니다. 다만, 해당 매니페스트를 이용하여 kubectl apply 등을 통해 수동으로 배포하여 기존 이름의 오브젝트가 생성될 경우, 업데이트 할 오브젝트를 특정할 수 없기 때문에 SourceDeploy 를 통한 지속적 배포가 불가능하게 됩니다.
  • Replica Set, Replication Controller 와 같은 종류의 오브젝트는 업데이트가 되더라도 k8s spec 에 따라 이미지가 업데이트 되지 않습니다. 따라서 k8s 권장 사항과 같이 Deployment 를 사용하시길 권장합니다. (https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/) (https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicationcontroller/)

배포 실행하기 (배포 실행 관리자가 설정되어있지 않은 경우)

Step 1. 배포 프로젝트 선택

devtools-4-3-123

① 배포 프로젝트 이름을 선택하여 배포 실행 페이지로 이동합니다.

배포로 이동 버튼을 클릭하여 배포 실행 페이지로 이동합니다.

Step 2. 배포 시나리오 선택 및 배포 실행

devtools-4-3-124

① 배포를 실행할 배포 시나리오를 선택합니다.

② 배포 시나리오의 기본 정보 및 배포 환경을 확인할 수 있습니다.

③ 배포 시나리오에 설정된 배포 설정(배포 파일, 배포 명령어, 롤백 여부)을 확인하고 변경할 수 있습니다.

  • 해당 페이지에서 변경된 배포 설정은 저장되지 않으며, 해당 배포에서 한 번만 적용됩니다.

배포 시작하기 버튼을 클릭하여 배포를 실행합니다.

Step 3. 배포 로그 확인

배포 타겟이 Server 혹은 Auto Scaling 이면서 배포 전략이 기본인 경우

devtools-4-3-125

① 배포를 실행하면 작업 결과 페이지로 이동합니다.

② 실행한 배포의 상태를 확인할 수 있습니다.

③ 설정한 명령어가 서버에서 수행되면서 발생하는 로그를 확인할 수 있습니다.

  • 배포 로그는 배포 서버의 아래 경로에 저장됩니다. 아래 경로를 삭제하면 배포 로그를 확인할 수 없습니다.
/var/sourcedeploy/log
  • 배포 로그는 최대 30일까지 저장합니다.

④ 배포를 중간에 취소할 수 있습니다.

  • 배포를 취소하면 현재 실행 중인 단계까지 진행되고 이후 단계는 진행되지 않습니다.
배포 타겟이 Auto Scaling 이면서 배포 전략이 블루/그린인 경우

devtools-4-3-151

① 배포를 실행하면 작업 결과 페이지로 이동합니다.

② 실행한 배포의 상태를 확인할 수 있습니다.

③ 각 배포 단계 별 로그를 확인할 수 있습니다.

  • 배포 준비: 블루/그린 배포를 진행하기 위해 필요한 과정을 진행합니다.

    • 새 Auto Scaling Group 생성
    • 새 Auto Scaling Group 내 서버 생성 완료 대기
    • 새 Auto Scaling Group 내 서버에 대해 SourceDeploy Agent 연결 확인
  • 새 그룹에 배포: 새 Auto Scaling Group 내 생성된 서버에 배포합니다. 배포는 순차적으로 진행됩니다.

    • 배포 로그는 배포 서버의 아래 경로에 저장됩니다. 아래 경로를 삭제하면 배포 로그를 확인할 수 없습니다.
    /var/sourcedeploy/log
    
    • 배포 로그는 배포 서버에서 최대 30일까지 저장합니다.
  • 새 그룹을 검증: 새 Auto Scaling Group 내 생성된 서버를 로드밸런서에 연결하고, 로드밸런서 헬스체크가 정상인지 확인합니다. 모든 헬스체크를 성공해야 다음 단계로 진행합니다. 타임아웃(1시간) 내 헬스체크가 실패할 경우 배포는 실패로 종료됩니다.

  • 배포 마무리: 블루/그린 배포가 완료된 후, 마무리 과정을 진행합니다.

    • "기존 그룹 내 서버"에 설정된 값에 따라 기존 Auto Scaling Group 내 서버 처리
    • 기존 Auto Scaling Group에 연결된 Cloud Insight 이벤트 존재 시 이벤트 복사

④ 배포를 중간에 취소할 수 있습니다.

  • 배포를 취소하면 현재 실행 중인 단계까지 진행되고 이후 단계는 진행되지 않습니다.
  • 취소 혹은 배포 실패 시 블루/그린 배포로 생성된 Auto Scaling Group이나 서버는 자동 반납되지 않습니다. 필요하지 않은 경우 직접 해당 상품에서 반납/삭제해야 합니다.
배포 타겟이 Kubernetes 인 경우

devtools-4-3-144

① 배포 중간에 취소할 수 없습니다.

canary 배포/취소 (분석 : 수동)

devtools-4-3-145

① 사용자가 직접 Baseline, Canary 버전 어플리케이션을 분석 후, Canary 배포/취소 를 결정합니다.

  • 배포 : Canary 버전이 배포되며, Baseline, Canary 버전의 어플리케이션은 종료됩니다.
  • 취소 : Canary 버전이 배포되지 않으며, Baseline, Canary 버전의 어플리케이션은 종료됩니다.

Canary 분석 리포트 확인

devtools-4-1-146

devtools-4-1-147

① Canary 분석 리포트는 사용자 Prometheus 의 설정된 보관 주기 동안만 확인 할 수 있습니다.

② 시나리오에서 설정한 분석 시간, 분석 주기로 분석 단계가 정해지며, 분석 데이터는 누적되어 분석 되어집니다.

  • Ex) 분석 시간 : 10 분 , 분석 주기 : 3분

    ==> 10분 동안 3분마다 총 4번의 분석 단계 점수가 나오며, 마지막 분석 단계 시간은 1분이다.

분석 단계 점수이며, 해당 점수가 Pass(분석 성공 점수) 점수 이상이 되어야지 성공입니다. 해당 점수가 실패 될 경우, 다음 분석은 진행하지 않습니다.

  • 분석 단계 점수 계산 방법

    • Metric 점수 : (성공한 질의 결과 / 전체 질의 결과)*(메트릭 가중치)

      • Metric Name : success_rate1

        성공 질의 결과 : 2개 (#1, #3)

        전체 질의 결과 : 3개 (#1, #2, #3)

        Weight : 30

        Metric 점수 : ( 2 / 3 ) * 30 = 20

      • Metric Name : success_rate2

        성공 질의 결과 : 1개 (#1)

        전체 질의 결과 : 1개 (#1)

        Weight : 70

        Metric 점수 : ( 1 / 1 ) * 70 = 70

  • 분석 단계 점수 : 20 + 70 = 90

④ 분석이 시작된 시간/ 완료된 시간입니다.

⑤ 시나리오에서 설정한 Pass(분석 성공 점수), Step(Metric 수집 주기) 입니다.

⑥ 시나리오에서 설정한 Metric 과 Weight(가중치) 이며, Metric 을 클릭시 Canary 분석 결과가 나옵니다.

Canary 분석 결과

  • Element 결과 : Prometheus 질의 결과에서 나온 데이터의 element 값이며, Baseline과 Canary 의 질의 결과 element 가 같아야지만 정상 분석이 진행 됩니다.

  • 편차: Baseline 값 대비 Canary 값의 증가/감소율 입니다.

  • 결과 : baseline 기준 canary 의 편차로 계산되며, 메트릭 설정에서 설정한 성공기준에 따라 결과(성공/실패)가 결정됩니다.

    • baseline 버전의 결과와 canary 버전의 결과가 같을 경우 성공으로 결정되며, 5% 의 오차 범위를 갖습니다. 즉, -5 <= 편차 <= +5 일 경우 성공으로 결정됩니다.
    • 종류 : Baseline-[Baseline 버전 쿼리] Canary- [Canary 버전 쿼리] 의 질의 결과 입니다.
    • 시작시간/종료시간 : 분석이 시작된 시간/ 완료된 시간입니다.
    • Count: 분석 시간 동안 나온 실제 데이터 개수
    • AVG : 데이터 평균값
    • MAX : 데이터 최대값
    • MIN : 데이터 최소값
Element 확인

devtools-4-1-148

① 확인 할려는 Element 를 클릭 합니다.

② Element 결과를 확인 할 수 있습니다.

배포 실행하기 (배포 실행 관리자가 설정된 경우)

Step 1. 배포 프로젝트 선택

devtools-4-3-123

① 배포 프로젝트 이름을 선택하여 배포 실행 페이지로 이동합니다..

배포로 이동 버튼을 클릭하여 배포 실행 페이지로 이동합니다.

Step 2. 배포 시나리오 선택 및 배포 승인 요청

devtools-4-3-126

① 배포를 실행할 배포 시나리오를 선택합니다.

② 배포 시나리오의 기본 정보 및 배포 환경을 확인할 수 있습니다.

③ 배포 시나리오에 설정된 배포 설정(배포 파일, 배포 명령어, 롤백 여부)을 확인하고 변경할 수 있습니다.

  • 해당 페이지에서 변경된 배포 설정은 저장되지 않으며, 해당 배포에서 한 번만 적용됩니다.

배포 승인 요청 버튼을 클릭하여 배포 실행을 배포 실행 관리자에게 요청합니다.

  • 해당 배포는 설정된 배포 승인 최소 인원이 만족되면 자동으로 배포가 실행됩니다.

Step 3. 배포 승인 상태 확인 (배포 실행 관리자가 아닌 계정)

devtools-4-3-127

작업 결과 페이지로 이동합니다.

② 승인 요청한 배포의 확인 버튼을 클릭합니다.

③ 승인 요청한 배포의 승인 상태를 확인할 수 있습니다.

Step 3. 배포 승인 혹은 거절하기 (배포 실행관리자 계정)

devtools-4-3-128

작업 결과 페이지로 이동합니다.

② 승인이 필요한 배포의 승인 버튼을 클릭합니다.

③ 승인이 필요한 배포의 정보 확인 및 해당 배포의 승인 혹은 거절을 선택할 수 있습니다.

  • 해당 배포는 설정된 배포 승인 최소 인원이 만족되면 자동으로 배포가 실행됩니다.

설정 변경

배포 프로젝트 설정 변경

devtools-4-3-114

① 설정을 변경할 배포 프로젝트를 선택합니다.

설정 변경 버튼을 클릭합니다.

  • 배포 프로젝트 설정을 변경하기 위해서는 로그인한 계정이 고객 계정이거나, NCP_INFRA_MANAGER 권한 혹은 선택한 배포 프로젝트에 대해 ADMIN 권한을 가지고 있는 서브계정이어야 합니다.
  • NCP_INFRA_MANAGER 권한은 콘솔의 Management > Sub Account 메뉴에서 할당할 수 있습니다.

devtools-4-1-115

③ 선택한 빌드 프로젝트에 설정되어있는 서브 계정들이 자동으로 추가됩니다.

④ 배포 프로젝트를 사용할 사용자를 변경할 수 있습니다.

⑤ 배포 실행 관리자와 관련된 사용자를 변경할 수 있습니다.

⑥ 변경 사항을 적용합니다.

배포 Stage 설정 변경

devtools-4-3-116

① 설정을 변경할 배포 Stage를 선택합니다.

설정 변경 버튼을 클릭합니다.

  • 배포 Stage 설정을 변경하기 위해서는 로그인한 계정이 고객 계정이거나, NCP_INFRA_MANAGER 권한 혹은 선택한 배포 프로젝트에 대해 ADMIN 권한을 가지고 있는 서브계정이어야 합니다.
  • NCP_INFRA_MANAGER 권한은 콘솔의 Management > Sub Account 메뉴에서 할당할 수 있습니다.

devtools-4-1-117

③ 배포 Stage에 설정된 배포 환경을 변경할 수 있습니다.

④ 변경 사항을 적용합니다.

배포 시나리오 설정 변경

devtools-4-3-118

① 설정을 변경할 배포 시나리오를 선택합니다.

설정 변경 버튼을 클릭합니다.

  • 배포 시나리오 설정은 변경하기 위해서는 로그인한 계정이 고객 계정이거나, NCP_INFRA_MANAGER 권한 혹은 선택한 배포 프로젝트에 대해 ADMIN 권한을 가지고 있는 서브계정이어야 합니다.
  • NCP_INFRA_MANAGER 권한은 콘솔의 Management > Sub Account 메뉴에서 할당할 수 있습니다.
배포 타겟이 Server 혹은 Auto Scaling 인 경우

devtools-4-1-119

③ 배포 시나리오 설명을 변경할 수 있습니다.

④ 배포 파일을 변경할 수 있습니다.

⑤ 배포 명령어를 변경할 수 있습니다.

⑥ 배포 실패 시 롤백 진행 여부를 변경할 수 있습니다.

⑦ 변경 사항을 적용합니다.

배포 타겟이 Kubernetes 인 경우

devtools-4-1-149

③ 배포 시나리오 설명을 변경할 수 있습니다.

④ SourceCommit의 리파지토리를 변경할 수 있습니다.

⑤ 매니페스트 파일을 변경할 수 있습니다.

⑥ 배포 전략을 변경 할 수 있습니다.

⑦ 변경 사항을 적용합니다.

삭제

배포 프로젝트 삭제

devtools-4-3-120

① 삭제할 배포 프로젝트를 선택합니다.

[삭제] 버튼을 클릭합니다.

  • 배포 프로젝트를 삭제하기 위해서는 로그인한 계정이 고객 계정이거나, NCP_INFRA_MANAGER 권한 혹은 선택한 배포 프로젝트에 대해 ADMIN 권한을 가지고 있는 서브계정이어야 합니다.
  • NCP_INFRA_MANAGER 권한은 콘솔의 Management > Sub Account 메뉴에서 할당할 수 있습니다.
  • 선택한 배포 프로젝트 내에서 배포가 진행되고 있는 경우에는 삭제가 되지 않습니다. 진행되고 있는 배포가 없는 경우에만 배포 프로젝트를 삭제할 수 있습니다.

배포 Stage 삭제

devtools-4-3-121

① 삭제할 배포 Stage를 선택합니다.

[삭제] 버튼을 클릭합니다.

  • 배포 Stage를 삭제하기 위해서는 로그인한 계정이 고객 계정이거나, NCP_INFRA_MANAGER 권한 혹은 선택한 배포 프로젝트에 대해 ADMIN 권한을 가지고 있는 서브계정이어야 합니다.
  • NCP_INFRA_MANAGER 권한은 콘솔의 Management > Sub Account 메뉴에서 할당할 수 있습니다.
  • 선택한 배포 프로젝트 내에서 배포가 진행되고 있는 경우에는 삭제가 되지 않습니다. 진행되고 있는 배포가 없는 경우에만 배포 프로젝트를 삭제할 수 있습니다.

배포 시나리오 삭제

devtools-4-3-122

① 삭제할 배포 시나리오를 선택합니다.

[삭제] 버튼을 클릭합니다.

  • 배포 시나리오를 삭제하기 위해서는 로그인한 계정이 고객 계정이거나, NCP_INFRA_MANAGER 권한 혹은 선택한 배포 프로젝트에 대해 ADMIN 권한을 가지고 있는 서브계정이어야 합니다.
  • NCP_INFRA_MANAGER 권한은 콘솔의 Management > Sub Account 메뉴에서 할당할 수 있습니다.
  • 선택한 배포 프로젝트 내에서 배포가 진행되고 있는 경우에는 삭제가 되지 않습니다. 진행되고 있는 배포가 없는 경우에만 배포 프로젝트를 삭제할 수 있습니다.

연관 정보 바로 가기

아래 가이드에서 연관 정보를 확인할 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...