SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Decapod
Declarative Application Orchestration & Delivery
SK Telecom
김에스더
Contents of Table
§ Background
§ Introduction
§ Documentation
§ Deployment
§ Demo
§ Q & A
Background
Background – 기존 구조
• OpenStack, LMA(Logging, Monitoring, Alert) 등을 Helm Chart로 배포
OpenStack
ceph-provisioners
cinder
etcd
glance
heat
helm-toolkit
horizon
ingress
keystone
libvirt
mariadb
memcached
neutron
nfs-client-provisioner
nova
openvswitch
rabbitmq
LMA
elasticsearch-operator
prometheus-operator
kube-state-metrics
prometheus-node-exporter
prometheus-pushgateway
prometheus-process-exporter
grafana
fluentbit-operator
taco-addons-lma
taco-watcher
kubernetes-event-exporter
prometheus-adapter
keycloak
Background - Armada
• 많은 Helm chart를 보다 쉽게 배포하기 위해 Armada라는 툴을 사용
Armara-manifest.yaml
schema: armada/Chart/v1
metadata:
schema: metadata/Document/v1
name: elasticsearch
data:
chart_name: elasticsearch
release: elasticsearch
namespace: lma
values:
---
schema: armada/ChartGroup/v1
metadata:
schema: metadata/Document/v1
name: logging-infra
data:
description: "Logging Infrastructure"
sequenced: False
chart_group:
- elasticsearch
- fluentbit
---
schema: armada/Manifest/v1
metadata:
schema: metadata/Document/v1
name: single-manifest
chart_groups:
- logging-infra
Armada CLI
Helm v2
(Tiller)
Background - Armada
• Armada + Helm 구조
장점
• Helm Chart를 Grouping해서
Group을 sequential하게 배포
• 다수의 Chart에 대한 설정을 한 개의
Manifest 파일로 관리할 수 있다.
단점
• Helm v3 지원 불가
• 가독성 저하
(file line 1000줄 이상)
• 형상 관리 한계
• 낮은 생산성
Background - Armada
과거 Manifest 검색
Ctrl+c,v
새로운 환경 값 적용
with 1,500 lines
배포
디버깅
실패
반복반복반복
성공
Client: “신규 클러스터 구축해주세요.”
나: … (한숨)
Background
• 이 방법이 최선일까? 좀 더 Smart하게 일하고 싶다.
• 새로운 Helm Chart 관리 & 배포 툴은…
• 환경 별 Manifest diff가 명확하게 보였으면 좋겠다.
• 자주 변경하는 Helm chart values들을 Change Set으로 정의해서 적용할 수 있으면 좋겠다.
• 생산성을 높일 수 있는 구조였으면…
Introduction
Decapod
• Declarative Application Orchestration & Delivery
• 십각목 (Ten-footed) 학명
Introduction
목표
1. Documentation
가시성,생산성을 높이고, 체계적인 구조를 만듬
2. Operator Model
Helm Chart 를 Kubernetes Resource로 관리
3. Deployment Pipeline
Argo를 통해 복잡한 배포 과정을 시각화하고,
실패한 시점부터 다시 반복해서 시도할 수 있다.
Toolchain
• Helm Operator
• Helm Chart를 Kubernetes Resource로 관리
• Kustomize + HelmTransformer plugin
• template-free yaml customizing tool
• Argo Workflow
• Container-native workflow engine
Architecture
Helm OperatorArgo WorkflowKustomize
Manifest
Build
Read
Create
Helm Chart
Helm Chart
Helm Chart
Deploy
HelmRelease
CRDs
Watch
Documentation
Documentation
Helm OperatorArgo WorkflowKustomize
Manifest
Build
Read
Create
Helm Chart
Helm Chart
Helm Chart
Deploy
HelmRelease
CRDs
Watch
Kustomize
• 2018년 SIG-CLI의 subproject로 시작하여 현재는 kubectl kustomize 명령어로 사용가능
• Kustomize는 Kubernetes Object로 구성된 Yaml 파일들을 여러 환경, 목적에 맞게
Customizing하는 것을 돕는다.
• Template Free Yaml
Helm Operator
• Helm chart release를 선언적으로 관리하기 위한 Kubernetes Operator
• Flux의 project 중 하나이다. https://github.com/fluxcd/helm-operator
• GitOps 툴인 FluxCD와 연동하여 자동으로 Helm Chart를 배포하기 위해 만들어졌다.
Helm Operator
• 주요 기능
• Helm repo와 연동하여 source 업데이트 시 자동 배포 가능
• Automated Rollback, Automated Purge, Automated Image upgrade 등의 자동화 기능이 추가 구현됨
• Helm version targeting 가능
• ArgoCD/FluxCD와 연동하여 GitOps Pipeline을 만들 수 있다.
• Helm dep update 기능 지원
• Git, localpath, helm plugins, ssh 등 다양한 chart source 를 사용할 수 있다.
Documentation
• Kustomize를 사용하여 단일 파일 구조에서 계층 구조로 변경
• Base yaml과 Site yaml의 Repository 분리
decapod-yaml
openstack/
├── base/
├── network/
│ ├── linuxbridge-flat-vlan
│ └── openvswitch-flat-vlan
lma/
├── base/
└── images/
Site-yaml
openstack/
├── output/
│ ├── dev/
│ └── stage/
├── site/
│ ├── dev/
└ └── stage/
lma/
openstack-site/
├── output/
│ ├── dev/
│ └── stage/
├── site/
│ ├── dev/
└ └── stage/
Documentation
• base/resources.yaml
• 배포할 Helm Chart들의 모든 정의 및 values
• 환경 별로 달라지는 값을 TO_BE_FIXED로 표기
Documentation
• base/site-values.yaml
• HelmValuesTransformer plugin을 사용
• resources.yaml의 차트들의 value를
override한다.
• 새로운 환경을 만들 때, 이 값을 복사해서 수정
Documentation
• site/
• base/site-values.yaml,
image/, network/ 등 형상에 맞게 선택한다.
• 복사한 *-values.yaml 의 값들을 알맞게 수정
lma/site
├── dev
│ ├── image-values.yaml
│ ├── kustomization.yaml
│ └── site-values.yaml
├── prd
│ ├── image-values.yaml
│ ├── kustomization.yaml
│ └── site-values.yaml
└── stg
├── image-values.yaml
├── kustomization.yaml
└── site-values.yaml
Documentation
• Build
• Kustomize lma/site/dev --enable_alpha_plugins
• Output
• 하나의 manifest file
Deployment
Architecture
Helm OperatorArgo WorkflowKustomize
Manifest
Build
Read
Create
Helm Chart
Helm Chart
Helm Chart
Deploy
HelmRelease
CRDs
Watch
Argo UI
Trigger
Argo Workflow
• CNCF Project로 container-native workflow 엔진
• 특징
• VM 및 서버 환경 제약 없이 컨테이너 기반으로 설계됨
• Cloud에 구애 받지 않고, Kubernetes cluster에서 실행 가능
• Kubernetes 상에서 병렬 작업을 쉽게 실행할 수 있음
• 구성 요소
• Argo CLI
• Argo Server (Argo UI)
• CRDs
• Workkflow, WorkflowTemplate, ClusterWorkflowTemplate, CronWorkflow
Argo Workflow
• WorkflowTemplate
• 재활용 가능한 template
• 변수만 바꿔서 workflow로 만들 수 있다.
• 오른쪽은 Helm Deploy를 위한
WorkflowTemplate
Argo Workflow
• Workflow
• WorkflowTemplate을 이용해서 다수의 Helm
Chart를 배포한다.
• 이렇게 배포하는 과정을 모두 Argo UI를 통해
실시간으로 볼 수 있다.
Argo Workflow
• Workflow
Demo
Projects
• Decapod-yaml
https://github.com/openinfradev/decapod-yaml
• Kustomize-helm-transform
https://github.com/openinfradev/kustomize-helm-transformer
• Decapod-flow
https://github.com/openinfradev/decapod-flow
Thank you!
Contact: jabbukka@naver.com
Github: https://github.com/openinfradev

Contenu connexe

Tendances

An overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoAn overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoGwan-Taek Lee
 
15.PaaS 환경에서 애플리케이션 모니터링이 다른점과 꼭 필요한 점은?
15.PaaS 환경에서 애플리케이션 모니터링이 다른점과 꼭 필요한 점은?15.PaaS 환경에서 애플리케이션 모니터링이 다른점과 꼭 필요한 점은?
15.PaaS 환경에서 애플리케이션 모니터링이 다른점과 꼭 필요한 점은?Opennaru, inc.
 
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinuxOpen Source Consulting
 
Grafana Review
Grafana ReviewGrafana Review
Grafana ReviewSangmo Goo
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How ToJi-Woong Choi
 
Apache tomcat 로드밸런싱 김태호-20140808
Apache tomcat 로드밸런싱 김태호-20140808Apache tomcat 로드밸런싱 김태호-20140808
Apache tomcat 로드밸런싱 김태호-20140808Taeho Kim
 
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...OpenStack Korea Community
 
톰캣 #03-설치
톰캣 #03-설치톰캣 #03-설치
톰캣 #03-설치GyuSeok Lee
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack CommunityOpen Source Consulting
 
초보자를 위한 네트워크/VLAN 기초
초보자를 위한 네트워크/VLAN 기초초보자를 위한 네트워크/VLAN 기초
초보자를 위한 네트워크/VLAN 기초Open Source Consulting
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우jieunsys
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3Ji-Woong Choi
 
[OpenInfra Days Korea 2018] (Track 1) Openstack 쉽게 설치하기 - SOfTI Easy Installer
[OpenInfra Days Korea 2018] (Track 1) Openstack 쉽게 설치하기 - SOfTI Easy Installer[OpenInfra Days Korea 2018] (Track 1) Openstack 쉽게 설치하기 - SOfTI Easy Installer
[OpenInfra Days Korea 2018] (Track 1) Openstack 쉽게 설치하기 - SOfTI Easy InstallerOpenStack Korea Community
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-HelmSK Telecom
 
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트OpenStack Korea Community
 
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기OpenStack Korea Community
 

Tendances (20)

An overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoAn overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demo
 
15.PaaS 환경에서 애플리케이션 모니터링이 다른점과 꼭 필요한 점은?
15.PaaS 환경에서 애플리케이션 모니터링이 다른점과 꼭 필요한 점은?15.PaaS 환경에서 애플리케이션 모니터링이 다른점과 꼭 필요한 점은?
15.PaaS 환경에서 애플리케이션 모니터링이 다른점과 꼭 필요한 점은?
 
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux[오픈소스컨설팅] SELinux : Stop Disabling SELinux
[오픈소스컨설팅] SELinux : Stop Disabling SELinux
 
Grafana Review
Grafana ReviewGrafana Review
Grafana Review
 
03.Ansible 소개
03.Ansible 소개03.Ansible 소개
03.Ansible 소개
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To
 
Apache tomcat 로드밸런싱 김태호-20140808
Apache tomcat 로드밸런싱 김태호-20140808Apache tomcat 로드밸런싱 김태호-20140808
Apache tomcat 로드밸런싱 김태호-20140808
 
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
 
톰캣 #03-설치
톰캣 #03-설치톰캣 #03-설치
톰캣 #03-설치
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
초보자를 위한 네트워크/VLAN 기초
초보자를 위한 네트워크/VLAN 기초초보자를 위한 네트워크/VLAN 기초
초보자를 위한 네트워크/VLAN 기초
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
[OpenInfra Days Korea 2018] (Track 1) Openstack 쉽게 설치하기 - SOfTI Easy Installer
[OpenInfra Days Korea 2018] (Track 1) Openstack 쉽게 설치하기 - SOfTI Easy Installer[OpenInfra Days Korea 2018] (Track 1) Openstack 쉽게 설치하기 - SOfTI Easy Installer
[OpenInfra Days Korea 2018] (Track 1) Openstack 쉽게 설치하기 - SOfTI Easy Installer
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm
 
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
 
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
 

Similaire à decapod cncg seoul 2020

XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회JaM2in
 
세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdfJaesuk Ahn
 
Prometheus in openstack-helm
Prometheus in openstack-helmPrometheus in openstack-helm
Prometheus in openstack-helm성일 임
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1NeoClova
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AILablup Inc.
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCPDaegeun Kim
 
네이버 클라우드 플랫폼의 컨테이너 기술 로드맵 (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ㅣ네이버 클라우드 플랫폼
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-uploadDong-Hwa jung
 
내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019
내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019
내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019AWSKRUG - AWS한국사용자모임
 
Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)창언 정
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
OpenStack으로 바로보는 상용 클라우드 플랫폼
OpenStack으로 바로보는 상용 클라우드 플랫폼OpenStack으로 바로보는 상용 클라우드 플랫폼
OpenStack으로 바로보는 상용 클라우드 플랫폼Tae Young Lee
 
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...Amazon Web Services Korea
 
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018Amazon Web Services Korea
 

Similaire à decapod cncg seoul 2020 (20)

XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Eclipse RAP
Eclipse RAPEclipse RAP
Eclipse RAP
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
 
세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf
 
Prometheus in openstack-helm
Prometheus in openstack-helmPrometheus in openstack-helm
Prometheus in openstack-helm
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AI
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCP
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
네이버 클라우드 플랫폼의 컨테이너 기술 로드맵 (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...
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-upload
 
helm 입문
helm 입문helm 입문
helm 입문
 
내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019
내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019
내 입맞에 맞는 프로그래밍 언어로 Lambda 함수 만들기 :: 정창훈 - AWS Community Day 2019
 
Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
OpenStack으로 바로보는 상용 클라우드 플랫폼
OpenStack으로 바로보는 상용 클라우드 플랫폼OpenStack으로 바로보는 상용 클라우드 플랫폼
OpenStack으로 바로보는 상용 클라우드 플랫폼
 
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
 
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
 

decapod cncg seoul 2020

  • 1. Decapod Declarative Application Orchestration & Delivery SK Telecom 김에스더
  • 2. Contents of Table § Background § Introduction § Documentation § Deployment § Demo § Q & A
  • 4. Background – 기존 구조 • OpenStack, LMA(Logging, Monitoring, Alert) 등을 Helm Chart로 배포 OpenStack ceph-provisioners cinder etcd glance heat helm-toolkit horizon ingress keystone libvirt mariadb memcached neutron nfs-client-provisioner nova openvswitch rabbitmq LMA elasticsearch-operator prometheus-operator kube-state-metrics prometheus-node-exporter prometheus-pushgateway prometheus-process-exporter grafana fluentbit-operator taco-addons-lma taco-watcher kubernetes-event-exporter prometheus-adapter keycloak
  • 5. Background - Armada • 많은 Helm chart를 보다 쉽게 배포하기 위해 Armada라는 툴을 사용 Armara-manifest.yaml schema: armada/Chart/v1 metadata: schema: metadata/Document/v1 name: elasticsearch data: chart_name: elasticsearch release: elasticsearch namespace: lma values: --- schema: armada/ChartGroup/v1 metadata: schema: metadata/Document/v1 name: logging-infra data: description: "Logging Infrastructure" sequenced: False chart_group: - elasticsearch - fluentbit --- schema: armada/Manifest/v1 metadata: schema: metadata/Document/v1 name: single-manifest chart_groups: - logging-infra Armada CLI Helm v2 (Tiller)
  • 6. Background - Armada • Armada + Helm 구조 장점 • Helm Chart를 Grouping해서 Group을 sequential하게 배포 • 다수의 Chart에 대한 설정을 한 개의 Manifest 파일로 관리할 수 있다. 단점 • Helm v3 지원 불가 • 가독성 저하 (file line 1000줄 이상) • 형상 관리 한계 • 낮은 생산성
  • 7. Background - Armada 과거 Manifest 검색 Ctrl+c,v 새로운 환경 값 적용 with 1,500 lines 배포 디버깅 실패 반복반복반복 성공 Client: “신규 클러스터 구축해주세요.” 나: … (한숨)
  • 8. Background • 이 방법이 최선일까? 좀 더 Smart하게 일하고 싶다. • 새로운 Helm Chart 관리 & 배포 툴은… • 환경 별 Manifest diff가 명확하게 보였으면 좋겠다. • 자주 변경하는 Helm chart values들을 Change Set으로 정의해서 적용할 수 있으면 좋겠다. • 생산성을 높일 수 있는 구조였으면…
  • 10. Decapod • Declarative Application Orchestration & Delivery • 십각목 (Ten-footed) 학명
  • 11. Introduction 목표 1. Documentation 가시성,생산성을 높이고, 체계적인 구조를 만듬 2. Operator Model Helm Chart 를 Kubernetes Resource로 관리 3. Deployment Pipeline Argo를 통해 복잡한 배포 과정을 시각화하고, 실패한 시점부터 다시 반복해서 시도할 수 있다.
  • 12. Toolchain • Helm Operator • Helm Chart를 Kubernetes Resource로 관리 • Kustomize + HelmTransformer plugin • template-free yaml customizing tool • Argo Workflow • Container-native workflow engine
  • 13. Architecture Helm OperatorArgo WorkflowKustomize Manifest Build Read Create Helm Chart Helm Chart Helm Chart Deploy HelmRelease CRDs Watch
  • 15. Documentation Helm OperatorArgo WorkflowKustomize Manifest Build Read Create Helm Chart Helm Chart Helm Chart Deploy HelmRelease CRDs Watch
  • 16. Kustomize • 2018년 SIG-CLI의 subproject로 시작하여 현재는 kubectl kustomize 명령어로 사용가능 • Kustomize는 Kubernetes Object로 구성된 Yaml 파일들을 여러 환경, 목적에 맞게 Customizing하는 것을 돕는다. • Template Free Yaml
  • 17. Helm Operator • Helm chart release를 선언적으로 관리하기 위한 Kubernetes Operator • Flux의 project 중 하나이다. https://github.com/fluxcd/helm-operator • GitOps 툴인 FluxCD와 연동하여 자동으로 Helm Chart를 배포하기 위해 만들어졌다.
  • 18. Helm Operator • 주요 기능 • Helm repo와 연동하여 source 업데이트 시 자동 배포 가능 • Automated Rollback, Automated Purge, Automated Image upgrade 등의 자동화 기능이 추가 구현됨 • Helm version targeting 가능 • ArgoCD/FluxCD와 연동하여 GitOps Pipeline을 만들 수 있다. • Helm dep update 기능 지원 • Git, localpath, helm plugins, ssh 등 다양한 chart source 를 사용할 수 있다.
  • 19. Documentation • Kustomize를 사용하여 단일 파일 구조에서 계층 구조로 변경 • Base yaml과 Site yaml의 Repository 분리 decapod-yaml openstack/ ├── base/ ├── network/ │ ├── linuxbridge-flat-vlan │ └── openvswitch-flat-vlan lma/ ├── base/ └── images/ Site-yaml openstack/ ├── output/ │ ├── dev/ │ └── stage/ ├── site/ │ ├── dev/ └ └── stage/ lma/ openstack-site/ ├── output/ │ ├── dev/ │ └── stage/ ├── site/ │ ├── dev/ └ └── stage/
  • 20. Documentation • base/resources.yaml • 배포할 Helm Chart들의 모든 정의 및 values • 환경 별로 달라지는 값을 TO_BE_FIXED로 표기
  • 21. Documentation • base/site-values.yaml • HelmValuesTransformer plugin을 사용 • resources.yaml의 차트들의 value를 override한다. • 새로운 환경을 만들 때, 이 값을 복사해서 수정
  • 22. Documentation • site/ • base/site-values.yaml, image/, network/ 등 형상에 맞게 선택한다. • 복사한 *-values.yaml 의 값들을 알맞게 수정 lma/site ├── dev │ ├── image-values.yaml │ ├── kustomization.yaml │ └── site-values.yaml ├── prd │ ├── image-values.yaml │ ├── kustomization.yaml │ └── site-values.yaml └── stg ├── image-values.yaml ├── kustomization.yaml └── site-values.yaml
  • 23. Documentation • Build • Kustomize lma/site/dev --enable_alpha_plugins • Output • 하나의 manifest file
  • 25. Architecture Helm OperatorArgo WorkflowKustomize Manifest Build Read Create Helm Chart Helm Chart Helm Chart Deploy HelmRelease CRDs Watch Argo UI Trigger
  • 26. Argo Workflow • CNCF Project로 container-native workflow 엔진 • 특징 • VM 및 서버 환경 제약 없이 컨테이너 기반으로 설계됨 • Cloud에 구애 받지 않고, Kubernetes cluster에서 실행 가능 • Kubernetes 상에서 병렬 작업을 쉽게 실행할 수 있음 • 구성 요소 • Argo CLI • Argo Server (Argo UI) • CRDs • Workkflow, WorkflowTemplate, ClusterWorkflowTemplate, CronWorkflow
  • 27. Argo Workflow • WorkflowTemplate • 재활용 가능한 template • 변수만 바꿔서 workflow로 만들 수 있다. • 오른쪽은 Helm Deploy를 위한 WorkflowTemplate
  • 28. Argo Workflow • Workflow • WorkflowTemplate을 이용해서 다수의 Helm Chart를 배포한다. • 이렇게 배포하는 과정을 모두 Argo UI를 통해 실시간으로 볼 수 있다.
  • 30. Demo
  • 32. Thank you! Contact: jabbukka@naver.com Github: https://github.com/openinfradev