CloudRun
https://gyazo.com/45e812440908cc7bd1f7387e38f92bc7
#サーバレス
#Knative
概念
サービス
ジョブ
ドメインマッピング
リビジョン
イミュータブルなリソースなので修正はできない
インスタンス
リソースモデル  |  Cloud Run のドキュメント  |  Google Cloud
https://gyazo.com/0c45bac439f0d5652a7f90492ecf19f3
概要
knativeベースのサーバレスコンテナコンピューティング
ゼロまでスケールイン
CloudRunはコンテンをサーバレスで実行する⇔CloudFunctionsはコードをサーバレスで実行する
実行時間制限デフォルト5分最大15分
特徴
roles/run.invokerな権限を持っているユーザーのみがアクセスできるというシンプルなアクセス制御
/icons/point.iconVPCリソースじゃないのでGCP VPC配下には作成されない
2step簡単にコンテナをデプロイできる
GCRにDockerイメージをpush
Cloud Runをデプロイ
HTTPSエンドポイントが付与され、エンドポイントへのリクエストでコンテナ実行される
→バッチ処理だろうが、Flask的なHTTPサーバをコンテナ内に用意しなければならない。
cloudrunの32mb制限
NginxまではHTTP/2でアクセスし、Nginx -> appサーバー間をHTTP/1でアクセスする
https://gyazo.com/c3f6b477261ce9aaf25a14dc8befd32e
namespace
Cloud Run には Namespace のコンセプトがありません。リソースを分離する境界として Google Cloud プロジェクトが使用されます。Kubernetes から Cloud Run に移行する場合は、Namespace ごとに 1 つの Google Cloud プロジェクトを作成することをおすすめします。Namespace の値は、Cloud Run サービスの YAML で Google Cloud プロジェクト番号になります。
Kubernetes から Cloud Run に移行する  |  Cloud Run のドキュメント  |  Google Cloud
ユースケース
シンプルなWebアプリケーション
イベントドリブンで処理するようなワークロード(+ Eventarc)
短時間のバッチ処理(httpエンドポイントを作成する必要あり)
向いていないワークロード
DBやその他ストレージ
コマンド
一瞬でhelloサンプルをCloudRunにデプロイできる
gcloud beta run deploy apps-gcp --image gcr.io/cloudrun/hello --platform=managed --region asia-northeast1 --allow-unauthenticated
アクセスできる(run.invoker)のは誰か調べる
gcloud beta run services get-iam-policy apps-gcp --region=asia-northeast1
code:yml
bindings:
- members:
- allUsers
role: roles/run.invoker
etag: BwXFA9LcCws=
version: 1
allUsersがプリンシパルなので全てがアクセス可能
アクセス権限を外す
gcloud beta run services remove-iam-policy-binding apps-gcp --region=asia-northeast1 --member=allUsers --role=roles/run.invoker
特定のIAMユーザーにアクセス権限を付与
gcloud beta run services add-iam-policy-binding apps-gcp --region=asia-northeast1 --member=user:scala1117@gmail.com --role=roles/run.invoker
以下でアクセスできることを確かめられる
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://cloudrun.xxxxxx.com/
サービスを削除する
gcloud beta run services delete apps-gcp --region asia-northeast1
Cloud RunへCloud Buildからデプロイする
GitリポジトリにCloud Buildトリガーを作成する
ビルドステップを定義
イメージのビルド
GCRへのpush
gcloud run deploy ....コマンド実行
その他メモ
gcloud run services replaceからデプロイした場合はダウンタイムがあるか?
gcloud run deployはダウンタイムなし
replaceでもダウンタイムなしである
リンク
CloudShellで全て実行できる公式神チュートリアル
https://cloud.google.com/run/docs/quickstarts/build-and-deploy#python
https://youtu.be/vEr0Urw26r4