Helm 차트를 사용해 본 적이 있다면 아마도 value.yaml 유효성 검사에 익숙할 것입니다. Helm에 내장된 JSON 스키마 유효성 검사는 작동하지만 번거롭고 제한적일 수 있습니다. 오늘은 Google CEL(Common Expression Language)의 강력한 기능을 Helm 차트 검증에 적용하는 플러그인인 Helm CEL을 소개하고자 합니다.
본론에 앞서 CEL이 무엇인지 빠르게 알아보겠습니다. CEL(Common Expression Language)은 간결하고 강력한 유효성 검사 규칙을 작성할 수 있도록 Google에서 만든 간단한 표현 언어입니다. Kubernetes CRD 검증, Istio 구성 및 클라우드 네이티브 생태계의 기타 여러 프로젝트에 사용됩니다.
먼저 플러그인을 설치하세요.
helm plugin install https://github.com/idsulik/helm-cel
values.schema.json을 생성하는 대신 차트 디렉터리에 value.cel.yaml 파일을 생성합니다. 간단한 예는 다음과 같습니다.
rules: - expr: "has(values.service) && has(values.service.port)" desc: "service port is required" - expr: "values.service.port >= 1 && values.service.port <= 65535" desc: "service port must be between 1 and 65535" - expr: "!(has(values.replicaCount)) || values.replicaCount >= 1" desc: "if replicaCount is set, it must be at least 1"
차트를 확인하려면:
helm cel ./mychart
몇 가지 일반적인 유효성 검사 패턴과 이러한 패턴이 JSON 스키마와 CEL에서 어떻게 표현되는지 살펴보겠습니다.
JSON 스키마:
{ "required": ["service"], "properties": { "service": { "required": ["port"], "properties": { "port": { "type": "integer" } } } } }
셀:
rules: - expr: "has(values.service) && has(values.service.port)" desc: "service port is required"
JSON 스키마:
{ "if": { "properties": { "persistence": { "const": true } } }, "then": { "required": ["storageClass"] } }
셀:
rules: - expr: "!has(values.persistence) || !values.persistence || has(values.storageClass)" desc: "storageClass is required when persistence is enabled"
JSON 스키마는 복잡한 검증의 경우 상당히 장황해질 수 있습니다. 다음은 JSON 스키마에서 훨씬 더 복잡한 CEL 예입니다.
rules: - expr: | !has(values.resources) || (!has(values.resources.limits) && !has(values.resources.requests)) || (has(values.resources.limits.memory) && has(values.resources.requests.memory) && int(values.resources.requests.memory) <= int(values.resources.limits.memory)) desc: "If resources are specified, memory request must not exceed memory limit"
Helm CEL의 가장 큰 특징 중 하나는 명확한 오류 메시지입니다. 검증에 실패하면 다음과 같은 유용한 출력이 표시됩니다.
❌ Validation failed: replica count must be at least 1 Rule: values.replicaCount >= 1 Path: replicaCount Current value: 0
CEL 표현식은 효율적으로 컴파일되고 평가됩니다. 플러그인은 Helm 워크플로에 최소한의 오버헤드를 추가하므로 개발 및 CI/CD 파이프라인 모두에 적합합니다.
Helm CEL은 Helm 차트를 검증할 수 있는 더욱 표현력이 뛰어나고 유지 관리가 쉬운 방법을 제공합니다. JSON 스키마를 사용하는 데 어려움을 겪고 있거나 보다 유연한 유효성 검사 규칙을 원하는 경우 한번 시도해 보십시오. 친숙한 구문, 강력한 표현, 명확한 오류 메시지의 조합으로 Helm 사용자의 툴킷에 귀중한 추가 기능을 제공합니다.
어떤 검증 패턴을 확인하고 싶으신가요? 아래 댓글로 알려주세요!
위 내용은 Helm CEL 소개: Helm 차트를 검증하는 보다 표현적인 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!