组件分裂

    在 KubeVela 中,我们可以使用 工作流步骤和 overridetopology 策略。但是例如OpenYurt 的项目中,有对集群具有更细粒度划分,例如”节点池”。需要将一些类似的资源下发到同一集群。这些资源称为replication。回到 OpenYurt 的例子,它可以集成 KubeVela,并将分裂出的多个相似 K8s 资源下发到不同的节点池。

    为了将一个组件分裂为多个,我们添加了一个内置策略 replication。它只能与 deploy 工作流步骤一起使用。如果在 deploy 工作流步骤中使用 replication 策略,则在渲染组件时将向上下文添加一个新字段 context.replicaKey 。可以向下发一些资源到集群中,他们带有不同的 replicaKey

    备注

    replication 策略仅在 KubeVela 1.6.0+ 版本中支持。

    经常在组件定义或运维特征定义中下发资源的 metadata.name 字段中使用,以避免名称冲突。我们将在后面的示例中看到它。

    下面的组件定义是一个使用策略的示例 replication。它用 context.replicaKey 给的名称加上后缀。

    将定义复制到文件 replica-webservice.cue 并应用定义:

    然后,用户可以创建下面的应用程序。replication 策略是在其中的 application.spec.policies 字段声明。并在 deploy 步骤中使用它来影响其结果。

    在步骤中可以使用三种策略 deploytopologyoverride 和 。它们可以一起用于分裂组件和将组件下发到不同的集群。下面是它们一起使用时的规则:

    1. 策略的应用顺序为 topology -> override -> replication 。更多详细信息,可以参阅
      • override 修改组件 Properties。如果不使用,则不会更改任何属性。

    组件分裂 - 图3备注

    默认情况下,KubeVela 所在的控制集群被注册为本地集群。你可以像使用管控集群一样使用它,但是你无法 detach 或 modify 这个集群。

    1. override 并且 replication 可以一起使用。但 override 会影响所有分裂的组件。 的主要用意是修改不同群集中的同一个组件的属性。