跳转至

差异化策略

差异化策略(Override Policy)的作用是,定义在下发到不同集群中的配置,可以是不一样的,例如不同的集群所对应的镜像仓库的地址是不一样的,那就需要设置在不同集群中的工作负载的镜像地址不同,例如在不同的环境下,需要设置不同的环境变量等。差异化策略(Override Policy)的作用时机是在部署策略(Propagation Policy)之后,以及在真正在下发到集群之前。

多云编排支持差异化策略,支持在界面上查看当前实例的差异化策略列表及其关联的多云资源,并且可以通过表单和 YAML 两种方式创建和更新差异化策略的信息。差异化策略(Override Policy)分为命名空间级别和集群级别。

YAML 创建

参照以下步骤使用 YAML 创建一个差异化策略。

  1. 进入某一个多云实例后,在左侧导航栏中,点击策略管理 -> 差异化策略,点击 YAML 创建按钮。

    命名空间级别

  2. YAML 创建页面中,输入正确的 YAML 语句后,点击确定

    yaml创建

  3. 返回部署策略列表,新创建的默认位于第一个。点击列表右侧的 ,可以编辑 YAML 和执行删除操作。

    Note

    若要删除一个部署策略,需要先移除该策略相关的工作负载,删除之后该策略有关的信息都将被删除,请谨慎操作。

YAML 示例

此处列出一个差异化策略的 YAML 示例,您稍加修改就可以使用。

kind: OverridePolicy
apiVersion: policy.karmada.io/v1alpha1
metadata:
  name: nginx-op
  namespace: default
  uid: 09f89bc4-c6bf-47b3-81bf-9e494b831aac
  resourceVersion: '856977'
  generation: 1
  creationTimestamp: '2022-09-21T10:30:40Z'
  labels:
    a: b
  annotations:
    shadow.clusterpedia.io/cluster-name: k-kairshiptest
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
      namespace: default
      name: nginx
  overriders: {}

表单创建

参照以下步骤创建一个差异化策略。

  1. 进入命名空间级别的菜单,点击创建差异化策略按钮。

  2. 进入表单创建页面,创建一个完整的差异化策略需要配置基础配置、资源配置、差异化策略三部分。

    • 基本配置:包括名称、多云命名空间、标签和注解。其中名称和多云命名空间为必填项。

    • 资源配置:支持选取所选多云命名空间下的多云资源进行差异化配置,多云资源也支持多选。

    • 差异化策略:支持添加镜像/运行参数/运行命令/自定义等的差异化配置。

    表单创建

  3. 填写完成后点击确定则创建成功,支持对一条差异化策略进行 YAML 更新、表单更新、删除操作。

差异化策略详解

接下来将详细介绍差异化策略,共分为六种,且支持添加多条差异化配置:

  1. 选择 ImageOverrider:镜像的差异化配置。

    1. 选择部署集群

      支持 ClusterNames(集群名称)、FieldSelector(区域)、LabelSelector(标签)三种方式选择部署集群。

      === ClusterNames:直接选择指定的集群名称

      指定集群名称

      === FieldSelector:通过字段来选择集群,包括:

      • provider(提供集群基础设施的服务商)
      • region(区域:是可用区的集合,指可以在其中托管资源的特定地理位置,例如北京、上海、深圳、成都等。)
      • zone(可用区:是区域内的部署区域,例如上海可用区1、上海可用区2······)
      • 还支持从已选集群中排除某指定集群。

      从已选集群排除

      === LabelSelector:通过标签来选择集群,支持自定义标签,同时也支持排除指定集群。

      标签

    2. 对选中集群进行镜像的差异化配置

      字段 必填 描述 示例
      Component 镜像组成成分 Registry、Repository、Tag
      Operator 对镜像进行的操作 add、remove、replace
      Value 当 Operator 为 addreplace 时不能为空,默认为空;当 operator 为 remove 时不填。
  2. 当选择 ArgsOverrider:运行参数的差异化配置。

    1. 选择部署集群

    2. 对选中集群进行运行参数的差异化配置

      字段 必填 描述 示例
      ContainerName 容器名
      Operator 应用在 args 上的操作 add、remove
      Value 应用在 args 上的值,当 operator 为 add 时该值 append 到 args;当 operator 为 remove 时,该值从 args 移除;如果该值为空,args 维持原状。
  3. 当选择 CommandOverrider:运行命令的差异化配置。

    1. 选择部署集群

    2. 对选中集群进行运行命令的差异化配置

      字段 必填 描述 示例
      ContainerName 容器名
      Operator 应用在 command 上的操作 add、remove
      Value 应用在 command 上的值,当 operator 为 add 时该值 append 到 command;当 operator 为 remove 时,该值从 command 移除;如果该值为空,command 维持原状。 可以添加单个或多个值,多值使用 ; 划分
  4. 当选择 PlainText:自定义的差异化配置。

    1. 选择部署集群

    2. 对选中集群进行运行命令的差异化配置

      字段 必填 描述 示例
      Path 目标字段的路径
      Operator 对目标字段操作类型 add、remove、replace
      Value 应用在目标字段的值,当 Operator 为 remove 时,此字段必须为空
  5. 当选择 LabelsOverrider:标签的差异化配置。

    标签差异化

    1. 选择部署集群

    2. 对选中集群进行运行标签的差异化配置

    字段 必填 描述 示例
    Key 标签的键
    Operator 对目标字段操作类型 add、remove、replace
    Value 标签的值
  6. 当选择 AnnotationsOverrider:注解的差异化配置。

    注解差异化

    1. 选择部署集群

    2. 对选中集群进行运行注解的差异化配置

    字段 必填 描述 示例
    Key 注解的键
    Operator 对目标字段操作类型 add、remove、replace
    Value 注解的值

评论