docker swarmでOpenFaaSを起動するまでやってみた
環境
- macOS: 10.13.2
- docker: 17.12.0-ce(edge)
(docker swarmを使うので、kubernetesは無効にしておく)
OpenFaaSとは
OpenFaaSはサーバレスな環境をコンテナ上に立ち上げることができるらしい
dockerやkubernetesで使うことができる
openfaas実行
公式リポジトリopenfaasから docker-compose.ymlを使用する
docker stack deploy openfaas --compose-file docker-compose.yml
Deploying stack
this node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again
docker swarm initしろと出るので
docker swarm init
してから再度実行
docker stack deploy openfaas --compose-file docker-compose.yml
Creating network openfaas_functions
...
起動確認
docker stack ls
NAME SERVICES
openfaas 13
docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
7tauwqmyfngi openfaas_alertmanager replicated 1/1 functions/alertmanager:latest
5yrsvzmtzof8 openfaas_base64 replicated 1/1 functions/alpine:latest
dqxnp6k90led openfaas_decodebase64 replicated 1/1 functions/alpine:latest
zgutt6nx5a29 openfaas_echoit replicated 1/1 functions/alpine:latest
hwxu40pb1yhp openfaas_gateway replicated 1/1 functions/gateway:0.6.15 *:8080->8080/tcp
vgkvm1j36akb openfaas_hubstats replicated 1/1 functions/hubstats:latest
ur7xnkltewia openfaas_markdown replicated 1/1 functions/markdown-render:latest
rvwzc5spx1ji openfaas_nats replicated 1/1 nats-streaming:0.6.0
o5ukfp1m87dx openfaas_nodeinfo replicated 1/1 functions/nodeinfo:latest
frehmta5wlzh openfaas_prometheus replicated 1/1 functions/prometheus:latest *:9090->9090/tcp
2sh2viw9gyh9 openfaas_queue-worker replicated 1/1 functions/queue-worker:0.4
m50lssbogwad openfaas_webhookstash replicated 1/1 functions/webhookstash:latest
y26jotv62yb7 openfaas_wordcount replicated 1/1 functions/alpine:latest
各コンテナの中身
何が立ち上がったのかみてみる
service群
- gateway
guiでopenfaasに登録する関数の管理ができる http://localhost:8080 にアクセスすると表示される
- prometheus
コンテナ監視ツール。何回関数が呼び出されたか、など可視化することができる http://localhost:9090 にアクセスすると表示される
- alertmanager
prometheusの監視メトリクスに対して、アラートの設定ができる
docker-compose.yml、alertmanagerのports部分のコメントアウトを外すことでguiを使うことができる
http://localhost:9093
docker-compose.yml(一部抜粋)
alertmanager:
image: functions/alertmanager:latest # autobuild from Dockerfile in repo.
environment:
no_proxy: "gateway"
command:
- '-config.file=/alertmanager.yml'
networks:
- functions
# Uncomment the following port mapping if you wish to expose the Prometheus
# Alertmanager UI.
ports:
- 9093:9093
- nats, queue-worker
下をみる感じ、非同期通信を実現するためのもの?
https://github.com/openfaas/nats-queue-worker
function群
- base64
テキストをbase64でエンコードして返す
curry
↓
Y3Vycnk=
- decodebase64
テキストをbase64でデコードして返す
Y3Vycnk=
↓
curry
- webhookstash
リクエストを送った時刻を返す
↓
Stashing request: 1516640331032477615.txt
- nodeinfo
動作しているnode(Host)の情報を返す
Hostname: e60ac060e700
Platform: linux
Arch: x64
CPU count: 2
Uptime: 45755
- markdown
markdownテキストをhtmlにして返す
# curry
↓
<h1>curry</h1>
- hubstats
指定したuser or organisationのdocker hubの情報を返す
google
↓
The organisation or user google has 35 repositories on the Docker hub.
- wordcount
文字数カウント、各カラムはwcコマンドと同じ出力になっており テキストの行数、単語数、バイト数を表す
curry
↓
0 1 5
- echoit
echoサーバ
curry
↓
curry