Search code examples
google-cloud-platformredisgoogle-cloud-functionsgoogle-cloud-memorystore

Unable to setup Google Cloud Memorystore redis instance with Serverless VPC access


I'm wanting to setup a Google Cloud memorystore redis instance and connect to it through my google cloud functions. After following this guide https://thecloudfunction.com/blog/firebase-cloud-functions-and-redis/

The general steps as I understand are:

  1. Enable Serverless VPC Service and create a connector for my function to use.
  2. Enable redis and create a redis instance on the same IP address range.

The problem is if I create the connector first (step #1) then I get this error when trying to create a redis instance (step #2):

Server response: Invalid value for field 'resource.ipCidrRange': '10.92.0.0/28'. Invalid IPCidrRange: 10.92.0.0/28 conflicts with peer network in active peering 'redis-peer-863826821838'.

And if I try and flip the steps, create the redis instance first (step #2) and then create the connector (step #1) then I get this error when trying to create the connector:

connector is in a bad state manual deletion recommended

I assume this is a problem with some IP range conflict per the first error but looking at the VPC connections I don't see a conflict anywhere:

enter image description here

As far as I understand none of these should conflict with my IP range of 10.92.0.0/28, right?

All of this is happening on us-central1

Wondering if anyone knows how to correctly setup a redis instance + connector and move past these errors or if anyone has any suggestions on where to look for this IP range conflict and how to solve for it.

Thanks!


Solution

  • Okay so finally got this to work. For anyone else struggling with this issue here is what I had to do:

    1. Create a redis instance, and instead of manually entering Instance IP address range. Skip the field and create it without one. This is will generate a redis instance that doesn't conflict with any other ranged. For example 10.51.123.233
    2. Now create the connector and set it to the ip range of the created redis instance. For example if your redis instance generated an IP of 10.51.123.233 then you need to set the connect IP range to 10.51.0.0/28