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 的配置在应用后是可更改的(Mutable), 有的 Trait 可能会监听 Component 的变更并作出相应的操作,每次变更都会导致新的 ApplicationConfiguration 发布。

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

参考

results matching ""

    No results matching ""