JSON Schema를 사용한 값의 유효성 검사

Helm 3은 스키마 파일을 사용하여 값의 유효성을 검증하는 기능을 도입했으며 이는 JSON Schema를 따릅니다. 이 리포지터리의 Helm 차트들도 각 하위 차트에 대해 values.schema.json 파일을 정의함으로써 이 기능을 활용합니다.

스키마 파일 사용에 대한 개발자 가이드라인:

  • 하위 차트의 values.yaml 파일에 새 항목을 추가하거나 기존 항목을 수정하는 경우, 해당 변경 사항을 반영하기 위해 해당 values.schema.json 파일을 업데이트해야 합니다.
  • 이 작업의 첫 번째 반복은 모든 하위 차트가 스키마 파일을 갖추도록 하는 것을 목표로 합니다. 첫 번째 반복의 진행 상황은 관련 에픽에서 확인할 수 있습니다. 이후의 반복에서는 이러한 스키마 파일을 개선하고 다듬으며 그 효율성과 사용성을 향상시킬 것입니다.
  • values.yaml을 통해 구성 가능한 모든 설정은 values.schema.json 파일에 구현된 유형 유효성 검사(값으로 올바른 데이터 유형만 허용함)가 필요합니다. 이것은 첫 번째 반복에서 완료되어야 합니다.
  • 첫 번째 반복에서는 필수 필드의 유효성 검사를 사용자가 values.yaml 파일에서 정의한 설정이 해당 컴포넌트만으로 Pod를 성공적으로 생성하고 로그에 오류가 보고되지 않는지 확인하는 것으로 제한될 수 있습니다. 이후의 반복에서는 실제로 Pod가 작동하는지 확인하는 것으로 확대되어야 합니다. 이 과정은 보다 깊은 테스트를 포함합니다.

변경할 수 없는 필드의 유효성 검사

Kubernetes 스펙에서 일부 필드는 변경할 수 없습니다. 변경할 수 없는 필드에 대한 변경 사항이 고객 업그레이드에 영향을 미치지 않도록 해야 합니다.

Statefulset

Statefulset에는 변경할 수 없는 일련의 필드가 포함되어 있습니다. 허용되지 않는 필드 중에 변경된 것이 없는지 확인해야 합니다. 이는 업그레이드를 수행하는 능력에 부정적인 영향을 미칩니다. 예시 오류 메시지:

오류: 업그레이드 실패: "a-gitaly"를 StatefulSet 종류로 패치할 수 없음
  StatefulSet.apps "a-gitaly"가 잘못되었습니다
  spec: 금지됨:
    'replicas', 'template', 및 'updateStrategy' 이외의 statefulset spec를 위한 업데이트가 금지됨
    다른 필드에 대한 업데이트는 금지됨