腾讯云轻量应用服务器 - 使用 OpenFaaS 部署云函数的相关操作
文档简介:
在轻量应用服务器中构建及部署函数:
如果您习惯使用在轻量应用服务器中进行远程开发,可以直接在轻量应用服务器内进行函数的构建与部署,此方式不依赖容器镜像仓库。
在轻量应用服务器中构建及部署函数
如果您习惯使用在轻量应用服务器中进行远程开发,可以直接在轻量应用服务器内进行函数的构建与部署,此方式不依赖容器镜像仓库。


命令行登录
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


package functionimport ("fmt""time")// Handle a serverless requestfunc 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 sucd ./build/lh-faas-gonerdctl 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 functionArgs: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}}
调用成功后显示如下:

