$ oc cluster-compare -r <path_to_reference_config>/metadata.yaml
You can use the cluster-compare
plugin to compare a reference configuration with a configuration from a live cluster or must-gather
data.
You can use the cluster-compare
plugin to compare a reference configuration with configuration custom resources (CRs) from a live cluster.
Validate live cluster configurations to ensure compliance with reference configurations during design, development, or testing scenarios.
Use the |
You installed the OpenShift CLI (oc
).
You have access to the cluster as a user with the cluster-admin
role.
You downloaded the cluster-compare
plugin and include it in your PATH
environment variable.
You have access to a reference configuration.
Run the cluster-compare
plugin by using the following command:
$ oc cluster-compare -r <path_to_reference_config>/metadata.yaml
-r
specifies a path to the metadata.yaml
file of the reference configuration. You can specify a local directory or a URI.
...
**********************************
Cluster CR: operator.openshift.io/v1_Console_cluster (1)
Reference File: optional/console-disable/ConsoleOperatorDisable.yaml (2)
Diff Output: diff -u -N /tmp/MERGED-622469311/operator-openshift-io-v1_console_cluster /tmp/LIVE-2358803347/operator-openshift-io-v1_console_cluster
/tmp/MERGED-622469311/operator-openshift-io-v1_console_cluster 2024-11-20 15:43:42.888633602 +0000
+++ /tmp/LIVE-2358803347/operator-openshift-io-v1_console_cluster 2024-11-20 15:43:42.888633602 +0000
@@ -4,5 +4,5 @@
name: cluster
spec:
logLevel: Normal
- managementState: Removed (3)
+ managementState: Managed
operatorLogLevel: Normal
**********************************
…
Summary (4)
CRs with diffs: 5/49 (5)
CRs in reference missing from the cluster: 1 (6)
required-cluster-tuning:
cluster-tuning:
Missing CRs: (7)
- required/cluster-tuning/disabling-network-diagnostics/DisableSnoNetworkDiag.yaml
No CRs are unmatched to reference CRs (8)
Metadata Hash: 512a9bf2e57fd5a5c44bbdea7abb3ffd7739d4a1f14ef9021f6793d5cdf868f0 (9)
No patched CRs (10)
1 | The CR under comparison. The plugin displays each CR with a difference from the corresponding template. |
2 | The template matching with the CR for comparison. |
3 | The output in Linux diff format shows the difference between the template and the cluster CR. |
4 | After the plugin reports the line diffs for each CR, the summary of differences are reported. |
5 | The number of CRs in the comparison with differences from the corresponding templates. |
6 | The number of CRs represented in the reference configuration, but missing from the live cluster. |
7 | The list of CRs represented in the reference configuration, but missing from the live cluster. |
8 | The CRs that did not match to a corresponding template in the reference configuration. |
9 | The metadata hash identifies the reference configuration. |
10 | The list of patched CRs. |
You can use the cluster-compare
plugin to compare a reference configuration with configuration custom resources (CRs) from must-gather
data.
Validate cluster configurations by using must-gather
data to troubleshoot configuration issues in production environments.
For production environments, use the |
You have access to must-gather
data from a target cluster.
You installed the OpenShift CLI (oc
).
You have downloaded the cluster-compare
plugin and included it in your PATH
environment variable.
You have access to a reference configuration.
Compare the must-gather
data to a reference configuration by running the following command:
$ oc cluster-compare -r <path_to_reference_config>/metadata.yaml -f "must-gather*/*/cluster-scoped-resources","must-gather*/*/namespaces" -R
-r
specifies a path to the metadata.yaml
file of the reference configuration. You can specify a local directory or a URI.
-f
specifies the path to the must-gather
data directory. You can specify a local directory or a URI. This example restricts the comparison to the relevant cluster configuration directories.
-R
searches the target directories recursively.
...
**********************************
Cluster CR: operator.openshift.io/v1_Console_cluster (1)
Reference File: optional/console-disable/ConsoleOperatorDisable.yaml (2)
Diff Output: diff -u -N /tmp/MERGED-622469311/operator-openshift-io-v1_console_cluster /tmp/LIVE-2358803347/operator-openshift-io-v1_console_cluster
/tmp/MERGED-622469311/operator-openshift-io-v1_console_cluster 2024-11-20 15:43:42.888633602 +0000
+++ /tmp/LIVE-2358803347/operator-openshift-io-v1_console_cluster 2024-11-20 15:43:42.888633602 +0000
@@ -4,5 +4,5 @@
name: cluster
spec:
logLevel: Normal
- managementState: Removed (3)
+ managementState: Managed
operatorLogLevel: Normal
**********************************
…
Summary (4)
CRs with diffs: 5/49 (5)
CRs in reference missing from the cluster: 1 (6)
required-cluster-tuning:
cluster-tuning:
Missing CRs: (7)
- required/cluster-tuning/disabling-network-diagnostics/DisableSnoNetworkDiag.yaml
No CRs are unmatched to reference CRs (8)
Metadata Hash: 512a9bf2e57fd5a5c44bbdea7abb3ffd7739d4a1f14ef9021f6793d5cdf868f0 (9)
No patched CRs (10)
1 | The CR under comparison. The plugin displays each CR with a difference from the corresponding template. |
2 | The template matching with the CR for comparison. |
3 | The output in Linux diff format shows the difference between the template and the cluster CR. |
4 | After the plugin reports the line diffs for each CR, the summary of differences are reported. |
5 | The number of CRs in the comparison with differences from the corresponding templates. |
6 | The number of CRs represented in the reference configuration, but missing from the live cluster. |
7 | The list of CRs represented in the reference configuration, but missing from the live cluster. |
8 | The CRs that did not match to a corresponding template in the reference configuration. |
9 | The metadata hash identifies the reference configuration. |
10 | The list of patched CRs. |
The following content describes the options for the cluster-compare
plugin.
Option | Description | ||
---|---|---|---|
|
When used with a live cluster, attempts to match all resources in the cluster that match a type in the reference configuration. When used with local files, attempts to match all resources in the local files that match a type in the reference configuration. |
||
|
Specify an integer value for the number of templates to process in parallel when comparing with resources from the live version. A larger number increases speed but also memory, I/O, and CPU usage during that period. The default value is |
||
|
Specify the path to the user configuration file. |
||
|
Specify a filename, directory, or URL for the configuration custom resources that you want to use for a comparison with a reference configuration. |
||
|
Specify the path for templates that requires a patch.
|
||
|
Display help information. |
||
|
Specify a path to process the |
||
|
Specify the output format. Options include |
||
|
Specify a reason for generating the override. |
||
|
Specify a path to a patch override file for the reference configuration. |
||
|
Processes the directory specified in |
||
|
Specify the path to the reference configuration |
||
|
Specify |
||
|
Increases the verbosity of the plugin output. |
You can use the cluster-compare
plugin to compare a reference configuration with a configuration from a live cluster or must-gather
data.
This example compares a configuration from a live cluster with the telco core reference configuration. The telco core reference configuration is derived from the telco core reference design specifications (RDS). The telco core RDS is designed for clusters to support large scale telco applications including control plane and some centralized data plane functions.
The reference configuration is packaged in a container image with the telco core RDS.
For further examples of using the cluster-compare
plugin with the telco core and telco RAN distributed unit (DU) profiles, see the "Additional resources" section.
You have access to the cluster as a user with the cluster-admin
role.
You have credentials to access the registry.redhat.io
container image registry.
You installed the cluster-compare
plugin.
Login to the container image registry with your credentials by running the following command:
$ podman login registry.redhat.io
Extract the content from the telco-core-rds-rhel9
container image by running the following commands:
$ mkdir -p ./out
$ podman run -it registry.redhat.io/openshift4/openshift-telco-core-rds-rhel9:v4.17 | base64 -d | tar xv -C out
You can view the reference configuration in the reference-crs-kube-compare/
directory.
out/telco-core-rds/configuration/reference-crs-kube-compare/
├── metadata.yaml (1)
├── optional (2)
│ ├── logging
│ ├── networking
│ ├── other
│ └── tuning
└── required (3)
├── networking
├── other
├── performance
├── scheduling
└── storage
1 | Configuration file for the reference configuration. |
2 | Directory for optional templates. |
3 | Directory for required templates. |
Compare the configuration for your cluster to the telco core reference configuration by running the following command:
$ oc cluster-compare -r out/telco-core-rds/configuration/reference-crs-kube-compare/metadata.yaml
W1212 14:13:06.281590 36629 compare.go:425] Reference Contains Templates With Types (kind) Not Supported By Cluster: BFDProfile, BGPAdvertisement, BGPPeer, ClusterLogForwarder, Community, IPAddressPool, MetalLB, MultiNetworkPolicy, NMState, NUMAResourcesOperator, NUMAResourcesScheduler, NodeNetworkConfigurationPolicy, SriovNetwork, SriovNetworkNodePolicy, SriovOperatorConfig, StorageCluster
...
**********************************
Cluster CR: config.openshift.io/v1_OperatorHub_cluster (1)
Reference File: required/other/operator-hub.yaml (2)
Diff Output: diff -u -N /tmp/MERGED-2801470219/config-openshift-io-v1_operatorhub_cluster /tmp/LIVE-2569768241/config-openshift-io-v1_operatorhub_cluster
--- /tmp/MERGED-2801470219/config-openshift-io-v1_operatorhub_cluster 2024-12-12 14:13:22.898756462 +0000
+++ /tmp/LIVE-2569768241/config-openshift-io-v1_operatorhub_cluster 2024-12-12 14:13:22.898756462 +0000
@@ -1,6 +1,6 @@
apiVersion: config.openshift.io/v1
kind: OperatorHub
metadata:
+ annotations: (3)
+ include.release.openshift.io/hypershift: "true"
name: cluster
-spec:
- disableAllDefaultSources: true
**********************************
Summary (4)
CRs with diffs: 3/4 (5)
CRs in reference missing from the cluster: 22 (6)
other:
other:
Missing CRs: (7)
- optional/other/control-plane-load-kernel-modules.yaml
- optional/other/worker-load-kernel-modules.yaml
required-networking:
networking-root:
Missing CRs:
- required/networking/nodeNetworkConfigurationPolicy.yaml
networking-sriov:
Missing CRs:
- required/networking/sriov/sriovNetwork.yaml
- required/networking/sriov/sriovNetworkNodePolicy.yaml
- required/networking/sriov/SriovOperatorConfig.yaml
- required/networking/sriov/SriovSubscription.yaml
- required/networking/sriov/SriovSubscriptionNS.yaml
- required/networking/sriov/SriovSubscriptionOperGroup.yaml
required-other:
scheduling:
Missing CRs:
- required/other/catalog-source.yaml
- required/other/icsp.yaml
required-performance:
performance:
Missing CRs:
- required/performance/PerformanceProfile.yaml
required-scheduling:
scheduling:
Missing CRs:
- required/scheduling/nrop.yaml
- required/scheduling/NROPSubscription.yaml
- required/scheduling/NROPSubscriptionNS.yaml
- required/scheduling/NROPSubscriptionOperGroup.yaml
- required/scheduling/sched.yaml
required-storage:
storage-odf:
Missing CRs:
- required/storage/odf-external/01-rook-ceph-external-cluster-details.secret.yaml
- required/storage/odf-external/02-ocs-external-storagecluster.yaml
- required/storage/odf-external/odfNS.yaml
- required/storage/odf-external/odfOperGroup.yaml
- required/storage/odf-external/odfSubscription.yaml
No CRs are unmatched to reference CRs (8)
Metadata Hash: fe41066bac56517be02053d436c815661c9fa35eec5922af25a1be359818f297 (9)
No patched CRs (10)
1 | The CR under comparison. The plugin displays each CR with a difference from the corresponding template. |
2 | The template matching with the CR for comparison. |
3 | The output in Linux diff format shows the difference between the template and the cluster CR. |
4 | After the plugin reports the line diffs for each CR, the summary of differences are reported. |
5 | The number of CRs in the comparison with differences from the corresponding templates. |
6 | The number of CRs represented in the reference configuration, but missing from the live cluster. |
7 | The list of CRs represented in the reference configuration, but missing from the live cluster. |
8 | The CRs that did not match to a corresponding template in the reference configuration. |
9 | The metadata hash identifies the reference configuration. |
10 | The list of patched CRs. |