Deprecated 템플릿

이 템플릿의 목적은 Helm 차트를 배포하는 사용자가 차트의 구성이 변경되어 손상된 상태로 배포하지 않도록하거나 해당 업데이트를 방지하는 수단을 제공하는 것입니다.

이 디자인은 여러 템플릿을 사용하여 차트의 구성 방법이 변경됨에 따라 손상된 상태로 되지 않도록하기 위해 모듈식 선언 및 관리 방법을 제공합니다. 이는 개발 및 유지 관리를 간소화하는 데 도움이 됩니다.

일반적인 컨셉

  1. templates/NOTES.txt의 마지막 항목은 templates/_deprecations.tpl에서 gitlab.deprecations 템플릿을 include합니다.
  2. gitlab.deprecations 템플릿은 동일한 파일에서 추가 템플릿을 include하여 그들의 출력(문자열)을 list에 수집합니다.
  3. 각 개별 템플릿은 이제 잘못된 구성을 감지하고 사용자에게 해당 변경 사항을 처리하는 방법에 대한 메시지를 출력하거나 아무것도 출력하지 않습니다.
  4. gitlab.deprecations 템플릿은 수집된 메시지가 있는지 확인합니다. 메시지가 있으면 fail 함수를 사용하여 DEPRECATIONS: 헤더 아래에 출력합니다.
  5. fail 함수는 배포 프로세스를 종료시켜 사용자가 손상된 구성을 사용하여 배포하지 못하도록 합니다.

템플릿 명명

이 패턴 내에서 정의된 템플릿은 gitlab.deprecation.*의 명명 규칙을 따라야 합니다. 여기서 *rails.appConfig 또는 registry.storage와 같은 정보를 표시하는 이름으로 바꿔야 합니다.

검출 고려 사항

개발자는 키나 상위 키가 존재한다고 가정해서는 안 됩니다. if, hasKey, empty의 신중한 적용이 강력히 권장됩니다. 하나의 키가 존재할 확률이 전체 속성 맵이 해당 키 이전에 여러 가지 브랜치가 누락된 상태일 확률만큼 높습니다. Helm은 일반적으로 애매한 방식으로 맵 구조 내에 존재하지 않는 속성에 액세스하려고 시도하면 불평할 것입니다. 시간을 절약하고 명시적으로 하세요.

메시지 형식

모든 메시지는 다음 형식을 가져야 합니다:


chart:
    message
  • 메시지 앞의 if 문은 메시지 뒤의 개행 문자를 잘라내면 안 됩니다. (}} -}}가 아닌 -}}입니다) 이는 사용자의 형식과 가독성을 보장합니다.
  • 메시지는 영향을 받는 차트에 상대적인 차트를 선언해야 합니다. 이를 통해 사용자가 차트 및 구성 속성에서 속성이 어디에서 왔는지 이해하는 데 도움이 됩니다. 예: gitlab.webservice, minio, registry.
  • 메시지는 변경된/이동된/사용되지 않게 된 속성을 사용자에게 알리고 어떤 조치를 취해야 하는지 알려야 합니다. 영향받는 차트에 상대적인 속성의 이름을 지정합니다. 예를 들어 gitlab.webservice.minio.enabled는 영향을 받는 차트가 gitlab.webservice인 경우 webservice.enabled로 참조됩니다.

예시 메시지:


gitlab.webservice:
    Chart-local configuration of Minio features has been moved to global. Please remove `gitlab.webservice.minio.enabled` from your properties, and set `global.minio.enabled` instead.

새로운 사용되지 않게 되는 사유들을 활성화

템플릿이 정의되고 해당 템플릿에 영향을 받는 속성을 감지하기 위한 로직이 배치되면, 이 새로운 템플릿을 활성화하는 것은 간단합니다. 제시된 형식에 따라 gitlab.deprecations 템플릿에서 add templates here 아래에 한 줄을 추가하면 됩니다.