11.2. 功能入门
功能生命周期管理包括创建、构建和部署功能。另外,您还可以通过调用它来测试部署的功能。您可以使用 kn func
工具在 OpenShift Serverless 上完成所有这些操作。
11.2.1. 先决条件
在完成以下步骤前,您必须确定您已完成了设置 OpenShift Serverless 功能的所有先决条件任务。
11.2.2. 创建功能
在构建和部署功能前,您必须使用 Knative (kn
) CLI 创建功能。您可以在命令行中指定路径、运行时、模板和镜像 registry,也可以使用 -c
标志在终端中启动交互式体验。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
-
已安装 Knative (
kn
) CLI。
流程
创建功能项目:
$ kn func create -r <repository> -l <runtime> -t <template> <path>
-
可接受的运行时值包括
quarkus
、node
、typescript
、go
、python
、springboot
和rust
。 可接受的模板值包括
http
和cloudevents
。示例命令
$ kn func create -l typescript -t cloudevents examplefunc
输出示例
Created typescript function in /home/user/demo/examplefunc
或者,您可以指定包含自定义模板的存储库。
示例命令
$ kn func create -r https://github.com/boson-project/templates/ -l node -t hello-world examplefunc
输出示例
Created node function in /home/user/demo/examplefunc
-
可接受的运行时值包括
11.2.3. 在本地运行一个函数
您可以使用 kn func run
命令在当前目录中本地运行函数,或者在 --path
标志指定的目录中运行。如果您运行的函数之前没有被构建,或者项目文件自上次构建以来已修改过,kn func run
命令将在运行它前构建该函数。
在当前目录中运行函数的命令示例
$ kn func run
在指定为路径的目录中运行函数的示例
$ kn func run --path=<directory_path>
您也可以在运行该函数前强制重建现有镜像,即使项目文件没有更改项目文件,则使用 --build
标志:
使用 build 标记的 run 命令示例
$ kn func run --build
如果将 build
标志设置为 false,这将禁用构建镜像,并使用之前构建的镜像运行该功能:
使用 build 标记的 run 命令示例
$ kn func run --build=false
您可以使用 help 命令了解更多有关 kn func run
命令选项的信息:
构建 help 命令
$ kn func help run
11.2.4. 构建函数
在运行功能前,您必须构建 function 项目。如果使用 kn func run
命令,则该函数会自动构建。但是,您可以使用 kn func build
命令在不运行的情况下构建函数,这对于高级用户或调试场景非常有用。
kn func build
命令创建可在您的计算机或 OpenShift Container Platform 集群中运行的 OCI 容器镜像。此命令使用功能项目名称和镜像 registry 名称为您的功能构建完全限定镜像名称。
11.2.4.1. 镜像容器类型
默认情况下,kn func build
使用 Red Hat Source-to-Image (S2I) 技术创建一个容器镜像。
使用 Red Hat Source-to-Image (S2I) 的 build 命令示例.
$ kn func build
11.2.4.2. 镜像 registry 类型
OpenShift Container Registry 默认用作存储功能镜像的镜像 registry。
使用 OpenShift Container Registry 的 build 命令示例
$ kn func build
输出示例
Building function image Function image has been built, image: registry.redhat.io/example/example-function:latest
您可以使用 --registry
标志覆盖使用 OpenShift Container Registry 作为默认镜像 registry:
build 命令覆盖 OpenShift Container Registry 以使用 quay.io
$ kn func build --registry quay.io/username
输出示例
Building function image Function image has been built, image: quay.io/username/example-function:latest
11.2.4.3. push 标记
您可以将 --push
标志添加到 kn func build
命令中,以便在成功构建后自动推送功能镜像:
使用 OpenShift Container Registry 的 build 命令示例
$ kn func build --push
11.2.4.4. help 命令
您可以使用 help 命令了解更多有关 kn func build
命令选项的信息:
构建 help 命令
$ kn func help build
11.2.5. 部署功能
您可以使用 kn func deploy
命令将功能部署到集群中,作为 Knative 服务。如果已经部署了目标功能,则会使用推送到容器镜像 registry 的新容器镜像进行更新,并更新 Knative 服务。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
-
已安装 Knative (
kn
) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您必须已创建并初始化要部署的功能。
流程
部署功能:
$ kn func deploy [-n <namespace> -p <path> -i <image>]
输出示例
Function deployed at: http://func.example.com
-
如果没有指定
namespace
,则该函数部署到当前命名空间中。 -
此函数从当前目录中部署,除非指定了
path
。 - Knative 服务名称派生自项目名称,无法使用此命令进行更改。
-
如果没有指定
11.2.6. 使用测试事件调用部署的功能
您可以使用 kn func invoke
CLI 命令发送测试请求,在本地或 OpenShift Container Platform 集群中调用功能。您可以使用此命令测试功能是否正常工作并且能够正确接收事件。本地调用函数可用于在功能开发期间进行快速测试。在测试与生产环境更接近的测试时,在集群中调用函数非常有用。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
-
已安装 Knative (
kn
) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您必须已部署了要调用的功能。
流程
调用函数:
$ kn func invoke
-
kn func invoke
命令仅在当前运行本地容器镜像时或在集群中部署功能时才有效。 -
kn func invoke
命令默认在本地目录上执行,并假定此目录是一个功能项目。
-
11.2.7. 删除函数
您可以使用 kn func delete
命令删除功能。当不再需要某个函数时,这很有用,并有助于在集群中保存资源。
流程
删除函数:
$ kn func delete [<function_name> -n <namespace> -p <path>]
-
如果没有指定要删除的功能的名称或路径,则会搜索当前目录以查找用于决定要删除的功能的
func.yaml
文件。 -
如果没有指定命名空间,则默认为
func.yaml
文件中的namespace
值。
-
如果没有指定要删除的功能的名称或路径,则会搜索当前目录以查找用于决定要删除的功能的