上云无忧 > 文档中心 > 腾讯云轻量应用服务器 - 使用 OpenFaaS 部署云函数的相关操作
轻量应用服务器
腾讯云轻量应用服务器 - 使用 OpenFaaS 部署云函数的相关操作

文档简介:
在轻量应用服务器中构建及部署函数: 如果您习惯使用在轻量应用服务器中进行远程开发,可以直接在轻量应用服务器内进行函数的构建与部署,此方式不依赖容器镜像仓库。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

在轻量应用服务器中构建及部署函数

如果您习惯使用在轻量应用服务器中进行远程开发,可以直接在轻量应用服务器内进行函数的构建与部署,此方式不依赖容器镜像仓库。

命令行登录

OpenFaaS 应用镜像内已内置 faas-cli 命令行工具,在轻量应用服务器内使用 faas-cli 命令行登录可以在登录轻量应用服务器实例后使用以下命令。
		
cat /var/lib/faasd/secrets/basic-auth-password | faas-cli login -s

创建函数

使用 faas-cli 创建一个名为 lh-faas-go 的函数,该函数语言为 Golang。
		
faas-cli new lh-faas-go --lang go

创建成功后,会新建 lh-faas-go、lh-faas-go.yml、template。

云函数的入口位于 lh-faas-go/handler.go,在这里可以编写您的第一个 Golang 云函数。
		
package function
import (
"fmt"
"time"
)
// Handle a serverless request
func Handle(req []byte) string {
return fmt.Sprintf(
"Hello, Lighthouse. You said: %s, at: %s",
string(req), time.Now().Format(time.RFC3339),
)
}

构建函数

完成函数创建后,使用以下命令构建函数。
		
faas-cli build -f lh-faas-go.yml --shrinkwrap
构建成功后会看到目录内多出了 build 文件夹。


切换至 root 用户并进入 ./build/lh-faas-go 目录构建容器镜像。
注意
faasd 函数部署在 openfaas-fn 命名空间,如果没有镜像仓库,可以直接将镜像放入 openfaas-fn 命名空间。OpenFaaS 应用镜像中已内置构建函数所需的 nerdctl 和 buildkit。
		
sudo su
cd ./build/lh-faas-go
nerdctl build --namespace openfaas-fn -t lh-faas-go:latest .

您可以通过以下命令查看制作好的容器镜像。
		
nerdctl --namespace openfaas-fn image ls

部署函数

完成函数镜像构建之后,从 ./build/lh-faas-go 返回项目目录,执行部署命令。
		
faas-cli deploy -f lh-faas-go.yml

测试函数

刷新 OpenFaaS 控制台,即可看到我们的 lh-faas-go 函数出现在左侧函数列表里,可以在控制台测试函数的返回结果。

本地构建函数并部署至轻量应用服务器

您可以在本地编写云函数,制作并上传函数容器镜像至容器镜像仓库,然后在轻量应用服务器中部署该云函数。

命令行登录

安装 faas-cli

Linux 下可以使用 curl 安装:
		
curl -sSL https://cli.openfaas.com | sh
macOS 推荐使用 homebrew 安装:
		
brew install faas-cli
Windows 推荐在 Powershell 内执行命令安装,或直接 下载应用程序
		
$version = (Invoke-WebRequest "https://api.github.com/repos/openfaas/faas-cli/releases/latest" | ConvertFrom-Json)[0].tag_name
(New-Object System.Net.WebClient).DownloadFile("https://github.com/openfaas/faas-cli/releases/download/$version/faas-cli.exe", "faas-cli.exe")

登录

在本地环境使用以下命令进行登录
		
faas-cli login --username admin --password 'password' --gateway http://{{lighthouse_ip}}

准备容器镜像仓库

在本示例中,我们将构建函数镜像,并推送至腾讯云 个人版容器镜像服务。您也可以推送至其他对外提供容器镜像服务的容器镜像仓库。
首先创建命名空间,然后在本地登录个人版容器镜像服务。

创建函数

使用 faas-cli 创建一个名为 lh-faas-py3 的函数,该函数语言为 Python3,并设置镜像前缀地址和待部署的轻量应用服务器公网 IP 地址。
		
faas-cli new lh-faas-py3 --lang python3 --prefix ccr.ccs.tencentyun.com/lh-openfaas --gateway http://{{lighthouse_ip}}

编写函数

编辑 lh-faas-py3/handler.py 并保存,该函数将会返回入参,并增加“Lighthouse response: ”前缀。
		
def handle(req):
"""handle a request to the function
Args:
req (str): request body
"""
return "Lighthouse response: " + req

部署函数

使用以下命令构建、推送以及部署函数。
构建:
		
faas-cli build -f lh-faas-py3.yml
推送:
		
faas-cli push -f lh-faas-py3.yml
部署:
		
faas-cli deploy -f lh-faas-py3.yml
部署成功后显示如下:

测试函数

刷新 OpenFaaS 控制台,即可看到我们的 lh-faas-py3 函数出现在左侧函数列表里,可以在控制台测试函数的返回结果。

云函数调用方式

微信小程序内HTTP调用

通过 POST 请求 OpenFaaS 控制台里对应函数的 URL,即可完成一次调用。
例如:在小程序内调用 figlet 函数,并在页面内展示返回结果。
		
Page({
/**
* 页面的初始数据
*/
data: {
messages: []
},
/**
* 生命周期函数--监听页面加载
*/
onLoad() {
let figletStr = "Hello, Lighthouse!"
let url = "https://miniprogramdomain/function/figlet"
wx.request({
url: url,
method: "POST",
data: figletStr,
success: (res) => {
let messages = [{
title: figletStr,
date: "8 November",
summary: res.data,
image: imageUrl,
preShow: true
}]
this.setData({ messages: messages })
}
})
},
})
在微信小程序内预览本示例的效果如下:

HTTP 调用

可以通过 HTTP 请求直接调用云函数:
		
curl -d 'Hello, Lighthouse!' http://{{lighthouse_ip}}/function/figlet
调用成功后显示如下:

命令行

您可以通过 faas-cli 命令行进行函数调用:
		
echo '欢迎使用OpenFaaS' | faas-cli invoke lh-faas-py3 --gateway http://{{lighthouse_ip}}
调用成功后显示如下:

相似文档
  • OpenFaaS 应用镜像内包含哪些软件? 轻量应用服务器 OpenFaaS 应用镜像内包含 nginx、faasd、containerd、cni、runc 等 OpenFaaS 运行所必须的软件,也内置了 faas-cli、nerdctl、buildkit 等辅助软件,帮助开发者在轻量应用服务器 内部编写及部署云函数。
  • 操作场景: SRS 是一个开源的流媒体集群,主要应用在直播和 WebRTC,支持 RTMP、WebRTC、HLS、HTTP-FLV 和 SRT 等常用协议。 轻量应用服务器提供了 SRS 应用镜像,使您无需再关注繁杂的部署操作,即可通过该镜像在轻量应用服务器上一键搭建个人直播间。在本地下载推流客户端并且填写推流地址后,即可进行直播。除此之外,超清实时直播、多平台转播、直播录制等服务一应俱全,您可按需选择。
  • 操作场景: 文件存储(Cloud File Storage,CFS)提供了可扩展的共享文件存储服务,可与腾讯云云服务器 、容器、批量计算、轻量应用服务器等服务搭配使用。CFS 提供了标准的 NFS 及 CIFS/SMB 文件系统访问协议,可为计算服务提供共享的数据源,支持弹性容量和性能的扩展,现有应用无需修改即可挂载使用,是一种高可用、高可靠的分布式文件系统,适合于大数据分析、媒体处理和内容管理等场景。如需了解更多信息,请参见 文件存储 产品文档。
  • 操作场景: 本文指导您如何在轻量应用服务器上安装 Docker,以及使用 Docker 镜像源加速镜像下载。
  • 操作场景: VNC(Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发。VNC 是基于 UNIX 和 Linux 操作系统的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部