测验:库图表与模板命名空间
한국어 원문으로 표시합니다.
type: library 차트를 helm install 하면 어떻게 되나요?
- templates 가 비어 있으므로 아무 오브젝트도 없는 빈 릴리스가 만들어진다
- define 안의 템플릿이 모두 렌더되어 그대로 설치된다
library charts are not installable오류로 거절된다- 의존성으로 건 차트가 있으면 그 차트와 함께 설치된다
서브차트와 부모 차트가 common.labels 라는 같은 이름의 템플릿을 각각 정의했습니다. 렌더 결과는?
- 부모 것이 쓰인다 — 이름이 겹치면 나중에 읽힌 쪽이 이기고 오류나 경고는 없다
- 서브차트 것이 쓰인다 — 정의가 더 가까운 곳에 있는 쪽이 우선한다
- 이름 충돌 오류가 나며 렌더가 중단된다
- 두 정의가 합쳐져 라벨이 모두 출력된다
values.yaml 에 note: "{{ .Release.Name }}" 이 있고 템플릿에 {{ .Values.note }} 라고 썼습니다. 렌더 결과는?
- 릴리스 이름이 들어간다 — values 도 렌더 대상이다
- 빈 문자열이 된다 — 해석할 수 없는 표현식은 버려진다
- 렌더 오류가 난다 — values 에는 중괄호를 쓸 수 없다
- 중괄호를 포함한 문자열이 그대로 출력된다
라이브러리 차트에서 라벨 한 줄을 고쳤는데 소비 차트의 렌더 결과가 그대로입니다. 원인으로 가장 알맞은 것은?
- 라이브러리 차트의 version 을 올리지 않으면 헬름이 변경을 무시한다
- 소비 차트의 charts/ 에 있는 것은 이전에 떠 둔 tgz 사본이다
- 라이브러리 차트는 첫 렌더 결과를 캐시에 저장해 재사용한다
- define 은 한 번 정의되면 그 릴리스가 지워질 때까지 바뀌지 않는다
라이브러리 차트의 templates 디렉터리에 deployment.yaml(밑줄 없는 이름)을 두면 어떤 문제가 생기나요?
- 파일 이름이 밑줄로 시작하지 않으면 헬름이 그 파일을 아예 읽지 않는다
- 의존성으로 걸 때 부모가 그 파일만 따로 받아 오지 못한다
- 렌더 대상 템플릿이 되어, 소비 차트에서 의도치 않은 오브젝트가 함께 만들어진다
- 차트 종류가 자동으로 application 으로 바뀌어 설치가 가능해진다
라이브러리 차트에 공통화하는 범위로 실무에서 가장 무난한 선택은?
- 라벨·이름 규칙·공통 어노테이션까지만 두고 워크로드 본체는 각 차트가 갖는다
- 모든 워크로드 종류를 라이브러리에 넣고 차트는 values 만 갖게 한다
- 차트마다 다른 부분이 생길 때마다 라이브러리에 if 분기를 추가한다
- 공통화하지 않고 차트마다 helpers 를 복사해 두는 편이 낫다