6.4.5. テンプレートフィールドのインライン検証の設定
特に Golang テンプレート構文のメンテナンスが困難な場合や複雑すぎる場合は、インライン正規表現を有効にしてテンプレートフィールドを検証できます。インライン正規表現を使用すると、テンプレートが簡素化され、可読性が向上し、より高度な検証ロジックが可能になります。
cluster-compare プラグインには、インライン検証用の 2 つの関数があります。
-
regex: 正規表現を使用してフィールドの内容を検証します。 -
capturegroups: キャプチャーグループ以外のテキストを完全一致として処理し、名前付きキャプチャーグループ内でのみ正規表現マッチングを適用し、繰り返しキャプチャーグループの一貫性を確保することで、マルチラインテキストの比較を強化します。
インライン検証に regex または capturegroups 関数のいずれかを使用する場合、cluster-compare プラグインは、テンプレート内の複数のフィールドにわたって、同じ名前のキャプチャーグループが同じ値を持つことを強制します。つまり、(?<username>[a-z0-9]+) などの名前付きキャプチャーグループが複数のフィールドに現れる場合、そのグループの値がテンプレート全体で一貫している必要があります。
6.4.5.1. 正規表現関数を使用したインライン検証の設定 リンクのコピーリンクがクリップボードにコピーされました!
正規表現を使用してフィールドを検証するには、regex インライン関数を使用します。
手順
ユースケースに合わせて
metadata.yamlファイルを作成します。例として次の構造を使用します。apiVersion: v2 parts: - name: Part1 components: - name: Example allOf: - path: example.yaml config: perField: - pathToKey: spec.bigTextBlock1 inlineDiffFunc: regex2 正規表現を使用して、関連するテンプレートのフィールドを検証します。
apiVersion: v1 kind: ConfigMap metadata: namespace: dashboard data: username: "(?<username>[a-z0-9]+)" bigTextBlock: |- This is a big text block with some static content, like this line. It also has a place where (?<username>[a-z0-9]+) would put in their own name. (?<username>[a-z0-9]+) would put in their own name.