配置拓扑树资源关系规则

VelaUX 的资源拓扑图能够展现一个应用所管理的全部资源的拓扑图情况。如下所示:

image

原理

Vela 系统内置了一些资源映射规则,这些规则规定了一个类型的资源可能包含了哪些子资源,在展示资源拓扑树的时候,系统会根据这些规则搜寻子资源。 举例来说,系统规定了一个 Deployment’s 类型的资源的资源只可能是 ReplicaSet,所以在展示一个 Deployment 的所有子资源时,Vela 会在这个 Deployment 的 namespace 下列出所有的 ReplicaSet 并过滤掉那些 ownerReference 不是指向该 Deployment 的结果。

添加关系规则

但系统所内置的规则是有限的,用户也可以通过配置如下的一个 configmap 来为系统增加新的规则。

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: clone-set-relation
  5. namespace: vela-system
  6. labels:
  7. "rules.oam.dev/resources": "true"
  8. data:
  9. rules: |-
  10. - parentResourceType:
  11. group: apps.kruise.io
  12. kind: CloneSet
  13. childrenResourceType:
  14. - apiVersion: v1
  15. kind: Pod

我们看到,首先这个 configmap 必须包含一个特殊的标签 "rules.oam.dev/resources": "true",在数据字段中 rules 定义了一个规则列表,单个规则包含了一个父资源类型和一组子资源类型。 在上面的例子中,我们定义了一个 apps.kruise.io 组下的 CloneSet 类型资源的子资源是 v1/Pod,这样在展示 CloneSet 的子资源时,就会定向去查找 Pod 类型资源。 所有这些被 configmap 所定义的规则,会和内置规则合并,从而在展示资源拓扑图的时候生效。