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>
    • 可接受的运行时值包括 quarkusnodetypescriptgopythonspringbootrust
    • 可接受的模板值包括 httpcloudevents

      示例命令

      $ 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 值。

11.2.8. 其他资源

11.2.9. 后续步骤