OpenFaaS

作者: Lyudmilalala | 来源:发表于2023-05-25 23:23 被阅读0次

    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参数
    关于如何不修改镜像版本就可以重新部署代码

    相关文章

      网友评论

          本文标题:OpenFaaS

          本文链接:https://www.haomeiwen.com/subject/anhfirtx.html