Skip to content

Commit

Permalink
add pubsub chart
Browse files Browse the repository at this point in the history
  • Loading branch information
toshi0607 committed Oct 21, 2019
1 parent 2ff2bca commit af212ee
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 20 deletions.
Binary file added images/pubsub.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 22 additions & 14 deletions step1.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ Servingの責務はオートスケールアップ・ダウン、トラフィッ
つぎの図をイメージしながら進めてください。

![](./images/serving.png)
https://github.com/knative/docs/tree/master/docs/serving


## Hello World

まずはTARGET環境変数にセットした文字を使ってHello worldするアプリケーションをKnativeのServiceとしてデプロイします。

Cloud Shellでワークスペースを作成し、つぎのマニフェストを`service.yaml`という名前で保存してください。

```
```shell
$ mkdir knative-workshop
$ cd knative-workshop
$ touch service.yaml
Expand All @@ -44,7 +46,7 @@ spec:
つぎのコマンドでマニフェストを適用してください。
```
```shell
# マニフェストファイルの適用
$ kubectl apply -f service.yaml
service.serving.knative.dev/helloworld created
Expand All @@ -57,7 +59,7 @@ $ kubectl get ksvc,configuration,route

アプリケーションにアクセスしてみてください。

```
```shell
# IPアドレスの取得
$ export IP_ADDRESS=$(kubectl get svc istio-ingressgateway --namespace istio-system --output 'jsonpath={.status.loadBalancer.ingress[0].ip}')

Expand All @@ -68,7 +70,7 @@ Hello Knative serving!

KnativeのKubernetesオブジェクトだけでなく、組み込みのKubernetesオブジェクトも動いているのが確認できます。

```
```shell
$ kubectl get pod,replicaset,deployment,service
```

Expand All @@ -82,7 +84,7 @@ Service、Deployment、ReplicaSet、Podオブジェクトが作成されてい

確認ができたらいったん登録したKnativeのServiceを削除してください。

```
```shell
$ kubectl delete -f service.yaml
```

Expand Down Expand Up @@ -143,7 +145,7 @@ spec:

つぎのコマンドでマニフェストを適用してください。

```
```shell
# マニフェストファイルの適用
$ kubectl apply -f autoscale-go.yaml
service.serving.knative.dev/autoscale-go created
Expand All @@ -154,7 +156,7 @@ $ kubectl get ksvc,configuration,route

heyコマンドを利用して負荷をかけてみてください。

```
```shell
# 30秒間50並列リクエスト
$ hey -z 30s -c 50 \
-host "autoscale-go.default.example.com" \
Expand All @@ -164,7 +166,7 @@ $ hey -z 30s -c 50 \

オートスケールの様子を[Grafana](https://grafana.com/)を使って確認してみましょう。

```
```shell
$ kubectl port-forward --namespace knative-monitoring $(kubectl get pods --namespace knative-monitoring --selector=app=grafana --output=jsonpath="{.items..metadata.name}") 8080:3000
```

Expand All @@ -178,7 +180,7 @@ $ kubectl port-forward --namespace knative-monitoring $(kubectl get pods --names

確認ができたらいったん登録したKnativeのServiceを削除してください。

```
```shell
$ kubectl delete -f autoscale-go.yaml
```

Expand Down Expand Up @@ -263,7 +265,7 @@ $ kubectl apply --filename blue-green-route.yaml

アクセスしてみると、何度リクエストしても`Hello blue!`が出力されすはずです。

```
```shell
$ curl -H "Host: blue-green-demo.default.example.com" http://${IP_ADDRESS}
Hello blue!
```
Expand Down Expand Up @@ -343,7 +345,7 @@ Hello blue!

しかし、tagをつけたことでテスト用のエンドポイントが払い出され、動作確認できるようになりました。

```
```shell
$ curl -H "Host: v2-blue-green-demo.default.example.com" http://${IP_ADDRESS}
Hello green!
```
Expand All @@ -369,15 +371,15 @@ spec:
変更後に適用してください。
```
```shell
$ kubectl apply --filename blue-green-route.yaml
```

greenとblueに50%ずつトラフィックが流れます。何度かアクセスして確認してみてください。

![](./images/revision_green_50.png)

```
```shell
$ curl -H "Host: blue-green-demo.default.example.com" http://${IP_ADDRESS}
Hello blue!
```
Expand Down Expand Up @@ -408,6 +410,7 @@ Eventingの責務はイベントのバインディングとデリバリーです
つぎの図をイメージしながら進めてください。

![](./images/eventing.png)
https://medium.com/knative/announcing-knative-v0-5-release-cfe646ca8e30

## Hello World

Expand Down Expand Up @@ -483,6 +486,11 @@ $ kubectl delete --filename cronjob-source.yaml

今度は[Cloud Pub/Sub](https://cloud.google.com/pubsub/)のイベントを処理してみましょう。

Cloud Pub/Subに登場する概念と、それをいかに抽象化しているかをイメージしながら追うと理解しやすいかもしれません。

![](./images/pubsub.png)
https://cloud.google.com/pubsub/docs/overview

まずGCP Cloud Pub/Subをイベントソースとするためにつぎのコマンドを実行してください。

```shell
Expand Down Expand Up @@ -564,7 +572,7 @@ $ kubectl get pullsubscription -w

PubSubのトピックにイベントを発行してください。メッセージはなんでも大丈夫です。

```
```shell
$ gcloud pubsub topics publish testing --message="Hello PubSub"
```

Expand Down
4 changes: 3 additions & 1 deletion step2.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ $ tm deploy task -f https://raw.githubusercontent.com/triggermesh/knative-lambda

コンテナイメージの保存はこのワークショップではGCRを利用します。GCRを利用するにあたってKubernetesの`Secret`オブジェクトの登録が必要です。つぎのコマンドを実行して一時的なアクセストークンを発行し、登録してください。

```
```shell
$ tm set registry-auth gcr-image-puller
# Registry: gcr.io/<your-project-id> ご自身のGCPプロジェクトIDに置き換えてください
# Username: oauth2accesstoken
Expand Down Expand Up @@ -72,5 +72,7 @@ $ curl -H "Host: go-lambda.default.example.com" http://$IP_ADDRESS --data '{"Nam
* [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)
* KLRのアーキテクチャーとCustom AWS Lambda Runtimes
* [「Knativeで実現するKubernetes上のサーバーレスアーキテクチャ」の文字起こし #CNTD2019: ユースケース⑥ FaaS イベントpull型](https://qiita.com/toshi0607/items/6dbdff717e1ba0aba4f6#%E3%83%A6%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%82%B9faas%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88pull%E5%9E%8B)

[戻る](step1.md) | [次へ](step3.md)
2 changes: 1 addition & 1 deletion step3.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ $ tm deploy service go-function -f ./faas --build-template faas-go-runtime --reg

つぎのコマンドを実行して動作を確認してください。

```
```shell
$ curl -H "Host: go-function.default.example.com" http://$IP_ADDRESS --data '{"Name": "Foo"}'
```

Expand Down
8 changes: 4 additions & 4 deletions step4.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

早速Cloud Runをセットアップし、ServingのHello WorldワークショップでGCRにプッシュしたコンテナを実行してみましょう。

```
```shell
# Cloud Run APIの有効化
$ gcloud services enable run.googleapis.com

Expand All @@ -31,7 +31,7 @@ Service [helloworld-go] revision [helloworld-go-xxxxx] has been deployed and is

リクエストしてみましょう。

```
```shell
# 発行されたURLで置き換えてください
$ export HELLO_WORLD_GO_URL=https://helloworld-go-<your hello world go URL>-an.a.run.app
$ curl $HELLO_WORLD_GO_URL
Expand All @@ -40,15 +40,15 @@ Hello World!

環境変数をセットしてリクエストし直してみましょう。

```
```shell
$ gcloud beta run services update helloworld-go --update-env-vars TARGET="Cloud Run!"
$ curl $HELLO_WORLD_GO_URL
Hello Cloud Run!
```

`hey`を利用して少し負荷をかけてからメトリクスを確認してみましょう。

```
```shell
# 10秒間5並列でリクエスト
$ hey -z 10s -c 5 $HELLO_WORLD_GO_URL
```
Expand Down
2 changes: 2 additions & 0 deletions step5.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@
* [Knativeの歩き方 KubernetesからServerlessを訪ねて 第2版](https://booth.pm/ja/items/1309468)
* Knative Tutorial
* https://github.com/meteatamel/knative-tutorial
* Kanative Eventingベースのプロダクト
* [EveryBridge](https://triggermesh.com/serverless_management_platform/everybridge/)

[戻る](step4.md) | [トップへ](README.md)

0 comments on commit af212ee

Please sign in to comment.