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"] }
                }
        
        
        
        
        
        


Reply via email to