内容


OpenWhisk:快速技术预览

Comments

简介

OpenWhisk 是一个云优先的、分布式的、基于事件的编程服务。它提供了一个编程模型,可将事件处理程序上传到云服务并注册该处理程序来响应各种事件。

下图显示了 OpenWhisk 模型。触发器从云来源连接到 Whisk 服务器。事件是基于 Whisk 运行时所采用的规则来处理的,该运行时会调用适当的服务来响应调用方,并将结果发送回调用方。

Figure xxx. Requires a heading
Figure xxx. Requires a heading

在本文中,我将介绍如何安装 Whisk,查看它附带的一些示例。我还将提供使用受 VirtualBox 管理程序支持的 Vagrant 虚拟机在 Windows 上运行 Whisk 的一些技巧。

OpenWhisk 已在 Ubuntu Linux 和 Mac OS/X 上进行了全面测试。目前不支持在 Windows 上原生运行 OpenWhisk,但可以在 Windows 上的虚拟化环境中运行它。无论采用何种操作系统,都必须构建 OpenWhisk 并将它部署到目标环境上。

安装 OpenWhisk

如果您在 Ubuntu 以外的地方运行,而且系统上没有安装 VirtualBox 和 Vagrant,请立即安装它们。

安装 Virtualbox 和 Vagrant 后,请完成以下步骤:

备注:如果您已在 Ubuntu 上运行,则跳到第 2 步。

设置虚拟机

OpenWhisk 团队提供了在 VirtualBox 上安装 Vagrant 虚拟机的操作说明。从 OpenWhisk 存储库中下载 VagrantFile,使用它配置虚拟机,运行构建,并部署一个 Ant 脚本来安装和配置 OpenWhisk。

md ow
cd ow

使用 wget 或 Windows 的 powershell 命令 Invoke-WebRequest (alias iwr) 下载文件 VagrantFile。

如果使用 powershell 的 iwr 命令,请在 powershell 命令行上发出以下命令:

iwr https://raw.githubusercontent.com/openwhisk/openwhisk/master/tools/vagrant/Vagrantfile
 -OutFile VagrantFile

如果使用 wget,只需发出以下命令:

wget https://raw.githubusercontent.com/openwhisk/openwhisk/master/tools/vagrant/Vagrantfile

现在您已经下载了 VagrantFile,那么您已为配置虚拟机做好准备。请发出以下命令:

vagrant up

从网络获取包含虚拟机代码的磁盘文件(大小约为 256MB)并处理文件。VagrantFile 中的所有命令将会花费几分钟的时间。在 vagrant 配置虚拟机的过程中,屏幕上会显示一些相关信息。

您可以使用 Windows 上的 Putty、Linux 和 Mac 上的 SSH,或者使用 VirtualBox 所创建的终端来访问虚拟机。

该虚拟机的默认 IP 地址为 193.168.33.13。

用户/密码为 vagrant/vagrant。

配置系统来构建 OpenWhisk

备注:无论是在原生 Ubuntu 上还是在 Vagrant 虚拟机上运行,都请登录到您的机器。对于 Vagrant 虚拟机,主目录为 /home/vagrant;对于 Ubuntu 机器,主目录将是您的默认主目录。将这些指令引用的 /home/vagrant 替换为 $HOME 或您的主目录。

如果尚未安装 git,请立刻使用以下命令安装它:

sudo apt-get install git

设置 Cloudant 数据存储

在 Bluemix 上使用 Cloudant。请注意,您需要一个 Bluemix ID。

您将使用 Cloud Foundry 命令行工具 cf 向 Bluemix 发送合适的命令,以创建 Cloudant 备用存储。

如果尚未安装 cf,请使用以下命令安装它:

cd /usr/bin

sudo wget -O cf.tgz https://cli.run.pivotal.io/stable?release=linux64-binary&source=github 

sudo tar xvzf cf.tgz

现在使用 cf 创建一个 Cloudant 服务,您将使用该服务创建数据存储:

# Create a Cloudant service
cf create-service cloudantNoSQLDB Shared cloudant-for-whisk

# Create Cloudant service keys
cf create-service-key cloudant-for-whisk whisk

# Get Cloudant service keys
cf service-key cloudant-for-whisk whisk

最后一个命令将显示您的 Cloudant 服务的凭证。稍后,您将使用这些凭证来创建和填充 OpenWhisk 所需的表格。

备注:如果没有 Bluemix 帐户,可以直接获取一个 Cloudant 帐户。

准备构建 OpenWhisk

从 GitHub 克隆代码

cd

git clone https://github.com/openwhisk/openwhisk.git

此命令会将 OpenWhisk 代码拉入您的本地机器。接下来,将创建一个包含 Cloudant 凭证的环境文件。

创建文件 cloudant-local.env

cd openwhisk

将 Cloudant 凭证保存到该环境中。剪切以下命令,并将它们粘贴到命令行中:

export cloudant_user=`cf service-key cloudant-for-whisk whisk |
 grep username | awk -F :'{print $2}' | sed 's/[\"\, \t]//g'`
 && export cloudant_pwd=`cf service-key
 cloudant-for-whisk whisk | grep password | awk -F :'{print
 $2}' | sed 's/[\"\, \t]//g'`

通过将以下命令剪切并粘贴到命令行来创建文件 cloudant-local.env:

echo "OPEN_WHISK_DB_USERNAME=$cloudant_user">cloudant-local.env
 && echo
 "OPEN_WHISK_DB_PASSWORD=$cloudant_pwd">>cloudant-local.env

创建 Cloudant 数据存储

tools/cloudant/createImmortalDBs.sh $cloudant_user
 $cloudant_pwd

您会收到一条确认您想要创建该数据存储的确认消息。请键入以下命令:

DROPIT

您会看到文本信息,告诉您该操作正在进行。以下是一段摘录内容:

Create immortal key for guest ...
{"ok":true,"id":"guest","rev":"1-..."}
Create immortal key for whisk.system ...
{"ok":true,"id":"whisk.system","rev":"1-..."}

现在配置虚拟机来构建和部署 OpenWhisk。

cd /home/vagrant/openwhisk/tools/ubuntu-setup && source all.sh
echo 'export PATH=$HOME/openwhisk/bin:$PATH' > /home/vagrant/.bash_profile
echo 'eval \"$(register-python-argcomplete wsk)\"' >> /home/vagrant/.bash_profile

重新启动您的机器或重新启动虚拟机。

对于虚拟机,请发出以下命令:

vagrant reload

重要备注:vagrant reload 是重新启动系统的规定方式;否则您可能丢失一些重要数据。

构建 OpenWhisk 并将它部署在 Vagrant 虚拟机上

重新启动后,登录到虚拟机或您的 Ubuntu 机器。

cd openwhisk
ant clean build deploy

备注:第一次构建将会花费一些时间,因为要从互联网获取大量依赖项。这一步的持续时间取决于您的网速。完成部署后,多个 Docker 容器将会在您的虚拟机中运行。

因为第一次构建花费了太长的时间,所以,在发生出现网络卡顿或其他中断时,一些步骤常常失败。如果出现这种情况,您可能会看到一条 Build FAILED 消息,暗示 Docker 操作超时了。您可以尝试再次构建,这次多半会在失败的地方继续运行。您应该只在第一次构建 Whisk 时才会遇到这个问题——由于具有 Docker 缓存,后续构建执行的网络活动要少得多。

备注:在执行构建或部署时,确保您是从 $HOME/openwhisk 目录发出命令的。

测试 OpenWhisk 设置

尝试您的第一个 HelloWorld OpenWhisk 程序。

#do this once.Set the authorization so you don't have to do it each time you issue a wsk command
wsk property set --auth $(cat $HOME/openwhisk/config/keys/auth.guest)

#run your helloworld application
wsk action invoke /whisk.system/samples/echo -p message hello --blocking --result

系统的响应应为:

{
 "message":"hello"
}

了解更多信息

本文是帮助您开始使用 OpenWhisk 的快速预览,当然,您是刚开始入门。还有许多信息可帮助您深入研究 OpenWhisk 开发。

有关的更多入门信息,以及可运行的更多示例,请参阅 OpenWhisk 入门文档。

有关概念信息、架构、博客和其他资源,请参阅 IBM Bluemix OpenWhisk 开发人员中心。

如果您对这里介绍的内容有任何疑问,您可以在文章下面发表评论。期待聆听您对 OpenWhisk 的体验。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, Open source
ArticleID=1034181
ArticleTitle=OpenWhisk:快速技术预览
publish-date=06272016