This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.5.6.6. 启用 Operator 条件
Operator Lifecycle Manager(OLM)为 Operator 提供一个频道来交流影响 Operator 在管理 Operator 的复杂状态。默认情况下,OLM 在安装 Operator 时会创建一个 OperatorCondition 自定义资源定义(CRD)。根据 OperatorCondition 自定义资源(CR)中设置的条件,OLM 的行为会相应更改。
要支持 Operator 条件,Operator 必须能够读取由 OLM 创建的 OperatorCondition CR,并具有完成以下任务的能力:
- 获取特定条件。
- 设置特定条件的状态。
这可以通过使用 operator-lib 库来实现。Operator 作者可在 Operator 中提供 controller-runtime 客户端,以便该程序库访问集群中 Operator 拥有的 OperatorCondition CR。
该程序库提供了一个通用的 Conditions 接口,它使以下方法在 OperatorCondition CR 中 Get 和 Set 一个 conditionType:
Get-
要获得特定条件,程序库使用来自
controller-runtime的client.Get函数,它需要在conditionAccessor中存在类型type.NamespacedName的ObjectKey。 Set-
要更新特定条件的状态,程序库使用来自
controller-runtime的client.Update功能。如果 CRD 中不存在conditionType,则会出现错误。
Operator 只允许修改 CR 的 status 子资源。operator 可以删除或更新 status.conditions 数组,使其包含条件。有关条件中字段的格式和描述的详情,请查看上游的条件 GoDocs。
Operator SDK v1.3.0 支持 operator-lib v0.3.0。
先决条件
- 使用 Operator SDK 生成一个 Operator 项目。
流程
在 Operator 项目中启用 Operator 条件:
在 Operator 项目的
go.mod文件中,将operator-framework/operator-lib添加为所需的库:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Operator 逻辑中编写自己的构造器,会导致以下结果:
-
接受
controller-runtime客户端。 -
接受
conditionType。 -
返回一个
Condition接口以更新或添加条件。
由于 OLM 目前支持
Upgradeable条件,因此可以创建一个接口,它具有访问Upgradeable条件的方法。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个示例中,
NewUpgradeableconstructor 被进一步使用来创建类型为Condition的一个变量cond。cond变量依次使用Get和Set方法,可用于处理 OLM 的Upgradeable条件。-
接受