From f0a7fa785c35cb0295a314eab4be900e51a50a32 Mon Sep 17 00:00:00 2001 From: Chris Phillips Date: Fri, 22 Jun 2018 10:13:30 -0700 Subject: [PATCH] allow overriding subnet tags in the NetworkSpec --- pkg/apis/kops/networking.go | 4 +++- pkg/apis/kops/v1alpha1/networking.go | 4 +++- .../kops/v1alpha1/zz_generated.conversion.go | 2 ++ pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go | 9 ++++++++- pkg/apis/kops/v1alpha2/networking.go | 4 +++- .../kops/v1alpha2/zz_generated.conversion.go | 2 ++ pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go | 9 ++++++++- pkg/apis/kops/zz_generated.deepcopy.go | 9 ++++++++- .../10-cni-ipvlan-vpc-k8s.conflist.template | 4 +--- upup/pkg/fi/nodeup/command.go | 16 ++++++++++++++++ 10 files changed, 54 insertions(+), 9 deletions(-) diff --git a/pkg/apis/kops/networking.go b/pkg/apis/kops/networking.go index f7817c3601..b0faab1550 100644 --- a/pkg/apis/kops/networking.go +++ b/pkg/apis/kops/networking.go @@ -191,4 +191,6 @@ type CiliumNetworkingSpec struct { } // LyftIpVlanNetworkingSpec declares that we want to use the cni-ipvlan-vpc-k8s CNI networking -type LyftVPCNetworkingSpec struct{} +type LyftVPCNetworkingSpec struct { + SubnetTags map[string]string `json:"subnetTags,omitempty"` +} diff --git a/pkg/apis/kops/v1alpha1/networking.go b/pkg/apis/kops/v1alpha1/networking.go index 07e4186fcd..705a35f092 100644 --- a/pkg/apis/kops/v1alpha1/networking.go +++ b/pkg/apis/kops/v1alpha1/networking.go @@ -188,4 +188,6 @@ type CiliumNetworkingSpec struct { } // LyftIpVlanNetworkingSpec declares that we want to use the cni-ipvlan-vpc-k8s CNI networking -type LyftVPCNetworkingSpec struct{} +type LyftVPCNetworkingSpec struct { + SubnetTags map[string]string `json:"subnetTags,omitempty"` +} diff --git a/pkg/apis/kops/v1alpha1/zz_generated.conversion.go b/pkg/apis/kops/v1alpha1/zz_generated.conversion.go index a0a8fdda87..3b9e054716 100644 --- a/pkg/apis/kops/v1alpha1/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha1/zz_generated.conversion.go @@ -2792,6 +2792,7 @@ func Convert_kops_LoadBalancerAccessSpec_To_v1alpha1_LoadBalancerAccessSpec(in * } func autoConvert_v1alpha1_LyftVPCNetworkingSpec_To_kops_LyftVPCNetworkingSpec(in *LyftVPCNetworkingSpec, out *kops.LyftVPCNetworkingSpec, s conversion.Scope) error { + out.SubnetTags = in.SubnetTags return nil } @@ -2801,6 +2802,7 @@ func Convert_v1alpha1_LyftVPCNetworkingSpec_To_kops_LyftVPCNetworkingSpec(in *Ly } func autoConvert_kops_LyftVPCNetworkingSpec_To_v1alpha1_LyftVPCNetworkingSpec(in *kops.LyftVPCNetworkingSpec, out *LyftVPCNetworkingSpec, s conversion.Scope) error { + out.SubnetTags = in.SubnetTags return nil } diff --git a/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go index ed101c6ffc..79fd93ebe9 100644 --- a/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go @@ -2970,6 +2970,13 @@ func (in *LoadBalancerAccessSpec) DeepCopy() *LoadBalancerAccessSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LyftVPCNetworkingSpec) DeepCopyInto(out *LyftVPCNetworkingSpec) { *out = *in + if in.SubnetTags != nil { + in, out := &in.SubnetTags, &out.SubnetTags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } @@ -3109,7 +3116,7 @@ func (in *NetworkingSpec) DeepCopyInto(out *NetworkingSpec) { *out = nil } else { *out = new(LyftVPCNetworkingSpec) - **out = **in + (*in).DeepCopyInto(*out) } } return diff --git a/pkg/apis/kops/v1alpha2/networking.go b/pkg/apis/kops/v1alpha2/networking.go index d0aaea509a..ce3b22b69a 100644 --- a/pkg/apis/kops/v1alpha2/networking.go +++ b/pkg/apis/kops/v1alpha2/networking.go @@ -189,4 +189,6 @@ type CiliumNetworkingSpec struct { } // LyftIpVlanNetworkingSpec declares that we want to use the cni-ipvlan-vpc-k8s CNI networking -type LyftVPCNetworkingSpec struct{} +type LyftVPCNetworkingSpec struct { + SubnetTags map[string]string `json:"subnetTags,omitempty"` +} diff --git a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go index 28e5c2638f..47320dac2d 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go @@ -3056,6 +3056,7 @@ func Convert_kops_LoadBalancerAccessSpec_To_v1alpha2_LoadBalancerAccessSpec(in * } func autoConvert_v1alpha2_LyftVPCNetworkingSpec_To_kops_LyftVPCNetworkingSpec(in *LyftVPCNetworkingSpec, out *kops.LyftVPCNetworkingSpec, s conversion.Scope) error { + out.SubnetTags = in.SubnetTags return nil } @@ -3065,6 +3066,7 @@ func Convert_v1alpha2_LyftVPCNetworkingSpec_To_kops_LyftVPCNetworkingSpec(in *Ly } func autoConvert_kops_LyftVPCNetworkingSpec_To_v1alpha2_LyftVPCNetworkingSpec(in *kops.LyftVPCNetworkingSpec, out *LyftVPCNetworkingSpec, s conversion.Scope) error { + out.SubnetTags = in.SubnetTags return nil } diff --git a/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go index b656c0389e..2217484c0c 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go @@ -3051,6 +3051,13 @@ func (in *LoadBalancerAccessSpec) DeepCopy() *LoadBalancerAccessSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LyftVPCNetworkingSpec) DeepCopyInto(out *LyftVPCNetworkingSpec) { *out = *in + if in.SubnetTags != nil { + in, out := &in.SubnetTags, &out.SubnetTags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } @@ -3190,7 +3197,7 @@ func (in *NetworkingSpec) DeepCopyInto(out *NetworkingSpec) { *out = nil } else { *out = new(LyftVPCNetworkingSpec) - **out = **in + (*in).DeepCopyInto(*out) } } return diff --git a/pkg/apis/kops/zz_generated.deepcopy.go b/pkg/apis/kops/zz_generated.deepcopy.go index c2d2307c8f..08c4e17020 100644 --- a/pkg/apis/kops/zz_generated.deepcopy.go +++ b/pkg/apis/kops/zz_generated.deepcopy.go @@ -3255,6 +3255,13 @@ func (in *LoadBalancerAccessSpec) DeepCopy() *LoadBalancerAccessSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *LyftVPCNetworkingSpec) DeepCopyInto(out *LyftVPCNetworkingSpec) { *out = *in + if in.SubnetTags != nil { + in, out := &in.SubnetTags, &out.SubnetTags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } return } @@ -3394,7 +3401,7 @@ func (in *NetworkingSpec) DeepCopyInto(out *NetworkingSpec) { *out = nil } else { *out = new(LyftVPCNetworkingSpec) - **out = **in + (*in).DeepCopyInto(*out) } } return diff --git a/upup/models/nodeup/resources/_lyft_vpc_cni/files/etc/cni/net.d/10-cni-ipvlan-vpc-k8s.conflist.template b/upup/models/nodeup/resources/_lyft_vpc_cni/files/etc/cni/net.d/10-cni-ipvlan-vpc-k8s.conflist.template index db0c1d21c9..e329d4f556 100644 --- a/upup/models/nodeup/resources/_lyft_vpc_cni/files/etc/cni/net.d/10-cni-ipvlan-vpc-k8s.conflist.template +++ b/upup/models/nodeup/resources/_lyft_vpc_cni/files/etc/cni/net.d/10-cni-ipvlan-vpc-k8s.conflist.template @@ -10,9 +10,7 @@ "ipam": { "type": "cni-ipvlan-vpc-k8s-ipam", "interfaceIndex": 1, - "subnetTags": { - "Type": "pod" - }, + "subnetTags": {{ SubnetTags }}, "routeToVpcPeers": true, "secGroupIds": {{ NodeSecurityGroups }} } diff --git a/upup/pkg/fi/nodeup/command.go b/upup/pkg/fi/nodeup/command.go index a575c7c4b6..7354984e90 100644 --- a/upup/pkg/fi/nodeup/command.go +++ b/upup/pkg/fi/nodeup/command.go @@ -253,6 +253,22 @@ func (c *NodeUpCommand) Run(out io.Writer) error { } if c.cluster.Spec.Networking.LyftVPC != nil { + + loader.TemplateFunctions["SubnetTags"] = func() (string, error) { + tags := map[string]string{ + "Type": "pod", + } + if len(c.cluster.Spec.Networking.LyftVPC.SubnetTags) > 0 { + tags = c.cluster.Spec.Networking.LyftVPC.SubnetTags + } + + bytes, err := json.Marshal(tags) + if err != nil { + return "", err + } + return string(bytes), nil + } + loader.TemplateFunctions["NodeSecurityGroups"] = func() (string, error) { // use the same security groups as the node ids, err := evaluateSecurityGroups(c.cluster.Spec.NetworkID)