1 minute read

헬름 쓰레기.

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)

  1. 설정파일 기반 애플리케이션인 nginx, apache, wordpress, nextcloud 등의 애플케이션을 docker로 감싸면서 발생하는 복잡성에 이것을 다시 helm으로 감싸면서 발생하는 이중의 복잡성
  2. 도커에 있는 마법의 쉘스크립트들 때문에 이해불가. 수정불가
  3. 도커 단계에서 지원하지 않는 것을 helm에서 지원할 수 없다. 어거지로 지원할 수 있기야 한데… 그런건 그냥 없다고 하는거다. 프로덕션에서 쓰면 언제한번 크게 터진다.

​해결 (영어로 솔루션)

  • 도커 단계에서 런타임에 설정파일을 삽입할 수 있는 표준기술이 필요. 볼륨말고
  • helm같은 설정기반 도구는 values.yaml이 아니라 애플리케이션의 설정파일을 직접 편집할 수 있도록 해야한다.
  • helm이외에 k8s의 yaml을 덩어리로 관리할 수 있는 기술이 있으면 좋겠다. operator말고. helm 이 아닌 조금 더 일반화된 형태의 설치 패키징으로 전환? 핼름은 그 중 일부로 포함되도록 하고 전혀 해결이 안된다. 거의표준을 다 건드려야 하는 수준이라…

땜방해결

  • helmsman, helm무ㅓ시기 다른거 또 있다. 이런거 사용하기
  • 본인은… python으로 스크립트 만들어서 사용
    1. init - helm download
    2. helm override(file, yaml)
    3. helm deploy 이렇게 하면 단점은… argocd같은데 gitops하기 힘들다는점…? 어차피 홈서버는 수동설치가 더 편하긴한데… gitops하려면 한단계 더 손이 가야한다.

Updated: