Slide 1

Slide 1 text

Cloud Run で シェルスクリプトを動かす 株式会社アカツキ @sachaos

Slide 2

Slide 2 text

自己紹介 @sachaos 株式会社アカツキにてサーバーサイドエンジニア Go, GCPとか好き

Slide 3

Slide 3 text

Cloud Run とはなにか? ● コンテナをサーバーレスで動かす Google Cloud Platform のサービス ● Cloud Run は マネージドの Cloud Run と Cloud Run on GKE がある ○ 今日話すのは マネージドの Cloud Run だけ! ● 現在 Beta バージョン ● US リージョンのみ提供 ● サーバーレス ○ 使った分だけ費用が発生する ○ オートスケールする ○ 0 までスケールする ○ つまり、全く使わなければ無料

Slide 4

Slide 4 text

Demo ● Hello World するサーバーをデプロイしてみる gcloud beta run deploy hello \ --image gcr.io/google-samples/hello-app:2.0 \ --region us-central1 \ --allow-unauthenticated

Slide 5

Slide 5 text

Cloud Run ● Kubernetes 上でサーバーレス環境を構築する Knative というOSSをベースに作られている ● PORT環境変数で指定されたポートでサーブする HTTPサーバのコンテナを用意すればそれをサーバーレスで動かせる ● コンテナを用意すればどんな言語で書かれたコード、バイナリでも動かすことができ る

Slide 6

Slide 6 text

Cloud Run で シェルスクリプト動かせたら 便利そうじゃない?

Slide 7

Slide 7 text

Cloud Run でシェルスクリプトを実行する ● HTTP リクエストを受けたら 事前に渡されたシェルスクリプトを実行するようなものを雑に作ってみた ● https://github.com/sachaos/cloud-exec

Slide 8

Slide 8 text

Cloud Exec cloud-exec ./echo.sh localhost:8080 ./echo.sh

Slide 9

Slide 9 text

GitHub の星の取得数を Slack に通知する 1. シェルスクリプトを書く a. https://github.com/yyx990803/starz の結果をごにょごにょして Slack Webhook に POST 2. 使用するコマンドなど、依存をコンテナに詰める 3. Cloud Run にデプロイする 4. 定期的に叩くようにする こういうのをSlackに定期的に投げたい →

Slide 10

Slide 10 text

1. シェルスクリプトを書く

Slide 11

Slide 11 text

2. 依存をコンテナに詰める

Slide 12

Slide 12 text

3. Cloud Run にデプロイ

Slide 13

Slide 13 text

できた

Slide 14

Slide 14 text

4. 定期的に叩くようにする ● Cloud Scheduler という GCP のマネージド cron サービスを使う ● 指定した時間に特定の HTTP リクエストを発行することが可能

Slide 15

Slide 15 text

まとめ ● Cloud Run は簡単にデプロイして公開できるしオートスケールするし最高 ● Cloud Run でシェルスクリプトを走らせる cloud-exec を紹介しました ● 安易バッチサーバとして 雑にスクリプトを走らせるようなことを行いました ● 色々応用できそう ○ 紹介したようにコマンドで得られる情報を定期的に Slackにポストしたり ○ 負荷試験するコンテナを整えて雑に大規模負荷試験をしたり

Slide 16

Slide 16 text

以上、ありがとうございました