기본적으로 configMap 을 통한 파일을 등록하는건 1depth 만 지원된다.airflow 의 plugin 파일을 helm chart 폴더에서 관리하고자 했는데 안타갑게도 서브디렉토리는 사실상 필수였다.가장 쉽게 생각할 수 있는 접근은 git clone 을 해서 특정 리파지토리의 브랜치를 다운로드 받아서 처리하는것인데로컬에서 쉽게 배포하고 테스트 할 수 있는걸 원했다. 그래서 삽질의 삽질을 하다가 약간의 트릭으로 할 긴했다. 해결의 실마리?configMap 을 정의할때 다음과 같이 key, path 를 직접 정의하면 subdir 을 지정하는게 가능하다.그러면 local 폴더의 경로에서 / 를 다른문자열로 치환하고, 이를 1depth 파일처럼 관리하고, 다시 이걸 key, path 로 맵핑하면 된다는 ..
helm template 명령어로 확인하려고 했는데 아래와 같이 알수 없는 오류가 발생했다.결론부터 말하면, range 하위에 include 를 썼는데 이때 영향을 받았던 문제였다.Error: render error in "...deployment.yaml": template: ...deployment.yaml:81:16: executing "...deployment.yaml" at : error calling include: template: sample/templates/_helpers.tpl:166:8: executing "sample.kerberos" at : error calling include: template: sample/templates/_helpers.tpl:100:25: execu..
helm chart 2.x 버전에서 "파일경로"에서 볼륨마운트 경로를 유도하기위해서 파일경로만 추출하는 필요성이 생겼다.파일경로가 필요했던 이유는 볼륨마운트할 경로를 유도해야했다. 그럼 어떻게 유도할 수 있을까? /opt/airflow/template/subject-template.template 1. 파일경로만 추출하기다음과 같이 helm chart 를 구성하면 파일명을 제거한 "/opt/airflow/template" 값을 유도할 수 있다.split 한 이후, list 의 마지막값을 제외한 배열을 만들어 합치는 형태로 해결했다.{{- $my_path := "/opt/airflow/template/subject-template.template" -}}{{- $token := splitList "/" ..
helm chart 2.x 에서 작업을 했는데, 외부파일에 있는 값을 로딩해서 dict 로 만들고 싶었다.사실 바인딩될 값은 values.yaml 에 정의해서 쓰는게 자연스러운데, 왜 이런 방법이 필요했냐하면 airflow 의 수많은 설정값을 values.yaml 에 선언하게 하는건 너무 장황했다. (너무 많기도 하고)하지만, executor 타입이나 kerberos 인증 여부에 따라 선언되어야할 pod 구성이 다르기 때문에 조건분기를 해야했고 이를 위해서는 dict 로 로딩해서 사용해야 하는 방법이 필요했다. 1. File 을 읽어서 dict 로 만들기우선 로딩할 파일은 configs/{.Values.profile}/airflow-config.yaml 에 존재한다고 가정했다.여기서 가장 핵습은 key..
helm chart 를 이용해서 구성하다보면, 환경설정을 파일로 따로 관리하고 이를 로딩하고 싶은 경우가 종종있다.실제 등록될 kubernetes yaml 의 구성은 configMap 기반으로 하고, 환경설정값에 따라 다른 파일을 include 하고 싶은 경우... 파일을 include 하기아래와 같이 파일을 분리하고, 이를 configMap 에서 로딩한다는 가정을 해보겠다.공통된 설정값은 ConfigMap 에 정의하고, 환경별로 다른 설정만 따로 관리한다는 개념이다. apiVersion: v1kind: ConfigMapmetadata: name: airflow-variable namespace: airflow-{{ .Values.profile }}data: AIRFLOW__CORE__DEFAUL..
Helm Chart 를 통해 배포할 이미지를 구성했고, 편의를 위해 도커 이미지의 TAG 이름의 정책은 날짜를 사용했다.그런데, TAG 가 latest 일때는 문제가 안되었는데, 20240530 과 같이 날짜로 했을때만 배포가 실패했다.결과부터 말하면, 날짜와 같이 숫자로만 존재하는 값이 float64 타입으로 인지되어 잘못된 값이 바인딩되었던 문제였다. 원인찾기우선 배포를 해보니 아래와 같이 오류가 나고 있었다. 이미지를 찾을수 없다는 상태였고, describe pods 를 햇 더 상세한 메시지를 찾아보니 희안하게 엉뚱한 태그값이 보였다. helm chart 에서 아래와 같은 형식으로 이미지 태그를 values 에서 관리했고 해당 값을 확인했는데의도한 값과 다르게 지수형 표현으로 바인딩이 되었다.ima..