Apache OpenWhisk 运行时 Docker SDK 教程
1. 项目介绍
Apache OpenWhisk 是一个serverless计算框架,它支持运行在容器内的函数(即“行动”或actions)。openwhisk-runtime-docker
项目是Apache OpenWhisk的一个SDK,用于构建基于Docker的“黑盒”运行时环境。这个SDK使得开发者能够将任何可执行代码封装到Docker镜像中,并在OpenWhisk平台上以serverless方式运行。
2. 项目快速启动
2.1 安装OpenWhisk CLI
首先,你需要安装OpenWhisk命令行客户端(CLI):
brew tap apache/openwhisk && brew install apache-openwhisk-cli
或者,如果你使用的是其他操作系统,请参考官方文档获取安装指南。
2.2 安装Docker Action Skeleton
接下来,克隆并安装Docker动作骨架:
git clone https://github.com/apache/openwhisk-runtime-docker.git
cd openwhisk-runtime-docker/sdk/docker/dockerSkeleton
wsk sdk install docker
2.3 添加用户代码
将你的自定义代码添加到dockerSkeleton/action
目录下的可执行文件中,确保文件名为main
。
2.4 构建并推送Docker镜像
登录Docker Hub并构建镜像:
docker login
./buildAndPush.sh [your_dockerhub_username]
2.5 创建Docker动作
使用新创建的Docker镜像创建OpenWhisk action:
wsk action create myAction main.zip --docker [your_dockerhub_username]/myAction
2.6 调试动作
测试新创建的动作:
wsk action invoke myAction --blocking
3. 应用案例和最佳实践
- 使用特定依赖:如果你的应用需要特定版本的库或依赖,可以在Dockerfile中明确指定并构建。
- 资源优化:尽量减少Docker镜像的大小,以便更快地部署和执行动作。
- 日志管理:利用OpenWhisk的日志记录功能,跟踪行动执行的状态和错误。
- 安全编码:遵循良好的编码实践,防止潜在的安全漏洞。
4. 典型生态项目
- OpenWhisk Runtime Java: 支持Java 8 (OpenJDK 8 JVM, OpenJ9) 编写的函数。
- OpenWhisk Runtime Node.js: 支持Node.js v18和v20的函数。
- OpenWhisk Runtime Go: 支持GoLang v1.20、v1.21和v1.22的函数。
- OpenWhisk Runtime .NET: 支持.NET Core v3.1和v6.0的函数。
通过这些运行时,你可以选择最适合你的应用语言来编写serverless函数。
参考上述步骤和最佳实践,愉快地在Apache OpenWhisk上开发和部署Docker化的函数吧!