×

无需在本地构建函数,您可以在集群上直接构建函数。在本地开发机器上使用此工作流时,您只需要处理函数源代码。例如,当您无法安装集群内函数构建工具(如 docker 或 podman)时,这非常有用。

在集群上构建和部署函数

您可以使用 Knative (kn) CLI 启动函数项目构建,然后直接在集群上部署函数。要以这种方式构建函数项目,您的函数项目的源代码必须存在于集群可以访问的 Git 仓库分支中。

先决条件
  • 必须在您的集群上安装 Red Hat OpenShift Pipelines。

  • 您已安装 OpenShift CLI (oc)。

  • 您已安装 Knative (kn) CLI。

步骤
  1. 创建函数

    $ kn func create <function_name> -l <runtime>
  2. 实现函数的业务逻辑。然后,使用 Git 提交并推送更改。

  3. 部署您的函数

    $ kn func deploy --remote

    如果您未登录到函数配置中引用的容器注册表,系统会提示您提供托管函数映像的远程容器注册表的凭据。

    示例输出和提示
    🕕 Creating Pipeline resources
    Please provide credentials for image registry used by Pipeline.
    ? Server: https://index.docker.io/v1/
    ? Username: my-repo
    ? Password: ********
       Function deployed at URL: http://test-function.default.svc.cluster.local
  4. 要更新您的函数,请使用 Git 提交并推送新的更改,然后再次运行 kn func deploy --remote 命令。

  5. 可选。您可以使用 pipelines-as-code 配置您的函数,以便在每次 Git 推送后在集群上构建。

    1. 为您的函数生成 Tekton PipelinesPipelineRuns 配置

      $ kn func config git set

      除了生成配置文件外,此命令还会连接到集群并验证管道是否已安装。通过使用令牌,它还会代表用户在函数存储库上创建一个 Webhook。每次将更改推送到存储库时,该 Webhook 都会触发集群上的管道。

      您需要拥有具有存储库访问权限的有效的 GitHub 个人访问令牌才能使用此命令。

    2. 提交并推送生成的 .tekton/pipeline.yaml.tekton/pipeline-run.yaml 文件

      $ git add .tekton/pipeline.yaml .tekton/pipeline-run.yaml
      $ git commit -m 'Add the Pipelines and PipelineRuns configuration'
      $ git push
    3. 更改函数后,提交并推送它。函数将使用创建的管道自动重新构建。

指定函数版本

在集群上构建和部署函数时,您必须通过指定 Git 仓库、分支和仓库内的子目录来指定函数代码的位置。如果您使用 main 分支,则无需指定分支。同样,如果您的函数位于仓库的根目录,则无需指定子目录。您可以在 func.yaml 配置文件中指定这些参数,或者使用 kn func deploy 命令的标志。

先决条件
  • 必须在您的集群上安装 Red Hat OpenShift Pipelines。

  • 您已安装 OpenShift (oc) CLI。

  • 您已安装 Knative (kn) CLI。

步骤
  • 部署您的函数

    $ kn func deploy --remote \ (1)
                     --git-url <repo-url> \ (2)
                     [--git-branch <branch>] \ (3)
                     [--git-dir <function-dir>] (4)
    1 使用 --remote 标志,构建将在远程运行。
    2 <repo-url> 替换为 Git 仓库的 URL。
    3 <branch> 替换为 Git 分支、标签或提交。如果使用 main 分支上的最新提交,则可以跳过此标志。
    4 如果函数所在的目录与仓库根目录不同,则将 <function-dir> 替换为包含函数的目录。

    例如

    $ kn func deploy --remote \
                     --git-url https://example.com/alice/myfunc.git \
                     --git-branch my-feature \
                     --git-dir functions/example-func/

设置自定义卷大小

对于需要更大卷大小才能构建的项目,您可能需要在集群上构建时自定义持久卷声明 (PVC)。默认 PVC 大小为 256 MiB。

先决条件
  • 必须在您的集群上安装 Red Hat OpenShift Pipelines。

  • 您已安装 OpenShift (oc) CLI。

  • 您已安装 Knative (kn) CLI。

步骤
  • 使用 --pvc-size 标志和 PVC 大小规范部署您的函数,方法是运行以下命令

    $ kn func deploy --remote --pvc-size='2Gi'

    在此示例中,PVC 设置为 2 GiB。

在 Web 控制台中测试函数

您可以通过在 Red Hat OpenShift Serverless Web 控制台的 **开发者** 透视图中调用已部署的无服务器函数来测试它。

先决条件
  • OpenShift Serverless Operator 和 Knative Serving 已安装在您的 Red Hat OpenShift Serverless 集群上。

  • 您已登录到 Web 控制台,并且处于 **开发者** 透视图。

  • 您已创建并部署了一个函数。

步骤
  1. 在**开发者**视角中,导航到**拓扑结构**。

  2. 点击一个函数,然后在**详细信息**面板的**操作**下拉列表中点击**测试无服务器函数**。这将打开**测试无服务器函数**对话框。

  3. 在**测试无服务器函数**对话框中,根据需要修改测试设置。

    1. 选择测试的**格式**。可以选择**CloudEvent**或**HTTP**。

    2. **Content-Type**默认为Content-Type HTTP 头部值。

    3. 您可以使用**高级设置**来修改 CloudEvent 测试的**类型**或**源**,或添加可选的头部。

    4. 您可以修改测试的输入数据。

  4. 点击**测试**以运行您的测试。

  5. 测试完成后,**测试无服务器函数**对话框将显示状态代码和一条消息,告知您测试是否成功。

  6. 点击**返回**执行另一次测试,或点击**关闭**关闭测试对话框。