diff --git a/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go b/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go index 5257c953425..8ee7b4a7be5 100644 --- a/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go +++ b/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go @@ -25,7 +25,6 @@ import ( bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" ) // Funcs returns the fuzzer functions for the kubeadm apis. @@ -65,6 +64,7 @@ func fuzzInitConfiguration(obj *kubeadm.InitConfiguration, c fuzz.Continue) { obj.NodeRegistration.ImagePullPolicy = corev1.PullIfNotPresent obj.Patches = nil obj.DryRun = false + kubeadm.SetDefaultTimeouts(&obj.Timeouts) } func fuzzNodeRegistration(obj *kubeadm.NodeRegistrationOptions, c fuzz.Continue) { @@ -85,7 +85,7 @@ func fuzzClusterConfiguration(obj *kubeadm.ClusterConfiguration, c fuzz.Continue obj.KubernetesVersion = "qux" obj.CIKubernetesVersion = "" // This fields doesn't exists in public API >> using default to get the roundtrip test pass obj.APIServer.TimeoutForControlPlane = &metav1.Duration{ - Duration: constants.DefaultControlPlaneTimeout, + Duration: 0, } obj.ControllerManager.ExtraEnvs = []kubeadm.EnvVar{} obj.APIServer.ExtraEnvs = []kubeadm.EnvVar{} @@ -128,12 +128,13 @@ func fuzzJoinConfiguration(obj *kubeadm.JoinConfiguration, c fuzz.Continue) { obj.Discovery = kubeadm.Discovery{ BootstrapToken: &kubeadm.BootstrapTokenDiscovery{Token: "baz"}, TLSBootstrapToken: "qux", - Timeout: &metav1.Duration{Duration: 1234}, + Timeout: &metav1.Duration{}, } obj.SkipPhases = nil obj.NodeRegistration.ImagePullPolicy = corev1.PullIfNotPresent obj.Patches = nil obj.DryRun = false + kubeadm.SetDefaultTimeouts(&obj.Timeouts) } func fuzzJoinControlPlane(obj *kubeadm.JoinControlPlane, c fuzz.Continue) { @@ -145,4 +146,5 @@ func fuzzResetConfiguration(obj *kubeadm.ResetConfiguration, c fuzz.Continue) { // Pinning values for fields that get defaults if fuzz value is empty string or nil (thus making the round trip test fail) obj.CertificatesDir = "/tmp" + kubeadm.SetDefaultTimeouts(&obj.Timeouts) } diff --git a/cmd/kubeadm/app/apis/kubeadm/timeoututils.go b/cmd/kubeadm/app/apis/kubeadm/timeoututils.go new file mode 100644 index 00000000000..6f533d8cd58 --- /dev/null +++ b/cmd/kubeadm/app/apis/kubeadm/timeoututils.go @@ -0,0 +1,35 @@ +/* +Copyright 2023 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package kubeadm + +import ( + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// SetDefaultTimeouts sets an internal Timeouts struct to its default values. +func SetDefaultTimeouts(t **Timeouts) { + *t = &Timeouts{ + ControlPlaneComponentHealthCheck: &metav1.Duration{Duration: 4 * time.Minute}, + KubeletHealthCheck: &metav1.Duration{Duration: 4 * time.Minute}, + KubernetesAPICall: &metav1.Duration{Duration: 1 * time.Minute}, + EtcdAPICall: &metav1.Duration{Duration: 2 * time.Minute}, + TLSBootstrap: &metav1.Duration{Duration: 5 * time.Minute}, + Discovery: &metav1.Duration{Duration: 5 * time.Minute}, + } +} diff --git a/cmd/kubeadm/app/apis/kubeadm/types.go b/cmd/kubeadm/app/apis/kubeadm/types.go index 373e1e6a0fe..0e8ce6d64b2 100644 --- a/cmd/kubeadm/app/apis/kubeadm/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/types.go @@ -69,6 +69,9 @@ type InitConfiguration struct { // Patches contains options related to applying patches to components deployed by kubeadm during // "kubeadm init". Patches *Patches + + // Timeouts holds various timeouts that apply to kubeadm commands. + Timeouts *Timeouts } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object @@ -343,6 +346,9 @@ type JoinConfiguration struct { // Patches contains options related to applying patches to components deployed by kubeadm during // "kubeadm join". Patches *Patches + + // Timeouts holds various timeouts that apply to kubeadm commands. + Timeouts *Timeouts } // JoinControlPlane contains elements describing an additional control plane instance to be deployed on the joining node. @@ -527,6 +533,9 @@ type ResetConfiguration struct { // directories during "reset". A flag can be one of: MNT_FORCE, MNT_DETACH, MNT_EXPIRE, UMOUNT_NOFOLLOW. // By default this list is empty. UnmountFlags []string + + // Timeouts holds various timeouts that apply to kubeadm commands. + Timeouts *Timeouts } const ( @@ -563,3 +572,30 @@ const ( // EncryptionAlgorithmRSA defines the RSA encryption algorithm type. EncryptionAlgorithmRSA EncryptionAlgorithmType = "RSA" ) + +// Timeouts holds various timeouts that apply to kubeadm commands. +type Timeouts struct { + // ControlPlaneComponentHealthCheck is the amount of time to wait for a control plane + // component, such as the API server, to be healthy during "kubeadm init" and "kubeadm join". + ControlPlaneComponentHealthCheck *metav1.Duration + + // KubeletHealthCheck is the amount of time to wait for the kubelet to be healthy + // during "kubeadm init" and "kubeadm join". + KubeletHealthCheck *metav1.Duration + + // KubernetesAPICall is the amount of time to wait for the kubeadm client to complete a request to + // the API server. This applies to all types of methods (GET, POST, etc). + KubernetesAPICall *metav1.Duration + + // EtcdAPICall is the amount of time to wait for the kubeadm etcd client to complete a request to + // the etcd cluster. + EtcdAPICall *metav1.Duration + + // TLSBootstrap is the amount of time to wait for the kubelet to complete TLS bootstrap + // for a joining node. + TLSBootstrap *metav1.Duration + + // Discovery is the amount of time to wait for kubeadm to validate the API server identity + // for a joining node. + Discovery *metav1.Duration +} diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta3/conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1beta3/conversion.go index e10e82729b2..384788cc3c0 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta3/conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta3/conversion.go @@ -29,11 +29,6 @@ func Convert_kubeadm_InitConfiguration_To_v1beta3_InitConfiguration(in *kubeadm. return autoConvert_kubeadm_InitConfiguration_To_v1beta3_InitConfiguration(in, out, s) } -// Convert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration converts a private JoinConfiguration to public JoinConfiguration. -func Convert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in *kubeadm.JoinConfiguration, out *JoinConfiguration, s conversion.Scope) error { - return autoConvert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in, out, s) -} - // Convert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration converts a public InitConfiguration to private InitConfiguration. func Convert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration(in *InitConfiguration, out *kubeadm.InitConfiguration, s conversion.Scope) error { err := autoConvert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration(in, out, s) @@ -45,9 +40,22 @@ func Convert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration(in *InitConf // If we call Convert_v1beta3_ClusterConfiguration_To_kubeadm_ClusterConfiguration() it will receive // a default value, thus here we need to reset it back to "". out.EncryptionAlgorithm = "" + // Set default timeouts. + kubeadm.SetDefaultTimeouts(&out.Timeouts) return err } +// Convert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration converts a private JoinConfiguration to public JoinConfiguration. +func Convert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in *kubeadm.JoinConfiguration, out *JoinConfiguration, s conversion.Scope) error { + return autoConvert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in, out, s) +} + +// Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration converts a public JoinConfiguration to a private JoinConfiguration. +func Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(in *JoinConfiguration, out *kubeadm.JoinConfiguration, s conversion.Scope) error { + kubeadm.SetDefaultTimeouts(&out.Timeouts) + return autoConvert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(in, out, s) +} + // Convert_kubeadm_ClusterConfiguration_To_v1beta3_ClusterConfiguration is required due to missing EncryptionAlgorithm in v1beta3. func Convert_kubeadm_ClusterConfiguration_To_v1beta3_ClusterConfiguration(in *kubeadm.ClusterConfiguration, out *ClusterConfiguration, s conversion.Scope) error { return autoConvert_kubeadm_ClusterConfiguration_To_v1beta3_ClusterConfiguration(in, out, s) @@ -135,3 +143,8 @@ func convertFromArgs(in []kubeadm.Arg) map[string]string { } return args } + +// Convert_v1beta3_APIServer_To_kubeadm_APIServer is required due to missing APIServer.TimeoutForControlPlane in v1beta4. +func Convert_v1beta3_APIServer_To_kubeadm_APIServer(in *APIServer, out *kubeadm.APIServer, s conversion.Scope) error { + return autoConvert_v1beta3_APIServer_To_kubeadm_APIServer(in, out, s) +} diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta3/zz_generated.conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1beta3/zz_generated.conversion.go index 2d81af6aeea..53937bbf05d 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta3/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta3/zz_generated.conversion.go @@ -49,11 +49,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*APIServer)(nil), (*kubeadm.APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta3_APIServer_To_kubeadm_APIServer(a.(*APIServer), b.(*kubeadm.APIServer), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*kubeadm.APIServer)(nil), (*APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_kubeadm_APIServer_To_v1beta3_APIServer(a.(*kubeadm.APIServer), b.(*APIServer), scope) }); err != nil { @@ -134,11 +129,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*JoinConfiguration)(nil), (*kubeadm.JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(a.(*JoinConfiguration), b.(*kubeadm.JoinConfiguration), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*JoinControlPlane)(nil), (*kubeadm.JoinControlPlane)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta3_JoinControlPlane_To_kubeadm_JoinControlPlane(a.(*JoinControlPlane), b.(*kubeadm.JoinControlPlane), scope) }); err != nil { @@ -204,6 +194,11 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddConversionFunc((*APIServer)(nil), (*kubeadm.APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta3_APIServer_To_kubeadm_APIServer(a.(*APIServer), b.(*kubeadm.APIServer), scope) + }); err != nil { + return err + } if err := s.AddConversionFunc((*ClusterConfiguration)(nil), (*kubeadm.ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta3_ClusterConfiguration_To_kubeadm_ClusterConfiguration(a.(*ClusterConfiguration), b.(*kubeadm.ClusterConfiguration), scope) }); err != nil { @@ -219,6 +214,11 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddConversionFunc((*JoinConfiguration)(nil), (*kubeadm.JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(a.(*JoinConfiguration), b.(*kubeadm.JoinConfiguration), scope) + }); err != nil { + return err + } if err := s.AddConversionFunc((*LocalEtcd)(nil), (*kubeadm.LocalEtcd)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta3_LocalEtcd_To_kubeadm_LocalEtcd(a.(*LocalEtcd), b.(*kubeadm.LocalEtcd), scope) }); err != nil { @@ -263,11 +263,6 @@ func autoConvert_v1beta3_APIServer_To_kubeadm_APIServer(in *APIServer, out *kube return nil } -// Convert_v1beta3_APIServer_To_kubeadm_APIServer is an autogenerated conversion function. -func Convert_v1beta3_APIServer_To_kubeadm_APIServer(in *APIServer, out *kubeadm.APIServer, s conversion.Scope) error { - return autoConvert_v1beta3_APIServer_To_kubeadm_APIServer(in, out, s) -} - func autoConvert_kubeadm_APIServer_To_v1beta3_APIServer(in *kubeadm.APIServer, out *APIServer, s conversion.Scope) error { if err := Convert_kubeadm_ControlPlaneComponent_To_v1beta3_ControlPlaneComponent(&in.ControlPlaneComponent, &out.ControlPlaneComponent, s); err != nil { return err @@ -589,6 +584,7 @@ func autoConvert_kubeadm_InitConfiguration_To_v1beta3_InitConfiguration(in *kube out.CertificateKey = in.CertificateKey out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.Patches = (*Patches)(unsafe.Pointer(in.Patches)) + // WARNING: in.Timeouts requires manual conversion: does not exist in peer-type return nil } @@ -606,11 +602,6 @@ func autoConvert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(in *Join return nil } -// Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration is an autogenerated conversion function. -func Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(in *JoinConfiguration, out *kubeadm.JoinConfiguration, s conversion.Scope) error { - return autoConvert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(in, out, s) -} - func autoConvert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in *kubeadm.JoinConfiguration, out *JoinConfiguration, s conversion.Scope) error { // WARNING: in.DryRun requires manual conversion: does not exist in peer-type if err := Convert_kubeadm_NodeRegistrationOptions_To_v1beta3_NodeRegistrationOptions(&in.NodeRegistration, &out.NodeRegistration, s); err != nil { @@ -623,6 +614,7 @@ func autoConvert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in *kube out.ControlPlane = (*JoinControlPlane)(unsafe.Pointer(in.ControlPlane)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.Patches = (*Patches)(unsafe.Pointer(in.Patches)) + // WARNING: in.Timeouts requires manual conversion: does not exist in peer-type return nil } diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta4/conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1beta4/conversion.go index cee9265202c..36d1be31f28 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta4/conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta4/conversion.go @@ -17,6 +17,7 @@ limitations under the License. package v1beta4 import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/conversion" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" @@ -34,5 +35,35 @@ func Convert_v1beta4_InitConfiguration_To_kubeadm_InitConfiguration(in *InitConf return err } err = Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(&ClusterConfiguration{}, &out.ClusterConfiguration, s) + out.ClusterConfiguration.APIServer.TimeoutForControlPlane = nil + return err +} + +// Convert_kubeadm_APIServer_To_v1beta4_APIServer is required due to missing APIServer.TimeoutForControlPlane in v1beta4. +func Convert_kubeadm_APIServer_To_v1beta4_APIServer(in *kubeadm.APIServer, out *APIServer, s conversion.Scope) error { + return autoConvert_kubeadm_APIServer_To_v1beta4_APIServer(in, out, s) +} + +// Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration is required due to missing TimeoutForControlPlane in v1beta4 +func Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(in *ClusterConfiguration, out *kubeadm.ClusterConfiguration, s conversion.Scope) error { + out.APIServer.TimeoutForControlPlane = &metav1.Duration{} + return autoConvert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(in, out, s) +} + +// Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration converts a public JoinConfiguration to a private JoinConfiguration. +func Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(in *JoinConfiguration, out *kubeadm.JoinConfiguration, s conversion.Scope) error { + err := autoConvert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(in, out, s) + return err +} + +// Convert_kubeadm_Discovery_To_v1beta4_Discovery is required because there is no Discovery.Timeout in v1beta4 +func Convert_kubeadm_Discovery_To_v1beta4_Discovery(in *kubeadm.Discovery, out *Discovery, s conversion.Scope) error { + return autoConvert_kubeadm_Discovery_To_v1beta4_Discovery(in, out, s) +} + +// Convert_v1beta4_Discovery_To_kubeadm_Discovery is required because there is no Discovery.Timeout in v1beta4 +func Convert_v1beta4_Discovery_To_kubeadm_Discovery(in *Discovery, out *kubeadm.Discovery, s conversion.Scope) error { + err := autoConvert_v1beta4_Discovery_To_kubeadm_Discovery(in, out, s) + out.Timeout = &metav1.Duration{} return err } diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta4/defaults.go b/cmd/kubeadm/app/apis/kubeadm/v1beta4/defaults.go index d6329da6328..00617e03ce9 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta4/defaults.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta4/defaults.go @@ -74,6 +74,10 @@ func SetDefaults_InitConfiguration(obj *InitConfiguration) { SetDefaults_BootstrapTokens(obj) SetDefaults_APIEndpoint(&obj.LocalAPIEndpoint) SetDefaults_NodeRegistration(&obj.NodeRegistration) + if obj.Timeouts == nil { + obj.Timeouts = &Timeouts{} + } + SetDefaults_Timeouts(obj.Timeouts) } // SetDefaults_ClusterConfiguration assigns default values for the ClusterConfiguration @@ -107,16 +111,6 @@ func SetDefaults_ClusterConfiguration(obj *ClusterConfiguration) { } SetDefaults_Etcd(obj) - SetDefaults_APIServer(&obj.APIServer) -} - -// SetDefaults_APIServer assigns default values for the API Server -func SetDefaults_APIServer(obj *APIServer) { - if obj.TimeoutForControlPlane == nil { - obj.TimeoutForControlPlane = &metav1.Duration{ - Duration: constants.DefaultControlPlaneTimeout, - } - } } // SetDefaults_Etcd assigns default values for the proxy @@ -140,6 +134,10 @@ func SetDefaults_JoinConfiguration(obj *JoinConfiguration) { SetDefaults_JoinControlPlane(obj.ControlPlane) SetDefaults_Discovery(&obj.Discovery) SetDefaults_NodeRegistration(&obj.NodeRegistration) + if obj.Timeouts == nil { + obj.Timeouts = &Timeouts{} + } + SetDefaults_Timeouts(obj.Timeouts) } // SetDefaults_JoinControlPlane assigns default values for a joining control plane node @@ -155,12 +153,6 @@ func SetDefaults_Discovery(obj *Discovery) { obj.TLSBootstrapToken = obj.BootstrapToken.Token } - if obj.Timeout == nil { - obj.Timeout = &metav1.Duration{ - Duration: DefaultDiscoveryTimeout, - } - } - if obj.File != nil { SetDefaults_FileDiscovery(obj.File) } @@ -212,6 +204,10 @@ func SetDefaults_ResetConfiguration(obj *ResetConfiguration) { if obj.CertificatesDir == "" { obj.CertificatesDir = DefaultCertificatesDir } + if obj.Timeouts == nil { + obj.Timeouts = &Timeouts{} + } + SetDefaults_Timeouts(obj.Timeouts) } // SetDefaults_EnvVar assigns default values for EnvVar. @@ -225,3 +221,37 @@ func SetDefaults_EnvVar(obj *EnvVar) { } } } + +// SetDefaults_Timeouts assigns default values for timeouts. +func SetDefaults_Timeouts(obj *Timeouts) { + if obj.ControlPlaneComponentHealthCheck == nil { + obj.ControlPlaneComponentHealthCheck = &metav1.Duration{ + Duration: constants.DefaultControlPlaneTimeout, + } + } + if obj.KubeletHealthCheck == nil { + obj.KubeletHealthCheck = &metav1.Duration{ + Duration: constants.DefaultKubeletTimeout, + } + } + if obj.KubernetesAPICall == nil { + obj.KubernetesAPICall = &metav1.Duration{ + Duration: time.Minute * 1, // TODO: use constant + } + } + if obj.EtcdAPICall == nil { + obj.EtcdAPICall = &metav1.Duration{ + Duration: time.Minute * 1, // TODO: use constant + } + } + if obj.TLSBootstrap == nil { + obj.TLSBootstrap = &metav1.Duration{ + Duration: constants.TLSBootstrapTimeout, + } + } + if obj.Discovery == nil { + obj.Discovery = &metav1.Duration{ + Duration: DefaultDiscoveryTimeout, + } + } +} diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta4/doc.go b/cmd/kubeadm/app/apis/kubeadm/v1beta4/doc.go index 7c1e008a73c..4f5d0135aef 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta4/doc.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta4/doc.go @@ -38,6 +38,8 @@ limitations under the License. // - Add `ClusterConfiguration.DNS.Disabled` and `ClusterConfiguration.Proxy.Disabled` that can be used to disable // the CoreDNS and kube-proxy addons during cluster initialization. Skipping the related addons phases, // during cluster creation will set the same fields to `false`. +// - Add a `Timeouts` structure to `InitConfiguration`, `JoinConfiguration` and `ResetConfiguration“ +// that can be used to configure various timeouts. // // Migration from old kubeadm config versions // diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta4/types.go b/cmd/kubeadm/app/apis/kubeadm/v1beta4/types.go index 06221c297d1..0eec1df807f 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta4/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta4/types.go @@ -72,6 +72,10 @@ type InitConfiguration struct { // "kubeadm init". // +optional Patches *Patches `json:"patches,omitempty"` + + // Timeouts holds various timeouts that apply to kubeadm commands. + // +optional + Timeouts *Timeouts `json:"timeouts,omitempty"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object @@ -176,10 +180,6 @@ type APIServer struct { // CertSANs sets extra Subject Alternative Names for the API Server signing cert. // +optional CertSANs []string `json:"certSANs,omitempty"` - - // TimeoutForControlPlane controls the timeout that we use for API server to appear - // +optional - TimeoutForControlPlane *metav1.Duration `json:"timeoutForControlPlane,omitempty"` } // DNS defines the DNS addon that should be used in the cluster @@ -379,6 +379,10 @@ type JoinConfiguration struct { // "kubeadm join". // +optional Patches *Patches `json:"patches,omitempty"` + + // Timeouts holds various timeouts that apply to kubeadm commands. + // +optional + Timeouts *Timeouts `json:"timeouts,omitempty"` } // JoinControlPlane contains elements describing an additional control plane instance to be deployed on the joining node. @@ -411,10 +415,6 @@ type Discovery struct { // If .File is set, this field **must be set** in case the KubeConfigFile does not contain any other authentication information // +optional TLSBootstrapToken string `json:"tlsBootstrapToken,omitempty" datapolicy:"token"` - - // Timeout modifies the discovery timeout - // +optional - Timeout *metav1.Duration `json:"timeout,omitempty"` } // BootstrapTokenDiscovery is used to set the options for bootstrap token based discovery @@ -523,6 +523,10 @@ type ResetConfiguration struct { // By default this list is empty. // +optional UnmountFlags []string `json:"unmountFlags,omitempty"` + + // Timeouts holds various timeouts that apply to kubeadm commands. + // +optional + Timeouts *Timeouts `json:"timeouts,omitempty"` } // Arg represents an argument with a name and a value. @@ -545,3 +549,42 @@ const ( // EncryptionAlgorithmRSA defines the RSA encryption algorithm type. EncryptionAlgorithmRSA EncryptionAlgorithmType = "RSA" ) + +// Timeouts holds various timeouts that apply to kubeadm commands. +type Timeouts struct { + // ControlPlaneComponentHealthCheck is the amount of time to wait for a control plane + // component, such as the API server, to be healthy during "kubeadm init" and "kubeadm join". + // Default: 4m + // +optional + ControlPlaneComponentHealthCheck *metav1.Duration `json:"controlPlaneComponentHealthCheck,omitempty"` + + // KubeletHealthCheck is the amount of time to wait for the kubelet to be healthy + // during "kubeadm init" and "kubeadm join". + // Default: 4m + // +optional + KubeletHealthCheck *metav1.Duration `json:"kubeletHealthCheck,omitempty"` + + // KubernetesAPICall is the amount of time to wait for the kubeadm client to complete a request to + // the API server. This applies to all types of methods (GET, POST, etc). + // Default: 1m + // +optional + KubernetesAPICall *metav1.Duration `json:"kubernetesAPICall,omitempty"` + + // EtcdAPICall is the amount of time to wait for the kubeadm etcd client to complete a request to + // the etcd cluster. + // Default: 2m + // +optional + EtcdAPICall *metav1.Duration `json:"etcdAPICall,omitempty"` + + // TLSBootstrap is the amount of time to wait for the kubelet to complete TLS bootstrap + // for a joining node. + // Default: 5m + // +optional + TLSBootstrap *metav1.Duration `json:"tlsBootstrap,omitempty"` + + // Discovery is the amount of time to wait for kubeadm to validate the API server identity + // for a joining node. + // Default: 5m + // +optional + Discovery *metav1.Duration `json:"discovery,omitempty"` +} diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.conversion.go index 3f78cbf801d..1419357bcd7 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.conversion.go @@ -24,8 +24,8 @@ package v1beta4 import ( unsafe "unsafe" - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + v1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" @@ -54,11 +54,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*kubeadm.APIServer)(nil), (*APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_kubeadm_APIServer_To_v1beta4_APIServer(a.(*kubeadm.APIServer), b.(*APIServer), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*Arg)(nil), (*kubeadm.Arg)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta4_Arg_To_kubeadm_Arg(a.(*Arg), b.(*kubeadm.Arg), scope) }); err != nil { @@ -79,11 +74,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*ClusterConfiguration)(nil), (*kubeadm.ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(a.(*ClusterConfiguration), b.(*kubeadm.ClusterConfiguration), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*kubeadm.ClusterConfiguration)(nil), (*ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_kubeadm_ClusterConfiguration_To_v1beta4_ClusterConfiguration(a.(*kubeadm.ClusterConfiguration), b.(*ClusterConfiguration), scope) }); err != nil { @@ -109,16 +99,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*Discovery)(nil), (*kubeadm.Discovery)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta4_Discovery_To_kubeadm_Discovery(a.(*Discovery), b.(*kubeadm.Discovery), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*kubeadm.Discovery)(nil), (*Discovery)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_kubeadm_Discovery_To_v1beta4_Discovery(a.(*kubeadm.Discovery), b.(*Discovery), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*EnvVar)(nil), (*kubeadm.EnvVar)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta4_EnvVar_To_kubeadm_EnvVar(a.(*EnvVar), b.(*kubeadm.EnvVar), scope) }); err != nil { @@ -179,11 +159,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddGeneratedConversionFunc((*JoinConfiguration)(nil), (*kubeadm.JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(a.(*JoinConfiguration), b.(*kubeadm.JoinConfiguration), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*kubeadm.JoinConfiguration)(nil), (*JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_kubeadm_JoinConfiguration_To_v1beta4_JoinConfiguration(a.(*kubeadm.JoinConfiguration), b.(*JoinConfiguration), scope) }); err != nil { @@ -259,16 +234,51 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*Timeouts)(nil), (*kubeadm.Timeouts)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta4_Timeouts_To_kubeadm_Timeouts(a.(*Timeouts), b.(*kubeadm.Timeouts), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*kubeadm.Timeouts)(nil), (*Timeouts)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_kubeadm_Timeouts_To_v1beta4_Timeouts(a.(*kubeadm.Timeouts), b.(*Timeouts), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*kubeadm.APIServer)(nil), (*APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_kubeadm_APIServer_To_v1beta4_APIServer(a.(*kubeadm.APIServer), b.(*APIServer), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*kubeadm.Discovery)(nil), (*Discovery)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_kubeadm_Discovery_To_v1beta4_Discovery(a.(*kubeadm.Discovery), b.(*Discovery), scope) + }); err != nil { + return err + } if err := s.AddConversionFunc((*kubeadm.InitConfiguration)(nil), (*InitConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_kubeadm_InitConfiguration_To_v1beta4_InitConfiguration(a.(*kubeadm.InitConfiguration), b.(*InitConfiguration), scope) }); err != nil { return err } + if err := s.AddConversionFunc((*ClusterConfiguration)(nil), (*kubeadm.ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(a.(*ClusterConfiguration), b.(*kubeadm.ClusterConfiguration), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*Discovery)(nil), (*kubeadm.Discovery)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta4_Discovery_To_kubeadm_Discovery(a.(*Discovery), b.(*kubeadm.Discovery), scope) + }); err != nil { + return err + } if err := s.AddConversionFunc((*InitConfiguration)(nil), (*kubeadm.InitConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta4_InitConfiguration_To_kubeadm_InitConfiguration(a.(*InitConfiguration), b.(*kubeadm.InitConfiguration), scope) }); err != nil { return err } + if err := s.AddConversionFunc((*JoinConfiguration)(nil), (*kubeadm.JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(a.(*JoinConfiguration), b.(*kubeadm.JoinConfiguration), scope) + }); err != nil { + return err + } return nil } @@ -299,7 +309,6 @@ func autoConvert_v1beta4_APIServer_To_kubeadm_APIServer(in *APIServer, out *kube return err } out.CertSANs = *(*[]string)(unsafe.Pointer(&in.CertSANs)) - out.TimeoutForControlPlane = (*v1.Duration)(unsafe.Pointer(in.TimeoutForControlPlane)) return nil } @@ -313,15 +322,10 @@ func autoConvert_kubeadm_APIServer_To_v1beta4_APIServer(in *kubeadm.APIServer, o return err } out.CertSANs = *(*[]string)(unsafe.Pointer(&in.CertSANs)) - out.TimeoutForControlPlane = (*v1.Duration)(unsafe.Pointer(in.TimeoutForControlPlane)) + // WARNING: in.TimeoutForControlPlane requires manual conversion: does not exist in peer-type return nil } -// Convert_kubeadm_APIServer_To_v1beta4_APIServer is an autogenerated conversion function. -func Convert_kubeadm_APIServer_To_v1beta4_APIServer(in *kubeadm.APIServer, out *APIServer, s conversion.Scope) error { - return autoConvert_kubeadm_APIServer_To_v1beta4_APIServer(in, out, s) -} - func autoConvert_v1beta4_Arg_To_kubeadm_Arg(in *Arg, out *kubeadm.Arg, s conversion.Scope) error { out.Name = in.Name out.Value = in.Value @@ -402,11 +406,6 @@ func autoConvert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(in return nil } -// Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration is an autogenerated conversion function. -func Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(in *ClusterConfiguration, out *kubeadm.ClusterConfiguration, s conversion.Scope) error { - return autoConvert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(in, out, s) -} - func autoConvert_kubeadm_ClusterConfiguration_To_v1beta4_ClusterConfiguration(in *kubeadm.ClusterConfiguration, out *ClusterConfiguration, s conversion.Scope) error { // INFO: in.ComponentConfigs opted out of conversion generation if err := Convert_kubeadm_Etcd_To_v1beta4_Etcd(&in.Etcd, &out.Etcd, s); err != nil { @@ -501,28 +500,17 @@ func autoConvert_v1beta4_Discovery_To_kubeadm_Discovery(in *Discovery, out *kube out.BootstrapToken = (*kubeadm.BootstrapTokenDiscovery)(unsafe.Pointer(in.BootstrapToken)) out.File = (*kubeadm.FileDiscovery)(unsafe.Pointer(in.File)) out.TLSBootstrapToken = in.TLSBootstrapToken - out.Timeout = (*v1.Duration)(unsafe.Pointer(in.Timeout)) return nil } -// Convert_v1beta4_Discovery_To_kubeadm_Discovery is an autogenerated conversion function. -func Convert_v1beta4_Discovery_To_kubeadm_Discovery(in *Discovery, out *kubeadm.Discovery, s conversion.Scope) error { - return autoConvert_v1beta4_Discovery_To_kubeadm_Discovery(in, out, s) -} - func autoConvert_kubeadm_Discovery_To_v1beta4_Discovery(in *kubeadm.Discovery, out *Discovery, s conversion.Scope) error { out.BootstrapToken = (*BootstrapTokenDiscovery)(unsafe.Pointer(in.BootstrapToken)) out.File = (*FileDiscovery)(unsafe.Pointer(in.File)) out.TLSBootstrapToken = in.TLSBootstrapToken - out.Timeout = (*v1.Duration)(unsafe.Pointer(in.Timeout)) + // WARNING: in.Timeout requires manual conversion: does not exist in peer-type return nil } -// Convert_kubeadm_Discovery_To_v1beta4_Discovery is an autogenerated conversion function. -func Convert_kubeadm_Discovery_To_v1beta4_Discovery(in *kubeadm.Discovery, out *Discovery, s conversion.Scope) error { - return autoConvert_kubeadm_Discovery_To_v1beta4_Discovery(in, out, s) -} - func autoConvert_v1beta4_EnvVar_To_kubeadm_EnvVar(in *EnvVar, out *kubeadm.EnvVar, s conversion.Scope) error { out.EnvVar = in.EnvVar return nil @@ -616,7 +604,7 @@ func autoConvert_v1beta4_HostPathMount_To_kubeadm_HostPathMount(in *HostPathMoun out.HostPath = in.HostPath out.MountPath = in.MountPath out.ReadOnly = in.ReadOnly - out.PathType = corev1.HostPathType(in.PathType) + out.PathType = v1.HostPathType(in.PathType) return nil } @@ -630,7 +618,7 @@ func autoConvert_kubeadm_HostPathMount_To_v1beta4_HostPathMount(in *kubeadm.Host out.HostPath = in.HostPath out.MountPath = in.MountPath out.ReadOnly = in.ReadOnly - out.PathType = corev1.HostPathType(in.PathType) + out.PathType = v1.HostPathType(in.PathType) return nil } @@ -673,6 +661,7 @@ func autoConvert_v1beta4_InitConfiguration_To_kubeadm_InitConfiguration(in *Init out.CertificateKey = in.CertificateKey out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.Patches = (*kubeadm.Patches)(unsafe.Pointer(in.Patches)) + out.Timeouts = (*kubeadm.Timeouts)(unsafe.Pointer(in.Timeouts)) return nil } @@ -689,6 +678,7 @@ func autoConvert_kubeadm_InitConfiguration_To_v1beta4_InitConfiguration(in *kube out.CertificateKey = in.CertificateKey out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.Patches = (*Patches)(unsafe.Pointer(in.Patches)) + out.Timeouts = (*Timeouts)(unsafe.Pointer(in.Timeouts)) return nil } @@ -704,14 +694,10 @@ func autoConvert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(in *Join out.ControlPlane = (*kubeadm.JoinControlPlane)(unsafe.Pointer(in.ControlPlane)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.Patches = (*kubeadm.Patches)(unsafe.Pointer(in.Patches)) + out.Timeouts = (*kubeadm.Timeouts)(unsafe.Pointer(in.Timeouts)) return nil } -// Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration is an autogenerated conversion function. -func Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(in *JoinConfiguration, out *kubeadm.JoinConfiguration, s conversion.Scope) error { - return autoConvert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(in, out, s) -} - func autoConvert_kubeadm_JoinConfiguration_To_v1beta4_JoinConfiguration(in *kubeadm.JoinConfiguration, out *JoinConfiguration, s conversion.Scope) error { out.DryRun = in.DryRun if err := Convert_kubeadm_NodeRegistrationOptions_To_v1beta4_NodeRegistrationOptions(&in.NodeRegistration, &out.NodeRegistration, s); err != nil { @@ -724,6 +710,7 @@ func autoConvert_kubeadm_JoinConfiguration_To_v1beta4_JoinConfiguration(in *kube out.ControlPlane = (*JoinControlPlane)(unsafe.Pointer(in.ControlPlane)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.Patches = (*Patches)(unsafe.Pointer(in.Patches)) + out.Timeouts = (*Timeouts)(unsafe.Pointer(in.Timeouts)) return nil } @@ -819,10 +806,10 @@ func Convert_kubeadm_Networking_To_v1beta4_Networking(in *kubeadm.Networking, ou func autoConvert_v1beta4_NodeRegistrationOptions_To_kubeadm_NodeRegistrationOptions(in *NodeRegistrationOptions, out *kubeadm.NodeRegistrationOptions, s conversion.Scope) error { out.Name = in.Name out.CRISocket = in.CRISocket - out.Taints = *(*[]corev1.Taint)(unsafe.Pointer(&in.Taints)) + out.Taints = *(*[]v1.Taint)(unsafe.Pointer(&in.Taints)) out.KubeletExtraArgs = *(*[]kubeadm.Arg)(unsafe.Pointer(&in.KubeletExtraArgs)) out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors)) - out.ImagePullPolicy = corev1.PullPolicy(in.ImagePullPolicy) + out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy) return nil } @@ -834,10 +821,10 @@ func Convert_v1beta4_NodeRegistrationOptions_To_kubeadm_NodeRegistrationOptions( func autoConvert_kubeadm_NodeRegistrationOptions_To_v1beta4_NodeRegistrationOptions(in *kubeadm.NodeRegistrationOptions, out *NodeRegistrationOptions, s conversion.Scope) error { out.Name = in.Name out.CRISocket = in.CRISocket - out.Taints = *(*[]corev1.Taint)(unsafe.Pointer(&in.Taints)) + out.Taints = *(*[]v1.Taint)(unsafe.Pointer(&in.Taints)) out.KubeletExtraArgs = *(*[]Arg)(unsafe.Pointer(&in.KubeletExtraArgs)) out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors)) - out.ImagePullPolicy = corev1.PullPolicy(in.ImagePullPolicy) + out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy) return nil } @@ -895,6 +882,7 @@ func autoConvert_v1beta4_ResetConfiguration_To_kubeadm_ResetConfiguration(in *Re out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.UnmountFlags = *(*[]string)(unsafe.Pointer(&in.UnmountFlags)) + out.Timeouts = (*kubeadm.Timeouts)(unsafe.Pointer(in.Timeouts)) return nil } @@ -912,6 +900,7 @@ func autoConvert_kubeadm_ResetConfiguration_To_v1beta4_ResetConfiguration(in *ku out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.UnmountFlags = *(*[]string)(unsafe.Pointer(&in.UnmountFlags)) + out.Timeouts = (*Timeouts)(unsafe.Pointer(in.Timeouts)) return nil } @@ -919,3 +908,33 @@ func autoConvert_kubeadm_ResetConfiguration_To_v1beta4_ResetConfiguration(in *ku func Convert_kubeadm_ResetConfiguration_To_v1beta4_ResetConfiguration(in *kubeadm.ResetConfiguration, out *ResetConfiguration, s conversion.Scope) error { return autoConvert_kubeadm_ResetConfiguration_To_v1beta4_ResetConfiguration(in, out, s) } + +func autoConvert_v1beta4_Timeouts_To_kubeadm_Timeouts(in *Timeouts, out *kubeadm.Timeouts, s conversion.Scope) error { + out.ControlPlaneComponentHealthCheck = (*metav1.Duration)(unsafe.Pointer(in.ControlPlaneComponentHealthCheck)) + out.KubeletHealthCheck = (*metav1.Duration)(unsafe.Pointer(in.KubeletHealthCheck)) + out.KubernetesAPICall = (*metav1.Duration)(unsafe.Pointer(in.KubernetesAPICall)) + out.EtcdAPICall = (*metav1.Duration)(unsafe.Pointer(in.EtcdAPICall)) + out.TLSBootstrap = (*metav1.Duration)(unsafe.Pointer(in.TLSBootstrap)) + out.Discovery = (*metav1.Duration)(unsafe.Pointer(in.Discovery)) + return nil +} + +// Convert_v1beta4_Timeouts_To_kubeadm_Timeouts is an autogenerated conversion function. +func Convert_v1beta4_Timeouts_To_kubeadm_Timeouts(in *Timeouts, out *kubeadm.Timeouts, s conversion.Scope) error { + return autoConvert_v1beta4_Timeouts_To_kubeadm_Timeouts(in, out, s) +} + +func autoConvert_kubeadm_Timeouts_To_v1beta4_Timeouts(in *kubeadm.Timeouts, out *Timeouts, s conversion.Scope) error { + out.ControlPlaneComponentHealthCheck = (*metav1.Duration)(unsafe.Pointer(in.ControlPlaneComponentHealthCheck)) + out.KubeletHealthCheck = (*metav1.Duration)(unsafe.Pointer(in.KubeletHealthCheck)) + out.KubernetesAPICall = (*metav1.Duration)(unsafe.Pointer(in.KubernetesAPICall)) + out.EtcdAPICall = (*metav1.Duration)(unsafe.Pointer(in.EtcdAPICall)) + out.TLSBootstrap = (*metav1.Duration)(unsafe.Pointer(in.TLSBootstrap)) + out.Discovery = (*metav1.Duration)(unsafe.Pointer(in.Discovery)) + return nil +} + +// Convert_kubeadm_Timeouts_To_v1beta4_Timeouts is an autogenerated conversion function. +func Convert_kubeadm_Timeouts_To_v1beta4_Timeouts(in *kubeadm.Timeouts, out *Timeouts, s conversion.Scope) error { + return autoConvert_kubeadm_Timeouts_To_v1beta4_Timeouts(in, out, s) +} diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.deepcopy.go b/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.deepcopy.go index e4956cfdbde..07ba43306f2 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.deepcopy.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.deepcopy.go @@ -23,9 +23,9 @@ package v1beta4 import ( corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" - bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" + v1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -53,11 +53,6 @@ func (in *APIServer) DeepCopyInto(out *APIServer) { *out = make([]string, len(*in)) copy(*out, *in) } - if in.TimeoutForControlPlane != nil { - in, out := &in.TimeoutForControlPlane, &out.TimeoutForControlPlane - *out = new(v1.Duration) - **out = **in - } return } @@ -210,11 +205,6 @@ func (in *Discovery) DeepCopyInto(out *Discovery) { *out = new(FileDiscovery) **out = **in } - if in.Timeout != nil { - in, out := &in.Timeout, &out.Timeout - *out = new(v1.Duration) - **out = **in - } return } @@ -346,7 +336,7 @@ func (in *InitConfiguration) DeepCopyInto(out *InitConfiguration) { out.TypeMeta = in.TypeMeta if in.BootstrapTokens != nil { in, out := &in.BootstrapTokens, &out.BootstrapTokens - *out = make([]bootstraptokenv1.BootstrapToken, len(*in)) + *out = make([]v1.BootstrapToken, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -363,6 +353,11 @@ func (in *InitConfiguration) DeepCopyInto(out *InitConfiguration) { *out = new(Patches) **out = **in } + if in.Timeouts != nil { + in, out := &in.Timeouts, &out.Timeouts + *out = new(Timeouts) + (*in).DeepCopyInto(*out) + } return } @@ -405,6 +400,11 @@ func (in *JoinConfiguration) DeepCopyInto(out *JoinConfiguration) { *out = new(Patches) **out = **in } + if in.Timeouts != nil { + in, out := &in.Timeouts, &out.Timeouts + *out = new(Timeouts) + (*in).DeepCopyInto(*out) + } return } @@ -582,6 +582,11 @@ func (in *ResetConfiguration) DeepCopyInto(out *ResetConfiguration) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.Timeouts != nil { + in, out := &in.Timeouts, &out.Timeouts + *out = new(Timeouts) + (*in).DeepCopyInto(*out) + } return } @@ -602,3 +607,49 @@ func (in *ResetConfiguration) DeepCopyObject() runtime.Object { } return nil } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Timeouts) DeepCopyInto(out *Timeouts) { + *out = *in + if in.ControlPlaneComponentHealthCheck != nil { + in, out := &in.ControlPlaneComponentHealthCheck, &out.ControlPlaneComponentHealthCheck + *out = new(metav1.Duration) + **out = **in + } + if in.KubeletHealthCheck != nil { + in, out := &in.KubeletHealthCheck, &out.KubeletHealthCheck + *out = new(metav1.Duration) + **out = **in + } + if in.KubernetesAPICall != nil { + in, out := &in.KubernetesAPICall, &out.KubernetesAPICall + *out = new(metav1.Duration) + **out = **in + } + if in.EtcdAPICall != nil { + in, out := &in.EtcdAPICall, &out.EtcdAPICall + *out = new(metav1.Duration) + **out = **in + } + if in.TLSBootstrap != nil { + in, out := &in.TLSBootstrap, &out.TLSBootstrap + *out = new(metav1.Duration) + **out = **in + } + if in.Discovery != nil { + in, out := &in.Discovery, &out.Discovery + *out = new(metav1.Duration) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Timeouts. +func (in *Timeouts) DeepCopy() *Timeouts { + if in == nil { + return nil + } + out := new(Timeouts) + in.DeepCopyInto(out) + return out +} diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.defaults.go b/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.defaults.go index 5ee0db52d7c..92a6cb2a7a1 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.defaults.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta4/zz_generated.defaults.go @@ -44,7 +44,6 @@ func SetObjectDefaults_ClusterConfiguration(in *ClusterConfiguration) { SetDefaults_EnvVar(a) } } - SetDefaults_APIServer(&in.APIServer) for i := range in.APIServer.ControlPlaneComponent.ExtraEnvs { a := &in.APIServer.ControlPlaneComponent.ExtraEnvs[i] SetDefaults_EnvVar(a) @@ -62,6 +61,9 @@ func SetObjectDefaults_ClusterConfiguration(in *ClusterConfiguration) { func SetObjectDefaults_InitConfiguration(in *InitConfiguration) { SetDefaults_InitConfiguration(in) SetDefaults_APIEndpoint(&in.LocalAPIEndpoint) + if in.Timeouts != nil { + SetDefaults_Timeouts(in.Timeouts) + } } func SetObjectDefaults_JoinConfiguration(in *JoinConfiguration) { @@ -74,8 +76,14 @@ func SetObjectDefaults_JoinConfiguration(in *JoinConfiguration) { SetDefaults_JoinControlPlane(in.ControlPlane) SetDefaults_APIEndpoint(&in.ControlPlane.LocalAPIEndpoint) } + if in.Timeouts != nil { + SetDefaults_Timeouts(in.Timeouts) + } } func SetObjectDefaults_ResetConfiguration(in *ResetConfiguration) { SetDefaults_ResetConfiguration(in) + if in.Timeouts != nil { + SetDefaults_Timeouts(in.Timeouts) + } } diff --git a/cmd/kubeadm/app/apis/kubeadm/zz_generated.deepcopy.go b/cmd/kubeadm/app/apis/kubeadm/zz_generated.deepcopy.go index 27f366c1b01..b5d96201fcc 100644 --- a/cmd/kubeadm/app/apis/kubeadm/zz_generated.deepcopy.go +++ b/cmd/kubeadm/app/apis/kubeadm/zz_generated.deepcopy.go @@ -393,6 +393,11 @@ func (in *InitConfiguration) DeepCopyInto(out *InitConfiguration) { *out = new(Patches) **out = **in } + if in.Timeouts != nil { + in, out := &in.Timeouts, &out.Timeouts + *out = new(Timeouts) + (*in).DeepCopyInto(*out) + } return } @@ -435,6 +440,11 @@ func (in *JoinConfiguration) DeepCopyInto(out *JoinConfiguration) { *out = new(Patches) **out = **in } + if in.Timeouts != nil { + in, out := &in.Timeouts, &out.Timeouts + *out = new(Timeouts) + (*in).DeepCopyInto(*out) + } return } @@ -612,6 +622,11 @@ func (in *ResetConfiguration) DeepCopyInto(out *ResetConfiguration) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.Timeouts != nil { + in, out := &in.Timeouts, &out.Timeouts + *out = new(Timeouts) + (*in).DeepCopyInto(*out) + } return } @@ -632,3 +647,49 @@ func (in *ResetConfiguration) DeepCopyObject() runtime.Object { } return nil } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Timeouts) DeepCopyInto(out *Timeouts) { + *out = *in + if in.ControlPlaneComponentHealthCheck != nil { + in, out := &in.ControlPlaneComponentHealthCheck, &out.ControlPlaneComponentHealthCheck + *out = new(v1.Duration) + **out = **in + } + if in.KubeletHealthCheck != nil { + in, out := &in.KubeletHealthCheck, &out.KubeletHealthCheck + *out = new(v1.Duration) + **out = **in + } + if in.KubernetesAPICall != nil { + in, out := &in.KubernetesAPICall, &out.KubernetesAPICall + *out = new(v1.Duration) + **out = **in + } + if in.EtcdAPICall != nil { + in, out := &in.EtcdAPICall, &out.EtcdAPICall + *out = new(v1.Duration) + **out = **in + } + if in.TLSBootstrap != nil { + in, out := &in.TLSBootstrap, &out.TLSBootstrap + *out = new(v1.Duration) + **out = **in + } + if in.Discovery != nil { + in, out := &in.Discovery, &out.Discovery + *out = new(v1.Duration) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Timeouts. +func (in *Timeouts) DeepCopy() *Timeouts { + if in == nil { + return nil + } + out := new(Timeouts) + in.DeepCopyInto(out) + return out +}