diff --git a/nodeup/pkg/model/networking/common.go b/nodeup/pkg/model/networking/common.go index f5c1c67bdb174..aa96ff4a0a064 100644 --- a/nodeup/pkg/model/networking/common.go +++ b/nodeup/pkg/model/networking/common.go @@ -30,9 +30,7 @@ var _ fi.NodeupModelBuilder = &CommonBuilder{} // Build is responsible for copying the common CNI binaries func (b *CommonBuilder) Build(c *fi.NodeupModelBuilderContext) error { - if b.NodeupConfig.Networking.AmazonVPC == nil && - b.NodeupConfig.Networking.Calico == nil && - b.NodeupConfig.Networking.Cilium == nil { + if b.NodeupConfig.InstallCNIAssets { if err := b.AddCNIBinAssets(c); err != nil { return err } diff --git a/pkg/apis/kops/cluster.go b/pkg/apis/kops/cluster.go index 4e5a273ad94d3..fcf1cacde08ab 100644 --- a/pkg/apis/kops/cluster.go +++ b/pkg/apis/kops/cluster.go @@ -938,6 +938,12 @@ func (c *Cluster) UsesNoneDNS() bool { return false } +func (c *Cluster) InstallCNIAssets() bool { + return c.Spec.Networking.AmazonVPC == nil && + c.Spec.Networking.Calico == nil && + c.Spec.Networking.Cilium == nil +} + func (c *Cluster) APIInternalName() string { return "api.internal." + c.ObjectMeta.Name } diff --git a/pkg/apis/kops/model/instance_group.go b/pkg/apis/kops/model/instance_group.go index 91223417b2ca2..fa14fc9852677 100644 --- a/pkg/apis/kops/model/instance_group.go +++ b/pkg/apis/kops/model/instance_group.go @@ -71,9 +71,7 @@ func (m *instanceGroupModel) GetCloudProvider() kops.CloudProviderID { } func (m *instanceGroupModel) InstallCNIAssets() bool { - return m.cluster.Spec.Networking.AmazonVPC == nil && - m.cluster.Spec.Networking.Calico == nil && - m.cluster.Spec.Networking.Cilium == nil + return m.cluster.InstallCNIAssets() } func (m *instanceGroupModel) RawClusterSpec() *kops.ClusterSpec { diff --git a/pkg/apis/nodeup/config.go b/pkg/apis/nodeup/config.go index 1386e8028410d..a00430d7235c9 100644 --- a/pkg/apis/nodeup/config.go +++ b/pkg/apis/nodeup/config.go @@ -69,6 +69,8 @@ type Config struct { KubeProxy *kops.KubeProxyConfig // Networking configures networking. Networking kops.NetworkingSpec + // InstallCNIAssets specifies that the CNI network plugins need to be installed. + InstallCNIAssets bool `json:",omitempty"` // UseCiliumEtcd is true when a Cilium etcd cluster is present. UseCiliumEtcd bool `json:",omitempty"` // UsesKubenet specifies that the CNI is derived from Kubenet. @@ -297,6 +299,10 @@ func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (*Confi config.UpdatePolicy = kops.UpdatePolicyAutomatic } + if cluster.InstallCNIAssets() { + config.InstallCNIAssets = true + } + if cluster.Spec.Networking.AmazonVPC != nil { config.Networking.AmazonVPC = &kops.AmazonVPCNetworkingSpec{} config.DefaultMachineType = aws.String(strings.Split(instanceGroup.Spec.MachineType, ",")[0])