@@ -40,7 +40,7 @@ cd "$base_dir" || {
40
40
exit 1
41
41
}
42
42
43
- k8s_version=1.10
43
+ k8s_version=1.10.1
44
44
goarch=amd64
45
45
goos=" unknown"
46
46
@@ -75,6 +75,7 @@ tmp_root=/tmp
75
75
76
76
kb_root_dir=$tmp_root /kubebuilder
77
77
kb_vendor_dir=$tmp_root /vendor
78
+ kb_orig=$( pwd)
78
79
79
80
# Skip fetching and untaring the tools by setting the SKIP_FETCH_TOOLS variable
80
81
# in your environment to any value:
@@ -160,10 +161,12 @@ function generate_crd_resources {
160
161
kubebuilder create resource --group insect --version v1beta1 --kind Bee
161
162
162
163
header_text " editing generated files to simulate a user"
163
- sed -i pkg/apis/insect/v1beta1/bee_types.go -e " s|type Bee struct|// +kubebuilder:categories=foo,bar\ntype Bee struct|"
164
+ sed -i -e " s|type Bee struct|// +kubebuilder:categories=foo,bar\ntype Bee struct|" pkg/apis/insect/v1beta1/bee_types.go
165
+ sed -i -e " s|type BeeController struct {|// +kubebuilder:rbac:groups=" " ,resources=pods,verbs=get;watch;list\ntype BeeController struct {|" pkg/controller/bee/controller.go
164
166
165
167
header_text " generating and testing CRD definition"
166
168
kubebuilder create config --crds --output crd.yaml
169
+ kubebuilder create config --controller-image myimage:v1 --name myextensionname --output install.yaml
167
170
168
171
# Test for the expected generated CRD definition
169
172
#
@@ -211,6 +214,166 @@ status:
211
214
EOF
212
215
diff crd.yaml expected.yaml
213
216
217
+ cat << EOF > expected.yaml
218
+ apiVersion: v1
219
+ kind: Namespace
220
+ metadata:
221
+ creationTimestamp: null
222
+ labels:
223
+ api: myextensionname
224
+ kubebuilder.k8s.io: $INJECT_KB_VERSION
225
+ name: myextensionname-system
226
+ spec: {}
227
+ status: {}
228
+ ---
229
+ apiVersion: rbac.authorization.k8s.io/v1
230
+ kind: ClusterRole
231
+ metadata:
232
+ creationTimestamp: null
233
+ labels:
234
+ api: myextensionname
235
+ kubebuilder.k8s.io: $INJECT_KB_VERSION
236
+ name: myextensionname-role
237
+ rules:
238
+ - apiGroups:
239
+ - ""
240
+ resources:
241
+ - pods
242
+ verbs:
243
+ - get
244
+ - watch
245
+ - list
246
+ - apiGroups:
247
+ - insect.sample.kubernetes.io
248
+ resources:
249
+ - '*'
250
+ verbs:
251
+ - '*'
252
+ ---
253
+ apiVersion: rbac.authorization.k8s.io/v1
254
+ kind: ClusterRoleBinding
255
+ metadata:
256
+ creationTimestamp: null
257
+ labels:
258
+ api: myextensionname
259
+ kubebuilder.k8s.io: $INJECT_KB_VERSION
260
+ name: myextensionname-rolebinding
261
+ namespace: myextensionname-system
262
+ roleRef:
263
+ apiGroup: rbac.authorization.k8s.io
264
+ kind: ClusterRole
265
+ name: myextensionname-role
266
+ subjects:
267
+ - kind: ServiceAccount
268
+ name: default
269
+ namespace: myextensionname-system
270
+ ---
271
+ apiVersion: apiextensions.k8s.io/v1beta1
272
+ kind: CustomResourceDefinition
273
+ metadata:
274
+ creationTimestamp: null
275
+ labels:
276
+ api: myextensionname
277
+ kubebuilder.k8s.io: $INJECT_KB_VERSION
278
+ name: bees.insect.sample.kubernetes.io
279
+ spec:
280
+ group: insect.sample.kubernetes.io
281
+ names:
282
+ categories:
283
+ - foo
284
+ - bar
285
+ kind: Bee
286
+ plural: bees
287
+ scope: Namespaced
288
+ validation:
289
+ openAPIV3Schema:
290
+ properties:
291
+ apiVersion:
292
+ type: string
293
+ kind:
294
+ type: string
295
+ metadata:
296
+ type: object
297
+ spec:
298
+ type: object
299
+ status:
300
+ type: object
301
+ type: object
302
+ version: v1beta1
303
+ status:
304
+ acceptedNames:
305
+ kind: ""
306
+ plural: ""
307
+ conditions: null
308
+ ---
309
+ apiVersion: v1
310
+ kind: Service
311
+ metadata:
312
+ creationTimestamp: null
313
+ labels:
314
+ api: myextensionname
315
+ control-plane: controller-manager
316
+ kubebuilder.k8s.io: $INJECT_KB_VERSION
317
+ name: myextensionname-controller-manager-service
318
+ namespace: myextensionname-system
319
+ spec:
320
+ clusterIP: None
321
+ selector:
322
+ api: myextensionname
323
+ control-plane: controller-manager
324
+ kubebuilder.k8s.io: $INJECT_KB_VERSION
325
+ status:
326
+ loadBalancer: {}
327
+ ---
328
+ apiVersion: apps/v1
329
+ kind: StatefulSet
330
+ metadata:
331
+ creationTimestamp: null
332
+ labels:
333
+ api: myextensionname
334
+ control-plane: controller-manager
335
+ kubebuilder.k8s.io: $INJECT_KB_VERSION
336
+ name: myextensionname-controller-manager
337
+ namespace: myextensionname-system
338
+ spec:
339
+ replicas: 1
340
+ selector:
341
+ matchLabels:
342
+ api: myextensionname
343
+ control-plane: controller-manager
344
+ kubebuilder.k8s.io: $INJECT_KB_VERSION
345
+ serviceName: myextensionname-controller-manager-service
346
+ template:
347
+ metadata:
348
+ creationTimestamp: null
349
+ labels:
350
+ api: myextensionname
351
+ control-plane: controller-manager
352
+ kubebuilder.k8s.io: $INJECT_KB_VERSION
353
+ spec:
354
+ containers:
355
+ - args:
356
+ - --install-crds=false
357
+ command:
358
+ - /root/controller-manager
359
+ image: myimage:v1
360
+ name: controller-manager
361
+ resources:
362
+ limits:
363
+ cpu: 100m
364
+ memory: 30Mi
365
+ requests:
366
+ cpu: 100m
367
+ memory: 20Mi
368
+ terminationGracePeriodSeconds: 10
369
+ updateStrategy: {}
370
+ status:
371
+ replicas: 0
372
+
373
+ EOF
374
+ diff -B install.yaml expected.yaml
375
+
376
+
214
377
kubebuilder create resource --group insect --version v1beta1 --kind Wasp
215
378
kubebuilder create resource --group ant --version v1beta1 --kind Ant
216
379
kubebuilder create config --crds --output crd.yaml
@@ -345,13 +508,22 @@ function run_dep_ensure {
345
508
dep ensure
346
509
}
347
510
511
+ function test_docs {
512
+ header_text " building docs"
513
+ kubebuilder docs --docs-copyright " Hello" --title " World" --cleanup=false --brodocs=false
514
+ diff docs/reference/includes $kb_orig /test/docs/expected/includes
515
+ diff docs/reference/manifest.json $kb_orig /test/docs/expected/manifest.json
516
+ diff docs/reference/config.yaml $kb_orig /test/docs/expected/config.yaml
517
+ }
518
+
348
519
prepare_staging_dir
349
520
fetch_tools
350
521
build_kb
351
522
prepare_vendor_deps
352
523
prepare_testdir_under_gopath
353
524
354
525
generate_crd_resources
526
+ test_docs
355
527
test_generated_controller
356
528
run_dep_ensure
357
529
# Run controller tests after running dep ensure because we want ensure code
0 commit comments