OpenFaaSとは
FaaS(AWS Lambdaみたいな奴)が自前のサーバーで建てられるというフレームワークです。
https://github.com/openfaas/faas
Docker Swarmかkubernetesでクラスタを構築して、それぞれのクラスタ上で作成した関数を載せたDockerコンテナを建てて動かすという感じ。kubernetesの方がスケールするらしいので大規模サービス向け。オープンソースのモニタリングツールであるPrometheusがついてたり、関数管理用のダッシュボードがついてたり割と便利です。
とりあえず使ってみる
- サーバー側
今回は個人サーバーで動かすのを想定しているのでkubernetesではなくDocker Swarm上でOpenFaaSを起動する。
大体のインストール方法は http://docs.openfaas.com/deployment/docker-swarm/ に書いてある。
- クライアント側
1, faas-cliをインストール
curl -sSL https://cli.openfaas.com | sudo sh
2, 関数の作成
faas-cli new --lang ruby FUNCTION_NAME
3, FUNCTION_NAME.ymlの書き換え
provider:
name: faas
gateway: http://サーバーのホスト名:OpenFaaSゲートウェイのポート名
functions:
FUNCTION_NAME:
lang: ruby
handler: ./FUNCTION_NAME
image: Dockerhubのユーザー名/FUNCTION_NAME:latest
docker loginしておかないとDocker Hubにプッシュ出来ないので注意。
4, Docker Imageの作成 & プッシュ
faas-cli build -f FUNCTION_NAME.yml && faas-cli push -f FUNCTION_NAME.yml
5, デプロイ
faas-cli deploy -f FUNCTION_NAME.yml
うまくいけば http://サーバーのホスト名:OpenFaaSゲートウェイのポート名/ui/ にアクセスすれば関数一覧にFUNCTION_NAMEが出てくる。