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