From e4638de5f4486b43fca0bb644bf34d46efcffa7d Mon Sep 17 00:00:00 2001 From: Shri Javadekar Date: Mon, 25 Jun 2018 13:30:23 -0700 Subject: [PATCH] Allow setting MTU for calico networking This commit does the following two changes: 1. Changes the default calico mtu to 8198. 2. Enables setting the mtu explicitly in the config as: ``` networking: calico: mtu: 2048 ``` Testing done: 1. Created cluster on AWS with networking set to calico. No additional details were provided. Verified that the mtu was set to 8198. Also verified that the FELIX_IPINIPMTU environment variable was set to 8198. 2. Created a cluster explicitly setting the calico mtu to 2048. Verified that the mtu for the 'cali*' interfaces inside the pods was set to 2048. Also, verified that the FELIX_IPINIPMTU environment variable was set to 2048. 3. make test passed. Closes #4042 --- pkg/apis/kops/networking.go | 2 ++ pkg/apis/kops/v1alpha1/networking.go | 2 ++ pkg/apis/kops/v1alpha1/zz_generated.conversion.go | 2 ++ pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go | 11 ++++++++++- pkg/apis/kops/v1alpha2/networking.go | 2 ++ pkg/apis/kops/v1alpha2/zz_generated.conversion.go | 2 ++ pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go | 11 ++++++++++- pkg/apis/kops/zz_generated.deepcopy.go | 11 ++++++++++- .../k8s-1.7.yaml.template | 3 +++ 9 files changed, 43 insertions(+), 3 deletions(-) diff --git a/pkg/apis/kops/networking.go b/pkg/apis/kops/networking.go index 1126341a57..6e19516cdc 100644 --- a/pkg/apis/kops/networking.go +++ b/pkg/apis/kops/networking.go @@ -83,6 +83,8 @@ type CalicoNetworkingSpec struct { PrometheusGoMetricsEnabled bool `json:"prometheusGoMetricsEnabled,omitempty"` // PrometheusProcessMetricsEnabled enables Prometheus process metrics collection PrometheusProcessMetricsEnabled bool `json:"prometheusProcessMetricsEnabled,omitempty"` + // MTU to be set in the cni-network-config for calico. + MTU *int32 `json:"mtu,omitempty"` } // CanalNetworkingSpec declares that we want Canal networking diff --git a/pkg/apis/kops/v1alpha1/networking.go b/pkg/apis/kops/v1alpha1/networking.go index 920433c170..fdee2f0567 100644 --- a/pkg/apis/kops/v1alpha1/networking.go +++ b/pkg/apis/kops/v1alpha1/networking.go @@ -83,6 +83,8 @@ type CalicoNetworkingSpec struct { PrometheusGoMetricsEnabled bool `json:"prometheusGoMetricsEnabled,omitempty"` // PrometheusProcessMetricsEnabled enables Prometheus process metrics collection PrometheusProcessMetricsEnabled bool `json:"prometheusProcessMetricsEnabled,omitempty"` + // MTU to be set in the cni-network-config for calico. + MTU *int32 `json:"mtu,omitempty"` } // CanalNetworkingSpec declares that we want Canal networking diff --git a/pkg/apis/kops/v1alpha1/zz_generated.conversion.go b/pkg/apis/kops/v1alpha1/zz_generated.conversion.go index 32fa6c59d6..522222e54c 100644 --- a/pkg/apis/kops/v1alpha1/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha1/zz_generated.conversion.go @@ -425,6 +425,7 @@ func autoConvert_v1alpha1_CalicoNetworkingSpec_To_kops_CalicoNetworkingSpec(in * out.PrometheusMetricsPort = in.PrometheusMetricsPort out.PrometheusGoMetricsEnabled = in.PrometheusGoMetricsEnabled out.PrometheusProcessMetricsEnabled = in.PrometheusProcessMetricsEnabled + out.MTU = in.MTU return nil } @@ -440,6 +441,7 @@ func autoConvert_kops_CalicoNetworkingSpec_To_v1alpha1_CalicoNetworkingSpec(in * out.PrometheusMetricsPort = in.PrometheusMetricsPort out.PrometheusGoMetricsEnabled = in.PrometheusGoMetricsEnabled out.PrometheusProcessMetricsEnabled = in.PrometheusProcessMetricsEnabled + out.MTU = in.MTU return nil } diff --git a/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go index 2acb12c689..ebf340d34f 100644 --- a/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/kops/v1alpha1/zz_generated.deepcopy.go @@ -280,6 +280,15 @@ func (in *CNINetworkingSpec) DeepCopy() *CNINetworkingSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CalicoNetworkingSpec) DeepCopyInto(out *CalicoNetworkingSpec) { *out = *in + if in.MTU != nil { + in, out := &in.MTU, &out.MTU + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } return } @@ -2826,7 +2835,7 @@ func (in *NetworkingSpec) DeepCopyInto(out *NetworkingSpec) { *out = nil } else { *out = new(CalicoNetworkingSpec) - **out = **in + (*in).DeepCopyInto(*out) } } if in.Canal != nil { diff --git a/pkg/apis/kops/v1alpha2/networking.go b/pkg/apis/kops/v1alpha2/networking.go index ec8daaabfc..c94e53bda0 100644 --- a/pkg/apis/kops/v1alpha2/networking.go +++ b/pkg/apis/kops/v1alpha2/networking.go @@ -83,6 +83,8 @@ type CalicoNetworkingSpec struct { PrometheusGoMetricsEnabled bool `json:"prometheusGoMetricsEnabled,omitempty"` // PrometheusProcessMetricsEnabled enables Prometheus process metrics collection PrometheusProcessMetricsEnabled bool `json:"prometheusProcessMetricsEnabled,omitempty"` + // MTU to be set in the cni-network-config for calico. + MTU *int32 `json:"mtu,omitempty"` } // CanalNetworkingSpec declares that we want Canal networking diff --git a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go index 576dca47e4..ee2432f441 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go @@ -461,6 +461,7 @@ func autoConvert_v1alpha2_CalicoNetworkingSpec_To_kops_CalicoNetworkingSpec(in * out.PrometheusMetricsPort = in.PrometheusMetricsPort out.PrometheusGoMetricsEnabled = in.PrometheusGoMetricsEnabled out.PrometheusProcessMetricsEnabled = in.PrometheusProcessMetricsEnabled + out.MTU = in.MTU return nil } @@ -476,6 +477,7 @@ func autoConvert_kops_CalicoNetworkingSpec_To_v1alpha2_CalicoNetworkingSpec(in * out.PrometheusMetricsPort = in.PrometheusMetricsPort out.PrometheusGoMetricsEnabled = in.PrometheusGoMetricsEnabled out.PrometheusProcessMetricsEnabled = in.PrometheusProcessMetricsEnabled + out.MTU = in.MTU return nil } diff --git a/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go index 7753fd0645..fef8f12f33 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.deepcopy.go @@ -253,6 +253,15 @@ func (in *CNINetworkingSpec) DeepCopy() *CNINetworkingSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CalicoNetworkingSpec) DeepCopyInto(out *CalicoNetworkingSpec) { *out = *in + if in.MTU != nil { + in, out := &in.MTU, &out.MTU + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } return } @@ -2907,7 +2916,7 @@ func (in *NetworkingSpec) DeepCopyInto(out *NetworkingSpec) { *out = nil } else { *out = new(CalicoNetworkingSpec) - **out = **in + (*in).DeepCopyInto(*out) } } if in.Canal != nil { diff --git a/pkg/apis/kops/zz_generated.deepcopy.go b/pkg/apis/kops/zz_generated.deepcopy.go index 2a204be0a7..a42600c037 100644 --- a/pkg/apis/kops/zz_generated.deepcopy.go +++ b/pkg/apis/kops/zz_generated.deepcopy.go @@ -269,6 +269,15 @@ func (in *CNINetworkingSpec) DeepCopy() *CNINetworkingSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CalicoNetworkingSpec) DeepCopyInto(out *CalicoNetworkingSpec) { *out = *in + if in.MTU != nil { + in, out := &in.MTU, &out.MTU + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } + } return } @@ -3102,7 +3111,7 @@ func (in *NetworkingSpec) DeepCopyInto(out *NetworkingSpec) { *out = nil } else { *out = new(CalicoNetworkingSpec) - **out = **in + (*in).DeepCopyInto(*out) } } if in.Canal != nil { diff --git a/upup/models/cloudup/resources/addons/networking.projectcalico.org/k8s-1.7.yaml.template b/upup/models/cloudup/resources/addons/networking.projectcalico.org/k8s-1.7.yaml.template index bb020370c3..d3357104cf 100644 --- a/upup/models/cloudup/resources/addons/networking.projectcalico.org/k8s-1.7.yaml.template +++ b/upup/models/cloudup/resources/addons/networking.projectcalico.org/k8s-1.7.yaml.template @@ -32,6 +32,7 @@ data: "etcd_scheme": "https", {{- end }} "log_level": "info", + "mtu": {{- or .Networking.Calico.MTU 8981 }}, "ipam": { "type": "calico-ipam" }, @@ -216,6 +217,8 @@ spec: value: "{{- or .Networking.Calico.PrometheusProcessMetricsEnabled "true" }}" - name: FELIX_HEALTHENABLED value: "true" + - name: FELIX_IPINIPMTU + value: "{{- or .Networking.Calico.MTU 8981 }}" securityContext: privileged: true volumeMounts: