-
Notifications
You must be signed in to change notification settings - Fork 168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
kola: provide node to node connectivity to QEMU platform for multi-node tests #2741
Comments
For us our main pipeline runs unprivileged in Kubernetes/OpenShift. I think some of the veth and iptables stuff can be done in an unprivileged network namespace, but AIUI it's hard to do all useful networking fully unprivileged. In practice I think what we really want is to do libvirt-based testing, not direct qemu for this use case. In this case libvirt is kind of multitenant but in practice it's so easy to "leak state" and have tests conflict that the model should be:
An alternative optimization here is to retain a provisioned libvirt host between tests, but flush all libvirt state. |
Thanks @tormath1 for reaching out to collaborate. In mantle today we don't have any internet restrictions in our qemu tests. I know this is working because we have a lot of Fedora CoreOS tests that reach out to the network to perform various actions. There are two things that happened some time ago (before the mantle code base was merged into coreos-assembler) that I think gave us this:
|
Thanks for the details, |
hey @pothos we use Where is the |
The kola test annotations for excluding qemu-unpriv: https://github.com/coreos/coreos-assembler/search?q=qemu-unpriv+machines+cannot+communicate&type= That's the main reason we stick to using the other qemu platform because it allows us to run things like the kubeadm test @tormath1 added (I realize that we didn't exclude qemu-unpriv there yet but have to since it won't work). |
Most of our kola tests are single-node. qemu-unpriv nodes can communicate with the Internet, but nodes in multiple-node test clusters cannot communicate with each other. |
Ahh, ok now I understand what you were asking. |
Updated the title to be more accurate. |
IIUC we ripped out the
|
A while ago I searched and found this: https://lists.gnu.org/archive/html/qemu-discuss/2014-11/msg00020.html Sure, we can close this, it was more a hint in case you may have interest. |
So...quite a while ago we merged coreos-assembler and mantle. There were a lot of benefits but also drawbacks to this. I think what we can try to do is factor out at least our qemu code into a separate Go module. Then it seems relatively straightforward to share maintenance of that with flatcar. WDYT? |
With this: flatcar/Flatcar#1386 I'm wondering again if we should not seat together and see what we can do to merge back fcos/mantle with flatcar/mantle both world could benefit from such a merge: for example we added Brightbox and Scaleway platform to our Flatcar fork. |
Agree it would be nice if we could converge/merge back the mantle tools. As you mentioned we would get Scaleway support. A while back, we fully merged the mantle code into our coreos-assembler repo but I think it was mostly to simplify building and testing things in a single PR on our side. It should still be usable "standalone". How do you use mantle in your CI? |
In Flatcar's CI, Mantle (kola, plume and ore) is consumed via its Docker image. For each commit in Mantle, a Docker image is built and this image is consumed in the CI. (https://github.com/flatcar/scripts/blob/main/sdk_container/.repo/manifests/mantle-container) |
Hi,
In
flatcar-linux/mantle
fork - we implemented back in the days a network setup to provide Internet connectivity to QEMU instances: see this PR and this commit in particular: flatcar/mantle@d065c5d.Do you think this is something you could be interested to ingest in your codebase ? According to the documentation:
I think the proposed implementation is fulfilling this requirement:
We only rely on virtual ethernet pair and NAT.
The text was updated successfully, but these errors were encountered: