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, hasKeyempty의 신중한 적용이 강력히 권장됩니다. 단일 키가 존재하는 것이 그 키에 대해 몇 개의 브랜치가 누락된 전체 속성 맵이 없을 가능성만큼 흔합니다. Helm은 맵 구조 내에 존재하지 않는 속성에 접근하려고 하면 일반적으로 모호한 방식으로 불평할 것입니다. 시간을 절약하고 명시적으로 하세요.

메시지 형식

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


chart:
    message
  • 메시지 앞에 오는 if 문은 줄 바꿈을 자르지 않아야 합니다. (}}가 아닌 -}}) 이는 사용자의 포맷 및 가독성을 확보합니다.
  • 메시지는 어떤 글로벌 차트와 관련하여 영향을 받는 차트를 선언해야 합니다. 이는 사용자가 속성이 차트 및 구성 속성에서 어디에서 왔는지를 이해하는 데 도움이 됩니다. 예: gitlab.puma, minio, registry.
  • 메시지는 사용자에게 실패를 유발하는 속성과 취해야 할 조치를 알려야 합니다. 영향을 받는 차트와 관련하여 속성 이름을 지정합니다. 예를 들어, gitlab.puma.minio.enabledminio.enabled로 언급됩니다. 이는 비하인드된 차트가 gitlab.puma이기 때문입니다. 여러 차트가 영향을 받는 경우, 전체 속성 이름을 사용합니다.
  • 메시지는 단락을 감싸기 위한 하드 줄 바꿈을 포함하지 않아야 합니다. 이는 메시지가 구성 값을 보간할 수 있기 때문에 하드 래핑이 깨질 수 있습니다.

예시 메시지:


redis: 두 프로바이더
    `redis.enabled`와 `redis-ha.enabled`가 모두 true로 설정된 것으로 보입니다. 이는 정의되지 않은 동작을 초래할 수 있습니다. 하나만 활성화해 주세요.

새로운 체크 활성화

템플릿이 정의되고 영향을 받는 속성을 감지하기 위한 로직이 그 안에 배치되면, 이 새로운 템플릿을 활성화하는 것은 간단합니다. gitlab.checkConfig 템플릿에서 add templates here 아래에 라인을 추가하기만 하면 됩니다.

상응하는 테스트는 spec/integration/check_config_spec.rb에 위치합니다.