build your first serverless applicaon on apache …...self introduc.on • ying chun guo...

32
Build your first serverless applica2on on Apache OpenWhisk 1 Ying Chun Guo (Daisy) [email protected]

Upload: others

Post on 26-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

  • 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 扫码填写

    本课程调查问卷