5.10. Gestion des résultats de l'opérateur de conformité et remédiation
Chaque ComplianceCheckResult représente le résultat d'un contrôle de la règle de conformité. Si la règle peut être corrigée automatiquement, un objet ComplianceRemediation portant le même nom et appartenant à ComplianceCheckResult est créé. Sauf demande, les remédiations ne sont pas appliquées automatiquement, ce qui donne à l'administrateur d'OpenShift Container Platform la possibilité d'examiner ce que fait la remédiation et de n'appliquer une remédiation qu'une fois qu'elle a été vérifiée.
5.10.1. Filtres pour les résultats des contrôles de conformité Copier lienLien copié sur presse-papiers!
Par défaut, les objets ComplianceCheckResult sont étiquetés avec plusieurs étiquettes utiles qui vous permettent d'interroger les contrôles et de décider des étapes suivantes une fois les résultats générés.
Liste des chèques appartenant à une suite spécifique :
oc get -n openshift-compliance compliancecheckresults \ -l compliance.openshift.io/suite=workers-compliancesuite
$ oc get -n openshift-compliance compliancecheckresults \
-l compliance.openshift.io/suite=workers-compliancesuite
Liste des chèques appartenant à une analyse spécifique :
oc get -n openshift-compliance compliancecheckresults \ -l compliance.openshift.io/scan=workers-scan
$ oc get -n openshift-compliance compliancecheckresults \
-l compliance.openshift.io/scan=workers-scan
Tous les objets ComplianceCheckResult ne créent pas d'objets ComplianceRemediation. Seuls les objets ComplianceCheckResult qui peuvent être remédiés automatiquement le font. Un objet ComplianceCheckResult a une remédiation associée s'il est étiqueté avec le label compliance.openshift.io/automated-remediation. Le nom de la remédiation est le même que celui du contrôle.
Dressez la liste de tous les contrôles défaillants qui peuvent être corrigés automatiquement :
oc get -n openshift-compliance compliancecheckresults \ -l 'compliance.openshift.io/check-status=FAIL,compliance.openshift.io/automated-remediation'
$ oc get -n openshift-compliance compliancecheckresults \
-l 'compliance.openshift.io/check-status=FAIL,compliance.openshift.io/automated-remediation'
Liste de tous les contrôles défaillants, classés par gravité :
oc get compliancecheckresults -n openshift-compliance \ -l 'compliance.openshift.io/check-status=FAIL,compliance.openshift.io/check-severity=high'
$ oc get compliancecheckresults -n openshift-compliance \
-l 'compliance.openshift.io/check-status=FAIL,compliance.openshift.io/check-severity=high'
Exemple de sortie
Dressez la liste de tous les contrôles défaillants qui doivent être corrigés manuellement :
oc get -n openshift-compliance compliancecheckresults \ -l 'compliance.openshift.io/check-status=FAIL,!compliance.openshift.io/automated-remediation'
$ oc get -n openshift-compliance compliancecheckresults \
-l 'compliance.openshift.io/check-status=FAIL,!compliance.openshift.io/automated-remediation'
Les étapes de remédiation manuelle sont généralement stockées dans l'attribut description de l'objet ComplianceCheckResult.
| Statut du résultat du contrôle de conformité | Description |
|---|---|
| PASSER | Le contrôle de conformité s'est déroulé jusqu'à son terme et s'est avéré concluant. |
| ÉCHEC | Le contrôle de conformité s'est déroulé jusqu'à son terme et a échoué. |
| INFO | Le contrôle de conformité s'est déroulé jusqu'à son terme et a révélé un problème qui n'est pas suffisamment grave pour être considéré comme une erreur. |
| MANUEL | Le contrôle de conformité n'a pas de moyen d'évaluer automatiquement le succès ou l'échec et doit être vérifié manuellement. |
| INCONSISTANT | Le contrôle de conformité signale différents résultats provenant de différentes sources, généralement des nœuds de cluster. |
| ERREUR | Le contrôle de conformité a été exécuté, mais n'a pas pu se terminer correctement. |
| NON-APPLICABLE | Le contrôle de conformité n'a pas été exécuté parce qu'il n'est pas applicable ou n'est pas sélectionné. |
5.10.2. Révision d'une mesure corrective Copier lienLien copié sur presse-papiers!
Examinez l'objet ComplianceRemediation et l'objet ComplianceCheckResult qui possède la remédiation. L'objet ComplianceCheckResult contient des descriptions lisibles par l'homme de ce que fait le contrôle et du durcissement qu'il tente d'empêcher, ainsi que d'autres informations metadata telles que la gravité et les contrôles de sécurité associés. L'objet ComplianceRemediation représente un moyen de résoudre le problème décrit dans l'objet ComplianceCheckResult. Après la première analyse, vérifiez les mesures correctives avec l'état MissingDependencies.
Vous trouverez ci-dessous un exemple de contrôle et de remédiation appelé sysctl-net-ipv4-conf-all-accept-redirects. Cet exemple est expurgé pour ne montrer que spec et status et omet metadata:
Le payload de la remédiation est stocké dans l'attribut spec.current. Le payload peut être n'importe quel objet Kubernetes, mais comme cette remédiation a été produite par un scan de nœud, le payload de remédiation dans l'exemple ci-dessus est un objet MachineConfig. Pour les analyses de plateforme, la charge utile de la remédiation est souvent un autre type d'objet (par exemple, un objet ConfigMap ou Secret ), mais l'application de cette remédiation est généralement du ressort de l'administrateur, car sinon l'opérateur de conformité aurait eu besoin d'un ensemble très large de permissions pour manipuler n'importe quel objet Kubernetes générique. Un exemple de remédiation d'un contrôle de plateforme est fourni plus loin dans le texte.
Pour voir exactement ce que fait la remédiation lorsqu'elle est appliquée, le contenu de l'objet MachineConfig utilise les objets Ignition pour la configuration. Voir la spécification Ignition pour plus d'informations sur le format. Dans notre exemple, l'attribut the spec.config.storage.files[0].path spécifie le fichier créé par cette remédiation (/etc/sysctl.d/75-sysctl_net_ipv4_conf_all_accept_redirects.conf) et l'attribut spec.config.storage.files[0].contents.source spécifie le contenu de ce fichier.
Le contenu des fichiers est codé en URL.
Utilisez le script Python suivant pour afficher le contenu :
echo "net.ipv4.conf.all.accept_redirects%3D0" | python3 -c "import sys, urllib.parse; print(urllib.parse.unquote(''.join(sys.stdin.readlines())))"
$ echo "net.ipv4.conf.all.accept_redirects%3D0" | python3 -c "import sys, urllib.parse; print(urllib.parse.unquote(''.join(sys.stdin.readlines())))"
Exemple de sortie
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
5.10.3. Application de la remédiation lors de l'utilisation de pools de configuration de machines personnalisés Copier lienLien copié sur presse-papiers!
Lorsque vous créez une MachineConfigPool personnalisée, ajoutez une étiquette à la MachineConfigPool afin que la machineConfigPoolSelector présente dans la KubeletConfig puisse faire correspondre l'étiquette à la MachineConfigPool.
Ne définissez pas protectKernelDefaults: false dans le fichier KubeletConfig, car l'objet MachineConfigPool pourrait ne pas se débloquer de manière inattendue une fois que l'opérateur de conformité a fini d'appliquer la remédiation.
Procédure
Dresser la liste des nœuds.
oc get nodes -n openshift-compliance
$ oc get nodes -n openshift-complianceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ajouter une étiquette aux nœuds.
oc -n openshift-compliance \ label node ip-10-0-166-81.us-east-2.compute.internal \ node-role.kubernetes.io/<machine_config_pool_name>=
$ oc -n openshift-compliance \ label node ip-10-0-166-81.us-east-2.compute.internal \ node-role.kubernetes.io/<machine_config_pool_name>=Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
node/ip-10-0-166-81.us-east-2.compute.internal labeled
node/ip-10-0-166-81.us-east-2.compute.internal labeledCopy to Clipboard Copied! Toggle word wrap Toggle overflow Créer des
MachineConfigPoolCR personnalisés.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le champ
labelsdéfinit le nom de l'étiquette à ajouter pour le pool de configuration de la machine (MCP).
Vérifier que le MCP a été créé avec succès.
oc get mcp -w
$ oc get mcp -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.4. Évaluation des règles KubeletConfig par rapport aux valeurs de configuration par défaut Copier lienLien copié sur presse-papiers!
L'infrastructure d'OpenShift Container Platform peut contenir des fichiers de configuration incomplets au moment de l'exécution, et les nœuds supposent des valeurs de configuration par défaut pour les options de configuration manquantes. Certaines options de configuration peuvent être transmises en tant qu'arguments de ligne de commande. Par conséquent, l'opérateur de conformité ne peut pas vérifier si le fichier de configuration sur le nœud est complet car il peut manquer des options utilisées dans les vérifications de règles.
Pour éviter les résultats faussement négatifs lorsque la valeur de configuration par défaut passe le contrôle, l'opérateur de conformité utilise l'API Node/Proxy pour récupérer la configuration de chaque nœud d'un groupe de nœuds, puis toutes les options de configuration qui sont cohérentes entre les nœuds du groupe de nœuds sont stockées dans un fichier qui représente la configuration de tous les nœuds de ce groupe de nœuds. Cela permet d'améliorer la précision des résultats de l'analyse.
Aucune modification supplémentaire de la configuration n'est nécessaire pour utiliser cette fonction avec les configurations par défaut des pools de nœuds master et worker.
5.10.5. Analyse des pools de nœuds personnalisés Copier lienLien copié sur presse-papiers!
L'opérateur de conformité ne conserve pas de copie de la configuration de chaque groupe de nœuds. Il regroupe les options de configuration cohérentes pour tous les nœuds d'un pool de nœuds unique dans une copie du fichier de configuration. L'opérateur de conformité utilise ensuite le fichier de configuration pour un groupe de nœuds particulier afin d'évaluer les règles applicables aux nœuds de ce groupe.
Si votre cluster utilise des pools de nœuds personnalisés en dehors des pools de nœuds par défaut worker et master, vous devez fournir des variables supplémentaires pour que l'Opérateur de Conformité agrège un fichier de configuration pour ce pool de nœuds.
Procédure
Pour vérifier la configuration par rapport à tous les pools d'un exemple de cluster contenant les pools de nœuds
master,workeretexamplepersonnalisé, définissez la valeur des champsocp-var-role-masteretopc-var-role-workersurexampledans l'objetTailoredProfile:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ajoutez le rôle
exampleà l'objetScanSettingqui sera stocké dans le CRScanSettingBinding:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un scan qui utilise le
ScanSettingBindingCR :Copy to Clipboard Copied! Toggle word wrap Toggle overflow
L'opérateur de conformité vérifie la version d'exécution KubeletConfig à l'aide de l'objet API Node/Proxy et utilise ensuite des variables telles que ocp-var-role-master et ocp-var-role-worker pour déterminer les nœuds sur lesquels il effectue le contrôle. Sur le site ComplianceCheckResult, les règles KubeletConfig sont affichées sous la forme ocp4-cis-kubelet-*. L'analyse n'est réussie que si tous les nœuds sélectionnés passent cette vérification.
Vérification
Les règles de Platform KubeletConfig sont vérifiées par le biais de l'objet
Node/Proxy. Vous pouvez trouver ces règles en exécutant la commande suivante :oc get rules -o json | jq '.items[] | select(.checkType == "Platform") | select(.metadata.name | contains("ocp4-kubelet-")) | .metadata.name'$ oc get rules -o json | jq '.items[] | select(.checkType == "Platform") | select(.metadata.name | contains("ocp4-kubelet-")) | .metadata.name'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.6. Assainissement des sous-piscines KubeletConfig Copier lienLien copié sur presse-papiers!
KubeletConfig des étiquettes de remédiation peuvent être appliquées aux sous-pools de MachineConfigPool.
Procédure
Ajouter une étiquette au sous-pool
MachineConfigPoolCR :oc label mcp <sub-pool-name> pools.operator.machineconfiguration.openshift.io/<sub-pool-name>=
$ oc label mcp <sub-pool-name> pools.operator.machineconfiguration.openshift.io/<sub-pool-name>=Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.7. Application d'une remédiation Copier lienLien copié sur presse-papiers!
L'attribut booléen spec.apply contrôle si la remédiation doit être appliquée par l'opérateur de conformité. Vous pouvez appliquer la remédiation en définissant l'attribut sur true:
oc -n openshift-compliance \
patch complianceremediations/<scan-name>-sysctl-net-ipv4-conf-all-accept-redirects \
--patch '{"spec":{"apply":true}}' --type=merge
$ oc -n openshift-compliance \
patch complianceremediations/<scan-name>-sysctl-net-ipv4-conf-all-accept-redirects \
--patch '{"spec":{"apply":true}}' --type=merge
Une fois que l'opérateur de conformité a traité la correction appliquée, l'attribut status.ApplicationState devient Applied ou Error s'il est incorrect. Lorsqu'une remédiation de la configuration de la machine est appliquée, cette remédiation ainsi que toutes les autres remédiations appliquées sont rendues dans un objet MachineConfig nommé 75-$scan-name-$suite-name. Cet objet MachineConfig est ensuite rendu par l'opérateur de configuration de machine et finalement appliqué à tous les nœuds d'un pool de configuration de machine par une instance du démon de contrôle de machine s'exécutant sur chaque nœud.
Notez que lorsque l'opérateur de configuration des machines applique un nouvel objet MachineConfig aux nœuds d'un pool, tous les nœuds appartenant au pool sont redémarrés. Cela peut s'avérer gênant lors de l'application de plusieurs remédiations, chacune d'entre elles restituant l'objet composite 75-$scan-name-$suite-name MachineConfig . Pour éviter d'appliquer la remédiation immédiatement, vous pouvez mettre en pause le pool de configuration de machines en définissant l'attribut .spec.paused d'un objet MachineConfigPool sur true.
Assurez-vous que les pools ne sont pas interrompus lorsque la rotation des certificats d'AC a lieu. Si les MCP sont en pause, le MCO ne peut pas envoyer les nouveaux certificats à ces nœuds. Cela entraîne la dégradation du cluster et l'échec de plusieurs commandes oc, notamment oc debug, oc logs, oc exec et oc attach. Vous recevez des alertes dans l'interface utilisateur d'alerte de la console Web d'OpenShift Container Platform si un MCP est mis en pause lors de la rotation des certificats.
L'opérateur de conformité peut appliquer des remédiations automatiquement. Définissez autoApplyRemediations: true dans l'objet de premier niveau ScanSetting.
L'application automatique de mesures correctives ne doit se faire qu'après mûre réflexion.
5.10.8. Remédier manuellement à un contrôle de plate-forme Copier lienLien copié sur presse-papiers!
Les contrôles des analyses de la plate-forme doivent généralement être effectués manuellement par l'administrateur, et ce pour deux raisons :
- Il n'est pas toujours possible de déterminer automatiquement la valeur qui doit être définie. L'un des contrôles exige qu'une liste des registres autorisés soit fournie, mais l'analyseur n'a aucun moyen de savoir quels registres l'organisation souhaite autoriser.
-
Différentes vérifications modifient différents objets API, ce qui nécessite une remédiation automatisée pour posséder
rootou un accès superutilisateur pour modifier les objets dans le cluster, ce qui n'est pas conseillé.
Procédure
L'exemple ci-dessous utilise la règle
ocp4-ocp-allowed-registries-for-import, qui échouerait sur une installation par défaut d'OpenShift Container Platform. Inspectez la règleoc get rule.compliance/ocp4-ocp-allowed-registries-for-import -oyaml, qui limite les registres à partir desquels les utilisateurs sont autorisés à importer des images en définissant l'attributallowedRegistriesForImport. L'attribut warning de la règle indique également l'objet API vérifié, de sorte qu'il peut être modifié et remédier au problème :oc edit image.config.openshift.io/cluster
$ oc edit image.config.openshift.io/clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécutez à nouveau l'analyse :
oc -n openshift-compliance \ annotate compliancescans/rhcos4-e8-worker compliance.openshift.io/rescan=
$ oc -n openshift-compliance \ annotate compliancescans/rhcos4-e8-worker compliance.openshift.io/rescan=Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.9. Mise à jour des mesures correctives Copier lienLien copié sur presse-papiers!
Lorsqu'une nouvelle version du contenu de conformité est utilisée, elle peut fournir une version nouvelle et différente d'une remédiation par rapport à la version précédente. L'opérateur de conformité conservera l'ancienne version de la remédiation appliquée. L'administrateur d'OpenShift Container Platform est également notifié de la nouvelle version à réviser et à appliquer. Un objet ComplianceRemediation qui avait été appliqué précédemment, mais qui a été mis à jour, change de statut et devient Outdated. Les objets obsolètes sont étiquetés de manière à pouvoir être recherchés facilement.
Le contenu de la remédiation précédemment appliquée serait alors stocké dans l'attribut spec.outdated d'un objet ComplianceRemediation et le nouveau contenu mis à jour serait stocké dans l'attribut spec.current. Après avoir mis à jour le contenu vers une version plus récente, l'administrateur doit alors revoir la remédiation. Tant que l'attribut spec.outdated existe, il est utilisé pour rendre l'objet MachineConfig résultant. Une fois l'attribut spec.outdated supprimé, l'opérateur de conformité rend à nouveau l'objet MachineConfig qui en résulte, ce qui l'amène à pousser la configuration vers les nœuds.
Procédure
Recherchez les mesures correctives périmées :
oc -n openshift-compliance get complianceremediations \ -l complianceoperator.openshift.io/outdated-remediation=
$ oc -n openshift-compliance get complianceremediations \ -l complianceoperator.openshift.io/outdated-remediation=Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME STATE workers-scan-no-empty-passwords Outdated
NAME STATE workers-scan-no-empty-passwords OutdatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow La remédiation actuellement appliquée est stockée dans l'attribut
Outdatedet la nouvelle remédiation non appliquée est stockée dans l'attributCurrent. Si vous êtes satisfait de la nouvelle version, supprimez le champOutdated. Si vous souhaitez conserver le contenu mis à jour, supprimez les attributsCurrentetOutdated.Appliquer la version la plus récente de la remédiation :
oc -n openshift-compliance patch complianceremediations workers-scan-no-empty-passwords \ --type json -p '[{"op":"remove", "path":/spec/outdated}]'$ oc -n openshift-compliance patch complianceremediations workers-scan-no-empty-passwords \ --type json -p '[{"op":"remove", "path":/spec/outdated}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow L'état de remédiation passera de
OutdatedàApplied:oc get -n openshift-compliance complianceremediations workers-scan-no-empty-passwords
$ oc get -n openshift-compliance complianceremediations workers-scan-no-empty-passwordsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME STATE workers-scan-no-empty-passwords Applied
NAME STATE workers-scan-no-empty-passwords AppliedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Les nœuds appliqueront la version de remédiation la plus récente et redémarreront.
5.10.10. Non-application d'une mesure corrective Copier lienLien copié sur presse-papiers!
Il peut être nécessaire d'annuler une mesure corrective déjà appliquée.
Procédure
Fixer le drapeau
applyàfalse:oc -n openshift-compliance \ patch complianceremediations/rhcos4-moderate-worker-sysctl-net-ipv4-conf-all-accept-redirects \ --patch '{"spec":{"apply":false}}' --type=merge$ oc -n openshift-compliance \ patch complianceremediations/rhcos4-moderate-worker-sysctl-net-ipv4-conf-all-accept-redirects \ --patch '{"spec":{"apply":false}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Le statut de l'assainissement passera à
NotAppliedet l'objet compositeMachineConfigsera redessiné pour ne pas inclure l'assainissement.ImportantTous les nœuds concernés par la remédiation seront redémarrés.
5.10.11. Suppression d'une remédiation KubeletConfig Copier lienLien copié sur presse-papiers!
KubeletConfig sont incluses dans les profils au niveau des nœuds. Pour supprimer une remédiation KubeletConfig, vous devez la supprimer manuellement des objets KubeletConfig. Cet exemple montre comment supprimer le contrôle de conformité pour la remédiation one-rule-tp-node-master-kubelet-eviction-thresholds-set-hard-imagefs-available.
Procédure
Localisez le site
scan-nameet vérifiez la conformité de l'assainissement du siteone-rule-tp-node-master-kubelet-eviction-thresholds-set-hard-imagefs-available:oc -n openshift-compliance get remediation \ one-rule-tp-node-master-kubelet-eviction-thresholds-set-hard-imagefs-available -o yaml
$ oc -n openshift-compliance get remediation \ one-rule-tp-node-master-kubelet-eviction-thresholds-set-hard-imagefs-available -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteSi la remédiation invoque une configuration kubelet
evictionHard, vous devez spécifier tous les paramètresevictionHard:memory.availablenodefs.available,nodefs.inodesFree,imagefs.availableetimagefs.inodesFree. Si vous ne spécifiez pas tous les paramètres, seuls les paramètres spécifiés sont appliqués et la remédiation ne fonctionnera pas correctement.Retirer l'assainissement :
Définir
applyà false pour l'objet de remédiation :oc -n openshift-compliance patch \ complianceremediations/one-rule-tp-node-master-kubelet-eviction-thresholds-set-hard-imagefs-available \ -p '{"spec":{"apply":false}}' --type=merge$ oc -n openshift-compliance patch \ complianceremediations/one-rule-tp-node-master-kubelet-eviction-thresholds-set-hard-imagefs-available \ -p '{"spec":{"apply":false}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow A l'aide de
scan-name, trouvez l'objetKubeletConfigauquel la remédiation a été appliquée :oc -n openshift-compliance get kubeletconfig \ --selector compliance.openshift.io/scan-name=one-rule-tp-node-master
$ oc -n openshift-compliance get kubeletconfig \ --selector compliance.openshift.io/scan-name=one-rule-tp-node-masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME AGE compliance-operator-kubelet-master 2m34s
NAME AGE compliance-operator-kubelet-master 2m34sCopy to Clipboard Copied! Toggle word wrap Toggle overflow Supprimez manuellement la remédiation,
imagefs.available: 10%, de l'objetKubeletConfig:oc edit -n openshift-compliance KubeletConfig compliance-operator-kubelet-master
$ oc edit -n openshift-compliance KubeletConfig compliance-operator-kubelet-masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow ImportantTous les nœuds concernés par la remédiation seront redémarrés.
Vous devez également exclure la règle de toutes les analyses planifiées dans vos profils personnalisés qui appliquent automatiquement la correction, sinon la correction sera réappliquée lors de la prochaine analyse planifiée.
5.10.12. ComplianceScan incohérent Copier lienLien copié sur presse-papiers!
L'objet ScanSetting répertorie les rôles de nœuds que les analyses de conformité générées à partir des objets ScanSetting ou ScanSettingBinding doivent analyser. Chaque rôle de nœud correspond généralement à un pool de configuration de machine.
Il est prévu que toutes les machines d'un pool de configuration soient identiques et que tous les résultats d'analyse des nœuds d'un pool soient identiques.
Si certains résultats sont différents des autres, l'opérateur de conformité signale un objet ComplianceCheckResult dont certains nœuds seront signalés comme étant INCONSISTENT. Tous les objets ComplianceCheckResult sont également étiquetés avec compliance.openshift.io/inconsistent-check.
Comme le nombre de machines dans un pool peut être très important, l'opérateur de conformité tente de trouver l'état le plus courant et de dresser la liste des nœuds qui diffèrent de l'état courant. L'état le plus courant est stocké dans l'annotation compliance.openshift.io/most-common-status et l'annotation compliance.openshift.io/inconsistent-source contient des paires de hostname:status d'états de contrôle qui diffèrent de l'état le plus courant. Si aucun état commun ne peut être trouvé, toutes les paires hostname:status sont répertoriées dans l'annotation compliance.openshift.io/inconsistent-source annotation.
Si possible, une remédiation est encore créée afin que le cluster puisse converger vers un statut conforme. Cependant, cela n'est pas toujours possible et la correction de la différence entre les nœuds doit être effectuée manuellement. L'analyse de conformité doit être réexécutée pour obtenir un résultat cohérent en annotant l'analyse avec l'option compliance.openshift.io/rescan=:
oc -n openshift-compliance \ annotate compliancescans/rhcos4-e8-worker compliance.openshift.io/rescan=
$ oc -n openshift-compliance \
annotate compliancescans/rhcos4-e8-worker compliance.openshift.io/rescan=