Merge pull request #271 from nagiesek/dnsRuntimeConfigWindows

Windows: Add runtime DNS and del bug fix
This commit is contained in:
Dan Williams
2019-03-27 10:58:05 -05:00
committed by GitHub
6 changed files with 78 additions and 16 deletions

View File

@ -13,13 +13,43 @@ With win-bridge plugin, all containers (on the same host) are plugged into an L2
"ipam": {
"type": "host-local",
"subnet": "10.10.0.0/16"
}
},
"policies":[
{
"name":"EndpointPolicy",
"value":{
"Type":"ROUTE",
"DestinationPrefix":"10.137.198.27/32",
"NeedEncap":true
}
}
],
"HcnPolicyArgs": [
{
"Type": "SDNRoute"
"Settings": {
"DestinationPrefix": "11.0.0.0/8",
"NeedEncap": true
}
}
].
"capabilities": {
"dns": true
}
}
```
## Network configuration reference
* `ApiVersion` (integer, optional): ApiVersion to use, will default to hns. If set to "2" will try to use hcn APIs.
* `name` (string, required): the name of the network.
* `type` (string, required): "win-bridge".
* `ipMasqNetwork` (string, optional): setup NAT if not empty.
* `ipam` (dictionary, required): IPAM configuration to be used for this network.
* `dns` (dictionary, optional): dns config to be used.
* `Nameservers` (list, optional): list of strings to be used for dns nameservers.
* `Search` (list, optional): list of stings to be used for dns search.
* `ipam` (dictionary, optional): IPAM configuration to be used for this network.
* `Policies` (list, optional): List of hns policies to be used (only used when ApiVersion is < 2).
* `HcnPolicyArgs` (list, optional): List of hcn policies to be used (only used when ApiVersion is 2).
* `capabilities` (dictionary, optional): runtime capabilities to enable.
* `dns` (boolean, optional): if true will take the dns config supplied by the runtime and override other settings.

View File

@ -84,8 +84,7 @@ func ProcessEndpointArgs(args *skel.CmdArgs, n *NetConf) (*hns.EndpointInfo, err
n.ApplyOutboundNatPolicy(n.IPMasqNetwork)
}
epInfo.DnsSearch = n.DNS.Search
epInfo.Nameservers = n.DNS.Nameservers
epInfo.DNS = n.GetDNS()
return epInfo, nil
}
@ -195,8 +194,10 @@ func cmdDel(args *skel.CmdArgs) error {
return err
}
if err := ipam.ExecDel(n.IPAM.Type, args.StdinData); err != nil {
return err
if n.IPAM.Type != "" {
if err := ipam.ExecDel(n.IPAM.Type, args.StdinData); err != nil {
return err
}
}
epName := hns.ConstructEndpointName(args.ContainerID, args.Netns, n.Name)
@ -213,5 +214,5 @@ func cmdGet(_ *skel.CmdArgs) error {
}
func main() {
skel.PluginMain(cmdAdd, cmdGet, cmdDel, version.All, "TODO")
skel.PluginMain(cmdAdd, cmdGet, cmdDel, version.PluginSupports("0.1.0", "0.2.0", "0.3.0"), "TODO")
}

View File

@ -15,6 +15,10 @@ With win-overlay plugin, all containers (on the same host) are plugged into an O
"type": "host-local",
"subnet": "10.10.0.0/16"
}
"capabilites": {
"dns": true
}
}
```
@ -23,5 +27,11 @@ With win-overlay plugin, all containers (on the same host) are plugged into an O
* `name` (string, required): the name of the network.
* `type` (string, required): "win-overlay".
* `ipMasq` (bool, optional): the inverse of `$FLANNEL_IPMASQ`, setup NAT for the hnsNetwork subnet.
* `endpointMacPrefix` (string, optional): set to the MAC prefix configured for Flannel
* `dns` (dictionary, optional): dns config to be used.
* `Nameservers` (list, optional): list of strings to be used for dns nameservers.
* `Search` (list, optional): list of stings to be used for dns search.
* `endpointMacPrefix` (string, optional): set to the MAC prefix configured for Flannel.
* `Policies` (list, optional): List of hns policies to be used.
* `ipam` (dictionary, required): IPAM configuration to be used for this network.
* `capabilities` (dictionary, optional): runtime capabilities to be parsed and injected by runtime.
* `dns` (boolean, optional): if true will take the dns config supplied by the runtime and override other settings.

View File

@ -114,7 +114,7 @@ func cmdAdd(args *skel.CmdArgs) error {
n.ApplyOutboundNatPolicy(hnsNetwork.Subnets[0].AddressPrefix)
}
result.DNS = n.DNS
result.DNS = n.GetDNS()
hnsEndpoint := &hcsshim.HNSEndpoint{
Name: epName,
@ -162,5 +162,5 @@ func cmdGet(_ *skel.CmdArgs) error {
}
func main() {
skel.PluginMain(cmdAdd, cmdGet, cmdDel, version.All, "TODO")
skel.PluginMain(cmdAdd, cmdGet, cmdDel, version.PluginSupports("0.1.0", "0.2.0", "0.3.0"), "TODO")
}