×

您可以配置一些 `func.yaml` 字段。

`func.yaml` 中的可配置字段

创建、构建和部署函数时,`func.yaml` 中的许多字段会自动生成。但是,也有一些字段您可以手动修改以更改内容,例如函数名称或镜像名称。

`buildEnvs`

`buildEnvs` 字段使您可以设置环境变量,这些变量可用于构建函数的环境。与使用 `envs` 设置的变量不同,使用 `buildEnv` 设置的变量在函数运行时不可用。

您可以直接从值设置 `buildEnv` 变量。在以下示例中,名为 `EXAMPLE1` 的 `buildEnv` 变量直接赋值为 `one` 值。

buildEnvs:
- name: EXAMPLE1
  value: one

您还可以从本地环境变量设置 `buildEnv` 变量。在以下示例中,名为 `EXAMPLE2` 的 `buildEnv` 变量被赋值为本地环境变量 `LOCAL_ENV_VAR` 的值。

buildEnvs:
- name: EXAMPLE1
  value: '{{ env:LOCAL_ENV_VAR }}'

`envs`

`envs` 字段使您可以在运行时为函数设置环境变量。您可以通过几种不同的方式设置环境变量。

  1. 直接从值设置。

  2. 从分配给本地环境变量的值设置。有关更多信息,请参见“从 func.yaml 字段引用本地环境变量”部分。

  3. 从存储在密钥或配置映射中的键值对设置。

  4. 您还可以导入存储在密钥或配置映射中的所有键值对,并将密钥用作创建的环境变量的名称。

此示例演示了设置环境变量的不同方法。

name: test
namespace: ""
runtime: go
...
envs:
- name: EXAMPLE1 (1)
  value: value
- name: EXAMPLE2 (2)
  value: '{{ env:LOCAL_ENV_VALUE }}'
- name: EXAMPLE3 (3)
  value: '{{ secret:mysecret:key }}'
- name: EXAMPLE4 (4)
  value: '{{ configMap:myconfigmap:key }}'
- value: '{{ secret:mysecret2 }}' (5)
- value: '{{ configMap:myconfigmap2 }}' (6)
1 直接从值设置的环境变量。
2 从分配给本地环境变量的值设置的环境变量。
3 从存储在密钥中的键值对分配的环境变量。
4 从存储在配置映射中的键值对分配的环境变量。
5 从密钥的键值对导入的一组环境变量。
6 从配置映射的键值对导入的一组环境变量。

`builder`

`builder` 字段指定函数用于构建镜像的策略。它接受 `pack` 或 `s2i` 值。

`build`

`build` 字段指示如何构建函数。值 `local` 表示函数在您的机器上本地构建。值 `git` 表示函数使用 `git` 字段中指定的值在集群上构建。

`volumes`

`volumes` 字段使您可以将密钥和配置映射安装为函数在指定路径下可访问的卷,如下例所示。

name: test
namespace: ""
runtime: go
...
volumes:
- secret: mysecret (1)
  path: /workspace/secret
- configMap: myconfigmap (2)
  path: /workspace/configmap
1 `mysecret` 密钥被安装为位于 `/workspace/secret` 的卷。
2 myconfigmap 配置映射被挂载为卷,位于/workspace/configmap

选项

options 字段允许您修改已部署函数的 Knative 服务属性,例如自动缩放。如果未设置这些选项,则使用默认选项。

以下选项可用:

  • scale(缩放)

    • min:最小副本数。必须是非负整数。默认为 0。

    • max:最大副本数。必须是非负整数。默认为 0,表示无限制。

    • metric:定义自动缩放器监控的指标类型。可以设置为concurrency(并发数,默认为此值)或rps(每秒请求数)。

    • target:基于并发传入请求数何时进行向上扩展的建议。target 选项可以是大于 0.01 的浮点值。默认为 100,除非设置了options.resources.limits.concurrency,在这种情况下,target 默认为其值。

    • utilization:在向上扩展之前允许的并发请求利用率百分比。可以是 1 到 100 之间的浮点值。默认为 70。

  • resources(资源)

    • requests(请求)

      • cpu:部署函数的容器的 CPU 资源请求。

      • memory:部署函数的容器的内存资源请求。

    • limits(限制)

      • cpu:部署函数的容器的 CPU 资源限制。

      • memory:部署函数的容器的内存资源限制。

      • concurrency:单个副本可以处理的并发请求的硬限制。可以是非负整数,默认为 0,表示无限制。

这是一个scale选项的示例配置:

name: test
namespace: ""
runtime: go
...
options:
  scale:
    min: 0
    max: 10
    metric: concurrency
    target: 75
    utilization: 75
  resources:
    requests:
      cpu: 100m
      memory: 128Mi
    limits:
      cpu: 1000m
      memory: 256Mi
      concurrency: 100

image(镜像)

image 字段设置函数构建后的镜像名称。您可以修改此字段。如果您修改了它,下次运行kn func buildkn func deploy 时,函数镜像将使用新的名称创建。

imageDigest(镜像摘要)

imageDigest 字段包含函数部署时镜像清单的 SHA256 哈希值。请勿修改此值。

labels(标签)

labels 字段允许您在已部署的函数上设置标签。

您可以直接从值设置标签。在以下示例中,键为role的标签直接赋值为backend

labels:
- key: role
  value: backend

您还可以从本地环境变量设置标签。在以下示例中,键为author的标签被赋值为本地环境变量USER的值。

labels:
- key: author
  value: '{{ env:USER }}'

name(名称)

name 字段定义函数的名称。此值在部署时用作 Knative 服务的名称。您可以更改此字段以在后续部署中重命名函数。

namespace(命名空间)

namespace 字段指定部署函数的命名空间。

runtime(运行时)

runtime 字段指定函数的语言运行时,例如python