Hey folks, I apologize for the confusion and pain this change caused, I’ll take full responsibility for that.
Let me be more precise and give a little bit of context into the motivation for making this change:
Before the change, the IP ranges feature when used in a Remote Docker job would not send outgoing traffic from the remote docker VM through the set of IPs. It would, however, send traffic from the primary container through the set of IPs.
The vast majority of users that we talk to who need to use the IP ranges feature in conjunction with Remote Docker need the outgoing traffic from the VM to use the set of IPs and do not care about the primary container. That is one reason we made this change, to avoid confusion where most users think that the feature is working in one way but in reality it is not.
Secondly, we are in the process of re-architecting how Remote Docker works all-up on CircleCI to be much more performant, reliable, and flexible. The new architecture currently does not send any outgoing traffic through the set of IPs if the IP ranges feature is enabled, not even traffic from the primary container.
In order to prepare for moving all Remote Docker jobs from the existing architecture to the new, more performant and reliable architecture; we removed the IP ranges functionality from Remote Docker jobs to avoid incompatibility issues. If we did not do that, users of the IP ranges feature with Remote Docker jobs would be stuck on a less reliable system in addition to missing out on the benefits of the new architecture. At this point in time, once a job is moved to the new architecture, all traffic goes through ephemeral IPs. The communication on this point, however, was inadequate, and I apologize for that. We did not introduce this new behavior to fail workflows intentionally. We want to give customers the best Remote Docker experience and this was one way to ensure all users get those benefits, not just ones that don’t use IP ranges.
I can understand that this feels like a regression in the platform to your teams. We do plan on adding “full functionality” for Remote Docker jobs with the IP ranges feature. You can track updates on enabling this functionality fully for Remote Docker jobs on Canny.
This re-architecture will actually enable us to provide that capability faster than we would have with the old architecture. Currently, we’ve seen users workaround this gap using either a Machine executor with a VPN, Kaniko in a normal Docker job, splitting the job into two so that the step that requires setup_remote_docker happens in a Docker job without Remote Docker, or a self-hosted Runner.
I’m looking into a temporary roll-back to give users a bit of time before re-enabling this change. I’ll post in here when I have more on that front.