checkConfig 템플릿

이 템플릿의 목적은 알려진 문제가있어 Helm 차트를 배포하거나 업데이트하는 경우에 깨진 상태로 중지되도록하여 사용자를 방지하는 수단을 제공하는 것입니다.

이 설계는 여러 템플릿을 사용하여 선언 및 관리하는 모듈식 방법을 제공하여 개발 및 유지 보수의 단순화를 돕기 위한 것입니다.

일반적인 컨셉

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

템플릿 이름

이 패턴 내에서 정의되고 사용되는 템플릿은 gitlab.checkConfig.*의 네이밍 규칙을 따라야합니다. 여기서 *redis.both와 같이 정보를 제공하는 이름으로 대체하십시오.

감지에 대한 고려사항

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

메시지 포맷

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

chart:
    message
  • 메시지 앞의 if 문은 메시지 뒤의 새 줄을 제거해서는 안됩니다. (}}가 아닌 -}}) 이렇게 하면 사용자의 포맷팅과 가독성이 보장됩니다.
  • 메시지는 영향을받는 글로벌 차트에 대해 어떤 차트가 영향을주는지를 선언해야합니다. 이것은 사용자가 차트 및 구성 속성에서 속성이 어디에서 왔는지 이해하는 데 도움이됩니다. 예: gitlab.puma, minio, registry.
  • 메시지는 사용자에게 실패를 유발하는 속성 및 취해야 할 조치를 알려줘야합니다. 영향을받는 차트에 상대적인 속성의 이름을 지정하십시오. 예를 들어, gitlab.puma.minio.enabled는 사용자가 gitlab.puma의 차트에 영향을주는 기능이기 때문에 minio.enabled로 참조됩니다. 하나 이상의 차트가 영향을받는 경우 완전한 속성 이름을 사용하십시오.
  • 메시지는 절대 단단한 줄 바꿈을 포함해서는 안됩니다. 이는 메시지가 구성 값을 보간 할 수 있고 해당 값이 단단한 줄 바꿈을 깰 수 있기 때문입니다.

예시 메시지:

redis: both providers
    `redis.enabled`과 `redis-ha.enabled`가 모두 true로 나타납니다. 이는 정의되지 않은 동작으로 이어집니다. 한 가지만 활성화하십시오.

새로운 확인 활성화

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

해당하는 테스트는 spec/integration/check_config_spec.rb에서 확인할 수 있습니다.