openFaaS 是一个开源的弹性无服务集群框架
综合教程1
综合教程2
创建函数
- 使用python3 http请求格式需要预先下载新的模板
faas-cli template pull https://github.com/openfaas-incubator/python-flask-template
- 调用
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模板,若在本地没有找到则会拉取
- 在handler.py里编写具体实现,记得如果有新的依赖的话要去
template/python3-http-debian/requirements.txt
里或者calc.yml
里添加 -
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参数
关于如何不修改镜像版本就可以重新部署代码