@@ -21,8 +21,11 @@ import (
21
21
"path/filepath"
22
22
"reflect"
23
23
"testing"
24
+ "time"
24
25
25
26
"github.com/stretchr/testify/require"
27
+ "gopkg.in/yaml.v2"
28
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26
29
"k8s.io/kubernetes/cmd/kubelet/app/options"
27
30
kubeletconfiginternal "k8s.io/kubernetes/pkg/kubelet/apis/config"
28
31
)
@@ -71,20 +74,22 @@ func TestValueOfAllocatableResources(t *testing.T) {
71
74
72
75
func TestMergeKubeletConfigurations (t * testing.T ) {
73
76
testCases := []struct {
74
- kubeletConfig string
77
+ kubeletConfig * kubeletconfiginternal. KubeletConfiguration
75
78
dropin1 string
76
79
dropin2 string
77
80
overwrittenConfigFields map [string ]interface {}
78
81
cliArgs []string
79
82
name string
80
83
}{
81
84
{
82
- kubeletConfig : `
83
- apiVersion: kubelet.config.k8s.io/v1beta1
84
- kind: KubeletConfiguration
85
- port: 9080
86
- readOnlyPort: 10257
87
- ` ,
85
+ kubeletConfig : & kubeletconfiginternal.KubeletConfiguration {
86
+ TypeMeta : metav1.TypeMeta {
87
+ Kind : "KubeletConfiguration" ,
88
+ APIVersion : "kubelet.config.k8s.io/v1beta1" ,
89
+ },
90
+ Port : int32 (9090 ),
91
+ ReadOnlyPort : int32 (10257 ),
92
+ },
88
93
dropin1 : `
89
94
apiVersion: kubelet.config.k8s.io/v1beta1
90
95
kind: KubeletConfiguration
@@ -103,13 +108,15 @@ readOnlyPort: 10255
103
108
name : "kubelet.conf.d overrides kubelet.conf" ,
104
109
},
105
110
{
106
- kubeletConfig : `
107
- apiVersion: kubelet.config.k8s.io/v1beta1
108
- kind: KubeletConfiguration
109
- readOnlyPort: 10256
110
- kubeReserved:
111
- memory: 70Mi
112
- ` ,
111
+ kubeletConfig : & kubeletconfiginternal.KubeletConfiguration {
112
+ TypeMeta : metav1.TypeMeta {
113
+ Kind : "KubeletConfiguration" ,
114
+ APIVersion : "kubelet.config.k8s.io/v1beta1" ,
115
+ },
116
+ ReadOnlyPort : int32 (10256 ),
117
+ KubeReserved : map [string ]string {"memory" : "100Mi" },
118
+ SyncFrequency : metav1.Duration {Duration : 5 * time .Minute },
119
+ },
113
120
dropin1 : `
114
121
apiVersion: kubelet.config.k8s.io/v1beta1
115
122
kind: KubeletConfiguration
@@ -131,18 +138,19 @@ kubeReserved:
131
138
"cpu" : "200m" ,
132
139
"memory" : "100Mi" ,
133
140
},
141
+ "SyncFrequency" : metav1.Duration {Duration : 5 * time .Minute },
134
142
},
135
143
name : "kubelet.conf.d overrides kubelet.conf with subfield override" ,
136
144
},
137
145
{
138
- kubeletConfig : `
139
- apiVersion: kubelet.config.k8s.io/v1beta1
140
- kind: KubeletConfiguration
141
- port: 9090
142
- clusterDNS:
143
- - 192.168.1.3
144
- - 192.168.1.4
145
- ` ,
146
+ kubeletConfig : & kubeletconfiginternal. KubeletConfiguration {
147
+ TypeMeta : metav1. TypeMeta {
148
+ Kind : " KubeletConfiguration" ,
149
+ APIVersion : "kubelet.config.k8s.io/v1beta1" ,
150
+ },
151
+ Port : int32 ( 9090 ),
152
+ ClusterDNS : [] string { " 192.168.1.3" , "192.168.1.4" },
153
+ } ,
146
154
dropin1 : `
147
155
apiVersion: kubelet.config.k8s.io/v1beta1
148
156
kind: KubeletConfiguration
@@ -173,6 +181,7 @@ clusterDNS:
173
181
name : "kubelet.conf.d overrides kubelet.conf with slices/lists" ,
174
182
},
175
183
{
184
+ kubeletConfig : nil ,
176
185
dropin1 : `
177
186
apiVersion: kubelet.config.k8s.io/v1beta1
178
187
kind: KubeletConfiguration
@@ -195,13 +204,14 @@ readOnlyPort: 10255
195
204
name : "cli args override kubelet.conf.d" ,
196
205
},
197
206
{
198
- kubeletConfig : `
199
- apiVersion: kubelet.config.k8s.io/v1beta1
200
- kind: KubeletConfiguration
201
- port: 9090
202
- clusterDNS:
203
- - 192.168.1.3
204
- ` ,
207
+ kubeletConfig : & kubeletconfiginternal.KubeletConfiguration {
208
+ TypeMeta : metav1.TypeMeta {
209
+ Kind : "KubeletConfiguration" ,
210
+ APIVersion : "kubelet.config.k8s.io/v1beta1" ,
211
+ },
212
+ Port : int32 (9090 ),
213
+ ClusterDNS : []string {"192.168.1.3" },
214
+ },
205
215
overwrittenConfigFields : map [string ]interface {}{
206
216
"Port" : int32 (9090 ),
207
217
"ClusterDNS" : []string {"192.168.1.2" },
@@ -222,12 +232,15 @@ clusterDNS:
222
232
kubeletConfig := & kubeletconfiginternal.KubeletConfiguration {}
223
233
kubeletFlags := & options.KubeletFlags {}
224
234
225
- if len ( test .kubeletConfig ) > 0 {
235
+ if test .kubeletConfig != nil {
226
236
// Create the Kubeletconfig
227
237
kubeletConfFile := filepath .Join (tempDir , "kubelet.conf" )
228
- err := os .WriteFile (kubeletConfFile , []byte (test .kubeletConfig ), 0644 )
229
- require .NoError (t , err , "failed to create config from a yaml file" )
238
+ yamlData , err := yaml .Marshal (test .kubeletConfig ) // Convert struct to YAML
239
+ require .NoError (t , err , "failed to convert kubelet config to YAML" )
240
+ err = os .WriteFile (kubeletConfFile , yamlData , 0644 )
241
+ require .NoError (t , err , "failed to create config from YAML data" )
230
242
kubeletFlags .KubeletConfigFile = kubeletConfFile
243
+ kubeletConfig = test .kubeletConfig
231
244
}
232
245
if len (test .dropin1 ) > 0 || len (test .dropin2 ) > 0 {
233
246
// Create kubelet.conf.d directory and drop-in configuration files
0 commit comments