6.5.2.2. パッチファイルの手動作成
予想されるクラスター設定の逸脱を処理するためのパッチファイルを作成できます。
注記
パッチの type フィールドには、次の 3 つの値を指定できます。
-
mergepatch- JSON を対象テンプレートにマージします。指定されていないフィールドは変更されません。 -
rfc6902-add、remove、replace、move、およびcopy操作を使用して、対象テンプレート内の JSON をマージします。各操作は特定のパスを対象とします。 -
go-template- Golang テンプレートを定義します。プラグインがクラスターのカスタムリソース (CR) を入力として使用してテンプレートをレンダリングし、対象テンプレートのmergepatchまたはrfc6902パッチのいずれかを生成します。
次の例は、3 つの異なる形式すべてを使用した同じパッチを示しています。
手順
ユースケースに合わせてパッチファイルを作成します。例として次の構造を使用します。
patch-configの例- apiVersion: v11 kind: Namespace name: openshift-storage reason: known deviation templatePath: namespace.yaml type: mergepatch patch: '{"metadata":{"annotations":{"openshift.io/sa.scc.mcs":"s0:c29,c14","openshift.io/sa.scc.supplemental-groups":"1000840000/10000","openshift.io/sa.scc.uid-range":"1000840000/10000","reclaimspace.csiaddons.openshift.io/schedule":"@weekly","workload.openshift.io/allowed":null},"labels":{"kubernetes.io/metadata.name":"openshift-storage","olm.operatorgroup.uid/ffcf3f2d-3e37-4772-97bc-983cdfce128b":"","openshift.io/cluster-monitoring":"false","pod-security.kubernetes.io/audit":"privileged","pod-security.kubernetes.io/audit-version":"v1.24","pod-security.kubernetes.io/warn":"privileged","pod-security.kubernetes.io/warn-version":"v1.24","security.openshift.io/scc.podSecurityLabelSync":"true"}},"spec":{"finalizers":["kubernetes"]}}' - name: openshift-storage apiVersion: v1 kind: Namespace templatePath: namespace.yaml type: rfc6902 reason: known deviation patch: '[ {"op": "add", "path": "/metadata/annotations/openshift.io~1sa.scc.mcs", "value": "s0:c29,c14"}, {"op": "add", "path": "/metadata/annotations/openshift.io~1sa.scc.supplemental-groups", "value": "1000840000/10000"}, {"op": "add", "path": "/metadata/annotations/openshift.io~1sa.scc.uid-range", "value": "1000840000/10000"}, {"op": "add", "path": "/metadata/annotations/reclaimspace.csiaddons.openshift.io~1schedule", "value": "@weekly"}, {"op": "remove", "path": "/metadata/annotations/workload.openshift.io~1allowed"}, {"op": "add", "path": "/metadata/labels/kubernetes.io~1metadata.name", "value": "openshift-storage"}, {"op": "add", "path": "/metadata/labels/olm.operatorgroup.uid~1ffcf3f2d-3e37-4772-97bc-983cdfce128b", "value": ""}, {"op": "add", "path": "/metadata/labels/openshift.io~1cluster-monitoring", "value": "false"}, {"op": "add", "path": "/metadata/labels/pod-security.kubernetes.io~1audit", "value": "privileged"}, {"op": "add", "path": "/metadata/labels/pod-security.kubernetes.io~1audit-version", "value": "v1.24"}, {"op": "add", "path": "/metadata/labels/pod-security.kubernetes.io~1warn", "value": "privileged"}, {"op": "add", "path": "/metadata/labels/pod-security.kubernetes.io~1warn-version", "value": "v1.24"}, {"op": "add", "path": "/metadata/labels/security.openshift.io~1scc.podSecurityLabelSync", "value": "true"}, {"op": "add", "path": "/spec", "value": {"finalizers": ["kubernetes"]}} ]' - apiVersion: v1 kind: Namespace name: openshift-storage reason: "known deviation" templatePath: namespace.yaml type: go-template patch: | { "type": "rfc6902", "patch": '[ {"op": "add", "path": "/metadata/annotations/openshift.io~1sa.scc.mcs", "value": "s0:c29,c14"}, {"op": "add", "path": "/metadata/annotations/openshift.io~1sa.scc.supplemental-groups", "value": "1000840000/10000"}, {"op": "add", "path": "/metadata/annotations/openshift.io~1sa.scc.uid-range", "value": "1000840000/10000"}, {"op": "add", "path": "/metadata/annotations/reclaimspace.csiaddons.openshift.io~1schedule", "value": "@weekly"}, {"op": "remove", "path": "/metadata/annotations/workload.openshift.io~1allowed"}, {"op": "add", "path": "/metadata/labels/kubernetes.io~1metadata.name", "value": "openshift-storage"}, {"op": "add", "path": "/metadata/labels/olm.operatorgroup.uid~1ffcf3f2d-3e37-4772-97bc-983cdfce128b", "value": ""}, {"op": "add", "path": "/metadata/labels/openshift.io~1cluster-monitoring", "value": "false"}, {"op": "add", "path": "/metadata/labels/pod-security.kubernetes.io~1audit", "value": "privileged"}, {"op": "add", "path": "/metadata/labels/pod-security.kubernetes.io~1audit-version", "value": "v1.24"}, {"op": "add", "path": "/metadata/labels/pod-security.kubernetes.io~1warn", "value": "privileged"}, {"op": "add", "path": "/metadata/labels/pod-security.kubernetes.io~1warn-version", "value": "v1.24"}, {"op": "add", "path": "/metadata/labels/security.openshift.io~1scc.podSecurityLabelSync", "value": "true"}, {"op": "add", "path": "/spec", "value": {"finalizers": {{ .spec.finalizers | toJson }} }} ]' }- 1
- パッチは
kind、apiVersion、name、およびnamespaceフィールドを使用して、パッチを正しいクラスター CR とマッチします。
次のコマンドを実行して、リファレンス設定にパッチを適用します。
$ oc cluster-compare -r <referenceConfigurationDirectory> -p <path_to_patches_file>-
-rは、リファレンス設定の metadata.yaml ファイルへのパスを指定します。 pは、パッチファイルへのパスを指定します。出力例
... Cluster CR: storage.k8s.io/v1_StorageClass_crc-csi-hostpath-provisioner Reference File: namespace.yaml Description: Component description Diff Output: None Patched with patch Patch Reasons: - known deviation - known deviation - known deviation ... No CRs are unmatched to reference CRs Metadata Hash: bb2165004c496b32e0c8509428fb99c653c3cf4fba41196ea6821bd05c3083ab Cluster CRs with patches applied: 1
-