SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
DevOps – CI/CD 알아보기
Jenkins, git, GitHub, and Slack
© 2020 NetApp, Inc. All rights reserved.
SeungYong Baek
Senior Solutions Engineer / NetApp Korea
August 2021
알아볼 내용 들… ▪ DevOps?
▪ Source Code Management
▪ git, GitHub
▪ Continuous Integration(CI) /
Continuous Delivery(CD)
▪ Jenkins
▪ Collaboration and Communication
▪ Slack
▪ Demo – git, GitHub, Jenkins, Slack
▪ NetApp with DevOps
© 2020 NetApp, Inc. All rights reserved.
2
© 2020 NetApp, Inc. All rights reserved.
3
기업의 비즈니스를 지속, 가속, 및 성장시키기 위한 다양한 디지털 전략의 집합?
DevOps?
DevOps란?
DevOps는 애플리케이션 개발의 품질과 속도를 개선하고 신규 또는 수정된 소프트웨어 기능이나 제품의 릴리즈 주기 단축을 장려하는 새로운
철학이자 프레임워크입니다.
DevOps 사례는 애플리케이션 개발 팀(Dev)과 해당 IT 운영 팀(Ops) 팀 간의 원활하고 지속적인 커뮤니케이션, 협업, 통합, 가시성 및 투명성을
장려합니다.
"Dev"와 "Ops" 간의 이러한 긴밀한 관계는 초기 소프트웨어 계획부터 코딩, 구축, 테스트 및 릴리즈 단계와 구축, 운영 및 지속적인 모니터링에
이르는 DevOps 라이프사이클의 모든 단계에 걸쳐 계속됩니다. 이러한 관계는 추가 개선, 개발, 테스트 및 구축에 대한 지속적인 고객 피드백
루프를 추진하는 원동력이 됩니다. 이러한 노력이 제공하는 결과 중 하나는 필요한 기능 변경 또는 추가 기능을 더 빠르고 지속적으로 릴리즈할
수 있다는 것입니다. – NetApp –
DevOps 정의
개발(Dev)과 운영(Ops)의 합성어인 DevOps는 고객에게 지속적으로 가치를 제공하도록 지원하는 사람, 프로세스 및 기술의 합집합입니다.
팀에는 DevOps가 어떤 의미일까요? DevOps는 개발, IT 운영, 품질 엔지니어링, 보안 등 이제껏 서로 단절되었던 역할들이 서로 조율하고
협업하여 더욱 안정적이고 뛰어난 제품을 생산할 수 있도록 지원합니다. DevOps 방식과 도구를 비롯한 DevOps 문화를 도입하는 팀은 고객
요구 사항에 보다 효과적으로 대응하고, 더욱 안심하고 애플리케이션을 빌드하며, 비즈니스 목표를 더 빨리 달성할 수 있습니다. – Microsoft –
DevOps 이해
DevOps는 신속한 고품질 서비스 제공을 통해 비즈니스 가치와 대응력을 향상시키기 위한 기업 문화, 자동화, 플랫폼 설계에 대한 접근
방식입니다. 이러한 접근 방식은 빠르게 반복적으로 IT 서비스를 제공하는 역량이 있어야 가능합니다. DevOps는 레거시 애플리케이션과 최신
클라우드 네이티브 애플리케이션 및 인프라를 연결하는 것을 의미합니다. – Redhat –
https://www.netapp.com/ko/devops-solutions/what-is-devops/
https://azure.microsoft.com/ko-kr/overview/what-is-devops/
https://www.redhat.com/ko/topics/devops
© 2020 NetApp, Inc. All rights reserved.
4
DevOps의 구현 방식, 범위, 그리고 구현에 따른 효과는 모두가 다르다.
DevOps 사례
https://www.netapp.com/ko/devops-solutions/what-is-devops/
https://aws.amazon.com/ko/devops/what-is-devops/
© 2020 NetApp, Inc. All rights reserved.
5
무한 반복과 수 많은 툴 들의 결합
DevOps 프로세스와 툴
https://devops.com/the-promise-of-ai-for-devops-in-2021/
https://www.opsera.io/blog/top-25-devops-tools-that-you-need-to-know
AWS CodeBuild
AWS CodeCommit AWS CodeDeploy
AWS Cloud Development Kit
(AWS CDK)
© 2020 NetApp, Inc. All rights reserved.
6
CI / CD는 DevOps의 여러 방식 중 한 가지
Continuous Integration(CI) / Continuous Delivery(CD)?
지속적 통합 (Continuous Integration)
CI/CD의 "CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미합니다. CI를 성공적으로
구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로
여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다.
지속적 전달 (Continuous Delivery)
CI/CD의 "CD"는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미하며 이
두 용어는 상호 교환적으로 사용됩니다. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나
많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 합니다.
제공 vs 배포
지속적 제공(Continuous Delivery)
• 유효한 코드를 리포지토리에 자동으로 릴리스
• 운영환경으로의 배포에 일종의 승인 작업이 필요
지속적 배포(Continuous Deployment)
• 애플리케이션을 프로덕션으로 릴리스하는 작업을 자동화
https://www.redhat.com/ko/topics/devops/what-is-ci-cd
© 2020 NetApp, Inc. All rights reserved.
7
git, GitHub, Jenkins, Slack, AWS EC2, Docker
CI/CD 데모 환경
Jenkins 서버
AWS EC2
1. git push
2. git commit / push 통지
2. git fetch
3. 변경된 소스로 빌드
4. EC2 업로드(SSH)
5. 빌드 통지
Jenkins Pipeline demo에서 사용
© 2020 NetApp, Inc. All rights reserved.
8
git 및 GitHub 개요
Source Code Management
git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에
해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.
GitHub는 분산 버전 관리 툴인 git 저장소 호스팅을 지원하는 웹
서비스이다.
Working
Directory
Staging
Area
Local
Repository
Remote
Repository
(Public or Private)
Working
Directory
Staging
Area
Local
Repository
Working
Directory
Staging
Area
Local
Repository
git add git commit git push/pull
git clone
https://ko.wikipedia.org/wiki/%EA%B9%83_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)
https://ko.wikipedia.org/wiki/%EA%B9%83%ED%97%88%EB%B8%8C
© 2020 NetApp, Inc. All rights reserved.
9
git 및 GitHub 구성 #1
Source Code Management 구성
1. git, gcc 설치
$ sudo apt install git gcc
2. GitHub 가입 - https://github.com/
3. GitHub remote repository 생성
- repository 생성 후에 Quick setup 참고
© 2020 NetApp, Inc. All rights reserved.
10
git 및 GitHub 구성 #2
Source Code Management 구성
4. Personal Access Token 생성
- Settings → Developer settings → Personal access token
- API와 CLI 사용을 위해서는 필수
- 토큰은 한 번만 보여지므로 메모도 필수
- 해당 토큰으로 사용할 수 있는 범위 지정
https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token
© 2020 NetApp, Inc. All rights reserved.
11
git 및 GitHub 구성 #3
Source Code Management 구성
5. git 초기화 및 GitHub remote repository 구성
$ mkdir cicd-demo ; cd cicd-demo
$ echo "# CICD-demo - Jenkins with GitHub." > README.md
$ vi hello.c
##### hello.c #####
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("Hello!n");
printf("CICD-demo - Jenkins with GitHub #1n");
exit(0);
}
© 2020 NetApp, Inc. All rights reserved.
12
git 및 GitHub 구성 #4
Source Code Management 구성
5. git 초기화 및 GitHub remote repository 구성
$ git init
$ git add README.md hello.c
$ git config --global user.name "SeungYong-Baek"
$ git config --global user.email "seungyong.baek@gmail.com"
$ git config --list
$ git commit -m "First Commit"
$ git status
$ git log
$ git branch -M main
$ git remote add origin https://github.com/SeungYong-Baek/cicd-demo.git
** 사용자명과 암호는 PAT 사용
$ git push -u origin main
$ git status
$ git log
6. GitHub remote repository 확인
© 2020 NetApp, Inc. All rights reserved.
13
Jenkins 개요
Continuous Integration / Continuous Delivery
https://www.jenkins.io/doc/
https://docs.microsoft.com/ko-kr/azure/developer/jenkins/overview
Jenkins는 소프트웨어 프로젝트에
대해 CI/CD(지속적인 통합 및 배포)를
설정하는 데 사용되는 인기 있는 오픈
소스 자동화 서버입니다.
Azure에서 Jenkins 배포를
호스트하거나 Azure 리소스를
사용하여 기존 Jenkins 구성을 확장할
수 있습니다.
애플리케이션의 CI/CD를 Azure로
간소화하기 위해 Jenkins 플러그 인도
사용할 수 있습니다.
© 2020 NetApp, Inc. All rights reserved.
14
Jenkins – 기본 빌드 테스트 #1
Jenkins CI/CD 구성
1. JDK 설치
$ sudo apt install openjdk-11-jdk
2. Jenkins 다운로드
- WAR 파일 및 OS별 패키지 버전 제공
- WAR(Web application ARchive, 웹 애플리케이션 아카이브)
- JAR(Java Archive, 자바 아카이브)
- 이 데모는 가장 단순한 WAR 파일 사용
** WAR 파일의 내용 확인
$ jar tvf jenkins.war
https://www.jenkins.io/download/
https://www.jenkins.io/doc/book/installing/
© 2020 NetApp, Inc. All rights reserved.
15
Jenkins – 기본 빌드 테스트 #2
Jenkins CI/CD 구성
3. Jenkins 설치
- Jenkins 설치 및 설치 완료 후 기동 방법 동일
$ java -jar jenkins.war
** Setup Wizard가 실행되면 초기 Admin 비밀번호로 시작
© 2020 NetApp, Inc. All rights reserved.
16
Jenkins – 기본 빌드 테스트 #3
Jenkins CI/CD 구성
3. Jenkins 설치
- Jenkins 설치 및 설치 완료 후 기동 방법 동일
$ java -jar jenkins.war
** Setup Wizard가 실행되면 초기 Admin 비밀번호로 시작
© 2020 NetApp, Inc. All rights reserved.
17
Jenkins – 기본 빌드 테스트 #4
Jenkins CI/CD 구성
4. Jenkins Global Tool 설정
- Jenkins 관리 → Global Tool Configuration → JDK, Git
© 2020 NetApp, Inc. All rights reserved.
18
Jenkins – 기본 빌드 테스트 #5
Jenkins CI/CD 구성
5. 프로젝트 생성 및 빌드 결과 확인
- 새로운 Item → Freestyle Project
© 2020 NetApp, Inc. All rights reserved.
19
Jenkins – 기본 빌드 테스트 #6
Jenkins CI/CD 구성
5. 프로젝트 생성 및 빌드 결과 확인
- 빌드: 컴파일 + Unit 테스트 + 패키징
- GitHub 연결을 위한 Credential 생성 필요
- SCM 구성에서 생성한 GitHub PAT 사용
- 빌드 유발: 10분 마다 SCM을 Polling
- 빌드 유발: GitHub hook도 가능
- 빌드: Shell 에서 gcc 실행
- 실제로는 Make, Gradle 같은 다양한 빌드 툴 활용
$ make all
# Makefile
.SUFFIXES : .c .o
OBJECTS = main.o print.o input.o
SRCS = $(OBJECTS:.o=.c)
CC = gcc
CFLAGS = -g
TARGET = test helloworld
all : $(TARGET)
helloworld : helloworld.c
$(CC) -o $@ $<
test : $(OBJECTS)
$(CC) -o $@ $(OBJECTS)
clean :
$(RM) $(OBJECTS) $(TARGET) helloworld.o core
main.o : main.c common.h
print.o : print.c common.h
input.o : input.c common.h
© 2020 NetApp, Inc. All rights reserved.
20
Jenkins – 기본 빌드 테스트 #7
Jenkins CI/CD 구성
5. 프로젝트 생성 및 빌드 결과 확인
- 잠시 대기 후에, 빌드가 되는지 확인
- 콘솔 출력 및 워크스페이스 확인
© 2020 NetApp, Inc. All rights reserved.
21
Jenkins – 기본 빌드 테스트 #8
Jenkins CI/CD 구성
6. 소스 코드 수정 후에 자동 빌드 확인
- 소스 코드 수정 및 GitHub에 push
- Jenkins가 repository의 변경 사항을 Polling하여 빌드 수행
© 2020 NetApp, Inc. All rights reserved.
22
Jenkins – 기본 빌드 테스트 #9
Jenkins CI/CD 구성
6. 소스 코드 수정 후에 자동 빌드 확인
- 빌드 기록 및 워크스페이스 확인
© 2020 NetApp, Inc. All rights reserved.
23
Jenkins – SSH 배포 테스트 #1
Jenkins CI/CD 구성
** AWS EC2 인스턴스에 빌드된 결과물을 배포(Artifact라고 부름)
** EC2 인스턴스의 SSH 키 필요
1. 플러그인 설치
- Publish Over SSH 플러그인 설치 및 구성
- 굉장히 많은 수의 플러그인을 지원하는 것이 장점이자 단점
© 2020 NetApp, Inc. All rights reserved.
24
Jenkins – SSH 배포 테스트 #2
Jenkins CI/CD 구성
2. 플러그인 구성
- Jenkins 관리 → System Configuration → Publish over SSH
- SSH 키 및 대상 서버 구성
© 2020 NetApp, Inc. All rights reserved.
25
Jenkins – SSH 배포 테스트 #3
Jenkins CI/CD 구성
3. 프로젝트 구성 변경
- 빌드 후 조치 추가
- 다양한 방식의 빌드 후 조치 추가 가능
© 2020 NetApp, Inc. All rights reserved.
26
Jenkins – SSH 배포 테스트 #4
Jenkins CI/CD 구성
4. 자동 빌드 및 배포 확인
- “기본 빌드 테스트 / 6. 소스 코드 수정 후에 자동 빌드 확인”
- 빌드 기록 및 워크스페이스 확인
© 2020 NetApp, Inc. All rights reserved.
27
Slack 개요
Collaboration and Communication
Slack이란 무엇인가요?
Slack은 사람들과 정보를 연결해주는 기업용 메시징
앱입니다. Slack은 사람들을 한데 모아 통합된 하나의
팀을 운영하여 조직이 커뮤니케이션하는 방법을
개선할 수 있습니다.
https://slack.com/intl/ko-kr/
https://slack.com/intl/ko-kr/help/articles/115004071768-Slack%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94-
* Slack - Microsoft Teams와 같은 협업 및 커뮤니케이션 툴
* GitHub와 Jenkins에서 발생한 이벤트를 채널을 통해 통지
* 메세징, 미팅, 다양한 앱 연동 지원
* 웹 브라우저 및 앱 지원
© 2020 NetApp, Inc. All rights reserved.
28
Slack 연동 – GitHub #1
Slack 구성
1. Slack 가입
- 가입 및 워크스페이스 생성
- 웹 브라우저 또는 데스크탑 앱으로 실행 가능
https://slack.com/intl/ko-kr/
https://slack.com/intl/ko-kr/
© 2020 NetApp, Inc. All rights reserved.
29
Slack 연동 – GitHub #2
Slack 구성
2. GitHub 앱 설치 및 구성
- 앱 설치 및 가이드에 따라 연동 구성
© 2020 NetApp, Inc. All rights reserved.
30
Slack 연동 – GitHub #3
Slack 구성
2. GitHub 앱 설치 및 구성
- 앱 설치 및 가이드에 따라 연동 구성
© 2020 NetApp, Inc. All rights reserved.
31
Slack 연동 – Jenkins #1
Slack 구성
1. Jenkins 앱 설치 및 구성
- 앱 설치 및 채널 생성
© 2020 NetApp, Inc. All rights reserved.
32
Slack 연동 – Jenkins #2
Slack 구성
1. Jenkins 앱 설치 및 구성
- “Jenkins CI 통합 앱 추가” 를 누르면, Jenkins 플러그인 구성 가이드 나옴
- “팀 하위 도메인” 이름과 “통합 토큰” 메모
© 2020 NetApp, Inc. All rights reserved.
33
Slack 연동 – Jenkins #3
Slack 구성
2. Jenkins에서 Slack 연결 구성
- Slack Notification 플러그인 설치 및 구성
- Jenkins 관리 → System Configuration → Slack
- Slack 통합 토큰으로 Jenkins Credential 생성 필요
© 2020 NetApp, Inc. All rights reserved.
34
Slack 연동 – Jenkins #4
Slack 구성
3. 프로젝트 구성 변경
- 빌드 후 조치에 Slack Notifications 추가
© 2020 NetApp, Inc. All rights reserved.
35
Notification – GitHub
Slack 구성
1. GitHub Notification 확인
- 소스 코드 수정 및 GitHub에 push
- Slack에 새로운 commit 메시지 발생
© 2020 NetApp, Inc. All rights reserved.
36
Notification – Jenkins
Slack 구성
1. Jenkins Notification 확인
- GitHub의 변경 사항을 반영하여 새로운 빌드를 자동 수행
- 빌드 수행 내역에 대해서 Slack에 메시지 발생
© 2020 NetApp, Inc. All rights reserved.
37
Notification – Mobile
Slack 구성
1. 모바일 앱 메시지
© 2020 NetApp, Inc. All rights reserved.
38
Pipeline, Multi-configuration project, Folder 등등등
Jenkins 추가 기능들
© 2020 NetApp, Inc. All rights reserved.
39
Jenkin Pipeline 구성 #1
Jenkins /CD 구성
** Jenkins Pipeline – Build, Test, Deploy 자동화를 통한 CD 기능
1. Docker 설치
$ sudo apt install docker.io
$ sudo usermod -aG docker seungyong
$ docker version
2. 플러그인 설치
- Docker pipeline 플러그인 설치 및 구성
- Jenkins 관리 → System Configuration → Declarative Pipeline(Docker)
- Docker registry URL: 비워 두면 DockerHub 공식 registry 사용
- Jenkins Credential은 DockerHub 가입한 ID/PW 사용
© 2020 NetApp, Inc. All rights reserved.
40
Jenkin Pipeline 구성 #2
Jenkins /CD 구성
3. GitHub에 Jenkinsfile 작성
4. Pipeline 생성
- Freestyle project와 유사한 형태
https://www.jenkins.io/doc/book/pipeline/
https://www.jenkins.io/doc/pipeline/tour/hello-world/
© 2020 NetApp, Inc. All rights reserved.
41
Jenkin Pipeline 구성 #3
Jenkins /CD 구성
4. Pipeline 생성
- Pipeline 탭의 script 창에 직접 스크립트로 작성도 가능
- 이 데모는 SCM에서 가져오는 형태로 구성했고, 기존의 GitHub 연결과 동일
© 2020 NetApp, Inc. All rights reserved.
42
Jenkin Pipeline 구성 #4
Jenkins /CD 구성
5. Pipeline 빌드 테스트
- 수동으로 빌드 수행
© 2020 NetApp, Inc. All rights reserved.
43
Jenkin Pipeline 구성 #5
Jenkins /CD 구성
6. Pipeline 빌드 결과 확인
- 콘솔 로그 및 단계별 결과 확인
© 2020 NetApp, Inc. All rights reserved.
44
Containers Orchestration, Configuration Management, Hybrid Cloud Data Services
NetApp with DevOps
Containers Orchestration
Public Cloud
Configuration Management
Private Cloud
© 2020 NetApp, Inc. All rights reserved.
45
NetApp Astra Trident for Container
NetApp with DevOps
Google GKE
MSFT AKS
Docker EE
swam
C O N T A I N E R O R C H E S T R A T O R S S T O R A G E P L A T F O R M S
NetApp HCI
SANtricity
AFF / EF-Serie
Element
Azure NetApp File
Cloud Volume Services
Clone
Snapshot
Volume Import
NFS / iSCSI
CSI
© 2020 NetApp, Inc. All rights reserved.
46
NetApp Astra for Container Data Management
NetApp with DevOps
Astra Control Center and Service
Stateful
Applications
Bring your own
Kubernetes
Public Cloud
Enterprise IT
Private/
Hybrid Cloud
by
On-premises and
Cloud Storage
Self managed Software
Full managed Software
Cloud Volumes ONTAP
Cloud Volumes Service
NetApp unlocks
the best of cloud
© 2020 NetApp, Inc. All rights reserved.

Más contenido relacionado

La actualidad más candente

Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
OpenStack Korea Community
 

La actualidad más candente (20)

[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
 
Container Runtime Security with Falco
Container Runtime Security with FalcoContainer Runtime Security with Falco
Container Runtime Security with Falco
 
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
[OpenStack Days Korea 2016] Track1 - 카카오는 오픈스택 기반으로 어떻게 5000VM을 운영하고 있을까?
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
 
Red Hat OpenShift Container Storage
Red Hat OpenShift Container StorageRed Hat OpenShift Container Storage
Red Hat OpenShift Container Storage
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
 
Gitops: the kubernetes way
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes way
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
 
Github
GithubGithub
Github
 
CNCF and Cloud Native Intro
CNCF and Cloud Native IntroCNCF and Cloud Native Intro
CNCF and Cloud Native Intro
 
Deep Dive into Kubernetes - Part 1
Deep Dive into Kubernetes - Part 1Deep Dive into Kubernetes - Part 1
Deep Dive into Kubernetes - Part 1
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영
 
Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
Intro to kubernetes
Intro to kubernetesIntro to kubernetes
Intro to kubernetes
 

Similar a DevOps - CI/CD 알아보기

NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
Jinuk Kim
 

Similar a DevOps - CI/CD 알아보기 (20)

델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop
 
Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
 
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
Travis-ci를 이용한 CI/CD와 도커를 이용한 Jenkins for Android 구성하기
 
Mastering devops with oracle 강인호
Mastering devops with oracle 강인호Mastering devops with oracle 강인호
Mastering devops with oracle 강인호
 
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
 
빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android빠르고 지속적으로 전달하기: Continuous Delivery for Android
빠르고 지속적으로 전달하기: Continuous Delivery for Android
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
DevOps Study
DevOps StudyDevOps Study
DevOps Study
 
락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
Docker Container
Docker ContainerDocker Container
Docker Container
 
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
 
Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center
 

Más de SeungYong Baek

Más de SeungYong Baek (7)

데이터 레이크 알아보기(Learn about Data Lake)
데이터 레이크 알아보기(Learn about Data Lake)데이터 레이크 알아보기(Learn about Data Lake)
데이터 레이크 알아보기(Learn about Data Lake)
 
NetApp AI Control Plane
NetApp AI Control PlaneNetApp AI Control Plane
NetApp AI Control Plane
 
오픈소스 모니터링 알아보기(Learn about opensource monitoring)
오픈소스 모니터링 알아보기(Learn about opensource monitoring)오픈소스 모니터링 알아보기(Learn about opensource monitoring)
오픈소스 모니터링 알아보기(Learn about opensource monitoring)
 
생활 코딩 #2(Simple Web Scraping with Python #2)
생활 코딩 #2(Simple Web Scraping with Python #2)생활 코딩 #2(Simple Web Scraping with Python #2)
생활 코딩 #2(Simple Web Scraping with Python #2)
 
생활 코딩 #1(Simple Web Scraping with Python #1)
생활 코딩 #1(Simple Web Scraping with Python #1)생활 코딩 #1(Simple Web Scraping with Python #1)
생활 코딩 #1(Simple Web Scraping with Python #1)
 
데이터분석 알아보기(Learn about basic data analysis)
데이터분석 알아보기(Learn about  basic data analysis)데이터분석 알아보기(Learn about  basic data analysis)
데이터분석 알아보기(Learn about basic data analysis)
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 

Último

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
Wonjun Hwang
 

Último (6)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

DevOps - CI/CD 알아보기

  • 1. DevOps – CI/CD 알아보기 Jenkins, git, GitHub, and Slack © 2020 NetApp, Inc. All rights reserved. SeungYong Baek Senior Solutions Engineer / NetApp Korea August 2021
  • 2. 알아볼 내용 들… ▪ DevOps? ▪ Source Code Management ▪ git, GitHub ▪ Continuous Integration(CI) / Continuous Delivery(CD) ▪ Jenkins ▪ Collaboration and Communication ▪ Slack ▪ Demo – git, GitHub, Jenkins, Slack ▪ NetApp with DevOps © 2020 NetApp, Inc. All rights reserved. 2
  • 3. © 2020 NetApp, Inc. All rights reserved. 3 기업의 비즈니스를 지속, 가속, 및 성장시키기 위한 다양한 디지털 전략의 집합? DevOps? DevOps란? DevOps는 애플리케이션 개발의 품질과 속도를 개선하고 신규 또는 수정된 소프트웨어 기능이나 제품의 릴리즈 주기 단축을 장려하는 새로운 철학이자 프레임워크입니다. DevOps 사례는 애플리케이션 개발 팀(Dev)과 해당 IT 운영 팀(Ops) 팀 간의 원활하고 지속적인 커뮤니케이션, 협업, 통합, 가시성 및 투명성을 장려합니다. "Dev"와 "Ops" 간의 이러한 긴밀한 관계는 초기 소프트웨어 계획부터 코딩, 구축, 테스트 및 릴리즈 단계와 구축, 운영 및 지속적인 모니터링에 이르는 DevOps 라이프사이클의 모든 단계에 걸쳐 계속됩니다. 이러한 관계는 추가 개선, 개발, 테스트 및 구축에 대한 지속적인 고객 피드백 루프를 추진하는 원동력이 됩니다. 이러한 노력이 제공하는 결과 중 하나는 필요한 기능 변경 또는 추가 기능을 더 빠르고 지속적으로 릴리즈할 수 있다는 것입니다. – NetApp – DevOps 정의 개발(Dev)과 운영(Ops)의 합성어인 DevOps는 고객에게 지속적으로 가치를 제공하도록 지원하는 사람, 프로세스 및 기술의 합집합입니다. 팀에는 DevOps가 어떤 의미일까요? DevOps는 개발, IT 운영, 품질 엔지니어링, 보안 등 이제껏 서로 단절되었던 역할들이 서로 조율하고 협업하여 더욱 안정적이고 뛰어난 제품을 생산할 수 있도록 지원합니다. DevOps 방식과 도구를 비롯한 DevOps 문화를 도입하는 팀은 고객 요구 사항에 보다 효과적으로 대응하고, 더욱 안심하고 애플리케이션을 빌드하며, 비즈니스 목표를 더 빨리 달성할 수 있습니다. – Microsoft – DevOps 이해 DevOps는 신속한 고품질 서비스 제공을 통해 비즈니스 가치와 대응력을 향상시키기 위한 기업 문화, 자동화, 플랫폼 설계에 대한 접근 방식입니다. 이러한 접근 방식은 빠르게 반복적으로 IT 서비스를 제공하는 역량이 있어야 가능합니다. DevOps는 레거시 애플리케이션과 최신 클라우드 네이티브 애플리케이션 및 인프라를 연결하는 것을 의미합니다. – Redhat – https://www.netapp.com/ko/devops-solutions/what-is-devops/ https://azure.microsoft.com/ko-kr/overview/what-is-devops/ https://www.redhat.com/ko/topics/devops
  • 4. © 2020 NetApp, Inc. All rights reserved. 4 DevOps의 구현 방식, 범위, 그리고 구현에 따른 효과는 모두가 다르다. DevOps 사례 https://www.netapp.com/ko/devops-solutions/what-is-devops/ https://aws.amazon.com/ko/devops/what-is-devops/
  • 5. © 2020 NetApp, Inc. All rights reserved. 5 무한 반복과 수 많은 툴 들의 결합 DevOps 프로세스와 툴 https://devops.com/the-promise-of-ai-for-devops-in-2021/ https://www.opsera.io/blog/top-25-devops-tools-that-you-need-to-know AWS CodeBuild AWS CodeCommit AWS CodeDeploy AWS Cloud Development Kit (AWS CDK)
  • 6. © 2020 NetApp, Inc. All rights reserved. 6 CI / CD는 DevOps의 여러 방식 중 한 가지 Continuous Integration(CI) / Continuous Delivery(CD)? 지속적 통합 (Continuous Integration) CI/CD의 "CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미합니다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다. 지속적 전달 (Continuous Delivery) CI/CD의 "CD"는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환적으로 사용됩니다. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 합니다. 제공 vs 배포 지속적 제공(Continuous Delivery) • 유효한 코드를 리포지토리에 자동으로 릴리스 • 운영환경으로의 배포에 일종의 승인 작업이 필요 지속적 배포(Continuous Deployment) • 애플리케이션을 프로덕션으로 릴리스하는 작업을 자동화 https://www.redhat.com/ko/topics/devops/what-is-ci-cd
  • 7. © 2020 NetApp, Inc. All rights reserved. 7 git, GitHub, Jenkins, Slack, AWS EC2, Docker CI/CD 데모 환경 Jenkins 서버 AWS EC2 1. git push 2. git commit / push 통지 2. git fetch 3. 변경된 소스로 빌드 4. EC2 업로드(SSH) 5. 빌드 통지 Jenkins Pipeline demo에서 사용
  • 8. © 2020 NetApp, Inc. All rights reserved. 8 git 및 GitHub 개요 Source Code Management git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. GitHub는 분산 버전 관리 툴인 git 저장소 호스팅을 지원하는 웹 서비스이다. Working Directory Staging Area Local Repository Remote Repository (Public or Private) Working Directory Staging Area Local Repository Working Directory Staging Area Local Repository git add git commit git push/pull git clone https://ko.wikipedia.org/wiki/%EA%B9%83_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4) https://ko.wikipedia.org/wiki/%EA%B9%83%ED%97%88%EB%B8%8C
  • 9. © 2020 NetApp, Inc. All rights reserved. 9 git 및 GitHub 구성 #1 Source Code Management 구성 1. git, gcc 설치 $ sudo apt install git gcc 2. GitHub 가입 - https://github.com/ 3. GitHub remote repository 생성 - repository 생성 후에 Quick setup 참고
  • 10. © 2020 NetApp, Inc. All rights reserved. 10 git 및 GitHub 구성 #2 Source Code Management 구성 4. Personal Access Token 생성 - Settings → Developer settings → Personal access token - API와 CLI 사용을 위해서는 필수 - 토큰은 한 번만 보여지므로 메모도 필수 - 해당 토큰으로 사용할 수 있는 범위 지정 https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token
  • 11. © 2020 NetApp, Inc. All rights reserved. 11 git 및 GitHub 구성 #3 Source Code Management 구성 5. git 초기화 및 GitHub remote repository 구성 $ mkdir cicd-demo ; cd cicd-demo $ echo "# CICD-demo - Jenkins with GitHub." > README.md $ vi hello.c ##### hello.c ##### #include <stdio.h> #include <stdlib.h> int main(void) { printf("Hello!n"); printf("CICD-demo - Jenkins with GitHub #1n"); exit(0); }
  • 12. © 2020 NetApp, Inc. All rights reserved. 12 git 및 GitHub 구성 #4 Source Code Management 구성 5. git 초기화 및 GitHub remote repository 구성 $ git init $ git add README.md hello.c $ git config --global user.name "SeungYong-Baek" $ git config --global user.email "seungyong.baek@gmail.com" $ git config --list $ git commit -m "First Commit" $ git status $ git log $ git branch -M main $ git remote add origin https://github.com/SeungYong-Baek/cicd-demo.git ** 사용자명과 암호는 PAT 사용 $ git push -u origin main $ git status $ git log 6. GitHub remote repository 확인
  • 13. © 2020 NetApp, Inc. All rights reserved. 13 Jenkins 개요 Continuous Integration / Continuous Delivery https://www.jenkins.io/doc/ https://docs.microsoft.com/ko-kr/azure/developer/jenkins/overview Jenkins는 소프트웨어 프로젝트에 대해 CI/CD(지속적인 통합 및 배포)를 설정하는 데 사용되는 인기 있는 오픈 소스 자동화 서버입니다. Azure에서 Jenkins 배포를 호스트하거나 Azure 리소스를 사용하여 기존 Jenkins 구성을 확장할 수 있습니다. 애플리케이션의 CI/CD를 Azure로 간소화하기 위해 Jenkins 플러그 인도 사용할 수 있습니다.
  • 14. © 2020 NetApp, Inc. All rights reserved. 14 Jenkins – 기본 빌드 테스트 #1 Jenkins CI/CD 구성 1. JDK 설치 $ sudo apt install openjdk-11-jdk 2. Jenkins 다운로드 - WAR 파일 및 OS별 패키지 버전 제공 - WAR(Web application ARchive, 웹 애플리케이션 아카이브) - JAR(Java Archive, 자바 아카이브) - 이 데모는 가장 단순한 WAR 파일 사용 ** WAR 파일의 내용 확인 $ jar tvf jenkins.war https://www.jenkins.io/download/ https://www.jenkins.io/doc/book/installing/
  • 15. © 2020 NetApp, Inc. All rights reserved. 15 Jenkins – 기본 빌드 테스트 #2 Jenkins CI/CD 구성 3. Jenkins 설치 - Jenkins 설치 및 설치 완료 후 기동 방법 동일 $ java -jar jenkins.war ** Setup Wizard가 실행되면 초기 Admin 비밀번호로 시작
  • 16. © 2020 NetApp, Inc. All rights reserved. 16 Jenkins – 기본 빌드 테스트 #3 Jenkins CI/CD 구성 3. Jenkins 설치 - Jenkins 설치 및 설치 완료 후 기동 방법 동일 $ java -jar jenkins.war ** Setup Wizard가 실행되면 초기 Admin 비밀번호로 시작
  • 17. © 2020 NetApp, Inc. All rights reserved. 17 Jenkins – 기본 빌드 테스트 #4 Jenkins CI/CD 구성 4. Jenkins Global Tool 설정 - Jenkins 관리 → Global Tool Configuration → JDK, Git
  • 18. © 2020 NetApp, Inc. All rights reserved. 18 Jenkins – 기본 빌드 테스트 #5 Jenkins CI/CD 구성 5. 프로젝트 생성 및 빌드 결과 확인 - 새로운 Item → Freestyle Project
  • 19. © 2020 NetApp, Inc. All rights reserved. 19 Jenkins – 기본 빌드 테스트 #6 Jenkins CI/CD 구성 5. 프로젝트 생성 및 빌드 결과 확인 - 빌드: 컴파일 + Unit 테스트 + 패키징 - GitHub 연결을 위한 Credential 생성 필요 - SCM 구성에서 생성한 GitHub PAT 사용 - 빌드 유발: 10분 마다 SCM을 Polling - 빌드 유발: GitHub hook도 가능 - 빌드: Shell 에서 gcc 실행 - 실제로는 Make, Gradle 같은 다양한 빌드 툴 활용 $ make all # Makefile .SUFFIXES : .c .o OBJECTS = main.o print.o input.o SRCS = $(OBJECTS:.o=.c) CC = gcc CFLAGS = -g TARGET = test helloworld all : $(TARGET) helloworld : helloworld.c $(CC) -o $@ $< test : $(OBJECTS) $(CC) -o $@ $(OBJECTS) clean : $(RM) $(OBJECTS) $(TARGET) helloworld.o core main.o : main.c common.h print.o : print.c common.h input.o : input.c common.h
  • 20. © 2020 NetApp, Inc. All rights reserved. 20 Jenkins – 기본 빌드 테스트 #7 Jenkins CI/CD 구성 5. 프로젝트 생성 및 빌드 결과 확인 - 잠시 대기 후에, 빌드가 되는지 확인 - 콘솔 출력 및 워크스페이스 확인
  • 21. © 2020 NetApp, Inc. All rights reserved. 21 Jenkins – 기본 빌드 테스트 #8 Jenkins CI/CD 구성 6. 소스 코드 수정 후에 자동 빌드 확인 - 소스 코드 수정 및 GitHub에 push - Jenkins가 repository의 변경 사항을 Polling하여 빌드 수행
  • 22. © 2020 NetApp, Inc. All rights reserved. 22 Jenkins – 기본 빌드 테스트 #9 Jenkins CI/CD 구성 6. 소스 코드 수정 후에 자동 빌드 확인 - 빌드 기록 및 워크스페이스 확인
  • 23. © 2020 NetApp, Inc. All rights reserved. 23 Jenkins – SSH 배포 테스트 #1 Jenkins CI/CD 구성 ** AWS EC2 인스턴스에 빌드된 결과물을 배포(Artifact라고 부름) ** EC2 인스턴스의 SSH 키 필요 1. 플러그인 설치 - Publish Over SSH 플러그인 설치 및 구성 - 굉장히 많은 수의 플러그인을 지원하는 것이 장점이자 단점
  • 24. © 2020 NetApp, Inc. All rights reserved. 24 Jenkins – SSH 배포 테스트 #2 Jenkins CI/CD 구성 2. 플러그인 구성 - Jenkins 관리 → System Configuration → Publish over SSH - SSH 키 및 대상 서버 구성
  • 25. © 2020 NetApp, Inc. All rights reserved. 25 Jenkins – SSH 배포 테스트 #3 Jenkins CI/CD 구성 3. 프로젝트 구성 변경 - 빌드 후 조치 추가 - 다양한 방식의 빌드 후 조치 추가 가능
  • 26. © 2020 NetApp, Inc. All rights reserved. 26 Jenkins – SSH 배포 테스트 #4 Jenkins CI/CD 구성 4. 자동 빌드 및 배포 확인 - “기본 빌드 테스트 / 6. 소스 코드 수정 후에 자동 빌드 확인” - 빌드 기록 및 워크스페이스 확인
  • 27. © 2020 NetApp, Inc. All rights reserved. 27 Slack 개요 Collaboration and Communication Slack이란 무엇인가요? Slack은 사람들과 정보를 연결해주는 기업용 메시징 앱입니다. Slack은 사람들을 한데 모아 통합된 하나의 팀을 운영하여 조직이 커뮤니케이션하는 방법을 개선할 수 있습니다. https://slack.com/intl/ko-kr/ https://slack.com/intl/ko-kr/help/articles/115004071768-Slack%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94- * Slack - Microsoft Teams와 같은 협업 및 커뮤니케이션 툴 * GitHub와 Jenkins에서 발생한 이벤트를 채널을 통해 통지 * 메세징, 미팅, 다양한 앱 연동 지원 * 웹 브라우저 및 앱 지원
  • 28. © 2020 NetApp, Inc. All rights reserved. 28 Slack 연동 – GitHub #1 Slack 구성 1. Slack 가입 - 가입 및 워크스페이스 생성 - 웹 브라우저 또는 데스크탑 앱으로 실행 가능 https://slack.com/intl/ko-kr/ https://slack.com/intl/ko-kr/
  • 29. © 2020 NetApp, Inc. All rights reserved. 29 Slack 연동 – GitHub #2 Slack 구성 2. GitHub 앱 설치 및 구성 - 앱 설치 및 가이드에 따라 연동 구성
  • 30. © 2020 NetApp, Inc. All rights reserved. 30 Slack 연동 – GitHub #3 Slack 구성 2. GitHub 앱 설치 및 구성 - 앱 설치 및 가이드에 따라 연동 구성
  • 31. © 2020 NetApp, Inc. All rights reserved. 31 Slack 연동 – Jenkins #1 Slack 구성 1. Jenkins 앱 설치 및 구성 - 앱 설치 및 채널 생성
  • 32. © 2020 NetApp, Inc. All rights reserved. 32 Slack 연동 – Jenkins #2 Slack 구성 1. Jenkins 앱 설치 및 구성 - “Jenkins CI 통합 앱 추가” 를 누르면, Jenkins 플러그인 구성 가이드 나옴 - “팀 하위 도메인” 이름과 “통합 토큰” 메모
  • 33. © 2020 NetApp, Inc. All rights reserved. 33 Slack 연동 – Jenkins #3 Slack 구성 2. Jenkins에서 Slack 연결 구성 - Slack Notification 플러그인 설치 및 구성 - Jenkins 관리 → System Configuration → Slack - Slack 통합 토큰으로 Jenkins Credential 생성 필요
  • 34. © 2020 NetApp, Inc. All rights reserved. 34 Slack 연동 – Jenkins #4 Slack 구성 3. 프로젝트 구성 변경 - 빌드 후 조치에 Slack Notifications 추가
  • 35. © 2020 NetApp, Inc. All rights reserved. 35 Notification – GitHub Slack 구성 1. GitHub Notification 확인 - 소스 코드 수정 및 GitHub에 push - Slack에 새로운 commit 메시지 발생
  • 36. © 2020 NetApp, Inc. All rights reserved. 36 Notification – Jenkins Slack 구성 1. Jenkins Notification 확인 - GitHub의 변경 사항을 반영하여 새로운 빌드를 자동 수행 - 빌드 수행 내역에 대해서 Slack에 메시지 발생
  • 37. © 2020 NetApp, Inc. All rights reserved. 37 Notification – Mobile Slack 구성 1. 모바일 앱 메시지
  • 38. © 2020 NetApp, Inc. All rights reserved. 38 Pipeline, Multi-configuration project, Folder 등등등 Jenkins 추가 기능들
  • 39. © 2020 NetApp, Inc. All rights reserved. 39 Jenkin Pipeline 구성 #1 Jenkins /CD 구성 ** Jenkins Pipeline – Build, Test, Deploy 자동화를 통한 CD 기능 1. Docker 설치 $ sudo apt install docker.io $ sudo usermod -aG docker seungyong $ docker version 2. 플러그인 설치 - Docker pipeline 플러그인 설치 및 구성 - Jenkins 관리 → System Configuration → Declarative Pipeline(Docker) - Docker registry URL: 비워 두면 DockerHub 공식 registry 사용 - Jenkins Credential은 DockerHub 가입한 ID/PW 사용
  • 40. © 2020 NetApp, Inc. All rights reserved. 40 Jenkin Pipeline 구성 #2 Jenkins /CD 구성 3. GitHub에 Jenkinsfile 작성 4. Pipeline 생성 - Freestyle project와 유사한 형태 https://www.jenkins.io/doc/book/pipeline/ https://www.jenkins.io/doc/pipeline/tour/hello-world/
  • 41. © 2020 NetApp, Inc. All rights reserved. 41 Jenkin Pipeline 구성 #3 Jenkins /CD 구성 4. Pipeline 생성 - Pipeline 탭의 script 창에 직접 스크립트로 작성도 가능 - 이 데모는 SCM에서 가져오는 형태로 구성했고, 기존의 GitHub 연결과 동일
  • 42. © 2020 NetApp, Inc. All rights reserved. 42 Jenkin Pipeline 구성 #4 Jenkins /CD 구성 5. Pipeline 빌드 테스트 - 수동으로 빌드 수행
  • 43. © 2020 NetApp, Inc. All rights reserved. 43 Jenkin Pipeline 구성 #5 Jenkins /CD 구성 6. Pipeline 빌드 결과 확인 - 콘솔 로그 및 단계별 결과 확인
  • 44. © 2020 NetApp, Inc. All rights reserved. 44 Containers Orchestration, Configuration Management, Hybrid Cloud Data Services NetApp with DevOps Containers Orchestration Public Cloud Configuration Management Private Cloud
  • 45. © 2020 NetApp, Inc. All rights reserved. 45 NetApp Astra Trident for Container NetApp with DevOps Google GKE MSFT AKS Docker EE swam C O N T A I N E R O R C H E S T R A T O R S S T O R A G E P L A T F O R M S NetApp HCI SANtricity AFF / EF-Serie Element Azure NetApp File Cloud Volume Services Clone Snapshot Volume Import NFS / iSCSI CSI
  • 46. © 2020 NetApp, Inc. All rights reserved. 46 NetApp Astra for Container Data Management NetApp with DevOps Astra Control Center and Service Stateful Applications Bring your own Kubernetes Public Cloud Enterprise IT Private/ Hybrid Cloud by On-premises and Cloud Storage Self managed Software Full managed Software Cloud Volumes ONTAP Cloud Volumes Service
  • 47. NetApp unlocks the best of cloud © 2020 NetApp, Inc. All rights reserved.