当前位置: 首页>后端>正文

OpenFaaS

openFaaS 是一个开源的弹性无服务集群框架

综合教程1
综合教程2

创建函数

  1. 使用python3 http请求格式需要预先下载新的模板
faas-cli template pull https://github.com/openfaas-incubator/python-flask-template
  1. 调用faas-cli生成一个新的函数模板
faas-cli new calc --lang python3-http-debian -p lyudmilalala

其实不调用命令,手写或者复制以前的函数目录也行,会在当前目录下生成如下文件

├── calc      # 包含具体函数的文件夹,不同语言会有不同内容
│   ├── handler.py
│   ├── handler_test.py
│   ├── requirements.txt
│   └── tox.ini
├── calc.yml      # openfaas用来打包镜像和配置部署函数的文件
└── template      # openfaas模板,若在本地没有找到则会拉取
  1. 在handler.py里编写具体实现,记得如果有新的依赖的话要去template/python3-http-debian/requirements.txt里或者calc.yml里添加
  2. faas-cli build -f calc.yml打包函数镜像

启动函数

faas-cli deploy -f calc.yml --gateway http://127.0.0.1:31112部署函数
正常情况会得到

Deploying: calc.

Deployed. 202 Accepted.
URL: http://127.0.0.1:31112/function/calc

若未登录,会获得如下报错

Deploying: calc.

unauthorized access, run "faas-cli login" to setup authentication for this server
Function 'calc' failed to deploy with status code: 401

此时需要登录faas-cli

faas-cli login -u XXX --password XXX

若出现如下警告,则说明端口映射不在默认端口

WARNING! Using --password is insecure, consider using: cat ~/faas_pass.txt | faas-cli login -u user --password-stdin
Calling the OpenFaaS server to validate the credentials...
Cannot connect to OpenFaaS on URL: http://127.0.0.1:8080. Get "http://127.0.0.1:8080/system/functions": dial tcp 127.0.0.1:8080: connect: connection refused

可以用查出实际映射的端口,并手动添加到参数中

$ kubectl get svc -A
openfaas      gateway-external    NodePort    10.98.157.232    <none>        8080:31112/TCP           61m
$ faas-cli login -u XXX --password XXX --gateway http://127.0.0.1:31112
WARNING! Using --password is insecure, consider using: cat ~/faas_pass.txt | faas-cli login -u user --password-stdin
Calling the OpenFaaS server to validate the credentials...
credentials saved for admin1 http://127.0.0.1:31112

如果想要打包上传部署一条龙服务,可以用faas-cli up -f calc.yml代替build和deploy
可以通过--filter选择只启动某个函数

faas-cli deploy -f faas-funcs.yml  task-parser-faas --gateway http://127.0.0.1:31112

使用本地镜像

OpenFaaS默认每次都会从远程仓拉取函数镜像,如果希望仅本地没有时从远程拉取,设置faas-netes/yaml/gateway-dep.yml里的image_pull_policy(相关配置在private registery教程中说明)

env:
- name: image_pull_policy
  value: "IfNotPresent"

删除函数

faas-cli remove <func_name>   # 删除某个函数
faas-cli remove -f taskRes-parser-faas.yml   # 删除某个配置文件里所有的函数

Auto scaling

可能有用的链接1
可能有用的链接2
可能有用的链接3

How does it handle concurrent synchronized request

References

openFaaS func部署用yaml参数
关于如何不修改镜像版本就可以重新部署代码


https://www.xamrdz.com/backend/32c1931744.html

相关文章: