4.7. Gestion des conditions de l'opérateur
En tant qu'administrateur de cluster, vous pouvez gérer les conditions de l'opérateur en utilisant Operator Lifecycle Manager (OLM).
4.7.1. Remplacer les conditions de l'opérateur
En tant qu'administrateur de grappe, vous pouvez vouloir ignorer une condition d'opérateur prise en charge signalée par un opérateur. Lorsqu'elles sont présentes, les conditions de l'opérateur dans le tableau Spec.Overrides
remplacent les conditions dans le tableau Spec.Conditions
, ce qui permet aux administrateurs de grappes de traiter les situations où un opérateur signale incorrectement un état à Operator Lifecycle Manager (OLM).
Par défaut, le tableau Spec.Overrides
n'est pas présent dans un objet OperatorCondition
tant qu'il n'est pas ajouté par un administrateur de cluster. Le tableau Spec.Conditions
n'est pas non plus présent tant qu'il n'est pas ajouté par un utilisateur ou qu'il ne résulte pas d'une logique personnalisée de l'opérateur.
Prenons l'exemple d'une version connue d'un opérateur qui communique toujours qu'il n'est pas évolutif. Dans ce cas, vous pourriez vouloir mettre à niveau l'opérateur malgré le fait qu'il communique qu'il n'est pas évolutif. Pour ce faire, il convient de modifier la condition de l'opérateur en ajoutant les conditions type
et status
au tableau Spec.Overrides
de l'objet OperatorCondition
.
Conditions préalables
-
Un opérateur avec un objet
OperatorCondition
, installé à l'aide d'OLM.
Procédure
Modifiez l'objet
OperatorCondition
pour l'opérateur :oc edit operatorcondition <name> $ oc edit operatorcondition <name>
Ajouter un tableau
Spec.Overrides
à l'objet :Exemple de dérogation à la condition de l'opérateur
apiVersion: operators.coreos.com/v1 kind: OperatorCondition metadata: name: my-operator namespace: operators spec: overrides: - type: Upgradeable 1 status: "True" reason: "upgradeIsSafe" message: "This is a known issue with the Operator where it always reports that it cannot be upgraded." conditions: - type: Upgradeable status: "False" reason: "migration" message: "The operator is performing a migration." lastTransitionTime: "2020-08-24T23:15:55Z"
- 1
- Permet à l'administrateur du cluster de modifier l'état de préparation de la mise à niveau à
True
.
4.7.2. Mise à jour de votre opérateur pour utiliser les conditions de l'opérateur
Operator Lifecycle Manager (OLM) crée automatiquement une ressource OperatorCondition
pour chaque ressource ClusterServiceVersion
qu'il réconcilie. Tous les comptes de service du CSV se voient accorder le RBAC nécessaire pour interagir avec le site OperatorCondition
appartenant à l'opérateur.
Un auteur d'opérateur peut développer son opérateur pour qu'il utilise la bibliothèque operator-lib
, de sorte qu'une fois l'opérateur déployé par OLM, il puisse définir ses propres conditions. Pour plus d'informations sur la définition des conditions d'un opérateur en tant qu'auteur d'un opérateur, voir la page Activation des conditions d'un opérateur.
4.7.2.1. Réglage des valeurs par défaut
Dans un souci de compatibilité ascendante, OLM considère l'absence d'une ressource OperatorCondition
comme un refus de la condition. Par conséquent, un opérateur qui choisit d'utiliser les conditions de l'opérateur doit définir des conditions par défaut avant que la sonde de disponibilité du pod ne soit définie sur true
. L'opérateur dispose ainsi d'un délai de grâce pour mettre à jour la condition dans l'état correct.