深入玩转 Openfaas 之安装部署
摘要
边缘计算中 k3s 提供了一种基础设施架构的可能,单纯的容器化或许远远不能够达到万物互联沟通有无的目的,随着云计算的发展步入应用深水区,更低的资源能耗,更便捷的访问请求,更加灵活的业务实现在边缘计算将会得到切实可行的验证;本文基于 Openfaas 的安装部署展开,通过逐步的拆解 openfaas 架构组件的作用进而更加全面的了解边缘计算的设计思想。
关键词: openfaas; k3s; 边缘计算;
Openfaas 简介
OpenFaaS是一个构建无服务器功能的框架,它拥有对指标的第一个类支持。任何流程都可以打包为一个功能,使你能够使用一系列web事件,而无需重复的样板化编码,让无服务器函数变得简单;
-
监督功能(watchdog)
1 你可以通过添加函数看门狗 (一个小型的Golang HTTP服务)把任何一个Docker镜像变成无服务器函数。
2 函数看门狗是允许HTTP请求通过STDIN转发到目标进程的入口点。响应会从你应用写入STDOUT返回给调用者。 -
网关
1 API网关为您的函数提供了一个外部路由,并通过Prometheus收集云的原生数据。
2 您的API网关将根据需求来扩展功能,通过更改Docker Swarm或Kubernetes API中的服务副本数。
3 UI允许您在浏览器中调用函数,并根据需要创建新的函数。 -
CLI
Docker容器中的任何容器或流程都可以是FaaS中的一个无服务器功能。通过使用FaaS CLI,您可以部署您的函数,或者从诸如Node.js或Python这样的模板中快速创建新的函数。
安装部署
第一步: 创建 OpenFaaS 依赖的 namespace
kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
第二步: 增加 OpenFaaS helm chart
helm repo add openfaas https://openfaas.github.io/faas-netes/
第三步: OpenFaaS 部署拉起
helm repo update \
&& helm upgrade openfaas --install openfaas/openfaas \
--namespace openfaas \
--set functionNamespace=openfaas-fn \
--set generateBasicAuth=true \
--set faasnetes.imagePullPolicy=IfNotPresent
备注:
functionNamespace 对应的应用部署的命名空间,规范限制的目的;
generateBasicAuth 开启权限认证,如果用户想要访问或者请求需要基于账户密码信息访问;
faasnetes.imagePullPolicy: openfaas 部署时的镜像拉取规则,方便开发调试的前提下尽可能本地镜像优先的策略;
鉴权登陆
编辑 /root/.bashrc 设置系统环境变量:
# 设置系统环境变量
vi /root/.bashrc
# 默认变量配置
export OPENFAAS_URL=192.168.139.139:31112/
export OPENFAAS_TEMPLATE_URL=https://gitee.com/vpc123/templates-cn.git
备注: OPENFAAS_URL 属于 openfaas 的网关地址,这也是会注入到应用服务内的;OPENFAAS_TEMPLATE_URL 这个是函数模板,可以自定义实现,因为网络的原因可以对模板进行改造开发;
获取 faas-cli 用于执行:
# openfaas 默认账户密码
user: admin
password: echo $(kubectl -n openfaas get secret basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode)
# download & login
curl https://cli.openfaas.com | sh
faas-cli login -u admin -p xxx
网关通过 nodeport 方式暴露 31112 端口进行服务访问:
常用指令
# 最新模板下载到本地
faas-cli template pull
# 查询 openfaas 的模板列表
faas-cli new --list
# 创建模板函数
# 执行以下命令即可创建函数,test是函数名,python是语言类型,vpc123是docker镜像名字的前缀
faas-cli new test --lang python -p vpc123
# 镜像构建
faas-cli build test.yaml
# 镜像推送
faas-cli push
# 应用部署
faas-cli deploy -f test.yaml
总结
桃之夭夭,灼灼其华;