OpenWhisk项目Ansible部署指南:从零搭建Serverless平台
2025-07-07 05:55:42作者:羿妍玫Ivan
前言
OpenWhisk是一个开源的Serverless计算平台,而Ansible作为自动化运维工具,能够帮助我们快速部署和管理OpenWhisk集群。本文将详细介绍如何使用Ansible在本地环境部署OpenWhisk,涵盖从环境准备到完整部署的全过程。
环境准备
Ansible安装
部署前需要先安装Ansible及其依赖:
Ubuntu系统
sudo apt-get install python-pip
sudo pip install ansible==4.1.0
sudo pip install jinja2==3.0.1
Mac系统
sudo easy_install pip
sudo pip install ansible==4.1.0
pip install jinja2==3.0.1
Docker环境特殊配置
Mac用户需要特别注意Docker环境的特殊配置:
- 启用Docker远程API:用于Ansible收集日志
- 激活docker0网络:通过以下命令添加别名
sudo ifconfig lo0 alias 172.17.0.1/24
部署流程
1. 初始化设置
首先设置环境变量并生成主机配置文件:
ENVIRONMENT=local # 根据环境选择local/docker-machine/jenkins/vagrant
数据库配置
根据使用的数据库类型配置db_local.ini
文件:
CouchDB示例:
export OW_DB=CouchDB
export OW_DB_USERNAME=admin
export OW_DB_PASSWORD=password
export OW_DB_PROTOCOL=http
export OW_DB_HOST=localhost
export OW_DB_PORT=5984
ansible-playbook -i environments/$ENVIRONMENT setup.yml
Cloudant示例:
export OW_DB=Cloudant
export OW_DB_USERNAME=your_cloudant_user
export OW_DB_PASSWORD=your_cloudant_password
export OW_DB_PROTOCOL=https
export OW_DB_HOST=your_cloudant_user.cloudant.com
export OW_DB_PORT=443
2. 安装依赖
执行以下命令安装必要依赖:
ansible-playbook -i environments/$ENVIRONMENT prereq.yml
3. 构建Docker镜像
进入OpenWhisk项目根目录构建Docker镜像:
cd <openwhisk_home>
./gradlew distDocker
4. 数据库部署
根据选择的数据库类型执行相应部署:
CouchDB部署
ansible-playbook -i environments/$ENVIRONMENT couchdb.yml
ansible-playbook -i environments/$ENVIRONMENT initdb.yml
ansible-playbook -i environments/$ENVIRONMENT wipe.yml
MongoDB部署
ansible-playbook -i environments/<environment> mongodb.yml -e mongodb_data_volume="/tmp/mongo-data"
ansible-playbook -i environments/<environment> initMongodb.yml -e mongodb_connect_string="mongodb://172.17.0.1:27017"
5. 核心组件部署
部署OpenWhisk核心组件:
ansible-playbook -i environments/$ENVIRONMENT openwhisk.yml
6. 附加组件部署
安装公共包和API网关:
# 安装公共包目录
ansible-playbook -i environments/$ENVIRONMENT postdeploy.yml
# 部署API网关
ansible-playbook -i environments/$ENVIRONMENT apigateway.yml
ansible-playbook -i environments/$ENVIRONMENT routemgmt.yml
高级配置
新调度器启用
OpenWhisk提供了新的调度器实现,可以通过修改配置启用:
- 修改
reference.conf
文件,更新调度器相关配置 - 设置暂停时间为10秒(修改
application.conf
) - 在Ansible变量中配置
scheduler_enable: true
ElasticSearch集成
建议配合新调度器使用ElasticSearch存储激活记录:
ansible-playbook -i environments/$ENVIRONMENT elasticsearch.yml
ansible-playbook -i environments/$ENVIRONMENT openwhisk.yml -e db_activation_backend=ElasticSearch
组件热更新
OpenWhisk支持单独更新某个组件,例如更新Invoker:
- 构建新版本镜像:
./gradlew :core:invoker:distDocker -PdockerImageTag=newVersion
- 部署更新:
ansible-playbook -i environments/$ENVIRONMENT invoker.yml -e docker_image_tag=newVersion
常见问题处理
- /tmp目录数据丢失:设置
OPENWHISK_TMP_DIR
环境变量指向持久化目录 - CouchDB单机多节点限制:Erlang EPMD限制导致无法单机部署多个CouchDB节点
- Mac环境特殊配置:需要额外配置网络别名
总结
通过Ansible部署OpenWhisk可以大大简化Serverless平台的搭建过程。本文详细介绍了从环境准备到完整部署的各个步骤,包括数据库选择、核心组件部署、高级功能配置等。掌握这些内容后,开发者可以快速搭建自己的OpenWhisk环境,并根据需求进行定制化配置。