Atsushi2022の日記

データエンジニアリングに関連する記事を投稿してます

あるCloudSQLインスタンスに割り当てたプライベートIPを、別のCloudSQLインスタンスに割り当てることはできるのか?

あるCloudSQLインスタンスに割り当てた内部IPを、別のCloudSQLインスタンスに割り当てることはできるのか?

この疑問を抱いた経緯は次のとおりである。

バージョンアップ済みのCloudSQLインスタンスをバージョンアップ前のバックアップで復元したいとする。その場合、バージョンアップ前のバージョンを使用したインスタンスを新しく作成し、そのうえでバックアップを元にして復元しなければならない。しかし、新しいインスタンスには当然新しい内部IPが割り当てられてしまう。そうなると、アプリケーション側で接続先として新たな内部IPを設定しなければならない。アプリケーション側で接続先IPを変更するのはすごい面倒なので、一度割り当てた内部IPを他のインスタンスに割り当てなおせると嬉しいと考えた。

しかし、自分で調べた限り、あるCloudSQLインスタンスに割り当てたプライベートIPを別のインスタンスに割り当てることはできない。

GCPでは静的内部IPアドレスの予約ができる。予約した内部IPに名前をつけて、1つのリソースとして扱うことができる。あるVMインスタンスに割り当てた内部IPアドレスを他のVMインスタンスに割り当てなおすことができる。

だが、静的内部IPアドレスVMにしか割り当てできない。つまり、CloudSQLには予約した静的内部IPを割り当てることはできない。

他の方法も調べたが、あるCloudSQLインスタンスに割り当てたプライベートIPを別のインスタンスに割り当てる方法はやはりなさそうだった。

こうなると、CloudSQLの内部IPが変わってしまう影響を回避するには、CloudDNSを使用してプライベートDNSゾーンを作り、アプリケーションからはドメイン名でアクセスしてもらうしかない。そうすれば、仮にCloudSQLインスタンスIPアドレスが変更になってもAレコードを書き換えるだけで良い。

ところで、Cloud SQL Auth Proxyというサービスがあるが、これはクライアント側にクライアントアプリケーションを入れなければならず、これはユースケースに合わなかった。