内置运维特征列表

    为 pod 添加 affinity 和 toleration,它遵循路径“spec.template”中的 pod 规范。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    参数说明 (affinity)

    podAffinity (affinity)

    名称描述类型是否必须默认值
    required指定 字段,只有规则被满足时才执行调度。false
    preferred指定 preferredDuringSchedulingIgnoredDuringExecution 字段,调度器会尝试寻找满足对应规则的节点。如果找不到匹配的节点,调度器仍然会调度该 Pod。[]preferredfalse
    required (affinity)
    名称描述类型是否必须默认值
    labelSelectorlabelSelectorfalse
    topologyKeystringtrue
    namespaceSelectorfalse
    namespaces[]stringfalse
    labelSelector (affinity)
    名称描述类型是否必须默认值
    matchExpressionsfalse
    matchLabelsmap[string]:stringfalse
    matchExpressions (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    namespaceSelector (affinity)
    名称描述类型是否必须默认值
    matchExpressions[]matchExpressionsfalse
    matchLabelsmap[string]:stringfalse
    matchExpressions (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    preferred (affinity)
    名称描述类型是否必须默认值
    weight指定对应 podAffinityTerm 的权重。inttrue
    podAffinityTerm指定一组 pod。true
    podAffinityTerm (affinity)
    名称描述类型是否必须默认值
    labelSelectorfalse
    topologyKeystringtrue
    namespaceSelectornamespaceSelectorfalse
    namespaces[]stringfalse
    labelSelector (affinity)
    名称描述类型是否必须默认值
    matchExpressions[]matchExpressionsfalse
    matchLabelsmap[string]:stringfalse
    matchExpressions (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    namespaceSelector (affinity)
    名称描述类型是否必须默认值
    matchExpressionsfalse
    matchLabelsmap[string]:stringfalse
    matchExpressions (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse

    podAntiAffinity (affinity)

    名称描述类型是否必须默认值
    required指定 requiredDuringSchedulingIgnoredDuringExecution 字段,只有规则被满足时才执行调度。[]requiredfalse
    preferred指定 preferredDuringSchedulingIgnoredDuringExecution 字段,调度器会尝试寻找满足对应规则的节点。如果找不到匹配的节点,调度器仍然会调度该 Pod。false
    required (affinity)
    名称描述类型是否必须默认值
    labelSelectorfalse
    topologyKeystringtrue
    namespaceSelectornamespaceSelectorfalse
    namespaces[]stringfalse
    labelSelector (affinity)
    名称描述类型是否必须默认值
    matchExpressions[]matchExpressionsfalse
    matchLabelsmap[string]:stringfalse
    matchExpressions (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    namespaceSelector (affinity)
    名称描述类型是否必须默认值
    matchExpressionsfalse
    matchLabelsmap[string]:stringfalse
    matchExpressions (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    preferred (affinity)
    名称描述类型是否必须默认值
    weight指定对应 podAffinityTerm 的权重。inttrue
    podAffinityTerm指定一组 pod。podAffinityTermtrue
    podAffinityTerm (affinity)
    名称描述类型是否必须默认值
    labelSelectorlabelSelectorfalse
    topologyKeystringtrue
    namespaceSelectorfalse
    namespaces[]stringfalse
    labelSelector (affinity)
    名称描述类型是否必须默认值
    matchExpressionsfalse
    matchLabelsmap[string]:stringfalse
    matchExpressions (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    namespaceSelector (affinity)
    名称描述类型是否必须默认值
    matchExpressions[]matchExpressionsfalse
    matchLabelsmap[string]:stringfalse
    matchExpressions (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse

    nodeAffinity (affinity)

    名称描述类型是否必须默认值
    required指定 requiredDuringSchedulingIgnoredDuringExecution 字段,只有规则被满足时才执行调度。false
    preferred指定 preferredDuringSchedulingIgnoredDuringExecution 字段,调度器会尝试寻找满足对应规则的节点。如果找不到匹配的节点,调度器仍然会调度该 Pod。[]preferredfalse
    required (affinity)
    名称描述类型是否必须默认值
    nodeSelectorTerms指定一组节点选择器。[]nodeSelectorTermstrue
    nodeSelectorTerms (affinity)
    名称描述类型是否必须默认值
    matchExpressions[]matchExpressionsfalse
    matchFieldsfalse
    matchExpressions (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    matchFields (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    preferred (affinity)
    名称描述类型是否必须默认值
    weightSpecify weight associated with matching the corresponding nodeSelector。inttrue
    preferenceSpecify a node selector。true
    preference (affinity)
    名称描述类型是否必须默认值
    matchExpressionsfalse
    matchFields[]matchFieldsfalse
    matchExpressions (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    matchFields (affinity)
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse

    tolerations (affinity)

    名称描述类型是否必须默认值
    keystringfalse
    effectstringfalse
    valuestringfalse
    operatorstringfalseEqual
    tolerationSeconds指定 toleration 的时间周期。intfalse

    Annotations

    描述

    Add annotations on your workload. if it generates pod, add same annotations for generated pods。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    所有组件类型。

    示例 (annotations)

    参数说明 (annotations)

    名称描述类型是否必须默认值
    -map[string]:(null|string)true

    Command

    描述

    为 pod 添加命令,它遵循路径“spec.template”中的 pod 规范。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (command)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: busybox
    5. spec:
    6. components:
    7. - name: busybox
    8. type: webservice
    9. properties:
    10. image: busybox
    11. cmd: ["sleep", "86400"]
    12. traits:
    13. - type: sidecar
    14. properties:
    15. name: sidecar-nginx
    16. - type: command
    17. properties:
    18. # you can use command to control multiple containers by filling `containers`
    19. # NOTE: in containers, you must set the container name for each container
    20. containers:
    21. - containerName: busybox
    22. command: ["sleep", "8640000"]
    23. - containerName: sidecar-nginx
    24. args: ["-q"]

    参数说明 (command)

    名称描述类型是否必须默认值
    Composition type。parameter: cannot use value C{containerName: (“” | string), command: (null | [, …string]), args: (null | [, …string]), addArgs: (null | [, …string]), delArgs: (*null | [, …string])} (type struct) as stringfalse

    Container-Image

    描述

    Set the image of the container。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (container-image)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: busybox
    5. spec:
    6. components:
    7. - name: busybox
    8. type: webservice
    9. properties:
    10. image: busybox
    11. cmd: ["sleep", "86400"]
    12. traits:
    13. - type: sidecar
    14. properties:
    15. name: sidecar-nginx
    16. image: nginx
    17. - type: container-image
    18. properties:
    19. # you can use container-image to control multiple containers by filling `containers`
    20. # NOTE: in containers, you must set the container name for each container
    21. containers:
    22. - containerName: busybox
    23. image: busybox-1.34.0
    24. imagePullPolicy: IfNotPresent
    25. - containerName: sidecar-nginx
    26. image: nginx-1.20

    参数说明 (container-image)

    名称描述类型是否必须默认值
    Composition type。parameter: cannot use value C{containerName: (“” | string), image: string, imagePullPolicy: (“” | “IfNotPresent” | “Always” | “Never”)} (type struct) as stringfalse

    Cpuscaler

    描述

    Automatically scale the component based on CPU usage。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps

    示例 (cpuscaler)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: website
    5. spec:
    6. components:
    7. - name: frontend
    8. type: webservice
    9. properties:
    10. image: nginx
    11. traits:
    12. - type: cpuscaler
    13. properties:
    14. min: 1
    15. max: 10
    16. cpuPercent: 60

    参数说明 (cpuscaler)

    名称描述类型是否必须默认值
    targetAPIVersionSpecify the apiVersion of scale target。stringfalseapps/v1
    targetKindSpecify the kind of scale target。stringfalseDeployment
    min能够将工作负载缩容到的最小副本个数。intfalse1
    max能够将工作负载扩容到的最大副本个数。intfalse10
    cpuUtil每个容器的平均 CPU 利用率 例如, 50 意味者 CPU 利用率为 50%。intfalse50

    Env

    描述

    Add env on K8s pod for your workload which follows the pod spec in path ‘spec.template’。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (env)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: busybox
    5. spec:
    6. components:
    7. - name: busybox
    8. type: webservice
    9. properties:
    10. image: busybox
    11. cmd: ["sleep", "86400"]
    12. traits:
    13. - type: sidecar
    14. properties:
    15. name: sidecar-nginx
    16. image: nginx
    17. - type: env
    18. properties:
    19. # you can use env to control multiple containers by filling `containers`
    20. # NOTE: in containers, you must set the container name for each container
    21. containers:
    22. - containerName: busybox
    23. env:
    24. key_for_busybox_first: value_first
    25. key_for_busybox_second: value_second
    26. - containerName: sidecar-nginx
    27. env:
    28. key_for_nginx_first: value_first
    29. key_for_nginx_second: value_second

    参数说明 (env)

    Expose

    描述

    为组件暴露端口,以便能够通过 web 进行访问。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps

    示例 (expose)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: test-app
    5. spec:
    6. components:
    7. - name: hello-world
    8. type: webservice
    9. properties:
    10. image: crccheck/hello-world
    11. traits:
    12. - type: expose
    13. properties:
    14. port: [8000]

    参数说明 (expose)

    名称描述类型是否必须默认值
    annotationsSpecify the annotaions of the exposed service。map[string]:stringtrue
    port指定要暴露的端口。[]inttrue
    type指定要创建的服务类型,可选值:”ClusterIP”,”NodePort”,”LoadBalancer”,”ExternalName”。stringfalseClusterIP

    描述

    为组件启用公网访问,使用 K8s v1.20+ 的 Ingress API。

    • deployments.apps
    • statefulsets.apps

    示例 (gateway)

    1. # vela-app.yaml
    2. apiVersion: core.oam.dev/v1beta1
    3. kind: Application
    4. metadata:
    5. name: first-vela-app
    6. spec:
    7. components:
    8. - name: express-server
    9. type: webservice
    10. properties:
    11. image: oamdev/hello-world
    12. port: 8000
    13. traits:
    14. - type: gateway
    15. properties:
    16. domain: testsvc.example.com
    17. http:
    18. "/": 8000

    参数说明 (gateway)

    名称描述类型是否必须默认值
    http定义一组网关路径到 Pod 服务端口的映射关系。map[string]:inttrue
    classInSpec在 kubernetes ingress 的 ‘.spec.ingressClassName’ 定义 ingress class 而不是在 ‘kubernetes.io/ingress.class’ 注解中定义。boolfalsefalse
    class所使用的 kubernetes ingress class。stringfalsenginx
    gatewayHost指定 Ingress 网关的主机名,当为空时,会自动生成主机名。stringfalse
    secretNameSpecify the secret name you want to quote to use tls。stringfalse
    domain暴露服务所绑定的域名。stringfalse

    Hostalias

    描述

    Add host aliases on K8s pod for your workload which follows the pod spec in path ‘spec.template’。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (hostalias)

    参数说明 (hostalias)

    名称描述类型是否必须默认值
    hostAliases定义容器内的 hostAliases。[]hostAliasestrue

    hostAliases (hostalias)

    名称描述类型是否必须默认值
    ipstringtrue
    hostnames[]stringtrue

    Import-Grafana-Dashboard

    描述

    导入 Grafana 仪表盘。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    参数说明 (import-grafana-dashboard)

    名称描述类型是否必须默认值
    grafanaServiceNamestringtrue
    grafanaServiceNamespacestringfalsedefault
    credentialSecretstringtrue
    credentialSecretNamespacestringfalsedefault
    urls[]stringtrue

    Init-Container

    描述

    为 pod 添加初始化容器,并使用共享卷。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (init-container)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: busybox
    5. spec:
    6. components:
    7. - name: busybox
    8. type: webservice
    9. properties:
    10. image: busybox
    11. cmd: ["sleep", "86400"]
    12. - type: init-container
    13. properties:
    14. name: init-busybox
    15. image: busybox
    16. cmd: ["echo", "hello"]
    17. initMountPath: /data
    18. appMountPath: /data-initialized

    参数说明 (init-container)

    名称描述类型是否必须默认值
    name指定初始化容器的名称。stringtrue
    cmd指定初始化容器的命令。[]stringfalse
    env指定初始化容器的环境变量。false
    mountName指定共享卷的挂载名。stringfalseworkdir
    appMountPath指定共享卷在应用容器的挂载路径。stringtrue
    image指定初始化容器的镜像。stringtrue
    args指定初始化容器的参数。[]stringfalse
    initMountPath指定共享卷初始化容器的挂载路径。stringtrue
    extraVolumeMounts指定初始化容器的额外挂载卷。[]extraVolumeMountstrue

    env (init-container)

    名称描述类型是否必须默认值
    name环境变量名称。stringtrue
    value环境变量的值。stringfalse
    valueFrom从哪个资源中读取环境变量的定义。valueFromfalse
    valueFrom (init-container)
    名称描述类型是否必须默认值
    secretKeyRefsecret 键的引用。secretKeyReffalse
    configMapKeyRefconfigmap 键的引用。false
    secretKeyRef (init-container)
    名称描述类型是否必须默认值
    nameSecret 名称。stringtrue
    key选择 Secret 中存在的 key。stringtrue
    configMapKeyRef (init-container)
    名称描述类型是否必须默认值
    name环境变量的名称。stringtrue
    keyconfigmap 中的键名。stringtrue

    extraVolumeMounts (init-container)

    名称描述类型是否必须默认值
    name挂载的卷名。stringtrue
    mountPath初始化容器中的挂载路径。stringtrue

    Json-Merge-Patch

    描述

    使用 JSON Merge Patch 策略,遵循 RFC 7396。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    所有组件类型。

    参数说明 (json-merge-patch)

    名称描述类型是否必须默认值
    -map[string]:(null|bool|string|bytes|{…}|[…]|number)true

    Json-Patch

    描述

    使用 JSON Patch 策略,遵循 RFC 6902。

    适用于组件类型

    所有组件类型。

    参数说明 (json-patch)

    名称描述类型是否必须默认值
    operationstrue

    operations (json-patch)

    名称描述类型是否必须默认值
    -map[string]:(null|bool|string|bytes|{…}|[…]|number)true

    Labels

    描述

    Add labels on your workload. if it generates pod, add same label for generated pods。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    所有组件类型。

    示例 (labels)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: myapp
    5. spec:
    6. components:
    7. - name: express-server
    8. type: webservice
    9. properties:
    10. image: crccheck/hello-world
    11. port: 8000
    12. traits:
    13. - type: labels
    14. properties:
    15. "release": "stable"
    16. - type: annotations
    17. properties:
    18. "description": "web application"

    参数说明 (labels)

    名称描述类型是否必须默认值
    -map[string]:(null|string)true

    描述

    为 pod 添加生命周期钩子,它遵循路径“spec.template”中的 pod 规范。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (lifecycle)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: application-with-lifecycle
    5. spec:
    6. components:
    7. - name: busybox-runner
    8. type: worker
    9. properties:
    10. image: busybox
    11. cmd:
    12. - sleep
    13. - '1000'
    14. traits:
    15. - type: lifecycle
    16. properties:
    17. postStart:
    18. exec:
    19. command:
    20. - echo
    21. - 'hello world'
    22. preStop:
    23. httpGet:
    24. host: "www.aliyun.com"
    25. scheme: "HTTPS"
    26. port: 443

    参数说明 (lifecycle)

    名称描述类型是否必须默认值
    postStartfalse
    preStoppreStopfalse

    postStart (lifecycle)

    名称描述类型是否必须默认值
    execexecfalse
    httpGetfalse
    tcpSockettcpSocketfalse
    exec (lifecycle)
    名称描述类型是否必须默认值
    command[]stringtrue
    httpGet (lifecycle)
    名称描述类型是否必须默认值
    pathstringfalse
    portinttrue
    hoststringfalse
    schemestringfalseHTTP
    httpHeadersfalse
    httpHeaders (lifecycle)
    名称描述类型是否必须默认值
    namestringtrue
    valuestringtrue
    tcpSocket (lifecycle)
    名称描述类型是否必须默认值
    portinttrue
    hoststringfalse

    preStop (lifecycle)

    名称描述类型是否必须默认值
    execfalse
    httpGethttpGetfalse
    tcpSocketfalse
    exec (lifecycle)
    名称描述类型是否必须默认值
    command[]stringtrue
    httpGet (lifecycle)
    名称描述类型是否必须默认值
    pathstringfalse
    portinttrue
    hoststringfalse
    schemestringfalseHTTP
    httpHeaders[]httpHeadersfalse
    httpHeaders (lifecycle)
    名称描述类型是否必须默认值
    namestringtrue
    valuestringtrue
    tcpSocket (lifecycle)
    名称描述类型是否必须默认值
    portinttrue
    hoststringfalse

    Nocalhost

    使用 nocalhost 作为开发环境的配置。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (nocalhost)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: bookinfo
    5. spec:
    6. components:
    7. - name: productpage
    8. type: webservice
    9. properties:
    10. image: nocalhost-docker.pkg.coding.net/nocalhost/bookinfo/productpage:latest
    11. port: 9080
    12. traits:
    13. - type: nocalhost
    14. properties:
    15. port: 9080
    16. gitUrl: https://github.com/nocalhost/bookinfo-productpage.git
    17. image: nocalhost-docker.pkg.coding.net/nocalhost/dev-images/python:3.7.7-slim-productpage-with-pydevd
    18. shell: "bash"
    19. workDir: "/opt/work"
    20. limits:
    21. memory: 1Gi
    22. cpu: "1"
    23. requests:
    24. memory: 512Mi
    25. cpu: "0.5"
    26. debug:
    27. remoteDebugPort: 9009
    28. hotReload: true
    29. sync:
    30. type: send
    31. filePattern:
    32. - ./
    33. ignoreFilePattern:
    34. - .git
    35. - .idea
    36. command:
    37. run:
    38. - sh
    39. - run.sh
    40. debug:
    41. - sh
    42. - debug.sh
    43. env:
    44. - name: "foo"
    45. value: "bar"
    46. portForward:
    47. - 39080:9080

    参数说明 (nocalhost)

    名称描述类型是否必须默认值
    env[]envfalse
    portinttrue
    serviceTypestringfalsedeployment
    gitUrlstringfalse
    imagestringtrue
    shellstringfalsebash
    workDirstringfalse/home/nocalhost-dev
    storageClassstringfalse
    resourcestrue
    persistentVolumeDirs[]persistentVolumeDirsfalse
    commandtrue
    debugdebugfalse
    hotReloadboolfalsetrue
    synctrue
    portForward[]stringfalse

    env (nocalhost)

    名称描述类型是否必须默认值
    namestringtrue
    valuestringtrue

    resources (nocalhost)

    名称描述类型是否必须默认值
    limitslimitstrue
    requeststrue
    limits (nocalhost)
    名称描述类型是否必须默认值
    memorystringfalse2Gi
    cpustringfalse2
    requests (nocalhost)
    名称描述类型是否必须默认值
    memorystringfalse512Mi
    cpustringfalse0.5

    persistentVolumeDirs (nocalhost)

    名称描述类型是否必须默认值
    pathstringtrue
    capacitystringtrue

    command (nocalhost)

    名称描述类型是否必须默认值
    debug[…]true
    run[…]true

    debug (nocalhost)

    名称描述类型是否必须默认值
    remoteDebugPortintfalse

    sync (nocalhost)

    名称描述类型是否必须默认值
    typestringfalsesend
    filePattern[…]true
    ignoreFilePattern[…]true

    Resource

    描述

    为 pod 添加资源请求和限制,它遵循路径“spec.template”中的 pod 规范。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (resource)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: resource-app
    5. spec:
    6. components:
    7. - name: express-server
    8. type: webservice
    9. properties:
    10. image: crccheck/hello-world
    11. ports:
    12. - port: 8000
    13. traits:
    14. - type: resource
    15. properties:
    16. cpu: 2
    17. memory: 2Gi
    18. requests:
    19. cpu: 2
    20. memory: 2Gi
    21. limits:
    22. cpu: 4
    23. memory: 4Gi

    参数说明 (resource)

    名称描述类型是否必须默认值
    cpu指定 cpu 请求和限制的大小。numberfalse1
    memory指定内存请求和限制的大小。stringfalse2048Mi
    requests指定请求的资源。false
    limits指定限制的资源。limitsfalse

    requests (resource)

    名称描述类型是否必须默认值
    cpu指定 cpu 请求的大小。numberfalse1
    memory指定内存请求的大小。stringfalse2048Mi

    limits (resource)

    名称描述类型是否必须默认值
    cpu指定 cpu 限制的大小。numberfalse1
    memory指定内存限制的大小。stringfalse2048Mi

    Scaler

    描述

    调整 pod 的副本数,它遵循路径“spec.template”中的 pod 规范。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps

    示例 (scaler)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: website
    5. spec:
    6. components:
    7. - name: frontend
    8. type: webservice
    9. properties:
    10. image: nginx
    11. traits:
    12. - type: scaler
    13. properties:
    14. replicas: 2
    15. - type: sidecar
    16. properties:
    17. name: "sidecar-test"
    18. image: "fluentd"
    19. - name: backend
    20. type: worker
    21. properties:
    22. image: busybox
    23. - sleep
    24. - '1000'

    参数说明 (scaler)

    Service-Account

    描述

    为 pod 指定 serviceAccount,它遵循路径“spec.template”中的 pod 规范。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (service-account)

    参数说明 (service-account)

    名称描述类型是否必须默认值
    name指定 ServiceAccount 名称。stringtrue
    create指定是否创建新的 ServiceAccount。boolfalsefalse
    privileges指定 ServiceAccount 的权限,若不为空,则会创建 RoleBinding 及 ClusterRoleBindings。false

    privileges (service-account)

    名称描述类型是否必须默认值
    verbs指定资源允许的动作。[]stringtrue
    apiGroups指定资源的 apiGroups。[]stringfalse
    resources指定允许的资源。[]stringfalse
    resourceNames指定允许的资源名称。[]stringfalse
    nonResourceURLs指定允许的资源 URL。[]stringfalse
    scope指定权限的范围,默认为 namespace 范围。stringfalsenamespace

    Service-Binding

    描述

    绑定云资源的密钥到组件环境变量中,该定义已废弃,请使用 ‘storage’ 定义。

    目前这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (service-binding)

    1. Prepare a Kubernetes Secret

    The secret can be manually created, or generated by other component or external system.

    For example, we have a secret db-conn-example whose data is as below:

    1. endpoint: https://xxx.com
    2. password: 123
    3. username: myname
    1. Bind the Secret into your component by service-binding trait

    For example, we have a webservice component who needs to consume a database. The database connection string should be set to Pod environments: endpoint, username and DB_PASSWORD.

    We can set the properties for envMappings as below. For each environment, secret represents the secret name, and key represents the key of the secret.

    Here is the complete properties for the trait.

    1. traits:
    2. - type: service-binding
    3. properties:
    4. envMappings:
    5. DB_PASSWORD:
    6. secret: db-conn-example
    7. key: password
    8. endpoint:
    9. secret: db-conn-example
    10. key: endpoint
    11. username:
    12. secret: db-conn-example
    13. key: username

    In particular, if the environment name, like endpoint, is same to the key of the secret, we can omit the key. So we can simplify the properties as below.

    1. traits:
    2. - type: service-binding
    3. properties:
    4. envMappings:
    5. DB_PASSWORD:
    6. secret: db-conn-example
    7. key: password
    8. endpoint:
    9. secret: db-conn-example
    10. username:
    11. secret: db-conn-example

    We can finally prepare an Application for the business component binding-test-comp to consume the secret, which is a representative of a database cloud resource.

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: webapp
    5. spec:
    6. components:
    7. - name: binding-test-comp
    8. type: webservice
    9. properties:
    10. image: zzxwill/flask-web-application:v0.3.1-crossplane
    11. ports: 80
    12. traits:
    13. - type: service-binding
    14. properties:
    15. envMappings:
    16. # environments refer to db-conn secret
    17. DB_PASSWORD:
    18. secret: db-conn-example
    19. key: password
    20. endpoint:
    21. secret: db-conn-example
    22. username:
    23. secret: db-conn-example

    Deploy this YAML and the Secret db-conn-example will be binding into environment of workload.

    参数说明 (service-binding)

    名称描述类型是否必须默认值
    envMappings环境变量到密钥的映射。map[string]:#KeySecrettrue

    Sidecar

    描述

    为 pod 添加 sidecar 容器,它遵循路径“spec.template”中的 pod 规范。

    适用于组件类型

    基于以下资源的组件:

    示例 (sidecar)

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: vela-app-with-sidecar
    5. spec:
    6. components:
    7. - name: log-gen-worker
    8. type: worker
    9. properties:
    10. image: busybox
    11. cmd:
    12. - /bin/sh
    13. - -c
    14. - >
    15. i=0;
    16. while true;
    17. do
    18. echo "$i: $(date)" >> /var/log/date.log;
    19. i=$((i+1));
    20. sleep 1;
    21. done
    22. volumes:
    23. - name: varlog
    24. mountPath: /var/log
    25. type: emptyDir
    26. traits:
    27. - type: sidecar
    28. properties:
    29. name: count-log
    30. image: busybox
    31. cmd: [ /bin/sh, -c, 'tail -n+1 -f /var/log/date.log']
    32. volumes:
    33. - name: varlog
    34. path: /var/log

    参数说明 (sidecar)

    名称描述类型是否必须默认值
    name容器名称。stringtrue
    cmd容器的执行命令。[]stringfalse
    env指定 sidecar 中的环境变量。false
    image容器镜像。stringtrue
    args指定 sidecar 中的参数。[]stringfalse
    volumes挂载卷。[]volumesfalse
    livenessProbe判断容器是否存活的探针。false
    readinessProbe判断容器是否就绪,能够接受用户流量的探针。readinessProbefalse

    env (sidecar)

    名称描述类型是否必须默认值
    name环境变量名称。stringtrue
    value环境变量的值。stringfalse
    valueFrom从哪个资源中读取环境变量的定义。valueFromfalse
    valueFrom (sidecar)
    名称描述类型是否必须默认值
    secretKeyRefsecret 键的引用。secretKeyReffalse
    configMapKeyRefconfigmap 键的引用。false
    fieldRef指定要用于环境变量的字段。fieldReffalse
    secretKeyRef (sidecar)
    名称描述类型是否必须默认值
    nameSecret 名称。stringtrue
    key选择 Secret 中存在的 key。stringtrue
    configMapKeyRef (sidecar)
    名称描述类型是否必须默认值
    name环境变量的名称。stringtrue
    keyconfigmap 中的键名。stringtrue
    fieldRef (sidecar)
    名称描述类型是否必须默认值
    fieldPath指定要用于环境变量的字段路径。stringtrue

    volumes (sidecar)

    名称描述类型是否必须默认值
    pathstringtrue
    namestringtrue

    livenessProbe (sidecar)

    名称描述类型是否必须默认值
    exec通过在容器中执行一条命令判断是否就绪。请注意就绪性检查必须并且也只能定义 httpGet,tcpSocket 或者 exec 中的一个。execfalse
    httpGet通过发送 httpGet 请求判断容器是否就绪。 请注意就绪性检查必须并且也只能定义 httpGet,tcpSocket 或者 exec 中的一个。false
    tcpSocket通过 tcpSocket 是否开启判断容器是否就绪。请注意就绪性检查必须并且也只能定义 httpGet,tcpSocket 或者 exec 中的一个。tcpSocketfalse
    initialDelaySeconds定义容器启动多少秒之后开始第一次检查。intfalse0
    periodSeconds定义每次检查之间的时间间隔。intfalse10
    timeoutSeconds定义检查的超时时间。intfalse1
    successThreshold定义检查成功多少次之后判断容器已经就绪。intfalse1
    failureThreshold定义检查失败多少次之后判断容器已经不健康。intfalse3
    exec (sidecar)
    名称描述类型是否必须默认值
    command容器中执行的命令,命令返回 0 则为正常,否则则为失败。[]stringtrue
    httpGet (sidecar)
    名称描述类型是否必须默认值
    path定义服务端点请求的路径。stringtrue
    port定义服务端点的端口号。inttrue
    httpHeadersfalse
    httpHeaders (sidecar)
    名称描述类型是否必须默认值
    namestringtrue
    valuestringtrue
    tcpSocket (sidecar)
    名称描述类型是否必须默认值
    port指定健康检查的 TCP socket。inttrue

    readinessProbe (sidecar)

    名称描述类型是否必须默认值
    exec通过在容器中执行一条命令判断是否就绪。请注意就绪性检查必须并且也只能定义 httpGet,tcpSocket 或者 exec 中的一个。false
    httpGet通过发送 httpGet 请求判断容器是否就绪。 请注意就绪性检查必须并且也只能定义 httpGet,tcpSocket 或者 exec 中的一个。httpGetfalse
    tcpSocket通过 tcpSocket 是否开启判断容器是否就绪。请注意就绪性检查必须并且也只能定义 httpGet,tcpSocket 或者 exec 中的一个。false
    initialDelaySeconds定义容器启动多少秒之后开始第一次检查。intfalse0
    periodSeconds定义每次检查之间的时间间隔。intfalse10
    timeoutSeconds定义检查的超时时间。intfalse1
    successThreshold定义检查成功多少次之后判断容器已经就绪。intfalse1
    failureThreshold定义检查失败多少次之后判断容器已经不健康。intfalse3
    exec (sidecar)
    名称描述类型是否必须默认值
    command容器中执行的命令,命令返回 0 则为正常,否则则为失败。[]stringtrue
    httpGet (sidecar)
    名称描述类型是否必须默认值
    path定义服务端点请求的路径。stringtrue
    port定义服务端点的端口号。inttrue
    httpHeaders[]httpHeadersfalse
    httpHeaders (sidecar)
    名称描述类型是否必须默认值
    namestringtrue
    valuestringtrue
    tcpSocket (sidecar)
    名称描述类型是否必须默认值
    port指定健康检查的 TCP socket。inttrue

    描述

    Add storages on K8s pod for your workload which follows the pod spec in path ‘spec.template’。

    适用于组件类型

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch

    示例 (storage)

    1. # sample.yaml
    2. apiVersion: core.oam.dev/v1beta1
    3. kind: Application
    4. metadata:
    5. name: storage-app
    6. spec:
    7. components:
    8. - name: express-server
    9. type: webservice
    10. properties:
    11. image: oamdev/hello-world
    12. ports:
    13. - port: 8000
    14. traits:
    15. - type: storage
    16. properties:
    17. # PVC type storage
    18. pvc:
    19. - name: test1
    20. mountPath: /test/mount/pvc
    21. # EmptyDir type storage
    22. emptyDir:
    23. - name: test1
    24. mountPath: /test/mount/emptydir
    25. # ConfigMap type storage
    26. configMap:
    27. - name: test1
    28. mountPath: /test/mount/cm
    29. # Mount ConfigMap to Env
    30. mountToEnv:
    31. envName: TEST_ENV
    32. configMapKey: key1
    33. data:
    34. key1: value1
    35. key2: value2
    36. # Secret type storage
    37. secret:
    38. - name: test1
    39. mountPath: /test/mount/secret
    40. # Mount Secret to Env
    41. mountToEnv:
    42. envName: TEST_SECRET
    43. secretKey: key1
    44. data:
    45. key2: dmFsdWUy

    参数说明 (storage)

    名称描述类型是否必须默认值
    pvc声明 pvc 类型存储。[]pvcfalse
    configMap声明 ConfigMap 类型存储。false
    secret声明 Secret 类型存储。[]secretfalse
    emptyDir声明 EmptyDir 类型存储。false

    pvc (storage)

    名称描述类型是否必须默认值
    namestringtrue
    mountPathstringtrue
    volumeModestringfalseFilesystem
    subPathstringfalse
    mountOnlyboolfalsefalse
    accessModes[…]true
    volumeNamestringfalse
    storageClassNamestringfalse
    resourcesfalse
    dataSourceRefdataSourceReffalse
    dataSourcefalse
    selectorselectorfalse
    resources (storage)
    名称描述类型是否必须默认值
    requestsrequeststrue
    limitsfalse
    requests (storage)
    名称描述类型是否必须默认值
    storagestringtrue
    limits (storage)
    名称描述类型是否必须默认值
    storagestringtrue
    dataSourceRef (storage)
    名称描述类型是否必须默认值
    namestringtrue
    kindstringtrue
    apiGroupstringtrue
    dataSource (storage)
    名称描述类型是否必须默认值
    namestringtrue
    kindstringtrue
    apiGroupstringtrue
    selector (storage)
    名称描述类型是否必须默认值
    matchLabelsmap[string]:stringfalse
    matchExpressionsfalse
    matchExpressions (storage)
    名称描述类型是否必须默认值
    keystringtrue
    values[]stringtrue
    operatorstringtrue

    configMap (storage)

    名称描述类型是否必须默认值
    namestringtrue
    mountPathstringfalse
    defaultModeintfalse420
    items[]itemsfalse
    subPathstringfalse
    mountToEnvfalse
    mountToEnvs[]mountToEnvsfalse
    mountOnlyboolfalsefalse
    datamap[string]:(null|bool|string|bytes|{…}|[…]|number)false
    readOnlyboolfalsefalse
    items (storage)
    名称描述类型是否必须默认值
    pathstringtrue
    keystringtrue
    modeintfalse511
    mountToEnv (storage)
    名称描述类型是否必须默认值
    envNamestringtrue
    configMapKeystringtrue
    mountToEnvs (storage)
    名称描述类型是否必须默认值
    envNamestringtrue
    configMapKeystringtrue

    secret (storage)

    名称描述类型是否必须默认值
    namestringtrue
    mountPathstringfalse
    defaultModeintfalse420
    itemsfalse
    subPathstringfalse
    mountToEnvmountToEnvfalse
    mountToEnvsfalse
    mountOnlyboolfalsefalse
    datamap[string]:(null|bool|string|bytes|{…}|[…]|number)false
    stringDatamap[string]:(null|bool|string|bytes|{…}|[…]|number)false
    readOnlyboolfalsefalse
    items (storage)
    名称描述类型是否必须默认值
    pathstringtrue
    keystringtrue
    modeintfalse511
    mountToEnv (storage)
    名称描述类型是否必须默认值
    envNamestringtrue
    secretKeystringtrue
    mountToEnvs (storage)
    名称描述类型是否必须默认值
    envNamestringtrue
    secretKeystringtrue

    emptyDir (storage)

    名称描述类型是否必须默认值
    namestringtrue
    mountPathstringtrue
    mediumstringfalseempty
    subPathstringfalse