创建并测试无服务器函数

学习目标

  • 创建并测试无服务器函数

使用场景

您是一名开发人员,需要创建一个 API 来接收和处理数据。您听说过使用无服务器函数(Serverless Function)来实现此类 API 的方法,因此想学习如何创建无服务器函数以及如何使用它。

任务流程

在本练习中,您将执行以下步骤:

  1. 使用 kubectl 创建无服务器函数。

  2. 使用 Kyma dashboard 创建无服务器函数。

  3. 使用 HTTP 公开并测试该函数。

前提条件

  • 您已在 SAP BTP 子账户中创建 SAP BTP, Kyma runtime 实例。请参阅 在 SAP BTP 上使用 Kyma 部署 Kubernetes 集群 。

  • 您已配置 kubectl 以便与您的 SAP BTP, Kyma runtime 实例交互,并且您可以访问 Kyma dashboard。请参阅 为 Kyma 设置和配置 Kubectl 和 使用 Kyma Dashboard 访问您的 Kyma Runtime 实例 。

  • 您已添加 Serverless 模块。请参阅 添加 Kyma 模块 。

任务 1:创建并测试无服务器函数

步骤

  1. 使用 kubectl 创建无服务器函数。

  2. 打开终端,列出默认命名空间中当前所有的无服务器函数:

kubectl get functions

如果您的命名空间中没有任何 Function,您将得到一个空列表。 2. 在默认命名空间中启用 Istio sidecar 代理注入。

kubectl label namespace default istio-injection=enabled --overwrite

如果您在已启用 Istio sidecar 注入的命名空间中创建 Function,则在创建过程中会自动将 Istio sidecar 代理注入到该 Function 的 Pod 中。这会使该 Function 成为 Istio 服务网格的一部分。要使用 APIRule 自定义资源公开工作负载(您将在步骤 3 中执行此操作),必须将该工作负载纳入 Istio 服务网格。 3. 要创建无服务器函数,请运行以下命令:

kubectl apply -n default -f https://raw.githubusercontent.com/sap-samples/kyma-runtime-learning-journey/main/unit_3/functions/hello-world-function.yaml

如果成功,您将获得输出:**function.serverless.kyma-project.io/hello-world-function created**。 4. 再次列出默认命名空间中的所有函数:

kubectl get functions

函数 hello-world-function 已出现在列表中。 2. 使用 Kyma dashboard 创建无服务器函数。

  1. 打开 Kyma dashboard,转到 Namespaces,然后选择 default

  2. 转到 WorkloadsFunctions,然后选择 Create

  3. 输入以下信息:

  • Name : hello-kyma-function

  • Language : JavaScript 创建新函数 您也可以切换到 YAML 标签页,查看、复制或编辑该函数的 YAML 清单。

  1. 选择 Create 按钮。

结果

您的函数现在正在创建中。几秒钟后,其状态将变为 Running。 3. 使用 HTTP 公开并测试该函数。

Note

使用 HTTP 公开该函数可以让您在浏览器中测试它。您将在本课程后续内容中进一步了解公开(exposure)的相关知识。

  1. 转到子账户概览的 Kyma Environment 部分,查看 Kyma 集群的默认域。 复制 APIServerURLhttps://api 之后的值。例如,对于 URL https://api.xxx123.kyma.ondemand.com,复制 xxx123.kyma.ondemand.com

  2. 转到 Discovery and NetworkAPI Rules,然后选择 Create

  3. 输入以下信息,然后选择 Create 按钮:

  • Name : hello-kyma-function-api

  • Service Name : hello-kyma-function

  • Port : 80

  • Host : hello-kyma-function-api.<your-domain> 替换为复制得到的域名。

  • Access Strategy : No Auth 通过创建此 APIRule CR,您可以将函数公开为 HTTP 端点。只允许 GET 请求。

  1. 在浏览器中粘贴 URL hello-kyma-function-api.<your-domain>

结果

您将获得以下消息: Hello world from the Kyma Function hello-kyma-function running on nodejs20!

结果

太棒了,您已成功创建并测试了一个无服务器函数!