Blogは株式会社Gunosyのエンジニアが知見を共有する技術ブログです。(GCP)Terraformまとめはじめにこんにちは。いうところで働いている阿部といいます。略で、データ基盤やML基盤を作って運用するグループです。私はもともとは記事配信ロジックやデータ分析をやっているグループにいましたが、今年移ってきました。弊社のシステムは基本的にはAWSで動いていますが、とあるプロジェクトでGCPを使うことになりました。その際にAWSとGCP間をプライベートなネットワークで繋ぐ必要があり、VPNを構築しました。AWSは複数のアカウントで運用されているので、それぞれ個別に設定してしまうと管理がたいへんです。導入し、一元的に管理できるように構成しました。VPN構築手順はなかなか煩雑でたいへんだったので、ここに記録を残しておきたいと思います。ネットワーク構成をざっくりと紹介し、その後VPN接続の方法を書いていきます。network弊社ではグノシー、ニュースパスといったプロダクト毎にアカウントが作られています。各アカウントと社内ネットワークで繋いだりプロダクト間同士で繋いだりすることがありますが、アカウント毎に設定すると管理が大変です。そこでハブとなるアカウントがあります。ここでは各プロダクトのアカウントをプロダクトアカウント、ハブのアカウントをホストアカウントと呼ぶことにしましょう。Connectの対応が東京リージョンにも来たというのもあってTGWが全面的に導入されました。こちらの話はSREの茂木さんがブログを書いてくれると聞いています。オフィス内ネットワークから各アカウント内のVPCにアクセスするときはホストアカウントのTGWを経由します。使ってプロダクトのアカウントと共有します。いうサービスを使ってルーティングをします。このあたりは後ほどもう少し説明します。NetworkAWSと違ってGCPではアカウントは各個人に紐付いていますプロジェクトという単位でシステムの機能を構成していきます。弊社ではサービス運用はAWS、サービスに提供する単機能(=マイクロサービス)をGCPで運用するつもりだったので、プロジェクトは少し細かな粒度で作ることにしました。ネットワークのハブとなるプロジェクトと、機能別のプロジェクトを作りました。それぞれVPCホストプロジェクト、サービスプロジェクトと呼びましょう。Sharingというサービスがあって、VPCをプロジェクト間で共有することができます。VPCホストプロジェクトのVPCをサービスプロジェクトと共有します。間での通信VPN設定手順さて、ここからが本題です。VPNでは4本使うことができ、可用性が確保できます。インターフェースが2つ付いていて、それぞれに2つずつトンネルを掘ります。それをTGWにアタッチします。図にするとこんな構成です。VPN手順を書いていきます。個人的にAWSとGCPのコンソールを英語に設定しているので、適宜読み取っていただければと思います。いくつかの記事を参考にさせていただいたので、よければそちらも参照ください。https://cloud.google.com/community/tutorials/using-ha-vpn-with-awsGCPまずはGCPでネットワークリソースを作っていきます。