このワークショップではOpenFaaSの使い方(functionのビルドからデプロイまで)を自分のペースで学んでいくことができます。
このワークショップではまずローカルの開発環境にDocker for MacあるいはWindowsを使ってOpenFaaSをデプロイします。その次にPythonで作ったServerless functionをビルド、デプロイして実際に実行します。ここで扱うトピックとしては、pipを使った依存パッケージの管理、シークレットでAPIトークンを扱う方法、Prometheusでfunctionを監視、非同期に複数のfunctionを実行してアプリケーションを作る方法です。最後にIFTTT.comのイベントストリームに繋ぎます。これによってボットや自動返信機能、ソーシャルメディアやIoT機器との連携が可能になります。
ここに記載している内容は Lab 1 で詳しく説明しますが、インストラクターが指導するワークショップに参加される場合はあらかじめ準備しておいてください。
- ワークショップで作成するfunctionはPythonで書きます。よって、プログラミングやスクリプト経験があることが推奨されます。
- VSCode のようなエディタをインストールしてください。
- Windowsであれば Git Bash をインストールしてください。
- 推奨OS:MacOS、Windows 10 Pro/Enterprise、Ubuntu Linux
Docker:
注: もし上記の環境が準備できない場合は代替手段としては https://labs.play-with-docker.com/ で動作確認することができます。
インストラクターが指導するワークショップではOpenFaaSのSlackへの招待リンクが共有されます。Slackの指定されたチャンネルをワークショップでのディスカッションや質問、提案などに活用してください。
- 必要なものをインストール
- Docker Hubのアカウントについて
- OpenFaaS CLI
- OpenFaaSをデプロイ
- UIを使ってみよう
- Function Storeからデプロイ
- OpenFaaSのCLIについて
- Prometheusのメトリクスについて
- 新規functionの生成またはscaffold(スキャフォールド)について
- astronaut-finder function(宇宙飛行士検索 function)を作ろう
- 依存パッケージを
pip
で追加しよう - トラブルシュート:コンテナのログを探そう
- 依存パッケージを
- トラブルシュート:
write_debug
を使ってデバッグしてみよう - サードパーティ製のテンプレートを使ってみよう
- 環境変数で任意の値を注入
- deploy時のyamlで指定
- クエリ文字列やヘッダなどのHTTPコンテキストで動的に指定
- ログの活用方法
- ワークフローを作ってみよう
- クライアント側でfunctionを連鎖させよう
- function内で別のfunctionを呼び出してみよう
issue-bot
というGithubのIssueに自動返信するボットを作ります
- GitHubのアカウントを取得
- ngrokでトンネルを作る
- webhookを受け取れる
issue-bot
を作る - Sentiment Analysis functionのデプロイ
- GitHub APIを使ってラベルを適用する方法
- functionの仕上げ
- 簡単なHTMLをfunctionから返す
- HTMLファイルを読み込んで返すfunction
- 他のfunctionとの組み合わせ
- 非同期 vs 同期 function
- queue-worker のログを見てみよう
- requestbinやngrokで
X-Callback-Url
を活用してみよう
read_timeout
でタイムアウトを調整しよう- 動作時間の長いfunctionに適応しよう
オートスケールを実際に発火させよう
- レプリカの最小数、最大数について
- Prometheusでの確認
- Prometheusのクエリを確認
- functionをcurlで繰り返し呼び出す
- オートスケールを監視
- issue-botでsecretを使うようにしよう
- のsecretを作ろう
- functionからsecretにアクセスしよう
Lab 1 から順番に進めていくことができます。
OpenFaaSが必要なくなった場合に、削除する方法は こちら にまとめてあります。
インストラクターが指導するワークショップであればここからQ&Aの時間とし、他にもさらなる応用トピックについて話しましょう。
- functionのオートスケール
- セキュリティについて
- TLS / Basic認証
- オブジェクトストレージ
- テンプレートのカスタマイズ方法
他にも appendix の追加情報も合わせて参考にしてください。
このワークショップの作成やテストに協力していただけた @iyovcheva, @BurtonR, @johnmccabe, @laurentgrangeau, @stefanprodan, @kenfdev, @templum, rgee0 に心より感謝します。