Tailscaleを使用してRailwayからAWS RDSへのブリッジを作成する
Tailscaleサブネットルーターを使用して、RailwayからAWS RDSデータベースに安全にアクセスする方法を学びます。
著者: AIイノベーションズ 阿部隼也(X / Twitter)Tailscaleを使用してRailwayからAWS RDSへのブリッジを作成する
このチュートリアルでは、Tailscaleサブネットルーターを使用して、RailwayプロジェクトからAWS Virtual Private Cloud (VPC)内にあるAWS RDSデータベースへ、安全なプライベート接続を確立する方法を説明します。
目標
- Railwayアプリケーションが、パブリックインターネットを経由せずに、プライベートにAWS RDSデータベースと通信できるようにする。
- Tailscaleをセキュアなネットワークブリッジとして設定する。
前提条件
- Railwayアカウント
- AWSアカウント(RDSデータベースがVPC内で実行中であること)
- Tailscaleアカウント
RailwayからRDSへプライベートにトラフィックを送信する方法
TailscaleサブネットルーターをRailwayプロジェクト内にデプロイし、AWS VPC内のEC2インスタンスなどをTailscale出口ノードとして設定します。これにより、RailwayサービスからのトラフィックはTailscaleネットワークを通り、VPC内の出口ノードを経由してRDSデータベースに到達します。
サンプルプロジェクトのクローン
このチュートリアル用のサンプルプロジェクトを git clone
します。
TailscaleでスプリットDNSを設定する
Tailscale管理コンソールで、VPCのプライベートDNS解決に使用するネームサーバーを設定します(スプリットDNS)。
Tailscale認証キーの生成
RailwayのTailscaleクライアントがTailscaleネットワークに参加するために、再利用可能でエフェメラルな認証キーを生成します。
terraform.tfvars
の作成
AWSリソース(VPC、サブネット、EC2インスタンスなど)をプロビジョニングするためのTerraform変数を定義します。
デプロイ
Terraformを使用して、AWSインフラストラクチャをデプロイします。
アドバタイズされたサブネットルートの承認および/またはデバイスでのルート受け入れの有効化
Tailscale管理コンソールで、EC2出口ノードがアドバタイズするVPCのサブネットルートを承認します。
接続の確認
RailwayサービスからTailscaleネットワークを経由して、VPC内のリソースにpingを送信し、接続を確認します。
RDSインスタンスへの接続
アプリケーションのデータベース接続文字列を、RDSのエンドポイントを指すように設定します。
Railtailをプロジェクトにデプロイ
Tailscaleサブネットルーターとして機能するRailtail
サービスをRailwayプロジェクトにデプロイします。
RDSへのトラフィックのブリッジ
これで、Railwayアプリケーションは、Railtail
サービスを介して、プライベートにRDSデータベースと通信できるようになります。
クリーンアップ
チュートリアル完了後、不要なリソース(EC2インスタンスなど)を削除して、コストが発生しないようにします。
トラブルシューティング
接続の問題が発生した場合は、TailscaleのACL、AWSのセキュリティグループ、およびネットワークACLの設定を確認してください。
追加リソース
PR