>
> 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?

- Jie

On Fri, May 3, 2019 at 10:31 AM Marc Roos <[email protected]> wrote:

>
> 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 <[email protected]>
> 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