Hi Jie, Thanks for the help, I managed to create a mesos delegate plugin[0] that injects labels into cni args. And seems to work fine.
In some cases I would like to have multiple container networks attached to the task. How can I specify multiple networks using this syntax? "ipAddress": { "networkName": "test-delegate", "labels": {"CNI_ARGS": "IP=192.168.122.176"} }, Or is there an option to parse labels with this syntax as well? "networks": [ { "mode": "container", "name": "test-delegate" } ] Is it correct that cni chains are not supported in mesos 1.7? I tried to ask this here [1] but never got an answer. Thanks again. [0] https://github.com/f1-outsourcing/plugins/tree/hostrouteif/plugins/meta/mesos [1] https://www.mail-archive.com/user@mesos.apache.org/msg10295.html -----Original Message----- From: Jie Yu To: user Subject: Re: How should I pass the cni_args / ip, injecting lables #5592 not working Mesos's port mapper CNI plugin uses delegate model. You can take a look https://github.com/apache/mesos/tree/master/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper You can check out the go sample CNI implementation if you prefer golang https://github.com/containernetworking/plugins/tree/master/plugins/sample - Jie On Fri, May 3, 2019 at 3:18 PM Marc Roos <m.r...@f1-outsourcing.eu> wrote: Hmm, yes was already thinking of changing the source, but a wrapper is indeed better. Anyone have already something like this lying around? So I do not need to start from scratch :) -----Original Message----- From: Jie Yu To: user Subject: Re: How should I pass the cni_args / ip, injecting lables #5592 not working ah. I think one workaround I can think of is to write a wrapper CNI plugin that understand args."org.apache.mesos", and set "cni.ips" properly for the macvtap plugin. This is a common pattern in CNI called delegation before CNI chaining was proposed. - Jie On Fri, May 3, 2019 at 11:14 AM Marc Roos <m.r...@f1-outsourcing.eu> wrote: > Yet the cni plugin is afaik not even looking at the args.'org.apache.mesos'.network_info configuration, > for the cni_args it looks e.g. at args.cni.ips (or an environment variable) > > >That depends on the CNI plugin you're using. CNI is a spec between CO (container orchestration system > like K8s, mesos, etc.) and NP (network providers like calico, cisco, juniper, etc.). > >`args` field is the place where CO can inject CO specific information. Some CNI plugin might use those CO > specific information to perform some special operations. Although I don't like it, this is just how the > spec has evolved. The use of CNI_ARGS has been deprecated <https://github.com/containernetworking/cni/blob/master/CONVENTIONS.md#cni_args> > in favor of using `args` field. > > > Or is it possible to reference in the cni network json config files a key of args.'org.apache.mesos'.network_info? > > >I don't really follow this. Can you state your use case? Basically I want to assign a static ip via mesos/marathon. The only way I can get this to work now is via the cni network configuration something like this. But I do not want to start creating a cni network config file for every app. { "name": "test-macvtap", "type": "macvtap", "master": "eth1", "hostrouteif": "macvtap1", "ipam": { "type": "host-local", "subnet": "192.168.122.0/24", "rangeStart": "192.168.122.171", "rangeEnd": "192.168.122.179", "routes": [ { "dst": "192.168.122.22/32", "gw": "0.0.0.0" }, { "dst": "192.168.10.10/32", "gw": "0.0.0.0" }, { "dst": "192.168.10.22/32", "gw": "0.0.0.0" }] }, "dns": { "nameservers": ["192.168.10.10"] }, "args": { "cni": { "ips": ["192.168.122.177"] } }