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으로 정의해서 적용할 수 있으면 좋겠다.
• 생산성을 높일 수 있는 구조였으면…
11. Introduction
목표
1. Documentation
가시성,생산성을 높이고, 체계적인 구조를 만듬
2. Operator Model
Helm Chart 를 Kubernetes Resource로 관리
3. Deployment Pipeline
Argo를 통해 복잡한 배포 과정을 시각화하고,
실패한 시점부터 다시 반복해서 시도할 수 있다.
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/
26. Argo Workflow
• CNCF Project로 container-native workflow 엔진
• 특징
• VM 및 서버 환경 제약 없이 컨테이너 기반으로 설계됨
• Cloud에 구애 받지 않고, Kubernetes cluster에서 실행 가능
• Kubernetes 상에서 병렬 작업을 쉽게 실행할 수 있음
• 구성 요소
• Argo CLI
• Argo Server (Argo UI)
• CRDs
• Workkflow, WorkflowTemplate, ClusterWorkflowTemplate, CronWorkflow