OpenFaaSをRubyで使ってみた


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の書き換え

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が出てくる。