Helm 차트 제작과 배포 · 의존성과 훅 · 퀴즈
퀴즈: 의존성과 훅
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
인터넷이 막힌 환경에서 서브차트를 참조하려면 `dependencies` 의 `repository` 를 어떻게 적어야 하나요?
- `charts/` 에 직접 넣으면 repository 필드를 생략할 수 있다
- OCI 레지스트리 주소만 사용할 수 있다
- `file://` 로 시작하는 로컬 경로를 적는다
- 빈 문자열로 두면 Helm 이 자동으로 찾는다
`helm dependency update` 와 `helm dependency build` 의 차이는?
- update 는 의존성을 새로 확정하고 Chart.lock 을 다시 쓰며, build 는 기존 Chart.lock 그대로를 재현한다
- build 는 원격 저장소에 올라간 차트만 내려받을 수 있고, update 는 file:// 로 적은 로컬 경로 의존성만 처리한다
- 둘은 같은 동작에 붙은 별칭이라 어느 쪽을 써도 확정되는 버전과 Chart.lock 내용이 똑같다
- build 는 의존 차트를 charts/ 에 받은 뒤 부모 차트를 .tgz 로 패키징하는 일까지 이어서 한다
부모 차트에서 서브차트 `cache` 의 복제 수를 3으로 만들고 싶습니다. 올바른 위치는?
- 부모 values.yaml 의 `global:` 아래에 `replicaCount: 3` 을 적어 서브차트까지 내려보낸다
- 의존성으로 받아 둔 cache 차트의 values.yaml 을 열어 replicaCount 를 3으로 고친다
- 부모 values.yaml 의 `cache:` 키 아래에 `replicaCount: 3` 을 적는다
- 부모 Chart.yaml 의 dependencies 목록에서 cache 항목에 `replicaCount: 3` 을 함께 적는다
서브차트를 `condition` 으로 껐는데 렌더링 결과에 여전히 그 이름의 리소스가 보입니다. 가장 유력한 원인은?
- condition 은 install 에만 적용되고 template 에는 적용되지 않는다
- 부모 차트가 자기 templates/ 에서 그 리소스를 직접 만들고 있다
- charts/ 에 있는 패키지를 지워야 한다
- Chart.lock 을 다시 만들지 않았다
`global` 아래에 값을 두는 목적은?
- values.schema.json 의 필수 필드 검증에서 빼 두려고
- 값을 암호화해 릴리스 시크릿에 감춰 두려고
- 부모와 모든 서브차트가 같은 값을 함께 볼 수 있게 하려고
- 일반 값보다 우선순위를 높여 명령줄 --set 까지 이기게 하려고
훅 Job 에 `helm.sh/hook-delete-policy` 를 적지 않으면 생기는 문제는?
- 훅 Job 이 일반 릴리스 리소스로 취급되어 롤백할 때 이전 상태로 함께 되돌려진다
- 훅 리소스는 릴리스가 소유하지 않아 정리되지 않고 쌓이며, 다음 배포에서 같은 이름으로 충돌한다
- 같은 시점의 훅 순서를 정하는 hook-weight 가 무시되고 훅이 무작위 순서로 실행된다
- 삭제 정책이 없으면 훅 어노테이션 전체가 무효로 취급되어 Job 이 아예 실행되지 않는다