Skip to content

Commit 6c10e02

Browse files
fabriziopandinisbueringer
authored andcommitted
✨ Add kubeadm v1beta4 types (kubernetes-sigs#10709)
* Add kubeadm v1beta4 types * cleanup conversions for kubeadm v1beta1, v1beta2, v1beta3 * Implement conversions for kubeadm v1beta4 types * Handle Migration of ClusterConfiguration.APIServer.TimeoutForControlPlane to Init/JoinConfiguration.Timeouts.ControlPlaneComponentHealthCheck * Handle Migration of JoinConfiguration.Discovery.Timeout to JoinConfiguration.Timeouts.TLSBootstrap * Final alignment with kubeadm PR * Address comments * fix nit --------- Co-authored-by: Stefan Bueringer <[email protected]>
1 parent 2fbf44e commit 6c10e02

File tree

21 files changed

+3544
-195
lines changed

21 files changed

+3544
-195
lines changed

Makefile

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -413,18 +413,17 @@ generate-go-conversions-core-runtime: $(CONVERSION_GEN) ## Generate conversions
413413
generate-go-conversions-kubeadm-bootstrap: $(CONVERSION_GEN) ## Generate conversions go code for kubeadm bootstrap
414414
$(MAKE) clean-generated-conversions SRC_DIRS="./bootstrap/kubeadm/api"
415415
$(CONVERSION_GEN) \
416-
--input-dirs=./bootstrap/kubeadm/api/v1alpha4 \
417-
--build-tag=ignore_autogenerated_kubeadm_bootstrap \
418-
--extra-peer-dirs=sigs.k8s.io/cluster-api/api/v1alpha4 \
419-
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
420-
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
421-
$(MAKE) clean-generated-conversions SRC_DIRS="./bootstrap/kubeadm/types/upstreamv1beta2,./bootstrap/kubeadm/types/upstreamv1beta3"
416+
--output-file=zz_generated.conversion.go \
417+
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt \
418+
./internal/apis/bootstrap/kubeadm/v1alpha3 \
419+
./internal/apis/bootstrap/kubeadm/v1alpha4
420+
$(MAKE) clean-generated-conversions SRC_DIRS="./bootstrap/kubeadm/types/upstreamv1beta2,./bootstrap/kubeadm/types/upstreamv1beta3,./bootstrap/kubeadm/types/upstreamv1beta4"
422421
$(CONVERSION_GEN) \
423-
--input-dirs=./bootstrap/kubeadm/types/upstreamv1beta2 \
424-
--input-dirs=./bootstrap/kubeadm/types/upstreamv1beta3 \
425-
--build-tag=ignore_autogenerated_kubeadm_types \
426-
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE) \
427-
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt
422+
--output-file=zz_generated.conversion.go \
423+
--go-header-file=./hack/boilerplate/boilerplate.generatego.txt \
424+
./bootstrap/kubeadm/types/upstreamv1beta2 \
425+
./bootstrap/kubeadm/types/upstreamv1beta3 \
426+
./bootstrap/kubeadm/types/upstreamv1beta4
428427

429428
.PHONY: generate-go-conversions-kubeadm-control-plane
430429
generate-go-conversions-kubeadm-control-plane: $(CONVERSION_GEN) ## Generate conversions go code for kubeadm control plane

bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -407,24 +407,10 @@ func (r *KubeadmConfigReconciler) handleClusterNotInitialized(ctx context.Contex
407407
return ctrl.Result{}, errors.Wrapf(err, "failed to parse kubernetes version %q", kubernetesVersion)
408408
}
409409

410-
if scope.Config.Spec.InitConfiguration == nil {
411-
scope.Config.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{
412-
TypeMeta: metav1.TypeMeta{
413-
APIVersion: "kubeadm.k8s.io/v1beta1",
414-
Kind: "InitConfiguration",
415-
},
416-
}
417-
}
418-
initdata, err := kubeadmtypes.MarshalInitConfigurationForVersion(scope.Config.Spec.InitConfiguration, parsedVersion)
419-
if err != nil {
420-
scope.Error(err, "Failed to marshal init configuration")
421-
return ctrl.Result{}, err
422-
}
423-
424410
if scope.Config.Spec.ClusterConfiguration == nil {
425411
scope.Config.Spec.ClusterConfiguration = &bootstrapv1.ClusterConfiguration{
426412
TypeMeta: metav1.TypeMeta{
427-
APIVersion: "kubeadm.k8s.io/v1beta1",
413+
APIVersion: "kubeadm.k8s.io/v1beta4",
428414
Kind: "ClusterConfiguration",
429415
},
430416
}
@@ -439,6 +425,23 @@ func (r *KubeadmConfigReconciler) handleClusterNotInitialized(ctx context.Contex
439425
return ctrl.Result{}, err
440426
}
441427

428+
if scope.Config.Spec.InitConfiguration == nil {
429+
scope.Config.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{
430+
TypeMeta: metav1.TypeMeta{
431+
APIVersion: "kubeadm.k8s.io/v1beta4",
432+
Kind: "InitConfiguration",
433+
},
434+
}
435+
}
436+
437+
// NOTE: It is required to provide in input the ClusterConfiguration because clusterConfiguration.APIServer.TimeoutForControlPlane
438+
// has been migrated to InitConfiguration in the kubeadm v1beta4 API version.
439+
initdata, err := kubeadmtypes.MarshalInitConfigurationForVersion(scope.Config.Spec.ClusterConfiguration, scope.Config.Spec.InitConfiguration, parsedVersion)
440+
if err != nil {
441+
scope.Error(err, "Failed to marshal init configuration")
442+
return ctrl.Result{}, err
443+
}
444+
442445
certificates := secret.NewCertificatesForInitialControlPlane(scope.Config.Spec.ClusterConfiguration)
443446

444447
// If the Cluster does not have a ControlPlane reference look up and generate the certificates.
@@ -552,7 +555,18 @@ func (r *KubeadmConfigReconciler) joinWorker(ctx context.Context, scope *Scope)
552555
return ctrl.Result{}, errors.Wrapf(err, "failed to parse kubernetes version %q", kubernetesVersion)
553556
}
554557

555-
joinData, err := kubeadmtypes.MarshalJoinConfigurationForVersion(scope.Config.Spec.JoinConfiguration, parsedVersion)
558+
// Add the node uninitialized taint to the list of taints.
559+
// DeepCopy the JoinConfiguration to prevent updating the actual KubeadmConfig.
560+
// Do not modify the KubeadmConfig in etcd as this is a temporary taint that will be dropped after the node
561+
// is initialized by ClusterAPI.
562+
joinConfiguration := scope.Config.Spec.JoinConfiguration.DeepCopy()
563+
if !taints.HasTaint(joinConfiguration.NodeRegistration.Taints, clusterv1.NodeUninitializedTaint) {
564+
joinConfiguration.NodeRegistration.Taints = append(joinConfiguration.NodeRegistration.Taints, clusterv1.NodeUninitializedTaint)
565+
}
566+
567+
// NOTE: It is not required to provide in input ClusterConfiguration because only clusterConfiguration.APIServer.TimeoutForControlPlane
568+
// has been migrated to JoinConfiguration in the kubeadm v1beta4 API version, and this field does not apply to workers.
569+
joinData, err := kubeadmtypes.MarshalJoinConfigurationForVersion(nil, joinConfiguration, parsedVersion)
556570
if err != nil {
557571
scope.Error(err, "Failed to marshal join configuration")
558572
return ctrl.Result{}, err
@@ -659,7 +673,9 @@ func (r *KubeadmConfigReconciler) joinControlplane(ctx context.Context, scope *S
659673
return ctrl.Result{}, errors.Wrapf(err, "failed to parse kubernetes version %q", kubernetesVersion)
660674
}
661675

662-
joinData, err := kubeadmtypes.MarshalJoinConfigurationForVersion(scope.Config.Spec.JoinConfiguration, parsedVersion)
676+
// NOTE: It is required to provide in input the ClusterConfiguration because clusterConfiguration.APIServer.TimeoutForControlPlane
677+
// has been migrated to JoinConfiguration in the kubeadm v1beta4 API version.
678+
joinData, err := kubeadmtypes.MarshalJoinConfigurationForVersion(scope.Config.Spec.ClusterConfiguration, scope.Config.Spec.JoinConfiguration, parsedVersion)
663679
if err != nil {
664680
scope.Error(err, "Failed to marshal join configuration")
665681
return ctrl.Result{}, err
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/*
2+
Copyright 2021 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package upstreamv1beta1
18+
19+
import (
20+
apimachineryconversion "k8s.io/apimachinery/pkg/conversion"
21+
"sigs.k8s.io/controller-runtime/pkg/conversion"
22+
23+
bootstrapv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1"
24+
)
25+
26+
func (src *ClusterConfiguration) ConvertTo(dstRaw conversion.Hub) error {
27+
dst := dstRaw.(*bootstrapv1.ClusterConfiguration)
28+
return Convert_upstreamv1beta1_ClusterConfiguration_To_v1beta1_ClusterConfiguration(src, dst, nil)
29+
}
30+
31+
func (dst *ClusterConfiguration) ConvertFrom(srcRaw conversion.Hub) error {
32+
src := srcRaw.(*bootstrapv1.ClusterConfiguration)
33+
return Convert_v1beta1_ClusterConfiguration_To_upstreamv1beta1_ClusterConfiguration(src, dst, nil)
34+
}
35+
36+
func (src *ClusterStatus) ConvertTo(dstRaw conversion.Hub) error {
37+
dst := dstRaw.(*bootstrapv1.ClusterStatus)
38+
return Convert_upstreamv1beta1_ClusterStatus_To_v1beta1_ClusterStatus(src, dst, nil)
39+
}
40+
41+
func (dst *ClusterStatus) ConvertFrom(srcRaw conversion.Hub) error {
42+
src := srcRaw.(*bootstrapv1.ClusterStatus)
43+
return Convert_v1beta1_ClusterStatus_To_upstreamv1beta1_ClusterStatus(src, dst, nil)
44+
}
45+
46+
func (src *InitConfiguration) ConvertTo(dstRaw conversion.Hub) error {
47+
dst := dstRaw.(*bootstrapv1.InitConfiguration)
48+
return Convert_upstreamv1beta1_InitConfiguration_To_v1beta1_InitConfiguration(src, dst, nil)
49+
}
50+
51+
func (dst *InitConfiguration) ConvertFrom(srcRaw conversion.Hub) error {
52+
src := srcRaw.(*bootstrapv1.InitConfiguration)
53+
return Convert_v1beta1_InitConfiguration_To_upstreamv1beta1_InitConfiguration(src, dst, nil)
54+
}
55+
56+
func (src *JoinConfiguration) ConvertTo(dstRaw conversion.Hub) error {
57+
dst := dstRaw.(*bootstrapv1.JoinConfiguration)
58+
return Convert_upstreamv1beta1_JoinConfiguration_To_v1beta1_JoinConfiguration(src, dst, nil)
59+
}
60+
61+
func (dst *JoinConfiguration) ConvertFrom(srcRaw conversion.Hub) error {
62+
src := srcRaw.(*bootstrapv1.JoinConfiguration)
63+
return Convert_v1beta1_JoinConfiguration_To_upstreamv1beta1_JoinConfiguration(src, dst, nil)
64+
}
65+
66+
// Custom conversion from this API, kubeadm v1beta1, to the hub version, CABPK v1beta1.
67+
68+
func Convert_upstreamv1beta1_ClusterConfiguration_To_v1beta1_ClusterConfiguration(in *ClusterConfiguration, out *bootstrapv1.ClusterConfiguration, s apimachineryconversion.Scope) error {
69+
// ClusterConfiguration.UseHyperKubeImage was removed in CABPK v1alpha4 API version, dropping this info (no issue, it was not used).
70+
return autoConvert_upstreamv1beta1_ClusterConfiguration_To_v1beta1_ClusterConfiguration(in, out, s)
71+
}
72+
73+
func Convert_upstreamv1beta1_DNS_To_v1beta1_DNS(in *DNS, out *bootstrapv1.DNS, s apimachineryconversion.Scope) error {
74+
// DNS.Type does not exist in CABPK v1beta1 version, because it always was CoreDNS.
75+
return autoConvert_upstreamv1beta1_DNS_To_v1beta1_DNS(in, out, s)
76+
}
77+
78+
// Custom conversion from the hub version, CABPK v1beta1, to this API, kubeadm v1beta1.
79+
80+
func Convert_v1beta1_InitConfiguration_To_upstreamv1beta1_InitConfiguration(in *bootstrapv1.InitConfiguration, out *InitConfiguration, s apimachineryconversion.Scope) error {
81+
// InitConfiguration.SkipPhases and Patches does not exist in kubeadm v1beta1, dropping those info.
82+
return autoConvert_v1beta1_InitConfiguration_To_upstreamv1beta1_InitConfiguration(in, out, s)
83+
}
84+
85+
func Convert_v1beta1_JoinConfiguration_To_upstreamv1beta1_JoinConfiguration(in *bootstrapv1.JoinConfiguration, out *JoinConfiguration, s apimachineryconversion.Scope) error {
86+
// JoinConfiguration.SkipPhases and Patches does not exist in kubeadm v1beta1, dropping those info.
87+
return autoConvert_v1beta1_JoinConfiguration_To_upstreamv1beta1_JoinConfiguration(in, out, s)
88+
}
89+
90+
func Convert_v1beta1_NodeRegistrationOptions_To_upstreamv1beta1_NodeRegistrationOptions(in *bootstrapv1.NodeRegistrationOptions, out *NodeRegistrationOptions, s apimachineryconversion.Scope) error {
91+
// NodeRegistrationOptions.IgnorePreflightErrors and ImagePullPolicy does not exist in kubeadm v1beta1, dropping those info.
92+
return autoConvert_v1beta1_NodeRegistrationOptions_To_upstreamv1beta1_NodeRegistrationOptions(in, out, s)
93+
}

bootstrap/kubeadm/types/upstreamv1beta1/conversion_test.go

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -60,56 +60,57 @@ func TestFuzzyConversion(t *testing.T) {
6060

6161
func fuzzFuncs(_ runtimeserializer.CodecFactory) []interface{} {
6262
return []interface{}{
63-
dnsFuzzer,
6463
clusterConfigurationFuzzer,
65-
kubeadmNodeRegistrationOptionsFuzzer,
66-
kubeadmInitConfigurationFuzzer,
67-
kubeadmJoinConfigurationFuzzer,
64+
dnsFuzzer,
65+
bootstrapv1InitConfigurationFuzzer,
66+
bootstrapv1JoinConfigurationFuzzer,
67+
bootstrapv1NodeRegistrationOptionsFuzzer,
6868
}
6969
}
7070

71-
func dnsFuzzer(obj *DNS, c fuzz.Continue) {
72-
c.FuzzNoCustom(obj)
73-
74-
// DNS.Type does not exists in v1alpha4, so setting it to empty string in order to avoid v1beta1 --> v1alpha4 --> v1beta1 round trip errors.
75-
obj.Type = ""
76-
}
71+
// Custom fuzzers for kubeadm v1beta1 types.
72+
// NOTES:
73+
// - When fields do does not exist in cabpk v1beta1 types, pinning it to avoid kubeadm v1beta1 --> cabpk v1beta1 --> kubeadm v1beta1 round trip errors.
7774

7875
func clusterConfigurationFuzzer(obj *ClusterConfiguration, c fuzz.Continue) {
7976
c.FuzzNoCustom(obj)
8077

81-
// ClusterConfiguration.UseHyperKubeImage has been removed in v1alpha4, so setting it to false in order to avoid v1beta1 --> v1alpha4 --> v1beta1 round trip errors.
8278
obj.UseHyperKubeImage = false
8379
}
8480

85-
func kubeadmNodeRegistrationOptionsFuzzer(obj *bootstrapv1.NodeRegistrationOptions, c fuzz.Continue) {
81+
func dnsFuzzer(obj *DNS, c fuzz.Continue) {
8682
c.FuzzNoCustom(obj)
8783

88-
// NodeRegistrationOptions.IgnorePreflightErrors does not exist in kubeadm v1beta1 API, so setting it to nil in order to avoid
89-
// v1alpha4 --> v1beta1 -> v1alpha4 round trip errors.
90-
obj.IgnorePreflightErrors = nil
84+
obj.Type = ""
9185
}
9286

93-
func kubeadmInitConfigurationFuzzer(obj *bootstrapv1.InitConfiguration, c fuzz.Continue) {
87+
// Custom fuzzers for CABPK v1beta1 types.
88+
// NOTES:
89+
// - When fields do not exist in kubeadm v1beta1 types, pinning it to avoid cabpk v1beta1 --> kubeadm v1beta1 --> cabpk v1beta1 round trip errors.
90+
91+
func bootstrapv1InitConfigurationFuzzer(obj *bootstrapv1.InitConfiguration, c fuzz.Continue) {
9492
c.FuzzNoCustom(obj)
9593

96-
// InitConfiguration.Patches does not exist in kubeadm v1beta1 API, so setting it to nil in order to avoid
97-
// v1beta1 --> upstream v1beta1 -> v1beta1 round trip errors.
9894
obj.Patches = nil
99-
100-
// InitConfiguration.SkipPhases does not exist in kubeadm v1beta1 API, so setting it to nil in order to avoid
101-
// v1beta1 --> upstream v1beta1 -> v1beta1 round trip errors.
10295
obj.SkipPhases = nil
10396
}
10497

105-
func kubeadmJoinConfigurationFuzzer(obj *bootstrapv1.JoinConfiguration, c fuzz.Continue) {
98+
func bootstrapv1JoinConfigurationFuzzer(obj *bootstrapv1.JoinConfiguration, c fuzz.Continue) {
10699
c.FuzzNoCustom(obj)
107100

108-
// JoinConfiguration.Patches does not exist in kubeadm v1beta1 API, so setting it to nil in order to avoid
109-
// v1beta1 --> upstream v1beta1 -> v1beta1 round trip errors.
101+
// JoinConfiguration.Patches does not exist in kubeadm v1beta1 types, pinning it to avoid cabpk v1beta1 --> kubeadm v1beta1 --> cabpk v1beta1 round trip errors.
110102
obj.Patches = nil
111103

112-
// JoinConfiguration.SkipPhases does not exist in kubeadm v1beta1 API, so setting it to nil in order to avoid
113-
// v1beta1 --> upstream v1beta1 -> v1beta1 round trip errors.
104+
// JoinConfiguration.SkipPhases does not exist in kubeadm v1beta1 types, pinning it to avoid cabpk v1beta1 --> kubeadm v1beta1 --> cabpk v1beta1 round trip errors.
114105
obj.SkipPhases = nil
115106
}
107+
108+
func bootstrapv1NodeRegistrationOptionsFuzzer(obj *bootstrapv1.NodeRegistrationOptions, c fuzz.Continue) {
109+
c.FuzzNoCustom(obj)
110+
111+
// NodeRegistrationOptions.IgnorePreflightErrors does not exist in kubeadm v1beta1 types, pinning it to avoid cabpk v1beta1 --> kubeadm v1beta1 --> cabpk v1beta1 round trip errors.
112+
obj.IgnorePreflightErrors = nil
113+
114+
// NodeRegistrationOptions.ImagePullPolicy does not exist in kubeadm v1beta1 types, pinning it to avoid cabpk v1beta1 --> kubeadm v1beta1 --> cabpk v1beta1 round trip errors.
115+
obj.ImagePullPolicy = ""
116+
}

bootstrap/kubeadm/types/upstreamv1beta2/conversion.go

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -63,32 +63,41 @@ func (dst *JoinConfiguration) ConvertFrom(srcRaw conversion.Hub) error {
6363
return Convert_v1beta1_JoinConfiguration_To_upstreamv1beta2_JoinConfiguration(src, dst, nil)
6464
}
6565

66-
func Convert_upstreamv1beta2_InitConfiguration_To_v1beta1_InitConfiguration(in *InitConfiguration, out *bootstrapv1.InitConfiguration, s apimachineryconversion.Scope) error {
67-
// InitConfiguration.CertificateKey exists in v1beta2 types but not in bootstrapv1.InitConfiguration (Cluster API does not uses automatic copy certs). Ignoring when converting.
68-
return autoConvert_upstreamv1beta2_InitConfiguration_To_v1beta1_InitConfiguration(in, out, s)
69-
}
66+
// Custom conversion from this API, kubeadm v1beta2, to the hub version, CABPK v1beta1.
7067

71-
func Convert_upstreamv1beta2_JoinControlPlane_To_v1beta1_JoinControlPlane(in *JoinControlPlane, out *bootstrapv1.JoinControlPlane, s apimachineryconversion.Scope) error {
72-
// JoinControlPlane.CertificateKey exists in v1beta2 types but not in bootstrapv1.JoinControlPlane (Cluster API does not uses automatic copy certs). Ignoring when converting.
73-
return autoConvert_upstreamv1beta2_JoinControlPlane_To_v1beta1_JoinControlPlane(in, out, s)
68+
func Convert_upstreamv1beta2_ClusterConfiguration_To_v1beta1_ClusterConfiguration(in *ClusterConfiguration, out *bootstrapv1.ClusterConfiguration, s apimachineryconversion.Scope) error {
69+
// ClusterConfiguration.UseHyperKubeImage was removed in CABPK v1alpha4 API version, dropping this info (no issue, it was not used).
70+
return autoConvert_upstreamv1beta2_ClusterConfiguration_To_v1beta1_ClusterConfiguration(in, out, s)
7471
}
7572

7673
func Convert_upstreamv1beta2_DNS_To_v1beta1_DNS(in *DNS, out *bootstrapv1.DNS, s apimachineryconversion.Scope) error {
77-
// DNS.Type was removed in v1alpha4 because only CoreDNS is supported, dropping this info.
74+
// DNS.Type does not exist in CABPK v1beta1 version, because it always was CoreDNS.
7875
return autoConvert_upstreamv1beta2_DNS_To_v1beta1_DNS(in, out, s)
7976
}
8077

81-
func Convert_upstreamv1beta2_ClusterConfiguration_To_v1beta1_ClusterConfiguration(in *ClusterConfiguration, out *bootstrapv1.ClusterConfiguration, s apimachineryconversion.Scope) error {
82-
// ClusterConfiguration.UseHyperKubeImage was removed in kubeadm v1alpha4 API
83-
return autoConvert_upstreamv1beta2_ClusterConfiguration_To_v1beta1_ClusterConfiguration(in, out, s)
78+
func Convert_upstreamv1beta2_InitConfiguration_To_v1beta1_InitConfiguration(in *InitConfiguration, out *bootstrapv1.InitConfiguration, s apimachineryconversion.Scope) error {
79+
// InitConfiguration.CertificateKey does not exist in CABPK v1beta1 version, because Cluster API does not use automatic copy certs.
80+
return autoConvert_upstreamv1beta2_InitConfiguration_To_v1beta1_InitConfiguration(in, out, s)
8481
}
8582

83+
func Convert_upstreamv1beta2_JoinControlPlane_To_v1beta1_JoinControlPlane(in *JoinControlPlane, out *bootstrapv1.JoinControlPlane, s apimachineryconversion.Scope) error {
84+
// JoinControlPlane.CertificateKey does not exist in CABPK v1beta1 version, because Cluster API does not use automatic copy certs.
85+
return autoConvert_upstreamv1beta2_JoinControlPlane_To_v1beta1_JoinControlPlane(in, out, s)
86+
}
87+
88+
// Custom conversion from the hub version, CABPK v1beta1, to this API, kubeadm v1beta2.
89+
8690
func Convert_v1beta1_InitConfiguration_To_upstreamv1beta2_InitConfiguration(in *bootstrapv1.InitConfiguration, out *InitConfiguration, s apimachineryconversion.Scope) error {
87-
// InitConfiguration.Patches does not exist in kubeadm v1beta2 API
91+
// InitConfiguration.SkipPhases and Patches does not exist in kubeadm v1beta2, dropping those info.
8892
return autoConvert_v1beta1_InitConfiguration_To_upstreamv1beta2_InitConfiguration(in, out, s)
8993
}
9094

9195
func Convert_v1beta1_JoinConfiguration_To_upstreamv1beta2_JoinConfiguration(in *bootstrapv1.JoinConfiguration, out *JoinConfiguration, s apimachineryconversion.Scope) error {
92-
// JoinConfiguration.Patches does not exist in kubeadm v1beta2 API
96+
// JoinConfiguration.SkipPhases and Patches does not exist in kubeadm v1beta2, dropping those info.
9397
return autoConvert_v1beta1_JoinConfiguration_To_upstreamv1beta2_JoinConfiguration(in, out, s)
9498
}
99+
100+
func Convert_v1beta1_NodeRegistrationOptions_To_upstreamv1beta2_NodeRegistrationOptions(in *bootstrapv1.NodeRegistrationOptions, out *NodeRegistrationOptions, s apimachineryconversion.Scope) error {
101+
// NodeRegistrationOptions.IgnorePreflightErrors and ImagePullPolicy does not exist in kubeadm v1beta2, dropping those info.
102+
return autoConvert_v1beta1_NodeRegistrationOptions_To_upstreamv1beta2_NodeRegistrationOptions(in, out, s)
103+
}

0 commit comments

Comments
 (0)