Serverless 工程实践|自建 Apache OpenWhisk 平台

网友投稿 311 2022-10-10

Serverless 工程实践|自建 Apache OpenWhisk 平台

作者 | 刘宇(江昱) 前言:OpenWhisk 是一个开源、无服务器的云平台,可以在运行时容器中通过执行扩展的代码响应各种事件,而无须用户关心相关的基础设施架构。

OpenWhisk 简介

OpenWhisk 部署

实验机器操作系统为 Ubuntu 18.04 Desktop。使用 GitHub 上所提供的 incubator-openwhisk 进行安装,如果本机没有安装 Git,需要先安装 Git:

apt install git

接下来克隆 repo 到本地目录:

git clone openwhisk

cd openwhisk && cd tools/ubuntu-setup && ./all.sh

limits: invocationsPerMinute: "{{ limit_invocations_per_minute | default(60) }}" concurrentInvocations: "{{ limit_invocations_concurrent | default(30) }}" concurrentInvocationsSystem: "{{ limit_invocations_concurrent_system | default (5000) }}" firesPerMinute: "{{ limit_fires_per_minute | default(60) }}" sequenceMaxLength: "{{ limit_sequence_max_length | default(50) }}"

上面程序定义了 OpenWhisk 在系统中的限制。

invocationsPerMinute 表示同一个 Namespace 每分钟调用 Action 的数量。 concurrentInvocations 表示同一个 Namespace 的并发调用数量。 concurrentInvocationsSystem 表示系统中所有 Namespace 的并发调用数量。 firesPerMinute 表示同一个 Namespace 中每分钟调用 Trigger 的数量。 sequenceMaxLength 表示 Action 的最大序列长度。

如果需要修改上述的默认值,可以把修改后的值添加到文件 ansible/environments/local/group_vars/all 的末尾。例如,Action 的最大序列长度为 100,可以将 sequenceMaxLength: 120 添加到文件的末尾。 接下来,为 OpenWhisk 配置一个持久存储的数据库,有 CouchDB 和 Cloudant 可选。以 CouchDB 为例,配置环境:

export OW_DB=CouchDB export OW_DB_USERNAME=root export OW_DB_PASSWORD=PASSWORD export OW_DB_PROTOCOL=http export OW_DB_HOST=172.17.0.1 export OW_DB_PORT=5984

在 openwhisk/ansible 目录下,运行脚本,如图所示。

ansible-playbook -i environments/local/ setup.yml

./gradlew distDocker

apt install npm

ansible-playbook -i environments/local/ couchdb.yml ansible-playbook -i environments/local/ initdb.yml ansible-playbook -i environments/local/ wipe.yml ansible-playbook -i environments/local/ apigateway.yml ansible-playbook -i environments/local/ openwhisk.yml ansible-playbook -i environments/local/ postdeploy.yml

docker ps --format "{{.Image}} \t {{.Names }}"

开发者工具

OpenWhisk 提供了一个统一的命令行接口 wsk。生成的 wsk 在 openwhisk/bin 下。其有两个属性需要配置。

API host 用于部署 OpenWhisk 的主机名或 IP 地址的 API。 Authorization key(用户名或密码)用来授权操作 OpenWhisk 的 API。

设置 API host,在单机配置中的 IP 应该为 172.17.0.1,如图所示。

./bin/wsk property set --apihost '172.17.0.1'

./bin/wsk property set --auth `cat ansible/files/auth.guest

wsk action invoke /whisk.system/utils/echo –p message hello –result { "message": "hello" }

体验测试

创建简单的动作(action),代码如下:

# test.py def main(args): num = args.get("number", "30") return {"fibonacci": F(int(num))} def F(n): if n == 0: return 0 elif n == 1: return 1 else: return F(n - 1) + F(n - 2)

创建动作:

/bin/wsk action create myfunction ./test.py --insecure

./bin/wsk -i action invoke myfunction --result --blocking --param nember 20

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java的GUI实现简单切换界面
下一篇:互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~