13.2. 使用 func.yaml 文件配置功能项目
				func.yaml 文件包含功能项目的配置。执行 kn func 命令时使用 func.yaml 中指定的值。例如,当运行 kn func build 命令时,会使用 build 字段中的值。在某些情况下,您可以使用命令行标志或环境变量覆盖这些值。
			
13.2.1. 从 func.yaml 字段引用本地环境变量
					如果要避免在功能配置中存储敏感信息,如 API 密钥,您可以添加对本地环境中可用的环境变量的引用。您可以通过修改 func.yaml 文件中的 envs 字段来完成此操作。
				
先决条件
- 您需要创建 function 项目。
- 本地环境需要包含您要引用的变量。
流程
- 要引用本地环境变量,请使用以下语法: - {{ env:ENV_VAR }}- {{ env:ENV_VAR }}- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 将 - ENV_VAR替换为您要用于本地环境中的变量名称。- 例如,您可能在本地环境中提供 - API_KEY变量。您可以将其值分配给- MY_API_KEY变量,然后您可以在功能内直接使用该变量:- 功能示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
13.2.2. 在功能中添加注解
					您可以将 Kubernetes 注解添加到部署的 Serverless 功能中。注解可让您将任意元数据附加到函数,例如,关于功能目的的备注。注解添加到 func.yaml 配置文件的 annotations 部分。
				
功能注解功能有两个限制:
- 
							当功能注解传播到集群中的对应 Knative 服务后,无法通过从 func.yaml文件中删除该服务来将其从服务中删除。您必须通过直接修改服务的 YAML 文件或使用 OpenShift Container Platform Web 控制台从 Knative 服务中删除注解。
- 
							您无法设置 Knative 设置的注解,例如 autoscaling注解。
13.2.3. 在功能中添加注解
您可以在功能中添加注解。与标签类似,注解被定义为键值映射。例如,注解可用于提供与功能相关的元数据,如函数的作者。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
- 
							已安装 Knative (kn) CLI。
- 您已创建了一个功能。
流程
- 
							为您的功能打开 func.yaml文件。
- 对于您要添加的每个注解,将以下 YAML 添加到 - annotations部分:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 将<annotation_name>: "<annotation_value>"替换为您的注解。
 - 例如,要指明某个函数由 Alice 编写,您可以包含以下注解: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存配置。
下次将功能部署到集群中时,注解会添加到对应的 Knative 服务中。
13.2.5. 手动添加对 secret 和配置映射的功能访问
					您可以将用于访问 secret 和配置映射的配置手动添加到您的功能中。这可能最好使用 kn func config 交互式实用程序和命令,例如您已有配置片段时。
				
13.2.5.1. 将 secret 挂载为卷
您可以将 secret 挂载为卷。挂载 secret 后,您可以作为常规文件从函数访问它。这可让您存储在功能所需的集群数据中,例如,函数需要访问的 URI 列表。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
- 
								已安装 Knative (kn) CLI。
- 您已创建了一个功能。
流程
- 
								为您的功能打开 func.yaml文件。
- 对于您要挂载为卷的每个 secret,将以下 YAML 添加到 - volumes部分:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 
										将 mysecret替换为目标 secret 的名称。
- 将 - /workspace/secret替换为您要挂载 secret 的路径。- 例如,要挂载 - addressessecret,请使用以下 YAML:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
										将 
- 保存配置。
13.2.5.2. 将配置映射挂载为卷
您可以将配置映射挂载为卷。挂载配置映射后,您可以作为常规文件从函数访问它。这可让您存储在功能所需的集群数据中,例如,函数需要访问的 URI 列表。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
- 
								已安装 Knative (kn) CLI。
- 您已创建了一个功能。
流程
- 
								为您的功能打开 func.yaml文件。
- 对于您要挂载为卷的每个配置映射,请将以下 YAML 添加到 - volumes部分:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 
										将 myconfigmap替换为目标配置映射的名称。
- 使用您要挂载配置映射的路径替换 - /workspace/configmap。- 例如,要挂载 - addresses配置映射,请使用以下 YAML:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
										将 
- 保存配置。
13.2.5.3. 从 secret 中定义的键值设置环境变量
您可以从定义为 secret 的键值设置环境变量。然后,之前存储在 secret 中的值可以被函数在运行时作为环境变量访问。这有助于获取存储在 secret 中的值,如用户的 ID。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
- 
								已安装 Knative (kn) CLI。
- 您已创建了一个功能。
流程
- 
								为您的功能打开 func.yaml文件。
- 对于您要分配给环境变量的 secret 键值对的每个值,请将以下 YAML 添加到 - envs部分:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 
										将 EXAMPLE替换为环境变量的名称。
- 
										将 mysecret替换为目标 secret 的名称。
- 使用映射到目标值的键替换 - key。- 例如,要访问存储在 - userdetailssecret中的用户 ID,请使用以下 YAML:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
										将 
- 保存配置。
13.2.5.4. 从配置映射中定义的键值设置环境变量
您可以从定义为配置映射的键值设置环境变量。然后,之前存储在配置映射中的值可以被函数在运行时作为环境变量访问。这对于获取配置映射中存储的值(如用户的 ID)非常有用。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
- 
								已安装 Knative (kn) CLI。
- 您已创建了一个功能。
流程
- 
								为您的功能打开 func.yaml文件。
- 对于您要分配给环境变量的配置映射键值对中的每个值,请将以下 YAML 添加到 - envs部分:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 
										将 EXAMPLE替换为环境变量的名称。
- 
										将 myconfigmap替换为目标配置映射的名称。
- 使用映射到目标值的键替换 - key。- 例如,要访问存储在 - userdetailsmap中的用户 ID,请使用以下 YAML:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
										将 
- 保存配置。
13.2.5.5. 从 secret 中定义的所有值设置环境变量
您可以从 secret 中定义的所有值设置环境变量。然后,之前存储在 secret 中的值可以被函数在运行时作为环境变量访问。这可用于同时访问存储在 secret 中的一组值,例如,一组与用户相关的数据。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
- 
								已安装 Knative (kn) CLI。
- 您已创建了一个功能。
流程
- 
								为您的功能打开 func.yaml文件。
- 对于您要导入所有键值对作为环境变量的每个 secret,请将以下 YAML 添加到 - envs部分:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 将mysecret替换为目标 secret 的名称。
 - 例如,要访问存储在 - userdetailssecret中的所有用户数据,请使用以下 YAML:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存配置。
13.2.5.6. 从配置映射中定义的所有值设置环境变量
您可以从配置映射中定义的所有值设置环境变量。然后,之前存储在配置映射中的值可以被函数在运行时作为环境变量访问。这可用于同时访问配置映射中存储的值集合,例如,一组与用户相关的数据。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
- 
								已安装 Knative (kn) CLI。
- 您已创建了一个功能。
流程
- 
								为您的功能打开 func.yaml文件。
- 对于您要导入所有键值对作为环境变量的每个配置映射,请将以下 YAML 添加到 - envs部分:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 将myconfigmap替换为目标配置映射的名称。
 - 例如,要访问存储在 - userdetailsmap中的所有用户数据,请使用以下 YAML:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存该文件。