创建并测试无服务器函数
学习目标
创建并测试无服务器函数
使用场景
您是一名开发人员,需要创建一个 API 来接收和处理数据。您听说过使用无服务器函数(Serverless Function)来实现此类 API 的方法,因此想学习如何创建无服务器函数以及如何使用它。
任务流程
在本练习中,您将执行以下步骤:
使用 kubectl 创建无服务器函数。
使用 Kyma dashboard 创建无服务器函数。
使用 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:创建并测试无服务器函数
步骤
使用 kubectl 创建无服务器函数。
打开终端,列出默认命名空间中当前所有的无服务器函数:
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 创建无服务器函数。
打开 Kyma dashboard,转到 Namespaces,然后选择 default。
转到 Workloads → Functions,然后选择 Create。
输入以下信息:
Name : hello-kyma-function
Language : JavaScript
您也可以切换到 YAML 标签页,查看、复制或编辑该函数的 YAML 清单。
选择 Create 按钮。
结果
您的函数现在正在创建中。几秒钟后,其状态将变为 Running。
3. 使用 HTTP 公开并测试该函数。
Note
使用 HTTP 公开该函数可以让您在浏览器中测试它。您将在本课程后续内容中进一步了解公开(exposure)的相关知识。
转到子账户概览的 Kyma Environment 部分,查看 Kyma 集群的默认域。 复制 APIServerURL 中
https://api之后的值。例如,对于 URLhttps://api.xxx123.kyma.ondemand.com,复制xxx123.kyma.ondemand.com。转到 Discovery and Network→API Rules,然后选择 Create。
输入以下信息,然后选择 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请求。
在浏览器中粘贴 URL
hello-kyma-function-api.<your-domain>。
结果
您将获得以下消息:
Hello world from the Kyma Function hello-kyma-function running on nodejs20!
结果
太棒了,您已成功创建并测试了一个无服务器函数!