Skip to content

Commit

Permalink
add KLR
Browse files Browse the repository at this point in the history
  • Loading branch information
toshi0607 committed Oct 18, 2019
1 parent f7e6ae0 commit 02059f5
Showing 1 changed file with 75 additions and 0 deletions.
75 changes: 75 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit 02059f5

Please sign in to comment.