Operator
目录
概览Operator 来源安装前准备安装模式更新通道批准策略安装位置通过 Web Console 安装通过 YAML 安装手动1. 检查可用版本2. 确认 catalogSource3. 创建命名空间4. 创建 Subscription5. 检查 Subscription 状态6. 批准 InstallPlan自动1. 检查可用版本2. 确认 catalogSource3. 创建命名空间4. 创建 Subscription5. 检查 Subscription 状态6. 验证 CSV高级 Subscription 配置配置 Operator Pod 调度升级流程概览
基于 OLM (Operator Lifecycle Manager) 框架,OperatorHub 提供了用于管理 Operators 安装、升级和生命周期的统一界面。
管理员可以使用 OperatorHub 安装和管理 Operators,从而为 Kubernetes 应用实现完整的生命周期自动化,包括创建、更新和删除。
OLM 主要由以下组件和 CRD 组成:
- OLM (olm-operator):管理 Operators 的完整生命周期,包括安装、升级和版本冲突检测。
- Catalog Operator:管理 Operator catalog,并生成相应的 InstallPlan。
- CatalogSource:一种命名空间级别的 CRD,用于管理 Operator catalog 来源并提供 Operator 元数据(例如版本信息、受管 CRD)。平台提供 3 个默认的 CatalogSource:system、platform 和 custom。system 中的 Operators 不会显示在 OperatorHub 中。
- ClusterServiceVersion (CSV):一种命名空间级别的 CRD,用于描述 Operator 的特定版本,包括它所需的资源、CRD 和权限。
- Subscription:一种命名空间级别的 CRD,用于描述所订阅的 Operator、其来源、获取通道和升级策略。
- InstallPlan:一种命名空间级别的 CRD,用于描述需要执行的实际安装操作(例如创建 Deployments、CRD 和 RBAC)。只有在 InstallPlan 获得批准后,Operator 才会被安装或升级。
Operator 来源
为了明确 OperatorHub 中不同 Operators 的生命周期策略,平台提供 5 种来源类型:
-
由 提供和维护,包括完整的生命周期管理、安全更新、技术支持和 SLA 承诺。
-
Curated 从开源社区中精选,保持与社区版本一致,不修改代码,也不重新编译。 提供指导和安全更新,但不保证 SLA 或生命周期管理。
-
Community 由开源社区提供,定期更新以确保可安装性,但不保证功能完整性;不提供 SLA 或 支持。
-
Marketplace 由经过 认证的第三方厂商提供和维护。 提供平台集成支持,而核心维护由厂商负责。
-
Custom 由用户自行开发并上传,以满足自定义使用场景需求。
安装前准备
在安装 Operator 之前,需要了解以下关键参数:
安装模式
OLM 提供三种安装模式:
- Single Namespace
- Multi Namespace
- Cluster
推荐使用 Cluster 模式(AllNamespaces)。 平台最终将升级到 OLM v1,而 OLM v1 仅支持 AllNamespaces 安装模式。因此,应强烈避免使用 SingleNamespace 和 MultiNamespace。
更新通道
如果某个 Operator 提供多个更新通道,可以选择订阅其中一个通道,例如 stable。
批准策略
可选项:Automatic 或 Manual。
- Automatic:当所选通道中发布新版本时,OLM 会自动升级 Operator。
- Manual:当有新版本可用时,OLM 会创建一个升级请求,必须由集群管理员手动批准后才会执行升级。
注意:来自 的 Operators 仅支持 Manual 模式;否则安装将失败。
安装位置
建议为每个 Operator 创建一个单独的命名空间。
如果多个 Operators 共享同一个命名空间,它们的 Subscriptions 可能会被解析到同一个 InstallPlan 中:
- 如果该命名空间中的某个 InstallPlan 需要 Manual 批准且仍处于 pending 状态,它可能会阻塞同一 InstallPlan 中其他 Subscriptions 的自动升级。
通过 Web Console 安装
-
登录 Web Console,并切换到 Administrator 视图。
-
导航到 Marketplace > OperatorHub。
-
如果状态为 Absent:
- 从 Customer Portal 下载 Operator package,或联系支持团队。
- 使用
violet将 package 上传到目标集群(参见 CLI)。 - 在 Marketplace > Upload Packages 页面,切换到 Operator 选项卡并确认上传。
-
如果状态为 Ready,单击 Install,然后按照 Operator 的用户指南操作。
通过 YAML 安装
以下示例演示了来自 (仅支持 Manual)和非 来源(支持 Manual 或 Automatic)的 Operator 安装方式。
与 cluster 插件不同(使用 YAML 时必须始终安装在 global cluster 中),Operator 会安装到你希望其运行的 目标集群 中。在执行任何 YAML manifest 之前,请确保你已连接到目标集群。
手动
harbor-ce-operator 来自 ,且仅支持 Manual 批准。
在 Manual 模式下,即使发布了新版本,Operator 也不会自动升级。你必须先手动 Approve,然后 OLM 才会执行升级。
1. 检查可用版本
示例输出:
字段说明:
- CHANNEL:Operator 通道名称
- NAME:CSV 资源名称
- VERSION:Operator 版本
2. 确认 catalogSource
示例输出:
这表示 harbor-ce-operator 来自 platform catalogSource。
3. 创建命名空间
4. 创建 Subscription
字段说明:
- annotation
cpaas.io/target-namespaces:建议设置为空;为空表示集群范围安装。 - .metadata.name:Subscription 名称(符合 DNS 规范,最长 253 个字符)。
- .metadata.namespace:Operator 将要安装到的命名空间。
- .spec.channel:订阅的 Operator 通道。
- .spec.installPlanApproval:批准策略(
Manual或Automatic)。这里Manual表示安装/升级需要手动批准。 - .spec.source:Operator catalogSource。
- .spec.sourceNamespace:必须设置为 cpaas-system,因为平台提供的所有 catalogSource 都位于该命名空间中。
- .spec.startingCSV:指定 Manual 批准时要安装的版本;如果为空,则默认使用该通道中的最新版本。Automatic 模式下不需要此字段。
5. 检查 Subscription 状态
关键信息输出:
- .status.state:
UpgradePending表示 Operator 正在等待安装或升级。 - Condition InstallPlanPending = True:等待手动批准。
- .status.currentCSV:当前订阅的最新 CSV。
- .status.installPlanRef:关联的 InstallPlan;必须先批准后才能继续安装。
6. 批准 InstallPlan
示例输出:
手动批准:
等待 CSV 创建;Phase 变为 Succeeded:
示例输出:
字段说明:
- NAME:已安装的 CSV 名称
- DISPLAY:Operator 显示名称
- VERSION:Operator 版本
- REPLACES:升级时被替换的 CSV
- PHASE:安装状态(
Succeeded表示成功)
自动
clickhouse-operator 来自非 来源,其批准策略可以设置为 Automatic。
在 Automatic 模式下,当发布新版本时,Operator 会自动升级,无需手动批准。
1. 检查可用版本
示例输出:
2. 确认 catalogSource
示例输出:
这表示 clickhouse-operator 来自 platform catalogSource。
3. 创建命名空间
4. 创建 Subscription
字段说明与 Manual 中相同。
5. 检查 Subscription 状态
6. 验证 CSV
示例输出:
安装成功。
高级 Subscription 配置
以下配置适用于批准策略为 Manual 或 Automatic 的 Subscriptions。
配置 Operator Pod 调度
要控制 Operator Pod 运行的位置,可在 Subscription.spec.config 中配置调度设置。
该配置仅影响 OLM 管理的 Operator deployment。
它不控制 Operator 安装后创建的实例或自定义资源的调度。
要控制这些工作负载,请参考对应 Operator 的文档。
建议:当你希望 Operator 运行在 infra 节点或其他专用节点上时,使用此配置。
前提条件:目标节点必须已具备所需标签。如果目标节点带有 taint,请配置相应的 toleration。
可用字段:
- .spec.config.nodeSelector:可选。选择 Operator Pod 可以运行的节点。
- .spec.config.tolerations:可选。当 taint 匹配时,允许 Operator Pod 运行在带 taint 的节点上。
Subscription 示例片段:
如果 Operator 已经安装,可以 patch 现有的 Subscription:
升级流程
升级流程从上传新版本 Operator 开始。
上传完成后,请等待大约 10–15 分钟,以便平台同步新版本信息。
同步完成后,升级将按照 Subscription 中配置的策略执行:
-
如果 Operator 的 Approval Strategy 设置为 Automatic,则 Operator 会自动升级。
-
如果策略设置为 Manual,则必须手动批准升级请求。你可以选择以下升级方式之一:
- Batch Upgrade:在 Platform Management > Cluster Management > Cluster > Features 页面执行升级。
- Individual Upgrade:在 OperatorHub 中手动批准升级请求。
注意:只有 提供的 Operators 支持批量升级。