Helm チャートを使用したことがある場合は、values.yaml を検証するという課題に精通しているでしょう。 Helm の組み込み JSON スキーマ検証は機能しますが、煩雑で制限がかかる場合があります。今日は、Google の Common Expression Language (CEL) の機能を Helm チャートの検証にもたらすプラグインである Helm CEL を紹介したいと思います。
本題に入る前に、CEL とは何かについて簡単に説明しましょう。 Common Expression Language (CEL) は、Google が作成したシンプルな式言語で、簡潔で強力な検証ルールを作成できます。これは、Kubernetes CRD 検証、Istio 構成、およびクラウドネイティブ エコシステムの他の多くのプロジェクトで使用されます。
まず、プラグインをインストールします:
helm plugin install https://github.com/idsulik/helm-cel
values.schema.json を作成する代わりに、チャート ディレクトリにvalues.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 の最も優れた機能の 1 つは、明確なエラー メッセージです。検証が失敗すると、次のような役立つ出力が得られます:
❌ 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 中国語 Web サイトの他の関連記事を参照してください。