Component

查看本文大纲
提示
本文基于 OAM v1alpha2 版本。

Component 用于定义应用程序的基本组件,其中包含了对 Workload 的引用,一个 Component 中只能定义一个 Workload,这个 Workload 是与平台无关的,可以直接引用 Kubernetes 中的 CRD。

下面是根据 OAM 规范定义的一个 Component 示例。

apiVersion: core.oam.dev/v1alpha2
kind: Component
metadata:
  name: my-component
spec:
  workload:
    apiVersion: core.oam.dev/v1alpha2
    kind: ContainerizedWorkload
    spec:
      os: linux
      containers:
        - name: server
          image: my-image:latest
  parameters:
  - name: myServerImage
    required: true
    fieldPaths:
    - ".spec.containers[0].image"

Component 定义由以下几个部分组成:

  • metadata:关于 Component 的信息,主要是针对应用运维的信息。
  • workload:该 Component 的实际工作负载。具体有哪些负载类型可用可以咨询平台提供商,平台运维也可以根据 Workload 规范 来扩展负载类型,比如 ContainersFunctionsVirtualMachineVirtualService 等。OAM 目前定义的核心负载类型有 ContainerizedWorkload(与 Kubernetes 中的 Pod 定义类似,同样支持定义多个容器,但是缺少了 Pod 中的一些属性)。
  • parameters:在应用程序运行时可以调整的参数,即应用开发者在 Component 中的原有定义可以在运行时被应用运维人员覆盖。parameters 使用 JSONPath 的方式引用 spec 中的字段。
Component 是可变的
Component 的配置在应用后是可更改的(Mutable),有的 Trait 可能会监听 Component 的变更并作出相应的操作,每次变更都会导致新的 ApplicationConfiguration 发布。

关于 Component 的详细信息请参考 OAM 中的 Component 规范