17.6. Mise à jour des politiques sur les clusters gérés
Le Topology Aware Lifecycle Manager (TALM) remédie à un ensemble de politiques inform
pour les clusters spécifiés dans le CR ClusterGroupUpgrade
. Le TALM remédie aux politiques inform
en faisant des copies enforce
des politiques RHACM gérées. Chaque politique copiée possède sa propre règle de placement RHACM et son propre lien de placement RHACM.
Un par un, TALM ajoute chaque cluster du lot actuel à la règle de placement qui correspond à la politique gérée applicable. Si un cluster est déjà conforme à une politique, le TALM passe à l'application de cette politique sur le cluster conforme. TALM passe ensuite à l'application de la politique suivante au cluster non conforme. Une fois que TALM a terminé les mises à jour d'un lot, tous les clusters sont supprimés des règles de placement associées aux politiques copiées. La mise à jour du lot suivant commence alors.
Si un cluster spoke ne signale aucun état de conformité à RHACM, les politiques gérées sur le cluster hub peuvent manquer d'informations d'état dont le TALM a besoin. TALM gère ces cas de la manière suivante :
-
Si le champ
status.compliant
d'une politique est manquant, TALM ignore la politique et ajoute une entrée de journal. Ensuite, TALM continue à regarder le champstatus.status
de la politique. -
Si le site
status.status
d'une police est manquant, TALM produit une erreur. -
Si le statut de conformité d'un cluster n'est pas indiqué dans le champ
status.status
de la politique, TALM considère que ce cluster n'est pas conforme à cette politique.
La valeur batchTimeoutAction
de la CR ClusterGroupUpgrade
détermine ce qui se passe en cas d'échec de la mise à niveau d'un cluster. Vous pouvez spécifier continue
pour ignorer le cluster défaillant et continuer à mettre à niveau les autres clusters, ou spécifier abort
pour arrêter la remédiation de la politique pour tous les clusters. Une fois le délai écoulé, TALM supprime toutes les politiques d'application pour s'assurer qu'aucune autre mise à jour n'est effectuée sur les clusters.
Pour plus d'informations sur les politiques du RHACM, voir Aperçu des politiques.
Ressources supplémentaires
Pour plus d'informations sur le CRD PolicyGenTemplate
, voir À propos du CRD PolicyGenTemplate.
17.6.1. Appliquer des stratégies de mise à jour aux clusters gérés
Vous pouvez mettre à jour vos clusters gérés en appliquant vos politiques.
Conditions préalables
- Installez le gestionnaire de cycle de vie Topology Aware (TALM).
- Provisionner un ou plusieurs clusters gérés.
-
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Créer des stratégies RHACM dans le cluster hub.
Procédure
Enregistrez le contenu du CR
ClusterGroupUpgrade
dans le fichiercgu-1.yaml
.apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: cgu-1 namespace: default spec: managedPolicies: 1 - policy1-common-cluster-version-policy - policy2-common-nto-sub-policy - policy3-common-ptp-sub-policy - policy4-common-sriov-sub-policy enable: false clusters: 2 - spoke1 - spoke2 - spoke5 - spoke6 remediationStrategy: maxConcurrency: 2 3 timeout: 240 4 batchTimeoutAction: 5
- 1
- Le nom des politiques à appliquer.
- 2
- La liste des clusters à mettre à jour.
- 3
- Le champ
maxConcurrency
indique le nombre de grappes mises à jour en même temps. - 4
- Le délai de mise à jour en minutes.
- 5
- Contrôle ce qui se passe en cas de dépassement du délai d'exécution d'un lot. Les valeurs possibles sont
abort
oucontinue
. Si aucune valeur n'est spécifiée, la valeur par défaut estcontinue
.
Créez le CR
ClusterGroupUpgrade
en exécutant la commande suivante :$ oc create -f cgu-1.yaml
Vérifiez que le CR
ClusterGroupUpgrade
a été créé dans le cluster hub en exécutant la commande suivante :$ oc get cgu --all-namespaces
Exemple de sortie
NAMESPACE NAME AGE STATE DETAILS default cgu-1 8m55 NotEnabled Not Enabled
Vérifiez l'état de la mise à jour en exécutant la commande suivante :
$ oc get cgu -n default cgu-1 -ojsonpath='{.status}' | jq
Exemple de sortie
{ "computedMaxConcurrency": 2, "conditions": [ { "lastTransitionTime": "2022-02-25T15:34:07Z", "message": "Not enabled", 1 "reason": "NotEnabled", "status": "False", "type": "Progressing" } ], "copiedPolicies": [ "cgu-policy1-common-cluster-version-policy", "cgu-policy2-common-nto-sub-policy", "cgu-policy3-common-ptp-sub-policy", "cgu-policy4-common-sriov-sub-policy" ], "managedPoliciesContent": { "policy1-common-cluster-version-policy": "null", "policy2-common-nto-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"node-tuning-operator\",\"namespace\":\"openshift-cluster-node-tuning-operator\"}]", "policy3-common-ptp-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"ptp-operator-subscription\",\"namespace\":\"openshift-ptp\"}]", "policy4-common-sriov-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"sriov-network-operator-subscription\",\"namespace\":\"openshift-sriov-network-operator\"}]" }, "managedPoliciesForUpgrade": [ { "name": "policy1-common-cluster-version-policy", "namespace": "default" }, { "name": "policy2-common-nto-sub-policy", "namespace": "default" }, { "name": "policy3-common-ptp-sub-policy", "namespace": "default" }, { "name": "policy4-common-sriov-sub-policy", "namespace": "default" } ], "managedPoliciesNs": { "policy1-common-cluster-version-policy": "default", "policy2-common-nto-sub-policy": "default", "policy3-common-ptp-sub-policy": "default", "policy4-common-sriov-sub-policy": "default" }, "placementBindings": [ "cgu-policy1-common-cluster-version-policy", "cgu-policy2-common-nto-sub-policy", "cgu-policy3-common-ptp-sub-policy", "cgu-policy4-common-sriov-sub-policy" ], "placementRules": [ "cgu-policy1-common-cluster-version-policy", "cgu-policy2-common-nto-sub-policy", "cgu-policy3-common-ptp-sub-policy", "cgu-policy4-common-sriov-sub-policy" ], "precaching": { "spec": {} }, "remediationPlan": [ [ "spoke1", "spoke2" ], [ "spoke5", "spoke6" ] ], "status": {} }
- 1
- Le champ
spec.enable
dans le CRClusterGroupUpgrade
est mis àfalse
.
Vérifiez l'état des politiques en exécutant la commande suivante :
$ oc get policies -A
Exemple de sortie
NAMESPACE NAME REMEDIATION ACTION COMPLIANCE STATE AGE default cgu-policy1-common-cluster-version-policy enforce 17m 1 default cgu-policy2-common-nto-sub-policy enforce 17m default cgu-policy3-common-ptp-sub-policy enforce 17m default cgu-policy4-common-sriov-sub-policy enforce 17m default policy1-common-cluster-version-policy inform NonCompliant 15h default policy2-common-nto-sub-policy inform NonCompliant 15h default policy3-common-ptp-sub-policy inform NonCompliant 18m default policy4-common-sriov-sub-policy inform NonCompliant 18m
- 1
- Le champ
spec.remediationAction
des politiques actuellement appliquées aux clusters est défini surenforce
. Les politiques gérées en modeinform
à partir de la CRClusterGroupUpgrade
restent en modeinform
pendant la mise à jour.
Remplacez la valeur du champ
spec.enable
partrue
en exécutant la commande suivante :$ oc --namespace=default patch clustergroupupgrade.ran.openshift.io/cgu-1 \ --patch '{"spec":{"enable":true}}' --type=merge
Vérification
Vérifiez à nouveau l'état de la mise à jour en exécutant la commande suivante :
$ oc get cgu -n default cgu-1 -ojsonpath='{.status}' | jq
Exemple de sortie
{ "computedMaxConcurrency": 2, "conditions": [ 1 { "lastTransitionTime": "2022-02-25T15:33:07Z", "message": "All selected clusters are valid", "reason": "ClusterSelectionCompleted", "status": "True", "type": "ClustersSelected", "lastTransitionTime": "2022-02-25T15:33:07Z", "message": "Completed validation", "reason": "ValidationCompleted", "status": "True", "type": "Validated", "lastTransitionTime": "2022-02-25T15:34:07Z", "message": "Remediating non-compliant policies", "reason": "InProgress", "status": "True", "type": "Progressing" } ], "copiedPolicies": [ "cgu-policy1-common-cluster-version-policy", "cgu-policy2-common-nto-sub-policy", "cgu-policy3-common-ptp-sub-policy", "cgu-policy4-common-sriov-sub-policy" ], "managedPoliciesContent": { "policy1-common-cluster-version-policy": "null", "policy2-common-nto-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"node-tuning-operator\",\"namespace\":\"openshift-cluster-node-tuning-operator\"}]", "policy3-common-ptp-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"ptp-operator-subscription\",\"namespace\":\"openshift-ptp\"}]", "policy4-common-sriov-sub-policy": "[{\"kind\":\"Subscription\",\"name\":\"sriov-network-operator-subscription\",\"namespace\":\"openshift-sriov-network-operator\"}]" }, "managedPoliciesForUpgrade": [ { "name": "policy1-common-cluster-version-policy", "namespace": "default" }, { "name": "policy2-common-nto-sub-policy", "namespace": "default" }, { "name": "policy3-common-ptp-sub-policy", "namespace": "default" }, { "name": "policy4-common-sriov-sub-policy", "namespace": "default" } ], "managedPoliciesNs": { "policy1-common-cluster-version-policy": "default", "policy2-common-nto-sub-policy": "default", "policy3-common-ptp-sub-policy": "default", "policy4-common-sriov-sub-policy": "default" }, "placementBindings": [ "cgu-policy1-common-cluster-version-policy", "cgu-policy2-common-nto-sub-policy", "cgu-policy3-common-ptp-sub-policy", "cgu-policy4-common-sriov-sub-policy" ], "placementRules": [ "cgu-policy1-common-cluster-version-policy", "cgu-policy2-common-nto-sub-policy", "cgu-policy3-common-ptp-sub-policy", "cgu-policy4-common-sriov-sub-policy" ], "precaching": { "spec": {} }, "remediationPlan": [ [ "spoke1", "spoke2" ], [ "spoke5", "spoke6" ] ], "status": { "currentBatch": 1, "currentBatchStartedAt": "2022-02-25T15:54:16Z", "remediationPlanForBatch": { "spoke1": 0, "spoke2": 1 }, "startedAt": "2022-02-25T15:54:16Z" } }
- 1
- Reflète l'état d'avancement de la mise à jour du lot en cours. Exécutez à nouveau cette commande pour recevoir des informations actualisées sur l'état d'avancement.
Si les politiques incluent des abonnements d'opérateurs, vous pouvez vérifier la progression de l'installation directement sur le cluster à nœud unique.
Exportez le fichier
KUBECONFIG
du cluster à nœud unique dont vous souhaitez vérifier la progression de l'installation en exécutant la commande suivante :export KUBECONFIG=<cluster_kubeconfig_absolute_path>
Vérifiez tous les abonnements présents sur le cluster à nœud unique et recherchez celui de la politique que vous essayez d'installer via le CR
ClusterGroupUpgrade
en exécutant la commande suivante :oc get subs -A | grep -i <nom_de_l'abonnement>
Exemple de résultat pour la politique
cluster-logging
NAMESPACE NAME PACKAGE SOURCE CHANNEL openshift-logging cluster-logging cluster-logging redhat-operators stable
Si l'une des stratégies gérées inclut une CR
ClusterVersion
, vérifiez l'état des mises à jour de la plate-forme dans le lot actuel en exécutant la commande suivante sur le cluster de rayons :$ oc get clusterversion
Exemple de sortie
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS version 4.9.5 True True 43s Working towards 4.9.7: 71 of 735 done (9% complete)
Vérifiez l'abonnement de l'opérateur en exécutant la commande suivante :
$ oc get subs -n <operator-namespace> <operator-subscription> -ojsonpath="{.status}"
Vérifiez les plans d'installation présents sur le cluster à nœud unique associé à l'abonnement souhaité en exécutant la commande suivante :
oc get installplan -n <subscription_namespace>
Exemple de sortie pour
cluster-logging
OperatorNAMESPACE NAME CSV APPROVAL APPROVED openshift-logging install-6khtw cluster-logging.5.3.3-4 Manual true 1
- 1
- Le champ
Approval
des plans d'installation est défini surManual
et le champApproved
passe defalse
àtrue
après l'approbation du plan d'installation par TALM.
NoteLorsque TALM remédie à une politique contenant un abonnement, il approuve automatiquement tous les plans d'installation liés à cet abonnement. Lorsque plusieurs plans d'installation sont nécessaires pour amener l'opérateur à la dernière version connue, le TALM peut approuver plusieurs plans d'installation, en passant par une ou plusieurs versions intermédiaires pour arriver à la version finale.
Vérifiez si la version du service de cluster pour l'opérateur de la politique que
ClusterGroupUpgrade
installe a atteint la phaseSucceeded
en exécutant la commande suivante :oc get csv -n <operator_namespace>
Exemple de sortie pour OpenShift Logging Operator
NAME DISPLAY VERSION REPLACES PHASE cluster-logging.5.4.2 Red Hat OpenShift Logging 5.4.2 Succeeded