概要
固定IPアドレスを使って、GCPのCloud Runから、AWSのRDSインスタンスへ接続する必要があったので、その作業ログを記載します。
設定が必要なサービスは下記です。
- Cloud NAT
- Cloud Routor
- IPアドレス
- サブネット(VPCネットワーク)
- サーバーレスVPCアクセス
- Cloud Run
作業
事前準備
gitにCloud Runで起動できるテンプレートをあげていますので、こちらをcloneしてください。
その後手順に従って、環境を作成してください。
サブネットを作成
サーバーレス VPC アクセス コネクタ用の VPC にサブネットを作成します。
今回は特にVPCを作らなくて良いので、defaultを使います。
$ gcloud compute networks subnets create sabnet-name \
--range=172.16.0.0/28 \
--network=default \
--region=asia-northeast1
この時、サブネットのIPのレンジは、xxx.xx.x.x/28である必要があるので注意です。
もし、サブネットを作成し間違えた場合、こちらのコマンドでサブネットを削除してください。
$ gcloud compute networks subnets delete sabnet-name --region=asia-northeast1
IPアドレスを予約
固定するIPアドレスを予約します。
「外部静的IPアドレスを予約」をクリックします。
詳細の設定は、下記のように設定していきます。
サーバーレス VPC アクセス コネクタを作成
先ほど作成したサブネットワークを使って、サーバーレス VPC アクセス コネクタを作成します。
$ gcloud compute networks vpc-access connectors create vpc-connector \
--region=asia-northeast1 \
--subnet-project=my-blog \
--subnet=sabnet-name
上記コマンドを実行したら、このようなコネクタが作成されたら次に進みます。
Cloud Routorを作成
この後、Cloud NATで繋げる予定のCloud Routorを作成していきます。
カスタム範囲のIPアドレスで、先ほど作成したIPアドレスをカスタムルートに追加してください。
Cloud NATを作成
先ほど作成したCloud Routorを使って、Cloud NATゲートウェイを作成します。
Container Resitoryにイメージをビルド
githubからcloneしたリポジトリを使って、Container Resitoryにビルドしていきます。
まずは、ローカルに落としたcloud_run_rdsリポジトリをCloud Shellを使って、GCP上にアップロードします。
その後、下記コマンドを叩いて許可を承認し、操作するプロジェクトを設定します。
$ gcloud auth login
$ gcloud config set project [PROJECT_ID]
こちらのコマンドで現在のディレクトリにある Dockerfile
を使用してイメージをビルドします。
$ docker build -t cloud_run_rds:latest .
Cloud Run サービスをデプロイ
VPC コネクタを使用してすべての下り(外向き)トラフィックをルーティングする Cloud Run サービスをデプロイまたは更新します。
$ gcloud run deploy cloudrun-rds \
--image=gcr.io/cloudrun-rds/{ソースコードをアップロードしたContainerResistoryのid} \
--vpc-connector=vpc-connector
--vpc-egress=all-traffic
接続確認
Cloud Run サービスをこのように作成されていたら、成功です。
接続確認は、URLをクリックしてページ遷移をして成功のメッセージが表示されるかを確認します。
今回のソースでは、Successfully connected to the database.と表示されればOKです。
まとめ
いかがでしたでしょうか。
今回は、Cloud Runを使ってAWSのRDSインスタンスに接続してみました。
外部サービスとの接続には、ネットワーク周りの知識が必要になってきます。
この辺りは地道に学んでいきましょう。
また良いTipsを見つけたら共有していこうと思います!
コメント