From 02059f56c169bbe36b0b74a197214a9dc8cbfffa Mon Sep 17 00:00:00 2001 From: toshi0607 Date: Fri, 18 Oct 2019 11:11:34 +0900 Subject: [PATCH] add KLR --- README.md | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/README.md b/README.md index 6c0f9ff..31b22af 100644 --- a/README.md +++ b/README.md @@ -845,3 +845,78 @@ $ kubectl delete -f https://raw.githubusercontent.com/tektoncd/catalog/master/ka * Kubenetesやクラウドとやりとりするためのコマンド * [Pipelineを含むサンプル](https://github.com/tektoncd/pipeline/blob/master/docs/tutorial.md#pipeline) +## Knative Lambda Runtimes + +[Knative Lambda Runtimes](https://github.com/triggermesh/knative-lambda-runtime)(KLR、クリアー)はKnative、TektonベースのOSSです。AWS Lambda互換のfunctionをKnative、TektonがインストールされたKubernetesクラスタで実行できます。 + +セットアップが済んだらKnariveで構築するFaaSプラットフォームの事例としてプラットフォーム利用者観点で見ていきましょう。 + +https://github.com/triggermesh/tm +https://github.com/triggermesh/knative-lambda-runtime/blob/master/go-1.x/runtime.yaml + +KLRは`tm`というコマンドで操作します。つぎのコマンドを実行して`tm`をインストールしてください。 + +```shell +$ go get github.com/triggermesh/tm +``` + +つぎにKLRがGoのLambda functionをビルドするための`Task`を利用できるようにします。つぎのコマンドを実行してください。 + +```shell +$ tm deploy task -f https://raw.githubusercontent.com/triggermesh/knative-lambda-runtime/master/go-1.x/runtime.yaml +``` + +コンテナイメージの保存はこのワークショップではGCRを利用します。GCRを利用するにあたってKubernetesの`Secret`オブジェクトの登録が必要です。つぎのコマンドを実行して登録してください。 + +``` +$ tm set registry-auth gcr-image-puller +# username: oauth2accesstoken +# password: gcloud auth print-access-tokenを実行して得られる値 +``` + +いよいよfuncionをデプロイします。つぎのファイルを`main.go`という名前で保存し、`tm`コマンドを実行してデプロイしてください。 + +```go +package main + +import ( + "fmt" + "context" + "github.com/aws/aws-lambda-go/lambda" +) + +type MyEvent struct { + Name string `json:"name"` +} + +func HandleRequest(ctx context.Context, name MyEvent) (string, error) { + return fmt.Sprintf("Hello %s!", name.Name ), nil +} + +func main() { + lambda.Start(HandleRequest) +} +``` + +```shell +$ tm deploy service go-lambda -f . --build-template knative-go-runtime --registry-secret gcr-image-puller --wait +Uploading "." to go-lambda-q7dzp-pod-7881a3 +Waiting for taskrun "go-lambda-q7dzp" ready state +Waiting for service "go-lambda" ready state +Service go-lambda URL: http://go-lambda.default.example.com +``` + +つぎのコマンドでfunctionが実行されるのを確認してください。 + +```shell +$ curl -H "Host: go-lambda.default.example.com" http://$KNATIVE_INGRESS --data '{"Name": "Foo"}' +``` + +### 参考 + +* [GCR Authentication methods](https://cloud.google.com/container-registry/docs/advanced-authentication) +* [triggermesh/tm](https://github.com/triggermesh/tm) +* [triggermesh/knative-lambda-runtime](https://github.com/triggermesh/knative-lambda-runtime) +* [triggermesh/aws-custom-runtime](https://github.com/triggermesh/aws-custom-runtime) +* [triggermesh/knative-local-registry](https://github.com/triggermesh/knative-local-registry) +