Hi Jie,

Something like this is injected into the cni json configuration by mesos

"args": {
      "org.apache.mesos": {
        "network_info": {
          "ip_addresses": [
            {
              "protocol": "IPv4"
            }
          ],
          "name": "test-macvtap-cniip"
        }
      }
    }, 

You can add labels in Marathon with something like this

  "ipAddress": {
    "networkName": "test-macvtap-cniip",
        "labels": {"CNI_ARGS": "192.168.122.172"}
  },

Then the injected will look something like 

    "args": {
      "org.apache.mesos": {
        "network_info": {
          "ip_addresses": [
            {
              "protocol": "IPv4"
            }
          ],
          "labels": {
            "labels": [
              {
                "key": "CNI_ARGS",
                "value": "IP=192.168.122.172"
              }
            ]
          },
          "name": "test-macvtap-cniip"
        }
      }
    },


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)

I have no idea what this org.apache.mesos is even usefull for, unless 
you 
 are customizing plugins. But I guess you rather stick to the cni 
standards.

Or is it possible to reference in the cni network json config files 
 a key of args.'org.apache.mesos'.network_info?



-----Original Message-----
From: Jie Yu  
Sent: vrijdag 3 mei 2019 18:59
To: user
Subject: Re: FW: How should I pass the cni_args / ip, injecting lables 
#5592 not working

Marc,

I think the CNI_ARGS that Mesos passed into CNI plugin is the 
NetworkInfo object.
https://github.com/apache/mesos/blob/master/include/mesos/mesos.proto#L3096

I don't know if there's a way in Marathon to inject NetworkInfo.labels 
from the app definition. Any marathon folks can answer this?

- Jie

On Fri, May 3, 2019 at 6:41 AM Marc Roos <m.r...@f1-outsourcing.eu> 
wrote:



        I read the jira issue [0] that labels would be injected into the 
cni 
        json. But I can't get this to work. I have changed the source of a 
        plugin so it would dump the configuration files and this is how it 
looks 
        like, when you dump the ip configured in the cni network json [1] 
as 
        expected. When adding the labels, you get a totally different json 
[2], 
        so how should this ever work??? 
        
        
        This is not working
        ===================
        {
          "id": "/server",
          "user": "nobody",
          "cmd": "python -m SimpleHTTPServer 8080",
          "cpus": 0.1,
          "mem": 32,
          "disk": 0,
          "instances": 1,
          "acceptedResourceRoles": ["*"],
          "constraints": [["hostname","CLUSTER","m03.local"]],
          "backoffSeconds": 10,
          "ipAddress": { "networkName": "test-macvtap-cniip" },
          "labels": { "CNI_ARGS": "IP=192.168.122.173" } }
        
        This is also not working
        ========================
        {
          "id": "/server",
          "user": "nobody",
          "cmd": "python -m SimpleHTTPServer 8080",
          "cpus": 0.1,
          "mem": 32,
          "disk": 0,
          "instances": 1,
          "acceptedResourceRoles": ["*"],
          "constraints": [["hostname","CLUSTER","m03.local"]],
          "backoffSeconds": 10,
          "networks": [ { "mode": "container", "name": "test-macvtap-cniip" 
} ],
          "env": { "CNI_ARGS" : "'IP=192.168.122.173'" } }
        
        This does work:
        ===============
        CNI_PATH="/usr/libexec/cni/" NETCONFPATH="/etc/mesos-cni" 
        CNI_IFNAME="eth1" CNI_ARGS='IP=192.168.122.173' cnitool-0.5.2 add 
        test-macvtap-cniip /var/run/netns/testing
        
        
        
        [1]
        ===
        Cni network config only
        [
          {
            "args": {
              "cni": {
                "ips": [
                  "192.168.122.177"
                ]
              }
            },
            "cniVersion": "",
            "dns": {
              "nameservers": [
                "192.168.10.10"
              ]
            },
            "hostrouteif": "macvtap1",
            "ipam": {
              "rangeEnd": "192.168.122.179",
              "rangeStart": "192.168.122.171",
              "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"
                }
              ],
              "subnet": "192.168.122.0/24",
              "type": "host-local"
            },
            "master": "eth1",
            "name": "test-macvtap",
            "type": "macvtap"
          }
        ]
        
        
        [2]
        ===
        Dump from the marathon launched task with labels.
        [
          {
            "args": {
              "org.apache.mesos": {
                "network_info": {
                  "ip_addresses": [
                    {
                      "protocol": "IPv4"
                    }
                  ],
                  "labels": {
                    "labels": [
                      {
                        "key": "ips",
                        "value": "192.168.122.172"
                      }
                    ]
                  },
                  "name": "test-macvtap-cniip"
                }
              }
            },
            "dns": {
              "nameservers": [
                "192.168.10.10"
              ]
            },
            "hostrouteif": "macvtap0",
            "ipam": {
              "rangeEnd": "192.168.122.179",
              "rangeStart": "192.168.122.171",
              "routes": [
                {
                  "dst": "192.168.10.153/32",
                  "gw": "0.0.0.0"
                }
              ],
              "subnet": "192.168.122.0/24",
              "type": "host-local"
            },
            "master": "eth1",
            "name": "test-macvtap-cniip",
            "type": "macvtap"
          }
        ]
        
        [0] https://issues.apache.org/jira/browse/MESOS-5592
        
        
        
        


Reply via email to