SlideShare a Scribd company logo
1 of 43
Download to read offline
Deployment Pipeline
for multi-apps & multi-clusters
Decapod
컨테이너솔루션개발팀 이재상, 최태일
01 Overview
02 Decapod Pipeline > Documentation
03 Decapod Pipeline > Deployment
04 Decapod 설치 (bootstrap)
05 Demo
01 Overview
3
Decapod (Declarative Application Orchestration & Delivery)
무엇인가요?
• Decapod의 사전적 의미
• 십각목 : 10개의 다리를 가진 갑각류 à 다수의 다리로 다양한 어플리케이션을 들고 손쉽게 이동
• 다양한 Application들을 서로 연동하여 그룹화하고, 이를 다수의 Kubernetes에 배포, 관리하기 위한 파이프라인
• Kustomize, Argo 등의 오픈소스를 기반으로 SKT에서 자체 개발한 오픈소스SW
어디에, 어떻게 쓰이나요?
• SKT Container Platform에서는 Decapod를 기반으로 Cloud Infra Resource, Kubernetes Cluster 및 다양한
서비스들을 GitOps 형태로 배포•관리하고 있으며, 실제 다음 Use Case들에서 활용 중 (사실상 모든 것!!!)
• Kubernetes Cluster & Cloud Infra Resource
• Logging/Monitoring Prometheus, 다양한 Exporter들, Thanos, Grafana, Loki, Promtail 등
• Service Mesh Istio, Jaeger, Kiali, Elastic Search, Kibana, Service-mesh Portal등
• OpenStack Nova, Neutron, Cinder, Keystone, Horizon등
• 그 외 다수
4
Kubernetes Anywhere
Public cloud (AWS등)와 Private Cloud (OpenStack, VMWare등), 그리고 Baremetal 노드 등의 다양한
환경에 Kubernetes cluster 배포 è 다음 세션에서 Kubernetes cluster-API 관련 내용 소개
Decapod
TKS
5
Everything on Kubernetes
LMA, Service Mesh, OpenStack 등의 Pre-defined Application Group부터 그 외 사용자가 원하는
다양한 워크로드들을 배포 가능 è 후반부 데모 진행
LMA
SERVICE
MESH
portal
Decapod
TKS
6
Challenge
Kubernetes에 원하는 Application을 배포하는데 겪었던 대표적인 어려움과 니즈
• Configuration 관리
• 다수의 환경에 다수의 application(chart)을 어떻게 쉽게 배포할 수 있을까? ( # of apps X # of site = ?? )
• 공통 설정 수정하려면 다수의 파일을 반복적으로 수정하는 불편함
• 자체적으로 documentation tool 만들어썼으나 사용성/확장성의 한계
Monitoring
Logging
Site A Site B
Site C
7
Challenge
• Deployment
• 배포 과정을 좀더 가시적으로 확인할 수 없을까??
• Application 간의 dependency 등을 효율적으로
관리하고 싶은데...
• 실패시 retry 도 쉽게 가능했으면…
Kubernetes에 원하는 Application을 배포하는데 겪었던 대표적인 어려움과 니즈
8
특징
• Documentation
• 직관적이고 체계적인 문서 구조화를 통한 가시성 및 작업 편의성 (생산성) 향상
• Delivery
• Argo를 통해 app grouping 및 dependency 지정 등 좀더 조직화된 형태의 배포를 지원
• 배포 과정을 UI 상에서 시각화
• GitOps 방식의 자동화된 배포
• 100% Open Source
• https://github.com/openinfradev/decapod-base-yaml :생성될 manifest의 base가 되는 base resource yaml
• https://github.com/openinfradev/decapod-site : 환경에 맞게 kustomize를 통해 override할 수 있는 site yaml
• https://github.com/openinfradev/decapod-flow : Argo WorkflowTemplate들의 저장소
• https://github.com/openinfradev/decapod-bootstrap : 최초 decapod component들을 설치해주는 프로젝트
• https://openinfradev.github.io/decapod-docs/ : 공식 document
9
Tool Chain
• Kustomize (+ Helm transformer plugin) + Helm chart renderer
• Kustomize: K8S의 YAML 관리 툴로서, 구조화된 방식으로 문서 관리
• Renderer: Helm chart 내용을 k8s native manifest로 render
• Argo CD
• Gitops 기반 배포 tool로서, helm charts, k8s manifest 등을
이용해 K8S 상에 app 배포
• Argo Workflows
• Workflow engine 으로서 단계적인 task 수행
• Decapod에서 서로 의존성을 가진 다수의 app들을
grouping해서 한번에 배포/
각 app 간의 배포 순서 등을 컨트롤
10
Decapod at a glance
Container 형태의 다수의 Application들을 선언적인 방법으로 Kubernetes 상에 효과적으로 배포
선언적 APP 구성 Example
LMA (Logging, Monitoring, Alerting)
K8S Resource
reconcile
Decapod
(GitOps기반의 workflow control & continuous deployment )
Kubernetes APP 형태로 배포
[App] prom-operator
- chart_info
- custom_values
[App] fluentbit
- chart_info
- custom_values
[App] prometheus
- chart_info
- custom_values
Workflow Decapod YAMLs
Prom-
operator fluentbit prometheus
.
.
.
.
. . . .
prom-operator
fluentbit
fluentbit
prometheus
11
Architecture (Pipeline)
Manifest를 만드는 documentation 단계, 그리고 App 간의 의존성을 고려하여 App들을 실제 배포하는
deployment 단계로 구성
02
Decapod Pipeline
> Documentation
13
Application 배포를 위한 configuration 문서 (manifest) 생성
Documentation
14
Documentation
Helm chart value
Decapod-base-yaml
Decapod-site
Helm chart URL
+
모든 사이트에 적용되는 공통의 설정 &
Site별 필수 override 값
각 사이트별 특화된 설정
(필수 override값)
전체 helm values 중에서 검증되고 필요한 값들을 선택하여 base-yaml 구성
15
Documentation > Base-yaml
- Helm chart URL
- 모든 사이트에 적용되는 common한 설정/ 각 site에서 반드시 override되어야 하는 value 값들 포함
16
Documentation > Site-values
• Site-values 는 base 의 특정 내용을 각 환경에 적절한 값으로 override
Site-values (in decapod-site)
Decapod-base-yaml
17
Documentation > Rendered k8s manifest
실제로 rendering된 k8s manifest
03
Decapod Pipeline
> Deployment
19
Deployment
20
Deployment
• Argo CD application 생성 방법
• Argo CD CLI
• Decapod’s main approach
• Argo Workflows를 통해 순차적으로 app을 생성함으로써, app별 의존성을 고려한 조직화된 배포 가능
• Declarative manifest
• Yaml 형식의 manifest 파일로 App 생성
• 후반부 bootstrap 페이지에서 설명
21
Deployment > Argo-workflow UI
LMA AppGroup 배포 workflow 실행
Argo CD CLI 호출
App 간의 의존성을 고려한 배포 가능
Eck-operator
(step)
22
Deployment > Argo-CD UI
• Argo CD에 LMA project와 LMA Application들이 생성되는 모습
04 Decapod 설치 (bootstrap)
24
Decapod-bootstrap at a glance
• App-of-apps 패턴을 사용하여 최초에 decapod component들을 bootstrap하기 위한 프로젝트
• 최초 decapod가 존재하지 않는 상태에서 decapod component들을 손쉽게 자동으로/원스텝으로 배포하기 위해 개발
• Single helm chart와 git repository 상의 config 파일들로 일관성 있는 배포를 보장 (Run “helm install” -> “All done!”)
§ Argo CD를 설치하면서 최초의 meta app을 생성하며, 이 meta app이 decapod component들을 설치해주는 구조
§ Documentation: decapod-docs
25
Decapod-bootstrap at a glance
• App-of-apps 패턴을 사용하여 최초에 decapod component들을 bootstrap하기 위한 프로젝트
• 최초 decapod가 존재하지 않는 상태에서 decapod component들을 손쉽게 자동으로/원스텝으로 배포하기 위해 개발
• Single helm chart와 git repository 상의 config 파일들로 일관성 있는 배포를 보장 (Run “helm install” -> “All done!”)
§ Argo CD를 설치하면서 최초의 meta app을 생성하며, 이 meta app이 decapod component들을 설치해주는 구조
§ Documentation: decapod-docs
26
Decapod 설치 > Argo CD initial config
• Argo CD helm chart용 value-override file
• Argo CD 설치 직후 bootstrap을 위한 프로젝트
및 (meta) application들이 자동 생성됨
27
Decapod 설치 > meta-apps
• Argo CD에 최초로 meta-application 들이 생성된 모습
28
Decapod 설치 > application manifest
• Postgresql app을 생성하기 위한 manifest 파일
• Decapod-apps 디렉토리에 위치
29
l Argo CD 에 모든 decapod components 가 생성된 모습
decapod application
Meta application
Decapod 설치 > application 생성
} Cluster-api를 이용한 K8s cluster 설치 및 LMA group 등의 설치를 모두 decapod로 수행
} Cluster-api 를 ‘helm chart화’한 후 decapod로 wrapping
Git repository
Decapod-manifests REPO
Cluster-api-aws
Prometheus
Grafana
Argo CD
Decapod-site REPO
(Admin) Kubernetes cluster
Decapod-base REPO
Argo Workflow
Kustomize + plugin
…
Cluster-api-aws
K8s group
Prometheus
Grafana
LMA
group
Create
appgroups
Deployment
(User) Kubernetes cluster
Use Case > SKT Container platform
01 Demo
32
Demo Scenario
LMA 앱그룹을 Decapod을 사용해 쿠버네티스 클러스터에 배포하는 과정
Documentation
Deployment
decapod-
base-yaml
decapod-
site
kustomize+
decapod-
manifests
Documentation
decapod-flow Argo worflow Argo CD
Admin
Cluster
Deployment
manifest
exporters
LMA App Group
33
[Demo] Decapod Bootstrap
Decapod을 사용하기 위한 설치 단계
34
35
[Demo] Documentation
어플리케이션 배포를 위한 Documentation 준비
Documentation
Deployment
decapod-
base-yaml
decapod-
site
kustomize+
decapod-
manifests
Documentation
decapod-flow Argo worflow Argo CD
Admin
Cluster
Deployment
manifest
exporters
LMA App Group
36
37
[Demo] Deployment
준비한 Documentation과 Decapod 환경을 통해 LMA App group 배포
Documentation
Deployment
decapod-
base-yaml
decapod-
site
kustomize+
decapod-
manifests
Documentation
decapod-flow Argo worflow Argo CD
Admin
Cluster
Deployment
manifest
exporters
LMA App Group
38
39
Decapod-docs
https://openinfradev.github.io/decapod-docs/getting-started/install/
40
Toward Open Development
§ Github (github.com/openinfradev) 공간에서 모든 소스 코드 공개
§ DEVOCEAN (SK내 개발자 커뮤니티)을 통한 기술 공유, 이벤트 진행
감사합니다
Q & A

More Related Content

Similar to 세션2_데보션테크데이_Decapod_v1.2.pdf

Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)uEngine Solutions
 
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for BeginnerOpenStack Korea Community
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInho Kang
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) VMware Tanzu Korea
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료rockplace
 
애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축rockplace
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon Web Services Korea
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center어형 이
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기Ian Choi
 
네이버 클라우드 플랫폼의 컨테이너 기술 로드맵 (NBP 박기은 CTO) - NAVER CLOUD PLATFORM in [2018 All A...
네이버 클라우드 플랫폼의 컨테이너 기술 로드맵 (NBP 박기은 CTO) - NAVER CLOUD PLATFORM in [2018 All A...네이버 클라우드 플랫폼의 컨테이너 기술 로드맵 (NBP 박기은 CTO) - NAVER CLOUD PLATFORM in [2018 All A...
네이버 클라우드 플랫폼의 컨테이너 기술 로드맵 (NBP 박기은 CTO) - NAVER CLOUD PLATFORM in [2018 All A...NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기NAVER D2
 
Cloud life seminar open shift,이준영(배포용)
Cloud life seminar   open shift,이준영(배포용)Cloud life seminar   open shift,이준영(배포용)
Cloud life seminar open shift,이준영(배포용)Software in Life
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 

Similar to 세션2_데보션테크데이_Decapod_v1.2.pdf (20)

Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
 
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and Terraform
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS)
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료
 
애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축
 
Docker Container
Docker ContainerDocker Container
Docker Container
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
 
네이버 클라우드 플랫폼의 컨테이너 기술 로드맵 (NBP 박기은 CTO) - NAVER CLOUD PLATFORM in [2018 All A...
네이버 클라우드 플랫폼의 컨테이너 기술 로드맵 (NBP 박기은 CTO) - NAVER CLOUD PLATFORM in [2018 All A...네이버 클라우드 플랫폼의 컨테이너 기술 로드맵 (NBP 박기은 CTO) - NAVER CLOUD PLATFORM in [2018 All A...
네이버 클라우드 플랫폼의 컨테이너 기술 로드맵 (NBP 박기은 CTO) - NAVER CLOUD PLATFORM in [2018 All A...
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
 
Cloud life seminar open shift,이준영(배포용)
Cloud life seminar   open shift,이준영(배포용)Cloud life seminar   open shift,이준영(배포용)
Cloud life seminar open shift,이준영(배포용)
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 

More from Jaesuk Ahn

세션3_데보션테크데이_gitopsinfra_v1.1.pdf
세션3_데보션테크데이_gitopsinfra_v1.1.pdf세션3_데보션테크데이_gitopsinfra_v1.1.pdf
세션3_데보션테크데이_gitopsinfra_v1.1.pdfJaesuk Ahn
 
세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdf세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdfJaesuk Ahn
 
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...Jaesuk Ahn
 
세션0_데보션테크데이_개회사_v1.0.pdf
세션0_데보션테크데이_개회사_v1.0.pdf세션0_데보션테크데이_개회사_v1.0.pdf
세션0_데보션테크데이_개회사_v1.0.pdfJaesuk Ahn
 
세션1_데보션테크데이_시연데모_v1.0.pdf
세션1_데보션테크데이_시연데모_v1.0.pdf세션1_데보션테크데이_시연데모_v1.0.pdf
세션1_데보션테크데이_시연데모_v1.0.pdfJaesuk Ahn
 
세션5_데보션테크데이_AIops_v1.0.pdf
세션5_데보션테크데이_AIops_v1.0.pdf세션5_데보션테크데이_AIops_v1.0.pdf
세션5_데보션테크데이_AIops_v1.0.pdfJaesuk Ahn
 
세션4_데보션테크데이_k10backup_Veeam_v1.0.pdf
세션4_데보션테크데이_k10backup_Veeam_v1.0.pdf세션4_데보션테크데이_k10backup_Veeam_v1.0.pdf
세션4_데보션테크데이_k10backup_Veeam_v1.0.pdfJaesuk Ahn
 
세션4_데보션테크데이_k10backup_SKT_v1.0.pdf
세션4_데보션테크데이_k10backup_SKT_v1.0.pdf세션4_데보션테크데이_k10backup_SKT_v1.0.pdf
세션4_데보션테크데이_k10backup_SKT_v1.0.pdfJaesuk Ahn
 
SKT Openinfra days 2018 Presentation
SKT Openinfra days 2018 Presentation SKT Openinfra days 2018 Presentation
SKT Openinfra days 2018 Presentation Jaesuk Ahn
 
SK Telecom TACO Introduction at Berlin Summit
SK Telecom TACO Introduction at Berlin SummitSK Telecom TACO Introduction at Berlin Summit
SK Telecom TACO Introduction at Berlin SummitJaesuk Ahn
 
Monitoring System Targeting OpenStack, Baremetal, and Network Fabric
Monitoring System Targeting OpenStack, Baremetal, and Network FabricMonitoring System Targeting OpenStack, Baremetal, and Network Fabric
Monitoring System Targeting OpenStack, Baremetal, and Network FabricJaesuk Ahn
 
OpenStack at Xen summit Asia
OpenStack at Xen summit Asia OpenStack at Xen summit Asia
OpenStack at Xen summit Asia Jaesuk Ahn
 
OpenStack at Korea Community Day
OpenStack at Korea Community DayOpenStack at Korea Community Day
OpenStack at Korea Community DayJaesuk Ahn
 

More from Jaesuk Ahn (13)

세션3_데보션테크데이_gitopsinfra_v1.1.pdf
세션3_데보션테크데이_gitopsinfra_v1.1.pdf세션3_데보션테크데이_gitopsinfra_v1.1.pdf
세션3_데보션테크데이_gitopsinfra_v1.1.pdf
 
세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdf세션5_데보션테크데이_이상근.pdf
세션5_데보션테크데이_이상근.pdf
 
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...
 
세션0_데보션테크데이_개회사_v1.0.pdf
세션0_데보션테크데이_개회사_v1.0.pdf세션0_데보션테크데이_개회사_v1.0.pdf
세션0_데보션테크데이_개회사_v1.0.pdf
 
세션1_데보션테크데이_시연데모_v1.0.pdf
세션1_데보션테크데이_시연데모_v1.0.pdf세션1_데보션테크데이_시연데모_v1.0.pdf
세션1_데보션테크데이_시연데모_v1.0.pdf
 
세션5_데보션테크데이_AIops_v1.0.pdf
세션5_데보션테크데이_AIops_v1.0.pdf세션5_데보션테크데이_AIops_v1.0.pdf
세션5_데보션테크데이_AIops_v1.0.pdf
 
세션4_데보션테크데이_k10backup_Veeam_v1.0.pdf
세션4_데보션테크데이_k10backup_Veeam_v1.0.pdf세션4_데보션테크데이_k10backup_Veeam_v1.0.pdf
세션4_데보션테크데이_k10backup_Veeam_v1.0.pdf
 
세션4_데보션테크데이_k10backup_SKT_v1.0.pdf
세션4_데보션테크데이_k10backup_SKT_v1.0.pdf세션4_데보션테크데이_k10backup_SKT_v1.0.pdf
세션4_데보션테크데이_k10backup_SKT_v1.0.pdf
 
SKT Openinfra days 2018 Presentation
SKT Openinfra days 2018 Presentation SKT Openinfra days 2018 Presentation
SKT Openinfra days 2018 Presentation
 
SK Telecom TACO Introduction at Berlin Summit
SK Telecom TACO Introduction at Berlin SummitSK Telecom TACO Introduction at Berlin Summit
SK Telecom TACO Introduction at Berlin Summit
 
Monitoring System Targeting OpenStack, Baremetal, and Network Fabric
Monitoring System Targeting OpenStack, Baremetal, and Network FabricMonitoring System Targeting OpenStack, Baremetal, and Network Fabric
Monitoring System Targeting OpenStack, Baremetal, and Network Fabric
 
OpenStack at Xen summit Asia
OpenStack at Xen summit Asia OpenStack at Xen summit Asia
OpenStack at Xen summit Asia
 
OpenStack at Korea Community Day
OpenStack at Korea Community DayOpenStack at Korea Community Day
OpenStack at Korea Community Day
 

세션2_데보션테크데이_Decapod_v1.2.pdf

  • 1. Deployment Pipeline for multi-apps & multi-clusters Decapod 컨테이너솔루션개발팀 이재상, 최태일
  • 2. 01 Overview 02 Decapod Pipeline > Documentation 03 Decapod Pipeline > Deployment 04 Decapod 설치 (bootstrap) 05 Demo
  • 4. 3 Decapod (Declarative Application Orchestration & Delivery) 무엇인가요? • Decapod의 사전적 의미 • 십각목 : 10개의 다리를 가진 갑각류 à 다수의 다리로 다양한 어플리케이션을 들고 손쉽게 이동 • 다양한 Application들을 서로 연동하여 그룹화하고, 이를 다수의 Kubernetes에 배포, 관리하기 위한 파이프라인 • Kustomize, Argo 등의 오픈소스를 기반으로 SKT에서 자체 개발한 오픈소스SW 어디에, 어떻게 쓰이나요? • SKT Container Platform에서는 Decapod를 기반으로 Cloud Infra Resource, Kubernetes Cluster 및 다양한 서비스들을 GitOps 형태로 배포•관리하고 있으며, 실제 다음 Use Case들에서 활용 중 (사실상 모든 것!!!) • Kubernetes Cluster & Cloud Infra Resource • Logging/Monitoring Prometheus, 다양한 Exporter들, Thanos, Grafana, Loki, Promtail 등 • Service Mesh Istio, Jaeger, Kiali, Elastic Search, Kibana, Service-mesh Portal등 • OpenStack Nova, Neutron, Cinder, Keystone, Horizon등 • 그 외 다수
  • 5. 4 Kubernetes Anywhere Public cloud (AWS등)와 Private Cloud (OpenStack, VMWare등), 그리고 Baremetal 노드 등의 다양한 환경에 Kubernetes cluster 배포 è 다음 세션에서 Kubernetes cluster-API 관련 내용 소개 Decapod TKS
  • 6. 5 Everything on Kubernetes LMA, Service Mesh, OpenStack 등의 Pre-defined Application Group부터 그 외 사용자가 원하는 다양한 워크로드들을 배포 가능 è 후반부 데모 진행 LMA SERVICE MESH portal Decapod TKS
  • 7. 6 Challenge Kubernetes에 원하는 Application을 배포하는데 겪었던 대표적인 어려움과 니즈 • Configuration 관리 • 다수의 환경에 다수의 application(chart)을 어떻게 쉽게 배포할 수 있을까? ( # of apps X # of site = ?? ) • 공통 설정 수정하려면 다수의 파일을 반복적으로 수정하는 불편함 • 자체적으로 documentation tool 만들어썼으나 사용성/확장성의 한계 Monitoring Logging Site A Site B Site C
  • 8. 7 Challenge • Deployment • 배포 과정을 좀더 가시적으로 확인할 수 없을까?? • Application 간의 dependency 등을 효율적으로 관리하고 싶은데... • 실패시 retry 도 쉽게 가능했으면… Kubernetes에 원하는 Application을 배포하는데 겪었던 대표적인 어려움과 니즈
  • 9. 8 특징 • Documentation • 직관적이고 체계적인 문서 구조화를 통한 가시성 및 작업 편의성 (생산성) 향상 • Delivery • Argo를 통해 app grouping 및 dependency 지정 등 좀더 조직화된 형태의 배포를 지원 • 배포 과정을 UI 상에서 시각화 • GitOps 방식의 자동화된 배포 • 100% Open Source • https://github.com/openinfradev/decapod-base-yaml :생성될 manifest의 base가 되는 base resource yaml • https://github.com/openinfradev/decapod-site : 환경에 맞게 kustomize를 통해 override할 수 있는 site yaml • https://github.com/openinfradev/decapod-flow : Argo WorkflowTemplate들의 저장소 • https://github.com/openinfradev/decapod-bootstrap : 최초 decapod component들을 설치해주는 프로젝트 • https://openinfradev.github.io/decapod-docs/ : 공식 document
  • 10. 9 Tool Chain • Kustomize (+ Helm transformer plugin) + Helm chart renderer • Kustomize: K8S의 YAML 관리 툴로서, 구조화된 방식으로 문서 관리 • Renderer: Helm chart 내용을 k8s native manifest로 render • Argo CD • Gitops 기반 배포 tool로서, helm charts, k8s manifest 등을 이용해 K8S 상에 app 배포 • Argo Workflows • Workflow engine 으로서 단계적인 task 수행 • Decapod에서 서로 의존성을 가진 다수의 app들을 grouping해서 한번에 배포/ 각 app 간의 배포 순서 등을 컨트롤
  • 11. 10 Decapod at a glance Container 형태의 다수의 Application들을 선언적인 방법으로 Kubernetes 상에 효과적으로 배포 선언적 APP 구성 Example LMA (Logging, Monitoring, Alerting) K8S Resource reconcile Decapod (GitOps기반의 workflow control & continuous deployment ) Kubernetes APP 형태로 배포 [App] prom-operator - chart_info - custom_values [App] fluentbit - chart_info - custom_values [App] prometheus - chart_info - custom_values Workflow Decapod YAMLs Prom- operator fluentbit prometheus . . . . . . . . prom-operator fluentbit fluentbit prometheus
  • 12. 11 Architecture (Pipeline) Manifest를 만드는 documentation 단계, 그리고 App 간의 의존성을 고려하여 App들을 실제 배포하는 deployment 단계로 구성
  • 14. 13 Application 배포를 위한 configuration 문서 (manifest) 생성 Documentation
  • 15. 14 Documentation Helm chart value Decapod-base-yaml Decapod-site Helm chart URL + 모든 사이트에 적용되는 공통의 설정 & Site별 필수 override 값 각 사이트별 특화된 설정 (필수 override값) 전체 helm values 중에서 검증되고 필요한 값들을 선택하여 base-yaml 구성
  • 16. 15 Documentation > Base-yaml - Helm chart URL - 모든 사이트에 적용되는 common한 설정/ 각 site에서 반드시 override되어야 하는 value 값들 포함
  • 17. 16 Documentation > Site-values • Site-values 는 base 의 특정 내용을 각 환경에 적절한 값으로 override Site-values (in decapod-site) Decapod-base-yaml
  • 18. 17 Documentation > Rendered k8s manifest 실제로 rendering된 k8s manifest
  • 21. 20 Deployment • Argo CD application 생성 방법 • Argo CD CLI • Decapod’s main approach • Argo Workflows를 통해 순차적으로 app을 생성함으로써, app별 의존성을 고려한 조직화된 배포 가능 • Declarative manifest • Yaml 형식의 manifest 파일로 App 생성 • 후반부 bootstrap 페이지에서 설명
  • 22. 21 Deployment > Argo-workflow UI LMA AppGroup 배포 workflow 실행 Argo CD CLI 호출 App 간의 의존성을 고려한 배포 가능 Eck-operator (step)
  • 23. 22 Deployment > Argo-CD UI • Argo CD에 LMA project와 LMA Application들이 생성되는 모습
  • 24. 04 Decapod 설치 (bootstrap)
  • 25. 24 Decapod-bootstrap at a glance • App-of-apps 패턴을 사용하여 최초에 decapod component들을 bootstrap하기 위한 프로젝트 • 최초 decapod가 존재하지 않는 상태에서 decapod component들을 손쉽게 자동으로/원스텝으로 배포하기 위해 개발 • Single helm chart와 git repository 상의 config 파일들로 일관성 있는 배포를 보장 (Run “helm install” -> “All done!”) § Argo CD를 설치하면서 최초의 meta app을 생성하며, 이 meta app이 decapod component들을 설치해주는 구조 § Documentation: decapod-docs
  • 26. 25 Decapod-bootstrap at a glance • App-of-apps 패턴을 사용하여 최초에 decapod component들을 bootstrap하기 위한 프로젝트 • 최초 decapod가 존재하지 않는 상태에서 decapod component들을 손쉽게 자동으로/원스텝으로 배포하기 위해 개발 • Single helm chart와 git repository 상의 config 파일들로 일관성 있는 배포를 보장 (Run “helm install” -> “All done!”) § Argo CD를 설치하면서 최초의 meta app을 생성하며, 이 meta app이 decapod component들을 설치해주는 구조 § Documentation: decapod-docs
  • 27. 26 Decapod 설치 > Argo CD initial config • Argo CD helm chart용 value-override file • Argo CD 설치 직후 bootstrap을 위한 프로젝트 및 (meta) application들이 자동 생성됨
  • 28. 27 Decapod 설치 > meta-apps • Argo CD에 최초로 meta-application 들이 생성된 모습
  • 29. 28 Decapod 설치 > application manifest • Postgresql app을 생성하기 위한 manifest 파일 • Decapod-apps 디렉토리에 위치
  • 30. 29 l Argo CD 에 모든 decapod components 가 생성된 모습 decapod application Meta application Decapod 설치 > application 생성
  • 31. } Cluster-api를 이용한 K8s cluster 설치 및 LMA group 등의 설치를 모두 decapod로 수행 } Cluster-api 를 ‘helm chart화’한 후 decapod로 wrapping Git repository Decapod-manifests REPO Cluster-api-aws Prometheus Grafana Argo CD Decapod-site REPO (Admin) Kubernetes cluster Decapod-base REPO Argo Workflow Kustomize + plugin … Cluster-api-aws K8s group Prometheus Grafana LMA group Create appgroups Deployment (User) Kubernetes cluster Use Case > SKT Container platform
  • 33. 32 Demo Scenario LMA 앱그룹을 Decapod을 사용해 쿠버네티스 클러스터에 배포하는 과정 Documentation Deployment decapod- base-yaml decapod- site kustomize+ decapod- manifests Documentation decapod-flow Argo worflow Argo CD Admin Cluster Deployment manifest exporters LMA App Group
  • 34. 33 [Demo] Decapod Bootstrap Decapod을 사용하기 위한 설치 단계
  • 35. 34
  • 36. 35 [Demo] Documentation 어플리케이션 배포를 위한 Documentation 준비 Documentation Deployment decapod- base-yaml decapod- site kustomize+ decapod- manifests Documentation decapod-flow Argo worflow Argo CD Admin Cluster Deployment manifest exporters LMA App Group
  • 37. 36
  • 38. 37 [Demo] Deployment 준비한 Documentation과 Decapod 환경을 통해 LMA App group 배포 Documentation Deployment decapod- base-yaml decapod- site kustomize+ decapod- manifests Documentation decapod-flow Argo worflow Argo CD Admin Cluster Deployment manifest exporters LMA App Group
  • 39. 38
  • 41. 40 Toward Open Development § Github (github.com/openinfradev) 공간에서 모든 소스 코드 공개 § DEVOCEAN (SK내 개발자 커뮤니티)을 통한 기술 공유, 이벤트 진행
  • 43. Q & A