@@ -162,9 +162,11 @@ function generate_crd_resources {
162
162
163
163
header_text " editing generated files to simulate a user"
164
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
165
166
166
167
header_text " generating and testing CRD definition"
167
168
kubebuilder create config --crds --output crd.yaml
169
+ kubebuilder create config --controller-image myimage:v1 --name myextensionname --output install.yaml
168
170
169
171
# Test for the expected generated CRD definition
170
172
#
@@ -212,6 +214,166 @@ status:
212
214
EOF
213
215
diff crd.yaml expected.yaml
214
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
+
215
377
kubebuilder create resource --group insect --version v1beta1 --kind Wasp
216
378
kubebuilder create resource --group ant --version v1beta1 --kind Ant
217
379
kubebuilder create config --crds --output crd.yaml
0 commit comments