More Related Content
Similar to Knative Lambda Runtimeを試してみた (20)
More from Hideaki Aoyagi (16)
Knative Lambda Runtimeを試してみた
- 3. Knative Lambda Runtime (KLR)
くりあ~
Knative 上で Lambda 互換 の関数実行環境を実現
TriggerMesh 社が開発、今年1月に OSS として公開
https://github.com/triggermesh/knative-lambda-runtime/
https://triggermesh.com/serverless_management_platform/knative-lambda-runtimes/
TriggerMesh社:
Kubernetes や Knative を用いた
マルチクラウドなサーバーレス管理プラットフォームをサービスとして提供
- 4. 前回のおさらい:
Knative って?
・ Google Cloud Next ‘18 で発表
・ Kubernetes をベースとしたサーバーレスプラットフォーム
・ Google、Pivotal、IBM、Red Hat、Cisco 等が開発する
OSS であり、GCP のプロダクトという訳ではない
(AKS、IKS、OpenShift、etc. 向けのインストール手順も提供)
- 6. 実際に KLR を使ってみる
[前提]
・ Kubernetes クラスタ (今回は GKE を使用)
・ Istio
・ Knative
※ KLR の 「インストール」 は不要
(Knative の 「Build」 「Serving」 の機能を使って動作)
- 7. Step 1:
用意されたビルドテンプレートを Knative 上にデプロイ
tm deploy buildtemplate
-f https://raw.githubusercontent.com/triggermesh/
knative-lambda-runtime/master/python-3.7/buildtemplate.yaml
“tm” コマンド … Knative を使い易くするための kubectl のラッパーコマンド
ビルドテンプレート … TM社が各言語毎に用意しているものを利用
(自分で作成したりする必要は無い)
ビルドテンプレートに含まれているもの:
Lambda Custome Runtime 互換の言語ランタイムや bootstrap、ビルド用の Dockerfile、など
- 8. Step 2:
関数をデプロイ
tm deploy service python-test
-f https://github.com/serverless/examples
--build-template knative-python37-runtime
--build-argument DIRECTORY=aws-python-simple-http-endpoint
--build-argument HANDLER=handler.endpoint
・ Step1 でデプロイしたビルドテンプレートを指定
・ 投入する関数: Serverless, Inc. のサンプルリポジトリで公開されている
AWS Lambda 向け Python サンプル関数を 「そのまま」 使用
- 9. 関数を呼び出す
$ curl -H "Host: python-test.default.example.com" http://11.22.33.44
{
"statusCode": 200,
"body":
"{"message": "Hello, the current time is 18:07:52.155764"}"
}
11.22.33.44 … Knative に組み込まれている Ingress Gateway (アプリケーションロードバランサ) のエンドポイント
- 10. Lambda → KLR のポータビリティ?
KLR
確かに Lamdba API 部分の書き換えは不要かもしれないが、
各リソース (S3、DynamoDB、etc.) に関するコードは大幅に書き換える必要があるのでは?
- 11. Lambda → KLR のポータビリティ?
AWS AWS GCP
KLR
AWS 内であれば 「IAM Role によるアクセス制御」 「PrivateLink」 などが利用できるが、
AWS 外からのアクセスでは 「AWS Lambda」 の恩恵を受けることができない