Skip to content

Commit 1b61819

Browse files
authored
Merge pull request #7772 from akshay196/add-support-imagepullpolicy
✨ Add NodeRegistrationOptions.ImagePullPolicy Support
2 parents be6bdef + 4ca79ad commit 1b61819

17 files changed

+265
-20
lines changed

bootstrap/kubeadm/api/v1alpha3/conversion.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,20 @@ func (src *KubeadmConfig) ConvertTo(dstRaw conversion.Hub) error {
7979
dst.Spec.JoinConfiguration.SkipPhases = restored.Spec.JoinConfiguration.SkipPhases
8080
}
8181

82+
if restored.Spec.JoinConfiguration != nil && restored.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy != "" {
83+
if dst.Spec.JoinConfiguration == nil {
84+
dst.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
85+
}
86+
dst.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy
87+
}
88+
89+
if restored.Spec.InitConfiguration != nil && restored.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy != "" {
90+
if dst.Spec.InitConfiguration == nil {
91+
dst.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
92+
}
93+
dst.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy
94+
}
95+
8296
return nil
8397
}
8498

@@ -163,6 +177,20 @@ func (src *KubeadmConfigTemplate) ConvertTo(dstRaw conversion.Hub) error {
163177
dst.Spec.Template.Spec.JoinConfiguration.SkipPhases = restored.Spec.Template.Spec.JoinConfiguration.SkipPhases
164178
}
165179

180+
if restored.Spec.Template.Spec.JoinConfiguration != nil && restored.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy != "" {
181+
if dst.Spec.Template.Spec.JoinConfiguration == nil {
182+
dst.Spec.Template.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
183+
}
184+
dst.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy
185+
}
186+
187+
if restored.Spec.Template.Spec.InitConfiguration != nil && restored.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy != "" {
188+
if dst.Spec.Template.Spec.InitConfiguration == nil {
189+
dst.Spec.Template.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
190+
}
191+
dst.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy
192+
}
193+
166194
return nil
167195
}
168196

bootstrap/kubeadm/api/v1alpha4/conversion.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,20 @@ func (src *KubeadmConfig) ConvertTo(dstRaw conversion.Hub) error {
6464
dst.Spec.JoinConfiguration.SkipPhases = restored.Spec.JoinConfiguration.SkipPhases
6565
}
6666

67+
if restored.Spec.JoinConfiguration != nil && restored.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy != "" {
68+
if dst.Spec.JoinConfiguration == nil {
69+
dst.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
70+
}
71+
dst.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy
72+
}
73+
74+
if restored.Spec.InitConfiguration != nil && restored.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy != "" {
75+
if dst.Spec.InitConfiguration == nil {
76+
dst.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
77+
}
78+
dst.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy
79+
}
80+
6781
return nil
6882
}
6983

@@ -129,6 +143,20 @@ func (src *KubeadmConfigTemplate) ConvertTo(dstRaw conversion.Hub) error {
129143
dst.Spec.Template.Spec.JoinConfiguration.SkipPhases = restored.Spec.Template.Spec.JoinConfiguration.SkipPhases
130144
}
131145

146+
if restored.Spec.Template.Spec.JoinConfiguration != nil && restored.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy != "" {
147+
if dst.Spec.Template.Spec.JoinConfiguration == nil {
148+
dst.Spec.Template.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
149+
}
150+
dst.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy
151+
}
152+
153+
if restored.Spec.Template.Spec.InitConfiguration != nil && restored.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy != "" {
154+
if dst.Spec.Template.Spec.InitConfiguration == nil {
155+
dst.Spec.Template.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
156+
}
157+
dst.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy
158+
}
159+
132160
return nil
133161
}
134162

@@ -179,3 +207,9 @@ func Convert_v1beta1_User_To_v1alpha4_User(in *bootstrapv1.User, out *User, s ap
179207
// User.PasswdFrom does not exist in kubeadm v1alpha4 API.
180208
return autoConvert_v1beta1_User_To_v1alpha4_User(in, out, s)
181209
}
210+
211+
func Convert_v1beta1_NodeRegistrationOptions_To_v1alpha4_NodeRegistrationOptions(in *bootstrapv1.NodeRegistrationOptions, out *NodeRegistrationOptions, s apiconversion.Scope) error {
212+
// NodeRegistrationOptions.ImagePullPolicy does not exit in
213+
// kubeadm v1alpha4 API.
214+
return autoConvert_v1beta1_NodeRegistrationOptions_To_v1alpha4_NodeRegistrationOptions(in, out, s)
215+
}

bootstrap/kubeadm/api/v1alpha4/zz_generated.conversion.go

Lines changed: 6 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bootstrap/kubeadm/api/v1beta1/kubeadm_types.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,16 @@ type NodeRegistrationOptions struct {
251251
// IgnorePreflightErrors provides a slice of pre-flight errors to be ignored when the current node is registered.
252252
// +optional
253253
IgnorePreflightErrors []string `json:"ignorePreflightErrors,omitempty"`
254+
255+
// ImagePullPolicy specifies the policy for image pulling
256+
// during kubeadm "init" and "join" operations. The value of
257+
// this field must be one of "Always", "IfNotPresent" or
258+
// "Never". Defaults to "IfNotPresent". This can be used only
259+
// with Kubernetes version equal to 1.22 and later.
260+
// +kubebuilder:validation:Enum=Always;IfNotPresent;Never
261+
// +kubebuilder:default=IfNotPresent
262+
// +optional
263+
ImagePullPolicy string `json:"imagePullPolicy,omitempty"`
254264
}
255265

256266
// MarshalJSON marshals NodeRegistrationOptions in a way that an empty slice in Taints is preserved.
@@ -271,12 +281,14 @@ func (n *NodeRegistrationOptions) MarshalJSON() ([]byte, error) {
271281
Taints []corev1.Taint `json:"taints"`
272282
KubeletExtraArgs map[string]string `json:"kubeletExtraArgs,omitempty"`
273283
IgnorePreflightErrors []string `json:"ignorePreflightErrors,omitempty"`
284+
ImagePullPolicy string `json:"imagePullPolicy,omitempty"`
274285
}{
275286
Name: n.Name,
276287
CRISocket: n.CRISocket,
277288
Taints: n.Taints,
278289
KubeletExtraArgs: n.KubeletExtraArgs,
279290
IgnorePreflightErrors: n.IgnorePreflightErrors,
291+
ImagePullPolicy: n.ImagePullPolicy,
280292
})
281293
}
282294

@@ -287,12 +299,14 @@ func (n *NodeRegistrationOptions) MarshalJSON() ([]byte, error) {
287299
Taints []corev1.Taint `json:"taints,omitempty"`
288300
KubeletExtraArgs map[string]string `json:"kubeletExtraArgs,omitempty"`
289301
IgnorePreflightErrors []string `json:"ignorePreflightErrors,omitempty"`
302+
ImagePullPolicy string `json:"imagePullPolicy,omitempty"`
290303
}{
291304
Name: n.Name,
292305
CRISocket: n.CRISocket,
293306
Taints: n.Taints,
294307
KubeletExtraArgs: n.KubeletExtraArgs,
295308
IgnorePreflightErrors: n.IgnorePreflightErrors,
309+
ImagePullPolicy: n.ImagePullPolicy,
296310
})
297311
}
298312

bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigs.yaml

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bootstrap/kubeadm/config/crd/bases/bootstrap.cluster.x-k8s.io_kubeadmconfigtemplates.yaml

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bootstrap/kubeadm/types/upstreamv1beta1/conversion_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ func kubeadmNodeRegistrationOptionsFuzzer(obj *bootstrapv1.NodeRegistrationOptio
8888
// NodeRegistrationOptions.IgnorePreflightErrors does not exist in kubeadm v1beta1 API, so setting it to nil in order to avoid
8989
// v1alpha4 --> v1beta1 -> v1alpha4 round trip errors.
9090
obj.IgnorePreflightErrors = nil
91+
92+
// NodeRegistrationOptions.ImagePullPolicy does not exist in
93+
// kubeadm v1beta1 API, so setting it to empty in order to
94+
// avoid round trip errors.
95+
obj.ImagePullPolicy = ""
9196
}
9297

9398
func kubeadmInitConfigurationFuzzer(obj *bootstrapv1.InitConfiguration, c fuzz.Continue) {

bootstrap/kubeadm/types/upstreamv1beta1/zz_generated.conversion.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bootstrap/kubeadm/types/upstreamv1beta2/conversion.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,9 @@ func Convert_v1beta1_JoinConfiguration_To_upstreamv1beta2_JoinConfiguration(in *
9292
// JoinConfiguration.Patches does not exist in kubeadm v1beta2 API
9393
return autoConvert_v1beta1_JoinConfiguration_To_upstreamv1beta2_JoinConfiguration(in, out, s)
9494
}
95+
96+
func Convert_v1beta1_NodeRegistrationOptions_To_upstreamv1beta2_NodeRegistrationOptions(in *bootstrapv1.NodeRegistrationOptions, out *NodeRegistrationOptions, s apimachineryconversion.Scope) error {
97+
// NodeRegistrationOptions.ImagePullPolicy does not exit in
98+
// kubeadm v1beta2 API.
99+
return autoConvert_v1beta1_NodeRegistrationOptions_To_upstreamv1beta2_NodeRegistrationOptions(in, out, s)
100+
}

bootstrap/kubeadm/types/upstreamv1beta2/conversion_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ func fuzzFuncs(_ runtimeserializer.CodecFactory) []interface{} {
6666
clusterConfigurationFuzzer,
6767
kubeadmInitConfigurationFuzzer,
6868
kubeadmJoinConfigurationFuzzer,
69+
kubeadmNodeRegistrationOptionsFuzzer,
6970
}
7071
}
7172

@@ -120,3 +121,12 @@ func kubeadmJoinConfigurationFuzzer(obj *bootstrapv1.JoinConfiguration, c fuzz.C
120121
// v1beta1 --> upstream v1beta2 -> v1beta1 round trip errors.
121122
obj.SkipPhases = nil
122123
}
124+
125+
func kubeadmNodeRegistrationOptionsFuzzer(obj *bootstrapv1.NodeRegistrationOptions, c fuzz.Continue) {
126+
c.FuzzNoCustom(obj)
127+
128+
// NodeRegistrationOptions.ImagePullPolicy does not exist in
129+
// kubeadm v1beta2 API, so setting it to empty in order to
130+
// avoid round trip errors.
131+
obj.ImagePullPolicy = ""
132+
}

0 commit comments

Comments
 (0)