Skip to content

Latest commit

 

History

History
78 lines (57 loc) · 3.54 KB

File metadata and controls

78 lines (57 loc) · 3.54 KB

Knative Lambda Runtimes

Knative Lambda Runtimes(KLR、クリアー)はKnative、TektonベースのOSSです。AWS Lambda互換のfunctionをKnative、TektonがインストールされたKubernetesクラスタで実行できます。

セットアップが済んだらKnariveで構築するFaaSプラットフォームの事例としてプラットフォーム利用者観点で見ていきましょう。

KLRはtmというコマンドで操作します。つぎのコマンドを実行してtmをインストールしてください。

$ go get github.com/triggermesh/tm

つぎにKLRがGoのLambda functionをビルドするためのTaskを利用できるようにします。つぎのコマンドを実行してください。

$ 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
# Registry: gcr.io/<your-project-id> ご自身のGCPプロジェクトIDに置き換えてください
# Username: oauth2accesstoken
# Password: <gcloud auth print-access-tokenを実行して得られる値>

いよいよfuncionをデプロイします。つぎのファイルをklrというフォルダの下にmain.goという名前で保存し、tmコマンドを実行してデプロイしてください。

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)
}
$ tm deploy service go-lambda -f ./klr --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が実行されるのを確認してください。

# export IP_ADDRESS=$(kubectl get svc istio-ingressgateway --namespace istio-system --output 'jsonpath={.status.loadBalancer.ingress[0].ip}')
$ curl -H "Host: go-lambda.default.example.com" http://$IP_ADDRESS --data '{"Name": "Foo"}'

参考

戻る | 次へ