Cloud Run + Cloud SQL、セットアップ
はじめに
この記事は、
Cloud Run + Cloud SQL, setup
という動画を参考に、『実際にやってみた』という記事になります。
この記事で実施する事。
-
Cloud SQL
インスタンス を作成。 -
Cloud Run Service
をデプロイする。 -
Cloud Shell
を使用して、Cloud SQL
インスタンスに接続する。 -
テーブル作成
とデータ挿入
-
Cloud Run
にデプロイされたアプリを動かす。 -
Cloud SQL
にデータが挿入されたかを確認する。
以下はその必要となる大まかな構成になります。
Google Cloud SQLについて噛み砕いて理解しておく。
Google Cloud SQL について噛み砕いた説明はスクラップにまとめました。
Cloud SQL インスタンス を作成。
GCPコンソール
から SQL
を選択。
インスタンスを作成。
データベースエンジンの選択。
いずれも最新の SQLデータベース
を提供していますが、
コミュニティは、新製品用の PostgreSQL
に同意しているとのこと。
インスタンスID
と パスワード
を入力。
データベースのバージョンは最新を選択してください。
インスタンスID:poll-database
パスワード:secretpassword
Cloud SQL のエディションの選択。
Enterprice
を選択してください。
Enterprise Plus についてはこちらの記事を参考にしてください。
エディションのプリセットを選択。
今回は検証の為、サンドボックス
を選択。
リージョンとゾーンを選択。
動画では、リージョンは 物理的に遠い場所
を選択と
言われていますが、 最寄りのリージョン
でも問題ありません。
ゾーンは シングルゾーン
を選択、
プライマリゾーンは 任意
としてください。
マシンタイプとストレージを選択。
マシンタイプとストレージは、最小のマシン、容量から始めるのがお決まりとの事。
つまりは、1つの仮想CPUと3.75GBのRAMから始めなければならない。
ストレージの種類は、デフォルトのまま、推奨されている SSD
を選択、
暗号化の方法は、Googleが管理する暗号鍵
を選択してください。
その他の構成オプションはデフォルトのままで、
インスタンスを作成
をクリック。
なお、インスタンス作成は、時間がかかります。
Cloud Run Service をデプロイする。
vote-for-tabs-or-spaces を、git clone してください。
git clone https://github.com/tomo8332/gcp-sample.git
git cloneの実行が完了したら、cdコマンドを使って、対象のディレクトリ階層へ移動。
cd gcp-sample/cloud-run-cloud-sql/python/vote-for-tabs-or-spaces
README.md を読んで、Cloud Run サービスのデプロイを行なってください。
なお、動画のサンプルコードは、Dockerイメージを、
Container Registry
へプッシュします。
Container Registry
は非推奨となっているため、
このブログでは、Artifact Registory
に対して、
Dockerイメージ
がプッシュされるように修正しています。
また、requirements.txt は、Pythonプロジェクトの
依存関係を管理していますが、動画のサンプルコードは
パッケージのバージョンの互換性等の問題で、
正常にデプロイすることができない可能性があります。
Cloud Run Service
のデプロイを行った処、
下記のエラーが表示されました。
ImportError: cannot import name 'escape' from 'jinja2'
ImportError: cannot import name 'json' from itsdangerous
Cloud Shell を使用して、Cloud SQL インスタンスに接続する。
Cloud SQL
インスタンスが正常にデプロイされた事を確認できたら、
Cloud SQL
インスタンスを経由して、Cloud Shell
を起動。
SQLページから Cloud Shell
を起動すると、ターミナル上に
Google Cloud SQL
インスタンスに接続するための
コマンドが表示されますので、そのまま実行。
なお、Google Cloud SQL
インスタンスに接続するためのコマンドを
実行した際に、Cloud SQL Admin API
が有効になっていないことを
警告されたら、ターミナル上の指示に従って、APIを有効にしてから、
gcloud sql connect
コマンドを再実行してください。
gcloud sql connect
コマンドが正常に実行されると、
パスワードの入力を促されるので、ここには、SQLインスタンスを
作成した際に設定したパスワードを入力してください。
テーブル作成 と データ挿入
README.md に記述している、テーブル作成
と データ挿入
の
コマンドを、一気にCloud Shellのターミナル上で実行してください。
なお、テーブル作成
と データ挿入
は、Cloud SQL
インスタンスに
接続された状態でなければ実行することはできません。
Cloud Run にデプロイされたアプリを動かす。
Cloud Run Service
が正常にデプロイされて、
下記のアプリケーションが起動すれば成功です。
それぞれのボタンを数回クリックしてみてください。
Cloud SQL にデータが挿入されたかを確認する。
Cloud SQL
インスタンスに接続した状態で、
下記のコマンドをそれぞれ実行してください。
どのボタンが何回クリックされたのか、
そのボタンが何時、押されたかを
確認することができれば完了です。
SELECT * FROM totals;
SELECT * FROM votes;
終わりに
今回の記事は、動画を視聴しまして、
実際に『手を動かしてみた』という内容でまとめました。
Cloud SQLは、MySQL、PostgreSQL、SQL Serverなど、
私たちの身直によくあるデータベースエンジンを使用している為、
その仕組みについては、難しく考えることはありませんが、
互換性やバージョン等の問題で途中、
何度か正常にデプロイできないことが続きました。
その問題の対応についても、記述していますので、
Cloud SQL
データベースについて、
軽く学習してみたいと考えていましたら、
参考にしていただけると幸いです。
また、Cloud SQL
をデプロイ後、
そのCloud SQL
をデプロイしたリージョンと
それとは異なるリージョンに、Cloud Run
を
一つずつデプロイしてみると、
レスポンスに微妙な違いがありますので、
試してみると面白いかもしれません。
この記事が読まれている方にとって、
参考になる記事となりましたら、『いいね
』を
付けていただけますと、励みになりますので、
よろしくお願いします。
Discussion