サーバーレス VPC アクセスを使用すると、Cloud Run(フルマネージド)から Redis インスタンスに接続できます。Cloud Run サービスは、Redis インスタンスと同じリージョンにする必要があります。
設定
Cloud SDK をインストール済みで Redis インスタンスを作成済みの場合は、次の手順をスキップできます。
次のように入力し、Cloud SDK をインストールして初期化します。
gcloud init
クイックスタート ガイドの手順に沿って Redis インスタンスを作成します。Redis インスタンスのゾーン、IP アドレス、ポート番号をメモしておきます。
サーバーレス VPC アクセスの構成
Redis インスタンスに接続するには、Cloud Run(フルマネージド)サービスが Redis インスタンスの承認済み VPC ネットワークにアクセスする必要があります。このアクセスを有効にするには、サーバーレス VPC アクセス コネクタが必要です。
次のコマンドを使用して、Redis インスタンスの承認済みネットワークの名前を確認します。
gcloud redis instances describe INSTANCE_ID --region REGION --format "value(authorizedNetwork)"
コネクタの作成の手順に従って、サーバーレス VPC アクセス コネクタを作成します。コネクタは必ず Redis インスタンスと同じリージョン内に作成し、そのコネクタは必ず Redis インスタンスの承認済み VPC ネットワークに接続されていることを確認してください。コネクタの名前を覚えておいてください。
サンプル アプリケーション
このサンプル HTTP サーバー アプリケーションは、Cloud Run(フルマネージド)サービスから Redis インスタンスへの接続を確立します。
使用するプログラミング言語のリポジトリのクローンを作成し、サンプルコードを含むフォルダに移動します。
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples
cd golang-samples/memorystore/redis
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
cd nodejs-docs-samples/memorystore/redis
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/memorystore/redis
このサンプル アプリケーションは、/
エンドポイントがアクセスされるたびに Redis カウンタをインクリメントします。
Go
このアプリケーションは、github.com/gomodule/redigo/redis
クライアントを使用します。次のコマンドを実行してインストールします。
go get github.com/gomodule/redigo/redis
Node.js
このアプリケーションでは、redis
モジュールを使用します。
Python
このアプリケーションでは、ウェブサービスに Flask を使用し、redis-py
パッケージを使用して Redis インスタンスと通信します。
Cloud Run(フルマネージド)へのアプリケーションのデプロイ
アプリケーションをデプロイするには:
Dockerfile
をソース ディレクトリにコピーします。cp cloud_run_deployment/Dockerfile .
次のコマンドで Cloud Build を使用してコンテナ イメージを構築します。
gcloud builds submit --tag gcr.io/PROJECT_ID/visit-count
コンテナを Cloud Run(フルマネージド)にデプロイします。
gcloud run deploy \ --image gcr.io/PROJECT_ID/visit-count \ --platform managed \ --allow-unauthenticated \ --region REGION \ --vpc-connector CONNECTOR_NAME \ --set-env-vars REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
ここで
PROJECT_ID
は、Google Cloud プロジェクトの ID です。REGION
は、サーバーレス VPC アクセス コネクタと Redis インスタンスが配置されているリージョンです。CONNECTOR_NAME
は、コネクタの名前です。REDIS_IP
とREDIS_PORT
は、Redis インスタンスの IP アドレスとポート番号です。
デプロイが正常に完了すると、コマンドラインに Cloud Run サービスの URL が表示されます。この URL をウェブブラウザでアクセス(または curl
などのツールを使用)し、サービスがアクセスされるたびに Redis インスタンスのカウントが増加することを確認します。