ある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というサービスがあるが、これはクライアント側にクライアントアプリケーションを入れなければならず、これはユースケースに合わなかった。