A decision has been made to conduct an experiment to see whether Toolforge could be ran on "bare metal" (i.e. outside the Cloud-VPS OpenStack deployment). We're procuring some hardware for that experiment, and need to decide how that test cluster is going to be networked. I see two viable high-level approaches, so this task is to determine which one we should choose.
I'm making some assumptions that I believe are true regardless of which option we choose:
- Any user workload related network traffic must be isolated to the cloud realm networks, and must not use the wikiprod realm networks
- The functionality provided by cloudgw hosts (edge firewalling and egress NAT for IPv4) is still required in the new model
- Some Toolforge "support" services require less resources than what individual hardware machines provide => thus it must be possible to run VMs (likely in a dedicated routed Ganeti cluster) in this model, either from day 1 or so they can be added later with little breaking changes to the existing nodes.
- The experiment-related nodes will need at least partial connectivity to services currently hosted on Cloud VPS.
That being said, the two options I see are:
Connect Toolforge-on-metal hosts to cloud network only
This option basically treats the new hosts similar to existing Cloud VPS VMs, except that they run outside Cloud VPS. In practice this would be new subnets that are very similar to the cloud-private network (introduced in T314847: Separate WMCS control and management plane traffic).
The main challenge from this option is that we would need to at least partially re-implement the host provisioning workflows we get from the Infrastructure-Foundations team.
Connect Toolforge-on-metal hosts to both network realms
This option treats the Toolforge-on-metal hardware similar to the model currently used for Cloud VPS hardware with connectivity to both network realms. This solves the hardware provisioning problem, but comes with a set of new and exciting problems for isolating user traffic:
- I assume (but have not yet checked that) the K8s CNI used (Calico?) could be directed to use a secondary interface for all cluster traffic, leaving the primary interface for management purposes only.
- Accounts for Toolforge admins could be provisioned via the admin Puppet module. That's maybe fine for an initial set of non-NFS workers (although it somewhat raises the bar to onboard new community members as Toolforge admins), but NFS-enabled workers and other miscellaneous hosts like the bastions and mail servers do need the full set of Toolforge user accounts and tool accounts from LDAP.
- .. if there's even a reasonable way to port the current bastion hosts to this model. I can't immediately think of an approach to isolate those that gives me the confidence that I would want from such a system.