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