Helm
헬름 쓰레기.
values, files
traefik같은 최신 클라우드네이티브?어플리케이션은 모든 설정을 env로 받을 수 있게 만들어져있다. traefik은 nv가 아니가 args인가?
ory.kratos는 가능했던 것 같다.
최신 웹프레임워크를 이용해서 만들면 대부분 env로 완전대체가 가능하다
spring:
jpa:
DDL_AUTO:
== SPRING_JPA_DDL_AUTO
그런데 이게 지원되지 않는 경우 helm으로 만들면 복잡한 문제가 발생한다. app -> docker -> helm 이렇게 세단계로 감싸면서 복잡성이 증가한다. docker로 변환하면서 env로 뭐든 할 수 있게 하려고 하다보니… 무지막지한 shell script가 들어가게 되고 shell script로 conf파일을 생성한다 그리고 이걸 다시 helm으로 만들면서 values로 설정하도록 만들다 보니 복잡성이 … 이해할 수 없는 수준에 이르게 된다.
bitnami docker, helm을 보면 알 수 있다. 이거 뭔지 모르겠는데 어떻게든 helm메뉴얼에 있는대로 하면 돌아가긴 한다. 그런데 이걸 프로덕션에서 믿고 쓸 수 있을까??? 모르겠다… 업데이트 되거나 하면 갑자기 안 돌아가는 경우도 허다하니까
이런이유로 helm으로 values만 가지고 만능도구를 만들려는 계획은 잘못됐고 성공할 수 없다.
그래서 결론은 뭐냐…. 뭐 모르겠다. helm 설계에 실패한 쓰레기니까 너무 믿고 쓰지 말라고? 너무 완벽하게 만들려고 시간낭비 하지 말라고?
헬름 분석
실패 포인트(Failure Point)
- 설정파일 기반 애플리케이션인 nginx, apache, wordpress, nextcloud 등의 애플케이션을 docker로 감싸면서 발생하는 복잡성에 이것을 다시 helm으로 감싸면서 발생하는 이중의 복잡성
- 도커에 있는 마법의 쉘스크립트들 때문에 이해불가. 수정불가
- 도커 단계에서 지원하지 않는 것을 helm에서 지원할 수 없다. 어거지로 지원할 수 있기야 한데… 그런건 그냥 없다고 하는거다. 프로덕션에서 쓰면 언제한번 크게 터진다.
해결 (영어로 솔루션)
- 도커 단계에서 런타임에 설정파일을 삽입할 수 있는 표준기술이 필요. 볼륨말고
- helm같은 설정기반 도구는 values.yaml이 아니라 애플리케이션의 설정파일을 직접 편집할 수 있도록 해야한다.
- helm이외에 k8s의 yaml을 덩어리로 관리할 수 있는 기술이 있으면 좋겠다. operator말고. helm 이 아닌 조금 더 일반화된 형태의 설치 패키징으로 전환? 핼름은 그 중 일부로 포함되도록 하고 전혀 해결이 안된다. 거의표준을 다 건드려야 하는 수준이라…
땜방해결
- helmsman, helm무ㅓ시기 다른거 또 있다. 이런거 사용하기
- 본인은… python으로 스크립트 만들어서 사용
- init - helm download
- helm override(file, yaml)
- helm deploy 이렇게 하면 단점은… argocd같은데 gitops하기 힘들다는점…? 어차피 홈서버는 수동설치가 더 편하긴한데… gitops하려면 한단계 더 손이 가야한다.