Apache OpenWhisk 2.0.0 配置参数详解

Apache OpenWhisk 2.0.0 standalone 单机模式配置参数详解,覆盖 standalone.conf 配置架构、用户凭据、配额限制、控制器网络、SPI 提供者、度量监控、运行时支撑、内置组件映像与 CORS 等全部核心配置项,含修改生效方式与常见问题,全部取值来自 2.0.0 发布版实测

Apache OpenWhiskApache OpenWhisk2026/10/12

Apache OpenWhisk 2.0.0 配置参数详解

目标:系统梳理 Apache OpenWhisk 2.0.0 standalone 单机模式的全部核心配置项,说明每个参数的默认值、作用与修改方式。文中取值均来自 2.0.0 发布版 core/standalone/src/main/resources/standalone.conf 与实测运行环境。

一、环境信息

  • Apache OpenWhisk:2.0.0(standalone 单机模式)
  • 配置文件:core/standalone/src/main/resources/standalone.conf(源码内,构建后打入 jar)
  • 配置语法:HOCON(Human-Optimized Config Object Notation)
  • 生效方式:修改 standalone.conf 后需重新执行 gradle :core:standalone:build --no-daemon 并重启服务
  • 运行用户:root(示例账号:root,密码:q1w2e3r4)

二、配置架构总览

standalone.conf 首行通过 include classpath("application.conf") 引入 OpenWhisk 全量默认配置,随后以覆盖方式定义单机模式专属值。配置层级如下:

application.conf(全量默认,由 include 引入)
└── standalone.conf(单机模式覆盖)
    ├── kamon(监控模块)
    ├── whisk.metrics(度量开关)
    ├── whisk.spi(服务提供者接口实现)
    ├── whisk.info(构建信息)
    ├── whisk.config(配额限制)
    ├── whisk.controller(控制器网络)
    ├── whisk.users(引导用户凭据)
    ├── 运行时支撑(standalone 工厂配置)
    ├── whisk.swagger-ui(接口文档资源)
    ├── whisk.standalone(内置组件映像)
    ├── whisk.apache-client(HTTP 客户端)
    ├── 函数运行环境参数(extra-args)
    └── akka-http-cors(跨域策略)

注意:HOCON 支持引用环境变量的语法,可将额外环境变量注入函数运行环境。

三、核心配置详解

3.1 用户凭据(whisk.users)

standalone 启动时自动引导两个预置用户:

参数默认值说明
users.guest23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP默认命名空间 guest 的鉴权凭据,wsk 默认使用
users.whisk-system789c46b1-71f6-4ed5-8c54-816aa4f8c502:abczO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP系统级用户,用于预置动作等内部操作

格式为 UUID:secret。修改后需同步更新 wsk 的 --auth:

# wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP

3.2 构建信息(whisk.info)

参数默认值说明
info.build-nostandalone接口返回的构建号,wsk property get --all 中显示为 whisk API build number
info.date???构建日期,未由发布版填充

3.3 配额限制(whisk.config)

参数默认值说明
config.controller-instances1控制器实例数
config.limits-actions-sequence-maxLength50单个序列动作可串联的最大动作数
config.limits-triggers-fires-perMinute60触发器每分钟最大触发次数
config.limits-actions-invokes-perMinute60动作每分钟最大调用次数
config.limits-actions-invokes-concurrent30动作最大并发调用数

动作级默认限额(wsk action get hello 实测回显 limits 字段):

参数默认值说明
timeout60000单次调用最长执行毫秒数
memory256单次调用可用内存上限(MB)
logs10单次调用日志大小上限(MB)
concurrency1单实例内最大并发激活数

3.4 控制器网络(whisk.controller)

参数默认值说明
controller.protocolhttp对外协议
controller.interfacelocalhost默认仅绑定本机回环地址;standalone 启动时实际按探测到的本机地址绑定(如实测回显 http://172.18.0.1:3233),请以实际服务器 IP 为准

3.5 SPI 服务提供者(whisk.spi)

standalone 单机模式使用精简实现,无需外部协调组件:

参数默认值(实现类)说明
ArtifactStoreProviderMemoryArtifactStoreProvider内存存储实现,重启即清空实体
MessagingProviderLeanMessagingProvider轻量消息实现(lean 模式)
LoadBalancerProviderLeanBalancer轻量负载均衡实现
LogStoreProvider平台内置 CLI 驱动实现基于命令行的日志存储,稳定且无需 root 特殊权限
InvokerProviderInvokerReactive响应式调用器实现(2.0.0 发布版需手动声明,否则默认实现要求额外的外部协调组件配置而启动失败)
InvokerServerProviderDefaultInvokerServer默认调用器服务端实现

⚠️ 2.0.0 发布版 standalone.conf 未声明 InvokerProvider 与 InvokerServerProvider,直接启动会报 Key not found: 'etcd'。必须在 whisk.spi 段补充上述两项后重新构建。

3.6 度量监控(whisk.metrics / kamon)

参数默认值说明
metrics.kamon-enabledtrue开启 Kamon 度量框架
metrics.kamon-tags-enabledtrue开启度量标签
metrics.prometheus-enabledtrue开启 Prometheus 指标暴露
kamon.modules.statsd-reporter.enabledfalse单机模式关闭 statsd 上报

3.7 运行时支撑配置

参数默认值说明
pull-standard-imagesfalse(发布版默认为 true)控制冷启动时是否自动拉取标准运行时映像;网络受限环境必须设为 false,否则首次调用因拉取失败报 HTTP 500 冷启动失败
use-runcfalse关闭 runc 以保持稳定(发布版默认关闭)
extra-args.env环境变量注入通过环境变量向函数运行环境注入额外变量

运行时映像由 jar 内 BOOT-INF/classes/runtimes.json 声明,kind 与映像对应关系(实测摘录):

nodejs: nodejs:20 -> openwhisk/action-nodejs-v20:1.22.0
python: python:3.10 -> openwhisk/action-python-v3.10:1.19.0
java:   java:8     -> openwhisk/java8action:1.19.0
go:     go:1.20    -> openwhisk/action-golang-v1.20:1.24.0
php:    php:8.1    -> openwhisk/action-php-v8.1:1.20.0
ruby:   ruby:2.5   -> openwhisk/action-ruby-v2.5:1.17.0
swift:  swift:5.3  -> openwhisk/action-swift-v5.3:1.18.0
dotnet: dotnet:3.1 -> openwhisk/action-dotnet-v3.1:1.17.0
rust:   rust:1.34  -> openwhisk/action-rust-v1.34:1.3.0

创建动作时通过 --kind 指定:

# wsk action create hello /tmp/hello.js --kind nodejs:20
ok: created action hello

3.8 接口文档资源(whisk.swagger-ui)

参数默认值说明
swagger-ui.file-systemfalse不从文件系统加载
swagger-ui.dir-pathBOOT-INF/classes/swagger-ui从 jar 内 classpath 加载 Swagger UI 资源

3.9 内置组件映像(whisk.standalone)

standalone 单机模式默认不拉起以下组件(按需启用),配置其映像来源:

参数默认值说明
standalone.redis.imageredis:4.0可选 Redis 映像
standalone.api-gateway.imageopenwhisk/apigateway:0.11.0API 网关映像;未启用时 wsk api 命令不可用(实测报 The requested resource does not exist. code MFcH7wiX1KCmkNXkdaL0T3faY75CVX22)
standalone.couchdb.imageapache/couchdb:2.3可选持久化存储映像;单机默认使用内存存储
standalone.couchdb.userwhisk_adminCouchDB 管理用户(启用时)
standalone.couchdb.passwordsome_passw0rdCouchDB 管理密码(启用时)
standalone.couchdb.prefixwhisk_local_数据库前缀
standalone.couchdb.volumes-enabledtrue启用数据卷
standalone.user-events.imageopenwhisk/user-events:2.0.0用户事件映像
standalone.user-events.prometheus-imageprom/prometheus:v2.5.0Prometheus 映像
standalone.user-events.grafana-imagegrafana/grafana:6.1.6Grafana 映像

3.10 跨域策略(akka-http-cors)

参数默认值说明
allow-generic-http-requestsyes允许通用 HTTP 请求
allow-credentialsyes允许携带凭据
allowed-origins*允许任意来源
allowed-headers*允许任意请求头
allowed-methods["GET", "POST", "HEAD", "OPTIONS"]允许的 HTTP 方法
exposed-headers[]暴露的响应头
max-age1800 seconds预检结果缓存时长

四、JVM 与运行参数

standalone 为 Java 服务,运行期 JVM 参数通过 JAVA_TOOL_OPTIONS 注入(实测环境必备两项):

JAVA_TOOL_OPTIONS="-Djava.io.tmpdir=/opt/tmp -Xms256m -Xmx512m"
java -jar /opt/OpenWhisk-2.0.0/bin/openwhisk-standalone.jar
参数推荐值说明
-Djava.io.tmpdir/opt/tmp规避 tmpfs 下 Scala 编译/运行期 JNA mmap 失败
-Xms256mJVM 初始堆内存
-Xmx512mJVM 最大堆内存(遵循 256–512MB 限制规范)

五、配置修改与生效

  1. 编辑 core/standalone/src/main/resources/standalone.conf;
  2. 重新构建:
cd /opt/OpenWhisk-2.0.0
JAVA_TOOL_OPTIONS="-Djava.io.tmpdir=/opt/tmp" gradle :core:standalone:build --no-daemon

回显(节选):

BUILD SUCCESSFUL in 22s
32 actionable tasks: 6 executed, 26 up-to-date
  1. 重启服务并确认生效:
wsk property get --all
whisk API host          http://172.18.0.1:3233
whisk API build number  standalone

通过 Compose 部署时,环境变量类参数(如 JAVA_TOOL_OPTIONS)可在编排文件的 environment 段配置;配置文件类参数仍需先构建进 jar(见同专栏 Compose 部署指南)。

六、注意事项

  • 2.0.0 发布版必须补充 whisk.spi 的 InvokerProvider 与 InvokerServerProvider,否则启动失败(Key not found: 'etcd')。
  • 网络受限环境必须设 pull-standard-images = false 并提前准备运行时映像,否则冷启动失败。
  • 单机模式为内存存储,whisk.config 中的配额为全局上限,重启后实体与统计清零。
  • 所有示例值(如 172.18.0.1)为实测环境地址,生产环境请按实际服务器 IP 替换。

七、常见问题

7.1 修改 standalone.conf 后启动仍报 Key not found: 'etcd'

原因:未重新构建 jar,或 whisk.spi 段未生效。

解决:确认在 whisk.spi 段增加 InvokerProvider 与 InvokerServerProvider 后重新执行 4.4 节构建命令并重启。

7.2 首次调用函数报 HTTP 500 / 冷启动失败

原因:pull-standard-images = true 时冷启动尝试从公网拉取标准运行时映像。

解决:改为 false,提前导入所需运行时映像(如 openwhisk/action-nodejs-v20:1.22.0)。

7.3 wsk api create 报资源不存在

原因:单机模式未启用 API 网关组件。

解决:standalone 模式不支持 wsk api 系列命令,属预期现象;如需 API 网关请启用 standalone.api-gateway 组件并按官方多节点部署文档操作。

7.4 修改用户凭据后 wsk 无法访问

原因:wsk 仍使用旧 --auth。

解决:wsk property set --auth <新凭据> 后重试。

八、参考链接