6.5. リファレンス設定の高度なカスタマイズ
リファレンス設計からの一時的な逸脱を許可する場合は、より高度なカスタマイズを適用できます。
このカスタマイズでは、比較時に cluster-compare
プラグインが使用するデフォルトのマッチングプロセスをオーバーライドします。このような高度なカスタマイズを適用する場合は、cluster-compare から重要な情報が除外されるなど、意図しない結果が発生する可能性があるため、注意してください。
リファレンス設定を動的にカスタマイズするための高度なタスクには、次のようなものがあります。
- 手動マッチング: クラスターのカスタムリソースをリファレンス設定のテンプレートと手動でマッチするようにユーザー設定ファイルを設定します。
-
リファレンスへのパッチ適用:
cluster-compare
コマンドでパッチオプションを使用してリファレンスにパッチを適用し、リファレンス設定を指定します。
6.5.1. CR とテンプレート間の手動マッチングの設定 リンクのコピーリンクがクリップボードにコピーされました!
場合によっては、cluster-compare
プラグインのデフォルトのマッチングが期待どおりに機能しないことがあります。ユーザー設定ファイルを使用すると、カスタムリソース (CR) をテンプレートにマッピングする方法を手動で定義できます。
デフォルトでは、プラグインは apiversion
、kind
、name
、namespace
フィールドに基づいて CR をテンプレートにマッピングします。ただし、複数のテンプレートが 1 つの CR とマッチする場合もあります。たとえば、これは次のような状況で発生する可能性があります。
-
同じ
apiversion
、kind
、name
、およびnamespace
フィールドを持つテンプレートが複数存在する。 -
テンプレートが、CR の
namespace
やname
に関係なく、特定のapiversion
とkind
を持ついずれかの CR とマッチする。
CR が複数のテンプレートとマッチする場合、プラグインはタイブレークメカニズムを使用して、差異が最も少ないテンプレートを選択します。プラグインが選択するテンプレートを明示的に制御するには、手動のマッチングルールを定義するユーザー設定 YAML ファイルを作成します。この設定ファイルを cluster-compare
コマンドに渡すことで、必要なテンプレートの選択を適用できます。
手順
手動マッチングの条件を定義するユーザー設定ファイルを作成します。
user-config.yaml
ファイルの例correlationSettings: manualCorrelation: correlationPairs: ptp.openshift.io/v1_PtpConfig_openshift-ptp_grandmaster: optional/ptp-config/PtpOperatorConfig.yaml ptp.openshift.io/v1_PtpOperatorConfig_openshift-ptp_default: optional/ptp-config/PtpOperatorConfig.yaml
correlationSettings:
1 manualCorrelation:
2 correlationPairs:
3 ptp.openshift.io/v1_PtpConfig_openshift-ptp_grandmaster: optional/ptp-config/PtpOperatorConfig.yaml
4 ptp.openshift.io/v1_PtpOperatorConfig_openshift-ptp_default: optional/ptp-config/PtpOperatorConfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
correlationSettings
セクションには、手動による相関付け設定を含めます。- 2
manualCorrelation
セクションでは、手動による相関付けが有効であることを指定します。- 3
correlationPairs
セクションには、手動でマッチする CR とテンプレートのペアをリストします。- 4
- マッチする CR とテンプレートのペアを指定します。CR 仕様では、
<apiversion>_<kind>_<namespace>_<name>
という形式を使用します。namespace がないクラスタースコープの CR の場合は、<apiversion>_<kind>_<name>
という形式を使用します。テンプレートへのパスは、metadata.yaml
ファイルからの相対パスである必要があります。
次のコマンドを実行して、
cluster-compare
コマンドでユーザー設定ファイルを参照します。oc cluster-compare -r <path_to_reference_config>/metadata.yaml -c <path_to_user_config>/user-config.yaml
$ oc cluster-compare -r <path_to_reference_config>/metadata.yaml -c <path_to_user_config>/user-config.yaml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
-c
オプションを使用してuser-config.yaml
ファイルを指定します。
6.5.2. リファレンス設定へのパッチ適用 リンクのコピーリンクがクリップボードにコピーされました!
場合によっては、予想されるクラスター設定の逸脱を処理するために、リファレンス設定にパッチを適用する必要があります。パッチはプラグインによって比較プロセス中に適用され、指定されたリソースフィールドがパッチファイルの定義のとおりに変更されます。
たとえば、最新のリファレンス設定では非推奨になっている古いフィールドをクラスターで使用しているため、テンプレートに一時的にパッチを適用する必要がある場合があります。パッチが適用されたファイルは、比較出力の概要に報告されます。
パッチファイルは次の 2 つの方法で作成できます。
-
cluster-compare
プラグインを使用してパッチ YAML ファイルを生成する。 - 独自のパッチファイルを作成する。
6.5.2.1. cluster-compare プラグインを使用したパッチの生成 リンクのコピーリンクがクリップボードにコピーされました!
cluster-compare
プラグインを使用して、特定のテンプレートファイル用のパッチを生成できます。プラグインは、クラスターのカスタムリソース (CR) と一致するようにテンプレートを調整します。パッチが適用されたテンプレートに含まれる以前に有効だった差異は報告されません。プラグインは、パッチが適用されたファイルを出力で強調表示します。
手順
次のコマンドを実行して、テンプレートのパッチを生成します。
oc cluster-compare -r <path_to_reference_config>/metadata.yaml -o 'generate-patches' --override-reason "A valid reason for the override" --generate-override-for "<template1_path>" --generate-override-for "<template2_path>" > <path_to_patches_file>
$ oc cluster-compare -r <path_to_reference_config>/metadata.yaml -o 'generate-patches' --override-reason "A valid reason for the override" --generate-override-for "<template1_path>" --generate-override-for "<template2_path>" > <path_to_patches_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
-r
は、リファレンス設定の metadata.yaml ファイルへのパスを指定します。 -
-o
は、出力形式を指定します。パッチ出力を生成するには、generate-patches
値を使用する必要があります。 -
--override-reason
は、パッチの理由を説明します。 --generate-override-for
は、パッチが必要なテンプレートへのパスを指定します。注記metadata.yaml
ファイルを基準とした対象テンプレートのファイルパスを使用する必要があります。たとえば、metadata.yaml
ファイルのファイルパスが./compare/metadata.yaml
の場合、テンプレートの相対ファイルパスはoptional/my-template.yaml
です。-
<path_to_patches_file>
は、パッチのファイル名とパスを指定します。
-
オプション: リファレンス設定に適用する前にパッチファイルを確認します。
patch-config
ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、リファレンス設定にパッチを適用します。
oc cluster-compare -r <referenceConfigurationDirectory> -p <path_to_patches_file>
$ oc cluster-compare -r <referenceConfigurationDirectory> -p <path_to_patches_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
-r
は、リファレンス設定の metadata.yaml ファイルへのパスを指定します。 -p
は、パッチファイルへのパスを指定します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
6.5.2.2. パッチファイルの手動作成 リンクのコピーリンクがクリップボードにコピーされました!
予想されるクラスター設定の逸脱を処理するためのパッチファイルを作成できます。
パッチの type
フィールドには、次の 3 つの値を指定できます。
-
mergepatch
- JSON を対象テンプレートにマージします。指定されていないフィールドは変更されません。 -
rfc6902
-add
、remove
、replace
、move
、およびcopy
操作を使用して、対象テンプレート内の JSON をマージします。各操作は特定のパスを対象とします。 -
go-template
- Golang テンプレートを定義します。プラグインがクラスターのカスタムリソース (CR) を入力として使用してテンプレートをレンダリングし、対象テンプレートのmergepatch
またはrfc6902
パッチのいずれかを生成します。
次の例は、3 つの異なる形式すべてを使用した同じパッチを示しています。
手順
ユースケースに合わせてパッチファイルを作成します。例として次の構造を使用します。
patch-config
の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- パッチは
kind
、apiVersion
、name
、およびnamespace
フィールドを使用して、パッチを正しいクラスター CR とマッチします。
次のコマンドを実行して、リファレンス設定にパッチを適用します。
oc cluster-compare -r <referenceConfigurationDirectory> -p <path_to_patches_file>
$ oc cluster-compare -r <referenceConfigurationDirectory> -p <path_to_patches_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
-r
は、リファレンス設定の metadata.yaml ファイルへのパスを指定します。 p
は、パッチファイルへのパスを指定します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-