首页
/ OpenWhisk项目Ansible部署指南:从零搭建Serverless平台

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环境的特殊配置:

  1. 启用Docker远程API:用于Ansible收集日志
  2. 激活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提供了新的调度器实现,可以通过修改配置启用:

  1. 修改reference.conf文件,更新调度器相关配置
  2. 设置暂停时间为10秒(修改application.conf
  3. 在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:

  1. 构建新版本镜像:
./gradlew :core:invoker:distDocker -PdockerImageTag=newVersion
  1. 部署更新:
ansible-playbook -i environments/$ENVIRONMENT invoker.yml -e docker_image_tag=newVersion

常见问题处理

  1. /tmp目录数据丢失:设置OPENWHISK_TMP_DIR环境变量指向持久化目录
  2. CouchDB单机多节点限制:Erlang EPMD限制导致无法单机部署多个CouchDB节点
  3. Mac环境特殊配置:需要额外配置网络别名

总结

通过Ansible部署OpenWhisk可以大大简化Serverless平台的搭建过程。本文详细介绍了从环境准备到完整部署的各个步骤,包括数据库选择、核心组件部署、高级功能配置等。掌握这些内容后,开发者可以快速搭建自己的OpenWhisk环境,并根据需求进行定制化配置。