プレビュー中の統合機能を使うと、以下の一連の作業を非常に簡単に行うことができます。
- カスタムドメインをマッピングした外部ロードバランサーの作成
- IAP の有効化
統合とは
統合に関するドキュメントは こちら にあります。統合 (integrations) とは、Cloud Run と他の Google Cloud サービスとの連携をやりやすくするためのショートカット機能です。2023/11 現在は以下の 3 パターンが提供されています。本記事では 1 つめのパターンを利用します。
- グローバル外部アプリケーションロードバランサを使用してカスタムドメインを Cloud Run サービスにマッピングする
- Memorystore を使用して Cloud Run サービスを Redis キャッシュに接続する
- Cloud Run サービスを Firebase Hosting に接続する
準備
Cloud DNS のゾーン設定
カスタムドメインのマッピングを行うわけでなので、ドメインを所有していることが前提です。また、ドキュメント を参考に DNS ゾーンが作成されているものとします。
Cloud Run サービスの作成
Cloud Run サービスのデプロイも済んでいるものとします。サンプルコンテナのデプロイ などを参考にしてください。
グローバル外部ロードバランサーの設定
では、統合機能を使ってロードバランサーを構築していきましょう。グローバル外部アプリケーションロードバランサを使用してカスタムドメインをマッピングする を参考にすすめていきます。
まずは IAP を有効化させたい Cloud Run のページに行き、統合と書かれたタブを選択します。「インテグレーションを追加」ボタンから設定を進めていきます。
すると先に挙げた 3 つのパターンが選択できるようになるため、「カスタムドメイン」を選択します。
設定すべきは Routes のところです。Domain にはカスタムドメインを入力します。Service は設定対象の Cloud Run サービスを選択しましょう。入力が済んだら一番したの「UPDATE」ボタンをクリックします。
これで設定フローが開始されます。外部 IP アドレスの予約も自動で行われます。というか、自分で予約した IP アドレスを使うことは少なくとも今はできないようですね。
あとやるべきことは、Cloud DNS に A レコードを登録することだけです。具体的にどんなレコードを設定すればいいかは画面に表示されているのでその通りに設定しましょう。
しばらく (場合によっては数十分) すると、統合のステータスが「有効」になります。気長に待ちましょう。DNS の設定が間違っていないかの確認のために dig
コマンドを叩いておくことも忘れずに。
IAP の設定
IAP の設定もコンソールから簡単に行なえます。トグルをオンにし、ポップアップが出てきたら誘導に従うだけです。あとは、アクセスを許可するユーザーに IAP-secured Web App User
ロールを付与すれば完了です。
トラブルシューティング
Forbidden と表示される
もし以下のようなエラーが表示される場合は、Cloud Run の認証設定が適切でない可能性があります。
Your client does not have permission to get URL / from this server.
Cloud Run のサービス一覧画面で対象サービスにチェックを入れ、情報パネルを表示します。「プリンシパルを追加」から、Cloud Run 起動元ロールを allUsers
に割り当てます。これは Cloud Run サービスデプロイ時の「未認証のアクセスを許可」に対応するものです。もし allUsers
が嫌ということであれば、特定のユーザーないしはユーザーグループを指定するようにしてください。
さいごに
Cloud Run の統合機能を使ってカスタムドメインのマッピングや IAP の設定を行いました。まだプレビュー機能なので UI 等が変更される可能性はありますが、数クリックで設定が完了するのはめちゃくちゃ楽なのでぜひ使ってみてください。今後もショートカットが増えていくことを期待したいです。