Build your first serverless applicaon on Apache …...Self Introduc.on • Ying Chun Guo...
Transcript of Build your first serverless applicaon on Apache …...Self Introduc.on • Ying Chun Guo...
-
Buildyourfirstserverlessapplica2ononApacheOpenWhisk
1
YingChunGuo(Daisy)[email protected]
-
SelfIntroduc.on
• YingChunGuo“Daisy”• IBMseniorsoIwareengineer• 9yearsexperienceinopensourcecommuni2es,i.e.OpenOfficeandOpenStack• Ini2atorofOpenStackI18nteam,thefirstPTL• ApacheOpenWhiskcommiUer
2
ContactwithmewithWeChat
-
• SetupyourownOpenWhiskenvironment• BasicOpenWhiskprogrammingmodel• AdvancedOpenWhiskprogrammingmodel• Demo• Summary
3
Agenda
-
• QuickstartusingVagrant*• Na2vedevelopment*
• Mac• Ubuntu
• DeployingdistributedOpenWhiskusingAnsible• hUps://github.com/apache/incubator-openwhisk/blob/master/ansible/README_DISTRIBUTED.md
• DeployingOpenWhiskonKubernetes• hUps://github.com/apache/incubator-openwhisk-deploy-kube
4
SetupyourownOpenWhiskenv
-
• SupportedOS:MacOSXElCapitan,Ubuntu14.04.3LTSandWindows.• Requirements
• VirtualBox5.1.22• Vagrant1.9.5
• Commands:• gitclone--depth=1hUps://github.com/apache/incubator-openwhisk.gitopenwhisk• cdopenwhisk/tools/vagrant• ./hello
5
SetupyourownOpenWhiskenv:QuickstartusingVagrant
-
• SupportedOS:Ubuntu14.04.3LTS,Mac• Requirements
• VirtualBox5.1.22• Vagrant1.9.5
• Commands:• #1InstallallrequiredsoIware
• gitclone--depth=1hUps://github.com/apache/incubator-openwhisk.gitopenwhisk• cdopenwhisk/tools/ubuntu-setup• ./all.sh
• #2Configadatastore:CouchDB/Cloudant• #3./gradlewdistDocker
6
SetupyourownOpenWhiskenv:Na.vedevelopment
hUps://github.com/apache/incubator-openwhisk/blob/master/tools/ubuntu-setup/README.mdhUps://developer.ibm.com/code/2016/05/23/setup-openwhisk-use-local-couchdb/
-
• RegisteranaccountonhUps://console.ng.bluemix.net• DownloadOpenWhiskCLI:https://openwhisk.ng.bluemix.net/cli/go/download/
• ConfigOpenWhisknamespaceandauthoriza2onkeywskpropertyset--apihostopenwhisk.ng.bluemix.net–authxxxx-xxxx-xxxx-xxxx
7
SetupyourownOpenWhiskenv:UsingIBMCloudPlaEorm
-
• Ac2on• Trigger• Rule• Package
8
BasicOpenWhiskprogrammingmodel
-
9
OpenWhiskProgrammingModel
-
10
Ac.on
hUps://github.com/openwhisk/openwhisk/blob/master/docs/ac2ons.md
-
11
Ac.on
-
12
Ac.on
wskac2oncreate--dockerACTION_NAMEDOCKER_IMAGE_NAME
-
13
Ac.on
wskac2oncreatemy_seq--sequenceACTION_NAME1,ACTION_NAME2
-
• 列列出当前已有的ac2onwskac2onlist• 创建ac2onwskac2oncreateACTION_NAMEACTION例例:wskac2oncreatehandlerhandler.js• 调⽤用ac2onwskac2oninvoke-rACTION_NAME例例:wskac2oninvoke–rhandler• 删除ac2onwskac2ondeleteACTION_NAME
14
Commoncommands
-
15
Trigger
hUps://github.com/openwhisk/openwhisk/blob/master/docs/triggers_rules.md
-
• 列列出已有的triggerwsktriggerlist• 创建triggerwsktriggercreateTRIGGER_NAME[flags]例例:wsktriggercreatemy_event• 触发triggerwsktriggerfireTRIGGER_NAME[PAYLOAD][flags]例例:wsktriggerfiremy_event• 删除triggerwsktriggerdeleteTRIGGER_NAME
16
Commoncommands
-
17
Rule
hUps://github.com/openwhisk/openwhisk/blob/master/docs/triggers_rules.md
-
• 列列出已有的rulewskrulelist• 创建rulewskrulecreateRULE_NAMETRIGGER_NAMEACTION_NAME[flags]例例:wskrulecreatemy_rulemy_eventhandler• 打开监控wskac2va2onpoll• 触发triggerwsktriggerfiremy_event例例:wsktriggerfiremy_event• 查看结果wskac2va2onresultACTIVATION_ID• 删除rulewskruledeleteRULE_NAME 18
Commoncommands
-
19
Package
hUps://github.com/openwhisk/openwhisk/blob/master/docs/packages.md
-
• 列列出已有的包wskpackagelist[NAMESPACE][flags]列列出缺省名字空间下⾯面的包:wskpackagelist列列出系统名字空间下⾯面的包:wskpackagelist/whisk.system• 察看某⼀一个包的内容wskpackagegetPACKAGE_NAME[FIELD_FILTER][flags]例例如:wskpackageget--summary/whisk.system/watson-textToSpeech
20
Commoncommands
-
• Feed• WebAc2on• Gateway
21
AdvancedOpenWhiskprogrammingmodel
-
22
Feed
an event producer service exposed by users in a package
hUps://github.com/openwhisk/openwhisk/blob/master/docs/feeds.md
-
• 察看系统包/whisk.system/alarmwskpackageget--summary/whisk.system/alarms• 创建⼀一个触发器器wsktriggercreateevery-20-seconds--feed/whisk.system/alarms/alarm--paramcron"*/20*****"• 在另⼀一个窗⼝口中打开监控wskac2va2onpoll• 设定规则wskrulecreateinvoke-periodicallyevery-20-secondshandler• 禁⽤用规则wskruledisableinvoke-periodically
23
Commoncommands
-
WebAc.on
An action which can be invoked using a URL without the need for credentials.
hUps://console.ng.bluemix.net/openwhisk/apimanagement
-
APIGateway
The API Gateway acts as a proxy to Web Actions and provides them with additional features including HTTP method routing , client id/secrets, rate limiting, CORS, view API usage and response logs, and define API sharing policies.
hUps://console.ng.bluemix.net/docs/openwhisk/openwhisk_apigateway.html
-
• 创建Webac2onwskac2oncreateACTION_NAMEACTION_SOURCE–webtrue • 创建APIGateway的⼀一个项⽬目wskapicreate[BASE_PATH]API_PATHAPI_VERBACTION• 列列出所有APIGateway的所有项⽬目wskapilist• 删除APIGateway的项⽬目wskapideleteBASE_PATHAPI_PATH
26
Commoncommands
-
• Demo1• Ac2on,trigger,rule,feed
• Demo2• Webac2on,APIGateway
• Demo3• Slackintegra2on• Packagebinding
27
Demo
-
28
Demo1
28
-
29
Demo2
WebAc2on
$wskpackagecreatedemo$wskac2oncreatedemo/hellohello.js--webtrue$curlhUps://openwhisk.ng.bluemix.net/api/v1/web/[email protected]_daisyguo-space/demo/hello.hUp
APIGateway
$wskbluemixlogin--user--password$wskapicreate/hello/worldget/[email protected]_daisyguo-space/demo/hello--response-typejson$curlhUps://service.us.apiconnect.ibmcloud.com/gws/apigateway/api/13e333c7ef2cf94893209dc64ebc7d295ef5/hello/world
WebAc2on
-
30
Demo3
/whisk.system/alarms/alarm
(Feed)
$wskpackagebind/whisk.system/slackmySlack--paramurl"hUps://hooks.slack.com/services/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"--paramusername"Timer"--paramchannel"general”$wskac2oninvoke/[email protected]_daisyguo-space/mySlack/post--result--paramtext"hello"$wskac2oncreatesequenceAc2on--sequence/[email protected]_daisyguo-space/handler,/[email protected]_daisyguo-space/mySlack/post$wskac2oninvoke-rsequenceAc2on$wskrulecreateslack-invoker-2melyevery-20-secondssequenceAc2on
every-20-seconds(Trigger)
Slack-invoker(Rule)
ac2onSequence(Ac2on)
handler(Ac2on)
/mySlack/post(Ac2on)
hUps://console.ng.bluemix.net/docs/openwhisk/openwhisk_slack.html#openwhisk_catalog_slack
-
• SetupyourownOpenWhiskenvironment• BasicOpenWhiskprogrammingmodel• AdvancedOpenWhiskprogrammingmodel
31
Summary
-
32
添加 IBMOpenTech 请求⼊入群
与讲师同学互动
下讲预告 6⽉月15⽇日晚8点
《使⽤用Apache OpenWhisk开发⼯工具集》
如需体验Apache OpenWhisk 请到bluemix.net注册并体验任何问题,请微信咨询
IBMOpenTech 扫码填写
本课程调查问卷