内置运维特征列表

    本文档将按字典序展示所有内置运维特征的参数列表。

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

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    名称描述类型是否必须默认值
    required指定 字段,只有规则被满足时才执行调度。[]requiredfalse
    preferred指定 preferredDuringSchedulingIgnoredDuringExecution 字段,调度器会尝试寻找满足对应规则的节点。如果找不到匹配的节点,调度器仍然会调度该 Pod。false
    名称描述类型是否必须默认值
    labelSelectorlabelSelectorfalse
    namespaces[]stringfalse
    topologyKeystringtrue
    namespaceSelectorfalse
    名称描述类型是否必须默认值
    matchLabelsmap[string]:stringfalse
    matchExpressions[]matchExpressionsfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    matchLabelsmap[string]:stringfalse
    matchExpressionsfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    weight指定对应 podAffinityTerm 的权重。inttrue
    podAffinityTerm指定一组 pod。podAffinityTermtrue
    名称描述类型是否必须默认值
    labelSelectorfalse
    namespaces[]stringfalse
    topologyKeystringtrue
    namespaceSelectornamespaceSelectorfalse
    名称描述类型是否必须默认值
    matchLabelsmap[string]:stringfalse
    matchExpressionsfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    matchLabelsmap[string]:stringfalse
    matchExpressions[]matchExpressionsfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    required指定 requiredDuringSchedulingIgnoredDuringExecution 字段,只有规则被满足时才执行调度。false
    preferred指定 preferredDuringSchedulingIgnoredDuringExecution 字段,调度器会尝试寻找满足对应规则的节点。如果找不到匹配的节点,调度器仍然会调度该 Pod。[]preferredfalse
    名称描述类型是否必须默认值
    labelSelectorfalse
    namespaces[]stringfalse
    topologyKeystringtrue
    namespaceSelectornamespaceSelectorfalse
    名称描述类型是否必须默认值
    matchLabelsmap[string]:stringfalse
    matchExpressionsfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    matchLabelsmap[string]:stringfalse
    matchExpressions[]matchExpressionsfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    weight指定对应 podAffinityTerm 的权重。inttrue
    podAffinityTerm指定一组 pod。true
    名称描述类型是否必须默认值
    labelSelectorlabelSelectorfalse
    namespaces[]stringfalse
    topologyKeystringtrue
    namespaceSelectorfalse
    名称描述类型是否必须默认值
    matchLabelsmap[string]:stringfalse
    matchExpressions[]matchExpressionsfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    matchLabelsmap[string]:stringfalse
    matchExpressionsfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    required指定 requiredDuringSchedulingIgnoredDuringExecution 字段,只有规则被满足时才执行调度。requiredfalse
    preferred指定 preferredDuringSchedulingIgnoredDuringExecution 字段,调度器会尝试寻找满足对应规则的节点。如果找不到匹配的节点,调度器仍然会调度该 Pod。false
    名称描述类型是否必须默认值
    nodeSelectorTerms指定一组节点选择器。[]nodeSelectorTermstrue
    名称描述类型是否必须默认值
    matchExpressionsfalse
    matchFields[]matchFieldsfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    weightSpecify weight associated with matching the corresponding nodeSelector。inttrue
    preferenceSpecify a node selector。true
    名称描述类型是否必须默认值
    matchExpressions[]matchExpressionsfalse
    matchFieldsfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    keystringtrue
    operatorstringfalseIn
    values[]stringfalse
    名称描述类型是否必须默认值
    keystringfalse
    operatorstringfalseEqual
    valuestringfalse
    effectstringfalse
    tolerationSeconds指定 toleration 的时间周期。intfalse

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

    所有组件类型。

    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"
    名称描述类型是否必须默认值
    -map[string]:(null|string)true

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    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: command
    18. properties:
    19. # you can use command 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. command: ["sleep", "8640000"]
    24. - containerName: sidecar-nginx
    25. args: ["-q"]
    名称描述类型是否必须默认值
    Composition type。parameter: cannot use value {containerName:“” | string,command:null | [],args:null | [],addArgs:null | [],delArgs:*null | []} (type struct) as stringfalse

    Set the image of the container。

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    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
    名称描述类型是否必须默认值
    Composition type。parameter: cannot use value {containerName:“” | string,image:string,imagePullPolicy:“” | “IfNotPresent” | “Always” | “Never”} (type struct) as stringfalse

    Automatically scale the component based on CPU usage。

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    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. cpuUtil: 60

    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
    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
    名称描述类型是否必须默认值
    Composition type。parameter: cannot use value {containerName:“” | string,replace:false | bool,env:{},unset:*[] | []} (type struct) as stringfalse

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    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]
    名称描述类型是否必须默认值
    port指定要暴露的端口。[]inttrue
    annotationsSpecify the annotaions of the exposed service。map[string]:stringtrue
    type指定要创建的服务类型,可选值:”ClusterIP”,”NodePort”,”LoadBalancer”,”ExternalName”。stringfalseClusterIP

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

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

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    名称描述类型是否必须默认值
    hostAliases定义容器内的 hostAliases。[]hostAliasestrue
    名称描述类型是否必须默认值
    ipstringtrue
    hostnames[]stringtrue

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    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: init-container
    14. name: init-busybox
    15. image: busybox
    16. cmd: ["echo", "hello"]
    17. initMountPath: /data
    18. appMountPath: /data-initialized
    名称描述类型是否必须默认值
    name指定初始化容器的名称。stringtrue
    image指定初始化容器的镜像。stringtrue
    imagePullPolicy镜像拉取策略。stringfalseIfNotPresent
    cmd指定初始化容器的命令。[]stringfalse
    args指定初始化容器的参数。[]stringfalse
    env指定初始化容器的环境变量。false
    mountName指定共享卷的挂载名。stringfalseworkdir
    appMountPath指定共享卷在应用容器的挂载路径。stringtrue
    initMountPath指定共享卷初始化容器的挂载路径。stringtrue
    extraVolumeMounts指定初始化容器的额外挂载卷。[]extraVolumeMountstrue
    名称描述类型是否必须默认值
    name环境变量名称。stringtrue
    value环境变量的值。stringfalse
    valueFrom从哪个资源中读取环境变量的定义。false
    名称描述类型是否必须默认值
    secretKeyRefsecret 键的引用。secretKeyReffalse
    configMapKeyRefconfigmap 键的引用。false
    名称描述类型是否必须默认值
    nameSecret 名称。stringtrue
    key选择 Secret 中存在的 key。stringtrue
    名称描述类型是否必须默认值
    name环境变量的名称。stringtrue
    keyconfigmap 中的键名。stringtrue
    名称描述类型是否必须默认值
    name挂载的卷名。stringtrue
    mountPath初始化容器中的挂载路径。stringtrue

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

    所有组件类型。

    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: busybox
    5. components:
    6. - name: busybox
    7. type: webservice
    8. properties:
    9. image: busybox
    10. cmd: ["sleep", "86400"]
    11. labels:
    12. pod-label-key: pod-label-value
    13. to-delete-label-key: to-delete-label-value
    14. traits:
    15. # the json merge patch can be used to add, replace and delete fields
    16. # the following part will
    17. # 1. add `deploy-label-key` to deployment labels
    18. # 2. set deployment replicas to 3
    19. # 3. set `pod-label-key` to `pod-label-modified-value` in pod labels
    20. # 4. delete `to-delete-label-key` in pod labels
    21. # 5. reset `containers` for pod
    22. - type: json-merge-patch
    23. properties:
    24. metadata:
    25. labels:
    26. deploy-label-key: deploy-label-added-value
    27. spec:
    28. replicas: 3
    29. template:
    30. metadata:
    31. labels:
    32. pod-label-key: pod-label-modified-value
    33. to-delete-label-key: null
    34. spec:
    35. containers:
    36. - name: busybox-new
    37. image: busybox:1.34
    38. command: ["sleep", "864000"]
    名称描述类型是否必须默认值
    -{}true

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

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

    所有组件类型。

    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. labels:
    13. pod-label-key: pod-label-value
    14. to-delete-label-key: to-delete-label-value
    15. traits:
    16. # the json patch can be used to add, replace and delete fields
    17. # the following part will
    18. # 1. add `deploy-label-key` to deployment labels
    19. # 2. set deployment replicas to 3
    20. # 3. set `pod-label-key` to `pod-label-modified-value` in pod labels
    21. # 4. delete `to-delete-label-key` in pod labels
    22. # 5. add sidecar container for pod
    23. - type: json-patch
    24. properties:
    25. operations:
    26. - op: add
    27. path: "/spec/replicas"
    28. value: 3
    29. - op: replace
    30. path: "/spec/template/metadata/labels/pod-label-key"
    31. value: pod-label-modified-value
    32. - op: remove
    33. path: "/spec/template/metadata/labels/to-delete-label-key"
    34. - op: add
    35. path: "/spec/template/spec/containers/1"
    36. value:
    37. name: busybox-sidecar
    38. image: busybox:1.34
    39. command: ["sleep", "864000"]
    名称描述类型是否必须默认值
    operations[]operationstrue
    名称描述类型是否必须默认值
    -{}true

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

    所有组件类型。

    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"
    名称描述类型是否必须默认值
    -map[string]:(null|string)true

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    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
    名称描述类型是否必须默认值
    postStartfalse
    preStoppreStopfalse
    名称描述类型是否必须默认值
    execfalse
    httpGethttpGetfalse
    tcpSocketfalse
    名称描述类型是否必须默认值
    command[]stringtrue
    名称描述类型是否必须默认值
    pathstringfalse
    portinttrue
    hoststringfalse
    schemestringfalseHTTP
    httpHeaders[]httpHeadersfalse
    名称描述类型是否必须默认值
    namestringtrue
    valuestringtrue
    名称描述类型是否必须默认值
    portinttrue
    hoststringfalse
    名称描述类型是否必须默认值
    execfalse
    httpGethttpGetfalse
    tcpSocketfalse
    名称描述类型是否必须默认值
    command[]stringtrue
    名称描述类型是否必须默认值
    pathstringfalse
    portinttrue
    hoststringfalse
    schemestringfalseHTTP
    httpHeaders[]httpHeadersfalse
    名称描述类型是否必须默认值
    namestringtrue
    valuestringtrue
    名称描述类型是否必须默认值
    portinttrue
    hoststringfalse

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    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. resources:
    21. limits:
    22. memory: 1Gi
    23. cpu: "1"
    24. requests:
    25. memory: 512Mi
    26. cpu: "0.5"
    27. debug:
    28. remoteDebugPort: 9009
    29. hotReload: true
    30. sync:
    31. type: send
    32. filePattern:
    33. - ./
    34. ignoreFilePattern:
    35. - .git
    36. - .idea
    37. command:
    38. run:
    39. - sh
    40. - run.sh
    41. debug:
    42. - sh
    43. - debug.sh
    44. env:
    45. - name: "foo"
    46. value: "bar"
    47. portForward:
    48. - 39080:9080
    名称描述类型是否必须默认值
    portinttrue
    serviceTypestringfalsedeployment
    gitUrlstringfalse
    imagestringtrue
    shellstringfalsebash
    workDirstringfalse/home/nocalhost-dev
    storageClassstringfalse
    commandtrue
    debugdebugfalse
    hotReloadboolfalsetrue
    synctrue
    env[]envfalse
    portForward[]stringfalse
    persistentVolumeDirsfalse
    resourcesresourcestrue
    名称描述类型是否必须默认值
    run[]stringtrue
    debug[]stringtrue
    名称描述类型是否必须默认值
    remoteDebugPortintfalse
    名称描述类型是否必须默认值
    typestringfalsesend
    filePattern[]stringtrue
    ignoreFilePattern[]stringtrue
    名称描述类型是否必须默认值
    namestringtrue
    valuestringtrue
    名称描述类型是否必须默认值
    pathstringtrue
    capacitystringtrue
    名称描述类型是否必须默认值
    limitstrue
    requestsrequeststrue
    名称描述类型是否必须默认值
    memorystringfalse2Gi
    cpustringfalse2
    名称描述类型是否必须默认值
    memorystringfalse512Mi
    cpustringfalse0.5

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

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. name: resource-app
    4. spec:
    5. components:
    6. - name: express-server
    7. type: webservice
    8. properties:
    9. ports:
    10. - port: 8000
    11. traits:
    12. - type: resource
    13. properties:
    14. cpu: 2
    15. memory: 2Gi
    16. requests:
    17. cpu: 2
    18. memory: 2Gi
    19. limits:
    20. cpu: 4
    21. memory: 4Gi
    名称描述类型是否必须默认值
    cpu指定 cpu 请求和限制的大小。numberfalse1
    memory指定内存请求和限制的大小。stringfalse2048Mi
    requests指定请求的资源。false
    limits指定限制的资源。limitsfalse
    名称描述类型是否必须默认值
    cpu指定 cpu 请求的大小。numberfalse1
    memory指定内存请求的大小。stringfalse2048Mi

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    名称描述类型是否必须默认值
    replicas工作负载的 Pod 个数。intfalse1

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    1. apiVersion: core.oam.dev/v1beta1
    2. kind: Application
    3. metadata:
    4. name: vela-doc
    5. namespace: vela-system
    6. spec:
    7. components:
    8. - name: frontend
    9. type: webservice
    10. properties:
    11. image: oamdev/vela-cli:v1.5.0-beta.1
    12. cmd: ["/bin/vela","show"]
    13. ports:
    14. - port: 18081
    15. expose: true
    16. traits:
    17. - type: service-account
    18. properties:
    19. name: kubevela-vela-core
    名称描述类型是否必须默认值
    name指定 ServiceAccount 名称。stringtrue
    create指定是否创建新的 ServiceAccount。boolfalsefalse
    privileges指定 ServiceAccount 的权限,若不为空,则会创建 RoleBinding 及 ClusterRoleBindings。false
    名称描述类型是否必须默认值
    verbs指定资源允许的动作。[]stringtrue
    apiGroups指定资源的 apiGroups。[]stringfalse
    resources指定允许的资源。[]stringfalse
    resourceNames指定允许的资源名称。[]stringfalse
    nonResourceURLs指定允许的资源 URL。[]stringfalse
    scope指定权限的范围,默认为 namespace 范围。stringfalsenamespace

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

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    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.

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

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

    基于以下资源的组件:

    • deployments.apps
    • statefulsets.apps
    • daemonsets.apps
    • jobs.batch
    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
    名称描述类型是否必须默认值
    name容器名称。stringtrue
    image容器镜像。stringtrue
    cmd容器的执行命令。[]stringfalse
    args指定 sidecar 中的参数。[]stringfalse
    env指定 sidecar 中的环境变量。[]envfalse
    volumes挂载卷。false
    livenessProbe判断容器是否存活的探针。livenessProbefalse
    readinessProbe判断容器是否就绪,能够接受用户流量的探针。false
    名称描述类型是否必须默认值
    name环境变量名称。stringtrue
    value环境变量的值。stringfalse
    valueFrom从哪个资源中读取环境变量的定义。valueFromfalse
    名称描述类型是否必须默认值
    secretKeyRefsecret 键的引用。false
    configMapKeyRefconfigmap 键的引用。configMapKeyReffalse
    fieldRef指定要用于环境变量的字段。false
    名称描述类型是否必须默认值
    nameSecret 名称。stringtrue
    key选择 Secret 中存在的 key。stringtrue
    名称描述类型是否必须默认值
    name环境变量的名称。stringtrue
    keyconfigmap 中的键名。stringtrue
    名称描述类型是否必须默认值
    fieldPath指定要用于环境变量的字段路径。stringtrue
    名称描述类型是否必须默认值
    namestringtrue
    pathstringtrue
    名称描述类型是否必须默认值
    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
    名称描述类型是否必须默认值
    command容器中执行的命令,命令返回 0 则为正常,否则则为失败。[]stringtrue
    名称描述类型是否必须默认值
    path定义服务端点请求的路径。stringtrue
    port定义服务端点的端口号。inttrue
    httpHeadersfalse
    名称描述类型是否必须默认值
    namestringtrue
    valuestringtrue
    名称描述类型是否必须默认值
    port指定健康检查的 TCP socket。inttrue
    名称描述类型是否必须默认值
    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
    名称描述类型是否必须默认值
    command容器中执行的命令,命令返回 0 则为正常,否则则为失败。[]stringtrue
    名称描述类型是否必须默认值
    path定义服务端点请求的路径。stringtrue
    port定义服务端点的端口号。inttrue
    httpHeadersfalse
    名称描述类型是否必须默认值
    namestringtrue
    valuestringtrue
    名称描述类型是否必须默认值
    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
    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. key1: dmFsdWUx
    46. key2: dmFsdWUy
    名称描述类型是否必须默认值
    pvc声明 pvc 类型存储。[]pvcfalse
    configMap声明 ConfigMap 类型存储。false
    secret声明 Secret 类型存储。[]secretfalse
    emptyDir声明 EmptyDir 类型存储。false
    名称描述类型是否必须默认值
    namestringtrue
    mountOnlyboolfalsefalse
    mountPathstringtrue
    subPathstringfalse
    volumeModestringfalseFilesystem
    volumeNamestringfalse
    accessModes[]stringtrue
    storageClassNamestringfalse
    resourcesresourcesfalse
    dataSourceReffalse
    dataSourcedataSourcefalse
    selectorfalse
    名称描述类型是否必须默认值
    requestsrequeststrue
    limitsfalse
    名称描述类型是否必须默认值
    storagestringtrue
    名称描述类型是否必须默认值
    storagestringtrue
    名称描述类型是否必须默认值
    namestringtrue
    kindstringtrue
    apiGroupstringtrue
    名称描述类型是否必须默认值
    namestringtrue
    kindstringtrue
    apiGroupstringtrue
    名称描述类型是否必须默认值
    matchLabelsmap[string]:stringfalse
    matchExpressionsmatchExpressionsfalse
    名称描述类型是否必须默认值
    keystringtrue
    values[]stringtrue
    operatorstringtrue
    名称描述类型是否必须默认值
    namestringtrue
    mountOnlyboolfalsefalse
    mountToEnvfalse
    mountToEnvs[]mountToEnvsfalse
    mountPathstringfalse
    subPathstringfalse
    defaultModeintfalse420
    readOnlyboolfalsefalse
    datamap[string]:_false
    itemsfalse
    名称描述类型是否必须默认值
    envNamestringtrue
    configMapKeystringtrue
    名称描述类型是否必须默认值
    envNamestringtrue
    configMapKeystringtrue
    名称描述类型是否必须默认值
    keystringtrue
    pathstringtrue
    modeintfalse511
    名称描述类型是否必须默认值
    namestringtrue
    mountOnlyboolfalsefalse
    mountToEnvmountToEnvfalse
    mountToEnvsfalse
    mountPathstringfalse
    subPathstringfalse
    defaultModeintfalse420
    readOnlyboolfalsefalse
    stringDatamap[string]:false
    datamap[string]:false
    items[]itemsfalse
    名称描述类型是否必须默认值
    envNamestringtrue
    secretKeystringtrue
    名称描述类型是否必须默认值
    envNamestringtrue
    secretKeystringtrue
    名称描述类型是否必须默认值
    namestringtrue
    mountPathstringtrue
    subPathstringfalse
    mediumstringfalseempty