OpenFaas を Kubernetes 上にデプロイする。
Docker をインストールする
Docker インストール
1 | sudo apt-get update |
Docker を一般ユーザー権限で使用できるように設定する
1 | sudo usermod -g docker foo |
faas-cli をインストールする
確認
1 | curl -sLSf https://cli.openfaas.com | sudo sh |
確認
1 | faas-cli version |
Minikube をインストールする
1 | curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb |
確認
1 | minikube version |
Minikube を起動する
起動前の状態を確認する
1 | minikube status |
起動
1 | minikube start --vm-driver=docker |
状態確認
1 | minikube status |
kubectl をインストールする
インストール
1 | curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" |
OpenFaaS をデプロイする
定義ファイルをクローンする
1 | git clone https://github.com/openfaas/faas-netes |
secrets を作成する
1 | kubectl -n openfaas create secret generic basic-auth \ |
作成した secrets は kubectl edit secret –namespace=openfaas で確認できる。
デプロイする
1 | kubectl apply -f ./yaml/ |
確認
1 | kubectl -n openfaas get deploy |
1 | kubectl -n openfaas get svc |
1 | kubectl get svc -n openfaas gateway-external -o wide |
アクセス先の Kubernetes の IP アドレスを確認する。
1 | minikube ip |
DNAT を設定する
minikube を起動しているホストの IPアドレス のTCP:80へのアクセスを minikube(192.168.49.2) の TCP:31112 に転送する。
1 | sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.49.2:31112 |
管理画面を開く
http://MACHINE-IP/ui/ にアクセスする。
Function (nslookup) をデプロイする
確認
ログを確認すると、以下の順で Function がデプロイされることがわかる。
- Function の ReplicaSet が作成される
- コンテナイメージが pull される
- コンテナが作成される
- コンテナが起動する
1 | kubectl get events -n openfaas-fn --sort-by=.metadata.creationTimestamp | grep nslookup |
実際に、Function がデプロイされていることを確認する。
1 | kubectl -n openfaas-fn get deploy |
CLI
OpenFaas にログインする
1 | faas-cli login -u ken -p passwordedi --gateway 192.168.49.2:31112 |
Function をデプロイする
1 | faas-cli store deploy nslookup --gateway 192.168.49.2:31112 |
デプロイされている Function を確認する
Function を確認する。
1 | faas-cli list --gateway 192.168.49.2:31112 |
Function を利用する
1 | curl -X POST http://192.168.49.2:31112/function/nslookup -d "www.yahoo.co.jp" |
デプロイされた Fucntion を削除する
1 | faas-cli remove nslookup --gateway 192.168.49.2:31112 |
エラー
マルチ CPU ではない
エラー内容
1 | minikube start --vm-driver=docker |
対応
マルチ CPU 環境で実行する
メモリーが足りない
エラー内容
1 | minikube start --vm-driver=docker |
対応
メモリーを増やす