목적
- 인프라 코드화 관리
- 인프라 반복생성
- 공개된 인프라 설정 사용
helm chart, operator
사용 케이스
개인 서버 설치시
helm차트 traefik, coredns, haproxy, mariadb, postgresql, 등등 각각을 여러번 실행시키는게 귀찮아서
- helm차트 하나에 넣어보기도 하고
- helmsman, helmfile 등 helm여러개 실행시키는 툴을 써보기도 했는데
결국엔 python으로 helm차트를 받아서 실행시키는 방법을 쓰게 됐다.
요구사항이 복잡하면 어떻게 해도 공개된 라이브러리만으로 해결이 안된다.
- helm 차트는 특정 templates만 편집하는 기능이 없어서 차트를 로컬에 –untar로 받은 후 deployment.yaml만 덮어씌운다던가 하는 방법을 썼다.
- helm 설치 전 후로 secret이나 volume을 관리 해 줘야 하는 경우가 있는데 수동으로 하려면 복잡하고 늘 실수를 한다.
회사 서비스 DevOps 관리시
회사에서는 단순 설치가 아니라 직접 개발한 애플리케이션을 배포하는거라서 공개된 helm차트를 쓰지 않는다. 보통 두세단계로 분리해서 실행하게 된다.
- 미들웨어 설치 istio, traefik, gateway, kafka, redis 등 k8s 클러스터 또는 서버에 직접 설치할 것들
helm, ansible, bash 스크립트 등 활용
자주 안 하는거라 기록만 해 놓고 노가다로 처리하는 경우가 많다.
회사에 따라… 기록을 안 해서 할 때 마다 잘못되는 경우가 더 많다. - deployment, service 정도만 정의 해 놓고 dev,
helm차트 한개로 만들거나 kustomization, 등등을 쓴다.
용도별
템플릿 관리
- https://github.com/helm/helm 24.7k
- https://github.com/kubernetes-sigs/kustomize 9.9k
- https://github.com/grafana/tanka 2k
https://tanka.dev - https://github.com/kapicorp/kapitan 1.7k
https://kapitan.dev - https://github.com/GoogleContainerTools/kpt 1.5k
https://kpt.dev - https://github.com/kubecfg/kubecfg 160
- https://github.com/boltops-tools/kubes 81
https://kubes.guru - https://jsonnet.org – erb, mustache, freemarker처럼 그냥 템플릿엔진에 가까워보임
- kssonet – 멈춰
런타임 관리 Operator
operator는 패턴이다.
kube api와 통신하는 서버를 한개 올려놓는걸로 이해하는게 쉽다.
kube클러스터에 definition이 올라가면 이 설정에 따라 인프라를 실행시켜주는 것
요즘은 operator를 많이 쓴다는 것 같은데…(진실???)
여러개의 인프라를 동적으로 관리할게 아니라면 helm을 쓰는게 나을 것 같다.
대부분의 상황에서 operator를 왜 써야하는지 잘 모르겠다.
definition.yaml만 apply하면 되서 사용자 입장에서는 조금 더 쉽게 받아들여지는걸까
helm에서 values.yaml만 편집하는거랑 다를게 없는데
helm이 너무 주먹구구식으로 만들어져 있는데 비해 operator의 설정파일이 조금 더 이해하기 쉬워서 인기가 좋은 것 같다.
복잡하게 사용하려면 어렵거나 직접 만들어야 하는건 비슷하다.
공식 도큐먼트 Operator 소개
https://kubernetes.io/ko/docs/concepts/extend-kubernetes/operator/
Operator 도구 선택
도구의 순위보다는 각각 특성이 있어서 선택이 더 어렵다.
선택 기준을 먼저 적어보면
- 단순 설치는 helm으로 할거니까 operator는 커스텀 기능 개발이 쉬울 것
- 템플릿이 많아서 웬만한거 가져다가 쓸 수 있을 것
kudo 뭔가 그냥 helm차트 비스무리하게 kafka를 설치 해 버리는데… 오퍼레이터를 관리 해 주는 툴인가?
juju도 좀 그런 느낌이다. lxd컨테이너 기술로 미들웨어 쉽게 설치 해 주는… charm이라는 미리 정의된걸 설치
코딩이 되는 툴은
- java operator sdk
- py kops <- 제일 간단해 보임
- go kubebuilder
- rust ~
- dotnet ~
~
- helm차트와 스크립트 언어로 직접 설치코드 만들기
- operator는 kops