98
컨테이너 CI/CD를 하나의 서강혁 pilsner.suh 카카오페이 JENKINS PIPELINE 으로 관리하기

컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

컨테이너�CI/CD를�하나의

서강혁�pilsner.suh�카카오페이

JENKINS�PIPELINE�으로�관리하기

Page 2: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

이번�발표에는�여러�툴이�등장합니다.�하지만�툴에�대한�자세한�설명은�생략되어�있습니다.

Page 3: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

-�Jenkins�pipeline�example�template�-�Helm�chart�example�template�

Page 4: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

�Pipeline�개발하면서�했던�삽질�경험들�

-�Jenkins�pipeline�example�template�-�Helm�chart�example�template�

ㅠㅠ�이런건�없어요

Page 5: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

01.�Jenkins�pipeline�도입기�1.1�Devops에서�일하는�법�1.2�Bye�GoCD�1.3�Hi�Jenkins�pipeline

02.�Jenkins�pipeline�개선기�2.1�Spinnaker�2.2�istio�2.3�Sail�2.4�Letmeknow

Page 6: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

01.�Jenkins�pipeline�도입기�1.1�Devops에서�일하는�법�1.2�Bye�GoCD�1.3�Hi�Jenkins�pipeline

02.�Jenkins�pipeline�개선기�2.1�Spinnaker�2.2�istio�2.3�Sail�2.4�Letmeknow

Page 7: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Devops에서�일하는�법

DEVOPS 생성 배포

사용

유지보수 ???구성요청Build?�Test?�dns?�

특이사항?

Page 8: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Devops에서�일하는�법

K8S

DEVOPS 생성 배포

사용

유지보수 ???구성요청Build?�Test?�dns?�

특이사항?

Page 9: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

DEVOPS 생성 배포

사용

유지보수 ???

Devops에서�일하는�법

구성요청Build?�Test?�dns?�

특이사항?K8S

배포에�관련된�로직이�모두�블랙박스�약간의�수정도�Devops�팀을�거쳐�수행�개발자와�소모적인�커뮤니케이션�핑퐁�

거의�모든�작업이�수동작업

Page 10: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

1.�Jenkins�pipeline�도입기�1.1�Devops에서�일하는�법�1.2�Bye�GoCD�1.3�Hi�Jenkins�pipeline

2.�Jenkins�pipeline�개선기�2.1�Spinnaker�2.2�istio�2.3�Sail�2.4�Letmeknow

Page 11: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Bye�GoCD

- Jenkins보다는�잘생김�- 여러�CD관련�기능

PROS

Page 12: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

겨우�23개�프로젝트에�대해�생성된�PIPELINE들…�스크롤하면�더�많다�

- 하나의�stage가�하나의�job으로�구성�- 너무�많아지고,�느려짐�- 각자�구성된�파이프라인

CONS

Job

Job

Bye�GoCD

Page 13: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

구성요청

세부사항�확인 UI�생성 K8S�YML�생성

cp�already-exist-project/deploy.yml�new-project/deploy.yml�vim�deploy.yml

개발자

DEVOPS

Page 14: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Test는�존재하나?�Dockerfile�위치는?�

log�위치는?�

Bye�GoCD구성요청

Page 15: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Bye�GoCD불필요한�핑퐁

Log 위치가 어디로 떨어지나요?

런타임에 에러나는데 더 추가해야할 환경 변수가 있나요?

dev phase 추가해주세요

구성요청

Page 16: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

잘되어�있는�프로젝트를�일단�COPY

세부�내용�변경

UI

Bye�GoCD

Page 17: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

잘되어�있는�프로젝트를�일단�COPY

세부�내용�변경

UI

Bye�GoCD

불필요한�핑퐁

Log 위치가 어디로 떨어지나요?

런타임에 에러나는데 더 추가해야할 환경 변수가 있나요?

dev phase 추가해주세요

반영

Page 18: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

잘되어�있는�프로젝트를�일단�COPY

세부�내용�변경

UI

Bye�GoCD

불필요한�핑퐁

X�N

Log 위치가 어디로 떨어지나요?

런타임에 에러나는데 더 추가해야할 환경 변수가 있나요?

dev phase 추가해주세요

Page 19: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

잘되어�있는�프로젝트를�일단�COPY

세부�내용�변경

UI

Bye�GoCD

불필요한�핑퐁

X�N반영

Log 위치가 어디로 떨어지나요?

런타임에 에러나는데 더 추가해야할 환경 변수가 있나요?

dev phase 추가해주세요

Page 20: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

잘되어�있는�프로젝트를�일단�COPY

세부�내용�변경

UI K8S

Bye�GoCD

cp�already-exist-project/deploy.yml�new-project/deploy.yml�vim�deploy.yml

Page 21: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

잘되어�있는�프로젝트를�일단�COPY

세부�내용�변경

UI

Bye�GoCD

참조

cp�already-exist-project/deploy.yml�new-project/deploy.yml�vim�deploy.yml

K8S

Page 22: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

잘되어�있는�프로젝트를�일단�COPY

세부�내용�변경

UI

Bye�GoCD

cp�already-exist-project/deploy.yml�new-project/deploy.yml�vim�deploy.yml

오타�발생

새로 추가된 서비스가 엉뚱한 곳으로 연결돼요.

K8S

Page 23: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

UI의�제공�프로젝트�특정에�맞는�배포�배포를�위한�K8S�yaml�관리

Page 24: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

UI의�제공�-�수작업�프로젝트�특정에�맞는�배포�-�수작업�배포를�위한�K8S�yaml�관리�-�수작업

Page 25: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

01.�Jenkins�pipeline�도입기�1.1�Devops에서�일하는�법�1.2�Bye�GoCD�1.3�Hi�Jenkins�pipeline

02.�Jenkins�pipeline�개선기�2.1�Spinnaker�2.2�istio�2.3�Sail�2.4�Letmeknow

Page 26: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins

Page 27: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins

Hi

Pipeline

Page 28: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

- PIPELINE�AS�CODE�- NOT�XML,�JSON,�YAML

Scripted Declarative

Page 29: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

Jenkinsfile 실행 1

Page 30: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

- 일단�익숙해지면�뭐든�할�수�있다.�- UI없이�대부분의�기능이�구현된다.�- 이력�관리가�쉽게�된다.

- Jenkins다.�- Jenkins다.�- Jenkins에�종속적인�코드다.��- 익숙해지기�어렵다.�- 배포�하자고�새로운�문법을�공부해야�하나?

PROS CONS

Page 31: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

PROS CONS

Page 32: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

근데�왜?

Page 33: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-
Page 34: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

- 일단�익숙해지면�뭐든�할�수�있다.�- UI없이�대부분의�기능이�구현된다.�- 이력�관리가�쉽게�된다.

- Jenkins다.�- Jenkins다.�- Jenkins에�종속적인�코드다.��- 익숙해지기�어렵다.�- 배포�하자고�새로운�문법을�공부해야�하나?

PROS CONS

Hi�Jenkins Pipeline

Page 35: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

- 일단�익숙해지면�뭐든�할�수�있다.�- UI없이�대부분의�기능이�구현된다.�- 이력�관리가�쉽게�된다.

- Jenkins다.�- Jenkins다.�- Jenkins에�종속적인�코드다.��- 익숙해지기�어렵다.�- 배포�하자고�새로운�문법을�공부해야�하나?

PROS CONS

결국 개발팀에서 Jenkinsfile를 만드는 것에 대한 부담감

Hi�Jenkins Pipeline

Page 36: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

개발자가�직접�수정하지�않도록�실제�로직은�블랙박스�

프로젝트간�커스터마이징은�yml로

Page 37: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

- 중앙관리�pipeline을�구축�가능�- 소스는�github에�존재

Global�Library

그럼�각�프로젝트별�특성은?

실제 파이프라인 코드

Read

>�jenkins.yml�에�존재

Page 38: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

Jenkinsfile jenkins.yml

@Library(‘[email protected]’)�_�deploy()

Page 39: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

Jenkinsfile

jenkins.yml

실제�파이프라인�코드

Pipeline�실행

Read

Page 40: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

DEVOPS구성요청

Build?�Test?�dns?�

특이사항?

생성

사용

유지보수

Page 41: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

DEVOPS구성요청

Build?�Test?�dns?�

특이사항?

생성

사용

유지보수

Page 42: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

오타�발생불필요한�핑퐁

Bye�GoCD

Log 위치가 어디로 떨어지나요?

런타임에 에러나는데 더 추가해야할 환경 변수가 있나요?

dev phase 추가해주세요

새로 추가된 서비스가 엉뚱한 곳으로 연결되요

Page 43: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

Log 위치가 어디로 떨어지나요?

런타임에 에러나는데더 추가해야할 환경 변수가 있나요?

dev phase 추가해주세요

Page 44: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

Log 위치가 어디로 떨어지나요?

런타임에 에러나는데더 추가해야할 환경 변수가 있나요?

dev phase 추가해주세요

Page 45: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

Log 위치가 어디로 떨어지나요?

런타임에 에러나는데더 추가해야할 환경 변수가 있나요?

dev phase 추가해주세요

Page 46: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

Log 위치가 어디로 떨어지나요?

런타임에 에러나는데더 추가해야할 환경 변수가 있나요?

dev phase 추가해주세요

Page 47: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

오타�발생

새로 추가된 서비스가 엉뚱한 곳으로 연결되요

Page 48: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

잘되어�있는�프로젝트를�일단�COPY

세부�내용�변경

X�N

Hi�Jenkins Pipeline

Page 49: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Organization

동기화

- 스케쥴러에�따라�자동�동기화�- Or�scan

Hi�Jenkins Pipeline

Page 50: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

Branch별�빌드/배포

Page 51: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

UI의�제공�-�자동화�프로젝트�특정에�맞는�배포�-�자동화�배포를�위한�K8S�yaml�관리�-�?

Page 52: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Helm

K8S�package�manager�여러가지�Project�template을�관리할�때�yaml,�json�template로도�유용�더�구조적이고�명확하게�관리가�가능했지만�여전히�수작업

Tiller

Page 53: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Helm

JAVA

SCALA

ETC

Sample-Projectcp�-r�preset-java�sample-project 변경

ProjectProjectProject

Page 54: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

Push hookGet�pipeline

Fetch�chart

Deploy

User�input

Busan�HangCreate�chart

Page 55: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

Page 56: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

구성요청

세부사항�확인 UI�생성 K8S�YML�생성

개발자

DEVOPScp�already-exist-project/deploy.yml�new-project/deploy.yml�

vim�deploy.yml

Page 57: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

구성요청

세부사항�확인 UI�생성 K8S�YML�생성

개발자

DEVOPScp�already-exist-project/deploy.yml�new-project/deploy.yml�

vim�deploy.yml

helm으로�관리�BUT�아직�수작업

jenkins.yml�생성

cp�-r�preset-java�sample-project

자동화

Page 58: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

UI의�제공�-�자동화�프로젝트�특정에�맞는�배포�-�자동화�

배포를�위한�K8S�yaml�관리�-�(여전히)�수작업

Page 59: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

- 관리포인트의�단일화�- 소모적인�핑퐁�커뮤니케이션�- 배포�정보의�화이트박스화�- 휴먼�에러�

- CD까지�규격화된�데이터로�처리하는�문제�- (개발자�입장에서)�너무�없는�UI�- 계속�복잡해지는�소스와�너무�큰�변경�Risk�- 아직�남은�수동�작업들

PROS CONS

Hi�Jenkins Pipeline

Page 60: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

1.�Jenkins�pipeline�도입기�1.1�Devops에서�일하는�법�1.2�Bye�GoCD�1.3�Hi�Jenkins�pipeline

2.�Jenkins�pipeline�개선기�2.1�Spinnaker�2.2�istio�2.3�Sail�2.4�Letmeknow

Page 61: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Canary�배포를�하고�싶어요�리소스�조절은�어떻게�하나요?�Deploy만�돌릴�순�없나요?�롤백�시간이�오래�걸려요�

Page 62: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

기능�추가�&�배포�개선

Page 63: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

오픈�소스를�조금�더�도입하기로�결정

Page 64: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

CDCI

Fetch� Fetch�

Create/update�pipeline��

Manage�charts�

Sail

Deploy�

Letmeknow�

Get�Event�

Push hook

Get�pipeline

Send�Notify�

+

Plumber

Page 65: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

더�많은�기능을�상대적으로�적은�Risk로�구현

자동화를�통한�일의�능률�향상Sail�

Page 66: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

1.�Jenkins�pipeline�도입기�1.1�Devops에서�일하는�법�1.2�Bye�GoCD�1.3�Hi�Jenkins�pipeline

2.�Jenkins�pipeline�개선기�2.1�Spinnaker�2.2�istio�2.3�Sail�2.4�Letmeknow

Page 67: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

- UI가�없어도�너무�없다.�- 다양한�배포�기능�실행은�어떻게�하나�- UI을�만드는�것조차�CODE

Jenkins�pipeline의�UI

Page 68: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Spinnaker

Page 69: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Spinnaker

하지만�DEVOPS�개발자�입장에서�UI�친화적�서비스는�사치다.

Page 70: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

이걸�다시??

잘되어�있는�프로젝트를�일단�COPY

세부�내용�변경

X�N

Spinnaker

Page 71: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Spinnaker

Spinnaker는�JSON으로�파이프라인을�정의�가능

Page 72: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Jenkinsfile

jenkins.ymlPipeline�create/update

Read

CI 파이프라인 코드

Fetch�pipeline��library

Spinnaker

Page 73: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Pipeline�create/update

Spinnaker

Page 74: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Spinnaker

Page 75: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

1.�Jenkins�pipeline�도입기�1.1�Devops에서�일하는�법�1.2�Bye�GoCD�1.3�Hi�Jenkins�pipeline

2.�Jenkins�pipeline�개선기�2.1�Spinnaker�2.2�istio�2.3�Sail�2.4�Letmeknow

Page 76: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

- 소스로�이루어진�pipeline에서�다양한�기능을�분배�- 새로운�기능을�제공하고자�할때�coding�보단�templating으로�대체�- helm를�통해�관리

ContainerSidecar�envoy�proxy

Pod

Traffic

Another�Pod

Traffic�shifting,�fault�injection,�mirroring,�etc

Istio

Page 77: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Istio

CRD로�이루어져�있어�Desired�State�정의�가능�Helm�chart에�함께�정의

PROJECT�CHART

Baseline�Chart Canary�Chart Traffic�Shift�Chart

Page 78: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Istio

- 운영까지�쓰고�있는�예시가�적다.�- 아직까지�버그가�많고�생각보다�해결하는�게�어려움�- 사이드카�패턴..�성능이�그만큼�나올까?�- nginx�ingress�controller를�완전히�대체�가능할까?

Page 79: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

- nGrinder,�wrk,�fortio를�활용�- nginx,�envoy,�nginx�+�envoy

Istio�성능�테스트

Page 80: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Request�처리�속도

CPU�사용량

일반적인�상황

과부하�상황

WIN!

WIN!

WIN!

WIN!

Istio�성능�테스트

Page 81: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Request�처리�속도

CPU�사용량

일반적인�상황

과부하�상황

WIN!

WIN!

WIN!

WIN!

결론 =

Istio�성능�테스트

Page 82: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

+????

Istio�성능�테스트

Page 83: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

+일반적인 상황 =

+>>>과부하 상황

Istio�성능�테스트

Page 84: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

- 개발장비로도�굉장히�높은�tps를�견뎌낼�수�있음�- 운영은�더�높은�장비�+�clustered�nginx�+�clustered�envoy�- 만약�nginx�+�envoy가�버틸�수�없을�정도라면..�- 그�전에�서비스�코드가�먼저�버티지�못함

�8코어�기준�cpu�40%정도�사용

Istio�성능�테스트

Page 85: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

1.�Jenkins�pipeline�도입기�1.1�Devops에서�일하는�법�1.2�Bye�GoCD�1.3�Hi�Jenkins�pipeline

2.�Jenkins�pipeline�개선기�2.1�Spinnaker�2.2�istio�2.3�Sail�2.4�Letmeknow

Page 86: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

점차�많은�부분에서�template을�요구�수동으로�관리하기엔�너무�큰�부담

Sail�

Create�

Read�jenkins.yml

Sail

Page 87: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Project

Chart

Sail

Project

Chart

Project

Chart

Project

Chart

Project와�Chart와의�1:1�매핑

Page 88: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Global�Parents

TemplatesCharts�(Namespace�Parents)

TemplatesProjects�Charts

Chart Chart

Sail

jenkins.yml

Language

Sail

Chart…

Page 89: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Global�Parents

TemplatesCharts�(Namespace�Parents)

TemplatesProjects�Charts

Chart Chart

Sail

jenkins.yml

Language

Sail

Chart…

Page 90: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Global�Parents

TemplatesCharts�(Namespace�Parents)

TemplatesProjects�Charts

Chart Chart

Sail

jenkins.yml

Language

Sail

Chart…

Page 91: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Sail

jenkins.yml

Language

Sail

Page 92: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

CDCI

Fetch� Fetch�

Create/update�pipeline��

Manage�charts�

Sail

Deploy�

Letmeknow�

Get�Event�

Push hook

Get�pipeline

Send�Notify�

+

Plumber

Page 93: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Hi�Jenkins Pipeline

세부사항�확인 UI�생성 K8S�YML�생성

cp�already-exist-project/deploy.yml�new-project/deploy.yml�vim�deploy.yml

개발자

DEVOPShelm으로�관리�BUT�아직�수작업

jenkins.yml�생성

자동화

cp�-r�preset-java�sample-project

구성요청

자동화

Page 94: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

아직�남은�숙제들

배포 대쉬보드더 쉽게 작성 가능한 jenkins.yml

Dockerfile을 생성

Page 95: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

아직�남은�숙제들

‘구성요청’ 없는 파이프라인

Page 96: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Pipeline을 코드로 풀어내는 순간 test도 필요해진다.Devops 개발자에겐 Web UI는 없는게 낫다.

새로운 시스템을 오픈하는 것은 쉽지만 잘쓰게 하는건 어렵다.오픈소스를 만드는 것이 아니다.

느낀점

Page 97: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

감사합니다.

Special THANK YOU @josh, @odin, @blaire, @shen

@@biz-platform

Page 98: 컨테이너CI/CD를하나의 JENKINSPIPELINE으로관리하기°œ표자료...Declarative HiJenkinsPipeline Jenkinsfile 실행 1 HiJenkinsPipeline-일단익숙해지면뭐든할수있다.-UI없이대부분의기능이구현된다.-이력관리가쉽게된다.-Jenkins다.-Jenkins다.-Jenkins에종속적인코드다.-익숙해지기어렵다.-

Q�&�A

Special THANK YOU @josh, @odin, @blair, @shen

@@biz-platform