More Related Content Similar to Docker Actionを利用してOpenWhiskをあれこれする (20) More from Hideaki Tokida (20) Docker Actionを利用してOpenWhiskをあれこれする7. FaaSとしての特徴
✓Function
✓利⽤できる⾔語:JavaScript, Python , PHP, Docker ( Java, Go )
✓呼び出し⽅法:SDK, HTTP Request, REST API
✓作成されたFunctionをつなぎ合わせる、Chain機能
✓イベント駆動
✓Bluemixの幾つかのサービスと密結合された動作をサポート(Cloudant, IoTP, Message
Hub, Alert 等)
✓OSS版においてもイベント駆動型の仕組みを作る事が可能
8. OpenWhiskはDockerで出来ている
✓インフラとしてのOpenWhiskを⾒てみると、その内容は Platform as a
Serviceそのものの構成をしています。https://console.bluemix.net/docs/
openwhisk/openwhisk_about.html#cloud-functions-
✓OpenWhiskが「Function」を動かすためには、Dockerコンテナを利⽤し
ています。実⾏(Invoker)⽤のコンテナ上に各⾔語を動作させる仕組みが
組み込まれています。
✓そしてPaaSと違いFunction単位で動くために起動⽅法が⼯夫されていま
す(ワームスタート・コールドスタート)
16. ゼロから作る
✓ 所定のルールを守って作る
✓/init と /run をパスに持つ Webアプリケーションを作る
✓ /run の内容が実⾏される
✓Node.jsの場合には app.post('/run', function (req, res) な感
じで定義して json形式で応答を戻す
21. ✓docker build -t tokida/flaskaction .
✓docker push tokida/flaskaction
✓wsk action create demo/flaskAction --docker tokida/flaskaction
✓wsk action invoke demo/flaskAction -r -b
25. {
"name": "openwhisk-docker-node",
"version": "1.0.0",
"main": "app.js",
"dependencies": {
"express": "^4.11.2",
"body-parser": "^1.11.0"
},
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {},
"description": ""
}
package,json
27. ✓bx cr login
✓npm install
✓docker build -t tokida/nodeaction .
✓docker push tokida/nodeaction
✓wsk action create --docker demo/nodeAction tokida/nodeaction
✓wsk action invoke -r -b demo/nodeAction ̶param payload tokida
29. 作ったパッケージは公開しよう
✓wsk package update custom --shared yes
✓wsk package get demo publish
✓別のアカウントのユーザで実⾏することが出来ます。
✓bx wsk action invoke -r -b /solct3_demo/demo/flaskAction
✓ちなみに、実⾏するのは「実⾏ユーザのアカウント」で⾏わますので上記のPackageへガンガ
ンアクセスが来ても作成者はコスト負担はありません。
31. {
"swagger": "2.0",
"basePath": "/api",
"info": {
"title": "node",
"version": "1.0"
},
"paths": {
"/hello": {
"get": {
"operationId": "getHello",
"responses": {
"200": {
"description": "A successful invocation response"
}
},
"x-openwhisk": {
"action": "nodeAction",
"namespace": "solct3_demo",
"package": "demo",
"url": "https://openwhisk.ng.bluemix.net/api/v1/web/solct3_demo/demo/nodeAction.json"
}
}
}
},
"x-ibm-configuration": {
(中略)
"cors": {
"enabled": true
}
}
}
APIを設定するためのSwaggerファイル
36. 参考⽂献
✓Creating and invoking OpenWhisk actions
‣https://github.com/apache/incubator-openwhisk/blob/master/docs/
actions.md#creating-docker-actions
✓Creating Docker Actions with OpenWhisk
‣http://heidloff.net/article/how-to-create-docker-actions-openwhisk-bluemix
✓Understanding and using Docker actions in IBM Bluemix OpenWhisk
‣https://www.ibm.com/blogs/bluemix/2017/01/docker-bluemix-openwhisk/
✓James Thomas
‣http://jamesthom.as
✓Node.js, Pythonなどで初期導⼊されているライブラリ
‣https://console.bluemix.net/docs/openwhisk/openwhisk_reference.html#openwhisk_reference