@intentius/chant-lexicon-k8s 0.83.0 → 0.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3889 @@
1
+ // Generated by scripts/generate-composite-catalogs.ts (#2662) from this
2
+ // lexicon's composite exports. Do not edit by hand: run
3
+ // `npm run generate:composite-catalogs`. catalog.test.ts holds it to the exports.
4
+ import type { CompositeEntry } from "@intentius/chant/lexicon";
5
+
6
+ export const compositeCatalog: CompositeEntry[] = [
7
+ {
8
+ "name": "AdotCollector",
9
+ "lexicon": "k8s",
10
+ "description": "Create an AdotCollector composite — returns prop objects for a DaemonSet, ServiceAccount, ClusterRole, ClusterRoleBinding, and ConfigMap.",
11
+ "bundles": [
12
+ "ClusterRole",
13
+ "ClusterRoleBinding",
14
+ "ConfigMap",
15
+ "DaemonSet",
16
+ "ServiceAccount"
17
+ ],
18
+ "params": [
19
+ {
20
+ "name": "region",
21
+ "type": "string",
22
+ "required": true,
23
+ "description": "AWS region."
24
+ },
25
+ {
26
+ "name": "clusterName",
27
+ "type": "string",
28
+ "required": true,
29
+ "description": "EKS cluster name."
30
+ },
31
+ {
32
+ "name": "exporters",
33
+ "type": "(\"cloudwatch\" | \"xray\" | \"prometheus\")[]",
34
+ "required": false,
35
+ "description": "Exporters to enable (default: [\"cloudwatch\", \"xray\"])."
36
+ },
37
+ {
38
+ "name": "name",
39
+ "type": "string",
40
+ "required": false,
41
+ "description": "Agent name (default: \"adot-collector\")."
42
+ },
43
+ {
44
+ "name": "image",
45
+ "type": "string",
46
+ "required": false,
47
+ "description": "ADOT image (default: \"public.ecr.aws/aws-observability/aws-otel-collector:latest\")."
48
+ },
49
+ {
50
+ "name": "namespace",
51
+ "type": "string",
52
+ "required": false,
53
+ "description": "Namespace (default: \"amazon-metrics\")."
54
+ },
55
+ {
56
+ "name": "labels",
57
+ "type": "Record<string, string>",
58
+ "required": false,
59
+ "description": "Additional labels."
60
+ },
61
+ {
62
+ "name": "cpuRequest",
63
+ "type": "string",
64
+ "required": false,
65
+ "description": "CPU request (default: \"100m\")."
66
+ },
67
+ {
68
+ "name": "memoryRequest",
69
+ "type": "string",
70
+ "required": false,
71
+ "description": "Memory request (default: \"256Mi\")."
72
+ },
73
+ {
74
+ "name": "cpuLimit",
75
+ "type": "string",
76
+ "required": false,
77
+ "description": "CPU limit (default: \"500m\")."
78
+ },
79
+ {
80
+ "name": "memoryLimit",
81
+ "type": "string",
82
+ "required": false,
83
+ "description": "Memory limit (default: \"512Mi\")."
84
+ },
85
+ {
86
+ "name": "iamRoleArn",
87
+ "type": "string",
88
+ "required": false,
89
+ "description": "IAM Role ARN for IRSA (adds eks.amazonaws.com/role-arn annotation to ServiceAccount)."
90
+ },
91
+ {
92
+ "name": "defaults",
93
+ "type": "{ daemonSet?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Part...",
94
+ "required": false,
95
+ "description": "Per-member defaults for fine-grained overrides."
96
+ }
97
+ ]
98
+ },
99
+ {
100
+ "name": "AgicIngress",
101
+ "lexicon": "k8s",
102
+ "description": "Create an AgicIngress composite — returns prop objects for an Ingress with Azure Application Gateway Ingress Controller annotations.",
103
+ "bundles": [
104
+ "Ingress"
105
+ ],
106
+ "params": [
107
+ {
108
+ "name": "name",
109
+ "type": "string",
110
+ "required": true,
111
+ "description": "Ingress name — used in metadata and labels."
112
+ },
113
+ {
114
+ "name": "hosts",
115
+ "type": "AgicIngressHost[]",
116
+ "required": true,
117
+ "description": "Host definitions with paths."
118
+ },
119
+ {
120
+ "name": "certificateArn",
121
+ "type": "string",
122
+ "required": false,
123
+ "description": "Azure Key Vault certificate URI or secret name for TLS."
124
+ },
125
+ {
126
+ "name": "wafPolicyId",
127
+ "type": "string",
128
+ "required": false,
129
+ "description": "WAF policy resource ID."
130
+ },
131
+ {
132
+ "name": "healthCheckPath",
133
+ "type": "string",
134
+ "required": false,
135
+ "description": "Health check path for backend."
136
+ },
137
+ {
138
+ "name": "sslRedirect",
139
+ "type": "boolean",
140
+ "required": false,
141
+ "description": "Enable HTTP->HTTPS redirect (default: true when certificateArn set)."
142
+ },
143
+ {
144
+ "name": "backendPathPrefix",
145
+ "type": "string",
146
+ "required": false,
147
+ "description": "Backend path prefix override."
148
+ },
149
+ {
150
+ "name": "cookieAffinity",
151
+ "type": "boolean",
152
+ "required": false,
153
+ "description": "Enable cookie-based affinity (default: false)."
154
+ },
155
+ {
156
+ "name": "annotations",
157
+ "type": "Record<string, string>",
158
+ "required": false,
159
+ "description": "Additional annotations on the Ingress."
160
+ },
161
+ {
162
+ "name": "labels",
163
+ "type": "Record<string, string>",
164
+ "required": false,
165
+ "description": "Additional labels to apply to all resources."
166
+ },
167
+ {
168
+ "name": "namespace",
169
+ "type": "string",
170
+ "required": false,
171
+ "description": "Namespace for all resources."
172
+ },
173
+ {
174
+ "name": "defaults",
175
+ "type": "{ ingress?: Partial<Record<string, unknown>>; }",
176
+ "required": false,
177
+ "description": "Per-member defaults for fine-grained overrides."
178
+ }
179
+ ]
180
+ },
181
+ {
182
+ "name": "AksExternalDnsAgent",
183
+ "lexicon": "k8s",
184
+ "description": "Create an AksExternalDnsAgent composite.",
185
+ "bundles": [
186
+ "ClusterRole",
187
+ "ClusterRoleBinding",
188
+ "Deployment",
189
+ "ServiceAccount"
190
+ ],
191
+ "params": [
192
+ {
193
+ "name": "clientId",
194
+ "type": "string",
195
+ "required": true,
196
+ "description": "Azure managed identity client ID for Workload Identity."
197
+ },
198
+ {
199
+ "name": "resourceGroup",
200
+ "type": "string",
201
+ "required": true,
202
+ "description": "Azure resource group containing the DNS zone."
203
+ },
204
+ {
205
+ "name": "subscriptionId",
206
+ "type": "string",
207
+ "required": true,
208
+ "description": "Azure subscription ID."
209
+ },
210
+ {
211
+ "name": "tenantId",
212
+ "type": "string",
213
+ "required": true,
214
+ "description": "Azure tenant ID."
215
+ },
216
+ {
217
+ "name": "domainFilters",
218
+ "type": "string[]",
219
+ "required": true,
220
+ "description": "Domain filters — only manage DNS records for these domains."
221
+ },
222
+ {
223
+ "name": "txtOwnerId",
224
+ "type": "string",
225
+ "required": false,
226
+ "description": "TXT record owner ID for identifying managed records."
227
+ },
228
+ {
229
+ "name": "source",
230
+ "type": "string",
231
+ "required": false,
232
+ "description": "Source of DNS records (default: \"ingress\")."
233
+ },
234
+ {
235
+ "name": "name",
236
+ "type": "string",
237
+ "required": false,
238
+ "description": "Agent name (default: \"external-dns\")."
239
+ },
240
+ {
241
+ "name": "image",
242
+ "type": "string",
243
+ "required": false,
244
+ "description": "Container image (default: \"registry.k8s.io/external-dns/external-dns:v0.14.0\")."
245
+ },
246
+ {
247
+ "name": "namespace",
248
+ "type": "string",
249
+ "required": false,
250
+ "description": "Namespace (default: \"kube-system\")."
251
+ },
252
+ {
253
+ "name": "labels",
254
+ "type": "Record<string, string>",
255
+ "required": false,
256
+ "description": "Additional labels."
257
+ },
258
+ {
259
+ "name": "defaults",
260
+ "type": "{ deployment?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Par...",
261
+ "required": false,
262
+ "description": "Per-member defaults for fine-grained overrides."
263
+ }
264
+ ]
265
+ },
266
+ {
267
+ "name": "AksWorkloadIdentityServiceAccount",
268
+ "lexicon": "k8s",
269
+ "description": "Create a WorkloadIdentityServiceAccount composite.",
270
+ "bundles": [
271
+ "Role",
272
+ "RoleBinding",
273
+ "ServiceAccount"
274
+ ],
275
+ "params": [
276
+ {
277
+ "name": "name",
278
+ "type": "string",
279
+ "required": true,
280
+ "description": "ServiceAccount name — used in metadata and labels."
281
+ },
282
+ {
283
+ "name": "clientId",
284
+ "type": "string",
285
+ "required": true,
286
+ "description": "Azure AD application client ID for Workload Identity."
287
+ },
288
+ {
289
+ "name": "rbacRules",
290
+ "type": "Array<{ apiGroups: string[]; resources: string[]; verbs: string[]; }>",
291
+ "required": false,
292
+ "description": "Optional RBAC rules — if provided, creates Role + RoleBinding."
293
+ },
294
+ {
295
+ "name": "labels",
296
+ "type": "Record<string, string>",
297
+ "required": false,
298
+ "description": "Additional labels to apply to all resources."
299
+ },
300
+ {
301
+ "name": "namespace",
302
+ "type": "string",
303
+ "required": false,
304
+ "description": "Namespace for all resources."
305
+ },
306
+ {
307
+ "name": "defaults",
308
+ "type": "{ serviceAccount?: Partial<Record<string, unknown>>; role?: Partial<Record<string, unknown>>; roleBinding?: Partial<R...",
309
+ "required": false,
310
+ "description": "Per-member defaults for fine-grained overrides."
311
+ }
312
+ ]
313
+ },
314
+ {
315
+ "name": "AlbIngress",
316
+ "lexicon": "k8s",
317
+ "description": "Create an AlbIngress composite — returns prop objects for an Ingress with AWS ALB Controller annotations.",
318
+ "bundles": [
319
+ "Ingress"
320
+ ],
321
+ "params": [
322
+ {
323
+ "name": "name",
324
+ "type": "string",
325
+ "required": true,
326
+ "description": "Ingress name — used in metadata and labels."
327
+ },
328
+ {
329
+ "name": "hosts",
330
+ "type": "AlbIngressHost[]",
331
+ "required": true,
332
+ "description": "Host definitions with paths."
333
+ },
334
+ {
335
+ "name": "scheme",
336
+ "type": "\"internet-facing\" | \"internal\"",
337
+ "required": false,
338
+ "description": "ALB scheme (default: \"internet-facing\")."
339
+ },
340
+ {
341
+ "name": "targetType",
342
+ "type": "\"ip\" | \"instance\"",
343
+ "required": false,
344
+ "description": "Target type (default: \"ip\")."
345
+ },
346
+ {
347
+ "name": "certificateArn",
348
+ "type": "string",
349
+ "required": false,
350
+ "description": "ACM certificate ARN for TLS."
351
+ },
352
+ {
353
+ "name": "wafAclArn",
354
+ "type": "string",
355
+ "required": false,
356
+ "description": "WAF Web ACL ARN."
357
+ },
358
+ {
359
+ "name": "healthCheckPath",
360
+ "type": "string",
361
+ "required": false,
362
+ "description": "Health check path for target group."
363
+ },
364
+ {
365
+ "name": "groupName",
366
+ "type": "string",
367
+ "required": false,
368
+ "description": "Ingress group name for shared ALB."
369
+ },
370
+ {
371
+ "name": "sslRedirect",
372
+ "type": "boolean",
373
+ "required": false,
374
+ "description": "Enable HTTP→HTTPS redirect (default: true when certificateArn set)."
375
+ },
376
+ {
377
+ "name": "annotations",
378
+ "type": "Record<string, string>",
379
+ "required": false,
380
+ "description": "Additional annotations on the Ingress."
381
+ },
382
+ {
383
+ "name": "labels",
384
+ "type": "Record<string, string>",
385
+ "required": false,
386
+ "description": "Additional labels to apply to all resources."
387
+ },
388
+ {
389
+ "name": "namespace",
390
+ "type": "string",
391
+ "required": false,
392
+ "description": "Namespace for all resources."
393
+ },
394
+ {
395
+ "name": "defaults",
396
+ "type": "{ ingress?: Partial<Record<string, unknown>>; }",
397
+ "required": false,
398
+ "description": "Per-member defaults for fine-grained overrides."
399
+ }
400
+ ]
401
+ },
402
+ {
403
+ "name": "AutoscaledService",
404
+ "lexicon": "k8s",
405
+ "description": "Create an AutoscaledService composite — returns prop objects for a Deployment, Service, HorizontalPodAutoscaler, and PodDisruptionBudget.",
406
+ "bundles": [
407
+ "Deployment",
408
+ "HorizontalPodAutoscaler",
409
+ "PodDisruptionBudget",
410
+ "Service"
411
+ ],
412
+ "params": [
413
+ {
414
+ "name": "name",
415
+ "type": "string",
416
+ "required": true,
417
+ "description": "Application name — used in metadata and labels."
418
+ },
419
+ {
420
+ "name": "image",
421
+ "type": "string",
422
+ "required": true,
423
+ "description": "Container image (e.g., \"nginx:1.25\")."
424
+ },
425
+ {
426
+ "name": "port",
427
+ "type": "number",
428
+ "required": false,
429
+ "description": "Container port (default: 80)."
430
+ },
431
+ {
432
+ "name": "minReplicas",
433
+ "type": "number",
434
+ "required": false,
435
+ "description": "Minimum replicas for HPA (default: 2)."
436
+ },
437
+ {
438
+ "name": "maxReplicas",
439
+ "type": "number",
440
+ "required": true,
441
+ "description": "Maximum replicas for HPA (required)."
442
+ },
443
+ {
444
+ "name": "targetCPUPercent",
445
+ "type": "number",
446
+ "required": false,
447
+ "description": "Target CPU utilization percentage (default: 70)."
448
+ },
449
+ {
450
+ "name": "targetMemoryPercent",
451
+ "type": "number",
452
+ "required": false,
453
+ "description": "Target memory utilization percentage — if set, adds memory metric."
454
+ },
455
+ {
456
+ "name": "minAvailable",
457
+ "type": "number | string",
458
+ "required": false,
459
+ "description": "PDB minAvailable (default: 1)."
460
+ },
461
+ {
462
+ "name": "cpuRequest",
463
+ "type": "string",
464
+ "required": true,
465
+ "description": "CPU request (required — HPA needs resource requests)."
466
+ },
467
+ {
468
+ "name": "memoryRequest",
469
+ "type": "string",
470
+ "required": true,
471
+ "description": "Memory request (required)."
472
+ },
473
+ {
474
+ "name": "cpuLimit",
475
+ "type": "string",
476
+ "required": false,
477
+ "description": "CPU limit (optional — left unset if not provided)."
478
+ },
479
+ {
480
+ "name": "memoryLimit",
481
+ "type": "string",
482
+ "required": false,
483
+ "description": "Memory limit (optional — left unset if not provided)."
484
+ },
485
+ {
486
+ "name": "topologySpread",
487
+ "type": "boolean | { maxSkew?: number; topologyKey?: string; }",
488
+ "required": false,
489
+ "description": "Topology spread constraints (default: false)."
490
+ },
491
+ {
492
+ "name": "livenessPath",
493
+ "type": "string",
494
+ "required": false,
495
+ "description": "Liveness probe path (default: \"/healthz\")."
496
+ },
497
+ {
498
+ "name": "readinessPath",
499
+ "type": "string",
500
+ "required": false,
501
+ "description": "Readiness probe path (default: \"/readyz\")."
502
+ },
503
+ {
504
+ "name": "initContainers",
505
+ "type": "Array<{ name: string; image: string; command?: string[]; args?: string[]; }>",
506
+ "required": false,
507
+ "description": "Init containers (e.g., migrations, cert setup)."
508
+ },
509
+ {
510
+ "name": "securityContext",
511
+ "type": "ContainerSecurityContext",
512
+ "required": false,
513
+ "description": "Container security context (supports PSS restricted fields)."
514
+ },
515
+ {
516
+ "name": "terminationGracePeriodSeconds",
517
+ "type": "number",
518
+ "required": false,
519
+ "description": "Termination grace period in seconds."
520
+ },
521
+ {
522
+ "name": "priorityClassName",
523
+ "type": "string",
524
+ "required": false,
525
+ "description": "Priority class name for pod scheduling."
526
+ },
527
+ {
528
+ "name": "labels",
529
+ "type": "Record<string, string>",
530
+ "required": false,
531
+ "description": "Additional labels to apply to all resources."
532
+ },
533
+ {
534
+ "name": "namespace",
535
+ "type": "string",
536
+ "required": false,
537
+ "description": "Namespace for all resources."
538
+ },
539
+ {
540
+ "name": "env",
541
+ "type": "Array<{ name: string; value: string }>",
542
+ "required": false,
543
+ "description": "Environment variables for the container."
544
+ },
545
+ {
546
+ "name": "serviceAccountName",
547
+ "type": "string",
548
+ "required": false,
549
+ "description": "Service account name for the pod."
550
+ },
551
+ {
552
+ "name": "volumes",
553
+ "type": "Array<Record<string, unknown>>",
554
+ "required": false,
555
+ "description": "Volumes to attach to the pod."
556
+ },
557
+ {
558
+ "name": "volumeMounts",
559
+ "type": "Array<Record<string, unknown>>",
560
+ "required": false,
561
+ "description": "Volume mounts for the primary container."
562
+ },
563
+ {
564
+ "name": "tmpDirs",
565
+ "type": "string[]",
566
+ "required": false,
567
+ "description": "Convenience: auto-generate emptyDir volumes + mounts for writable temp dirs (e.g. [\"/tmp\", \"/var/cache/nginx\"])."
568
+ },
569
+ {
570
+ "name": "defaults",
571
+ "type": "{ deployment?: Partial<Record<string, unknown>>; service?: Partial<Record<string, unknown>>; hpa?: Partial<Record<str...",
572
+ "required": false,
573
+ "description": "Per-member defaults for fine-grained overrides."
574
+ }
575
+ ]
576
+ },
577
+ {
578
+ "name": "AzureDiskStorageClass",
579
+ "lexicon": "k8s",
580
+ "description": "Create an AzureDiskStorageClass composite — returns prop objects for a StorageClass with the Azure Disk CSI provisioner.",
581
+ "bundles": [
582
+ "StorageClass"
583
+ ],
584
+ "params": [
585
+ {
586
+ "name": "name",
587
+ "type": "string",
588
+ "required": true,
589
+ "description": "StorageClass name."
590
+ },
591
+ {
592
+ "name": "skuName",
593
+ "type": "string",
594
+ "required": false,
595
+ "description": "Azure Disk SKU name (default: \"Premium_LRS\")."
596
+ },
597
+ {
598
+ "name": "cachingMode",
599
+ "type": "string",
600
+ "required": false,
601
+ "description": "OS disk caching mode (default: \"ReadOnly\")."
602
+ },
603
+ {
604
+ "name": "networkAccessPolicy",
605
+ "type": "string",
606
+ "required": false,
607
+ "description": "Network access policy (default: \"AllowAll\")."
608
+ },
609
+ {
610
+ "name": "reclaimPolicy",
611
+ "type": "string",
612
+ "required": false,
613
+ "description": "Reclaim policy (default: \"Delete\")."
614
+ },
615
+ {
616
+ "name": "volumeBindingMode",
617
+ "type": "string",
618
+ "required": false,
619
+ "description": "Volume binding mode (default: \"WaitForFirstConsumer\")."
620
+ },
621
+ {
622
+ "name": "allowVolumeExpansion",
623
+ "type": "boolean",
624
+ "required": false,
625
+ "description": "Allow volume expansion (default: true)."
626
+ },
627
+ {
628
+ "name": "labels",
629
+ "type": "Record<string, string>",
630
+ "required": false,
631
+ "description": "Additional labels."
632
+ },
633
+ {
634
+ "name": "defaults",
635
+ "type": "{ storageClass?: Partial<Record<string, unknown>>; }",
636
+ "required": false,
637
+ "description": "Per-member defaults for fine-grained overrides."
638
+ }
639
+ ]
640
+ },
641
+ {
642
+ "name": "AzureFileStorageClass",
643
+ "lexicon": "k8s",
644
+ "description": "Create an AzureFileStorageClass composite — returns prop objects for a StorageClass with the Azure Files CSI provisioner.",
645
+ "bundles": [
646
+ "StorageClass"
647
+ ],
648
+ "params": [
649
+ {
650
+ "name": "name",
651
+ "type": "string",
652
+ "required": true,
653
+ "description": "StorageClass name."
654
+ },
655
+ {
656
+ "name": "skuName",
657
+ "type": "string",
658
+ "required": false,
659
+ "description": "Azure Files SKU name (default: \"Premium_LRS\")."
660
+ },
661
+ {
662
+ "name": "protocol",
663
+ "type": "string",
664
+ "required": false,
665
+ "description": "Protocol for Azure Files (default: \"smb\")."
666
+ },
667
+ {
668
+ "name": "shareName",
669
+ "type": "string",
670
+ "required": false,
671
+ "description": "Specific Azure file share name (optional; dynamically provisioned if omitted)."
672
+ },
673
+ {
674
+ "name": "reclaimPolicy",
675
+ "type": "string",
676
+ "required": false,
677
+ "description": "Reclaim policy (default: \"Delete\")."
678
+ },
679
+ {
680
+ "name": "labels",
681
+ "type": "Record<string, string>",
682
+ "required": false,
683
+ "description": "Additional labels."
684
+ },
685
+ {
686
+ "name": "defaults",
687
+ "type": "{ storageClass?: Partial<Record<string, unknown>>; }",
688
+ "required": false,
689
+ "description": "Per-member defaults for fine-grained overrides."
690
+ }
691
+ ]
692
+ },
693
+ {
694
+ "name": "AzureMonitorCollector",
695
+ "lexicon": "k8s",
696
+ "description": "Create an AzureMonitorCollector composite — returns prop objects for a DaemonSet, ServiceAccount, ClusterRole, ClusterRoleBinding, and ConfigMap.",
697
+ "bundles": [
698
+ "ClusterRole",
699
+ "ClusterRoleBinding",
700
+ "ConfigMap",
701
+ "DaemonSet",
702
+ "ServiceAccount"
703
+ ],
704
+ "params": [
705
+ {
706
+ "name": "workspaceId",
707
+ "type": "string",
708
+ "required": true,
709
+ "description": "Azure Log Analytics workspace ID."
710
+ },
711
+ {
712
+ "name": "clusterName",
713
+ "type": "string",
714
+ "required": true,
715
+ "description": "AKS cluster name."
716
+ },
717
+ {
718
+ "name": "name",
719
+ "type": "string",
720
+ "required": false,
721
+ "description": "Agent name (default: \"azure-monitor-collector\")."
722
+ },
723
+ {
724
+ "name": "image",
725
+ "type": "string",
726
+ "required": false,
727
+ "description": "Collector image (default: \"mcr.microsoft.com/azuremonitor/containerinsights/ciprod:3.1.35\")."
728
+ },
729
+ {
730
+ "name": "namespace",
731
+ "type": "string",
732
+ "required": false,
733
+ "description": "Namespace (default: \"azure-monitor\")."
734
+ },
735
+ {
736
+ "name": "labels",
737
+ "type": "Record<string, string>",
738
+ "required": false,
739
+ "description": "Additional labels."
740
+ },
741
+ {
742
+ "name": "cpuRequest",
743
+ "type": "string",
744
+ "required": false,
745
+ "description": "CPU request (default: \"100m\")."
746
+ },
747
+ {
748
+ "name": "memoryRequest",
749
+ "type": "string",
750
+ "required": false,
751
+ "description": "Memory request (default: \"256Mi\")."
752
+ },
753
+ {
754
+ "name": "cpuLimit",
755
+ "type": "string",
756
+ "required": false,
757
+ "description": "CPU limit (default: \"500m\")."
758
+ },
759
+ {
760
+ "name": "memoryLimit",
761
+ "type": "string",
762
+ "required": false,
763
+ "description": "Memory limit (default: \"512Mi\")."
764
+ },
765
+ {
766
+ "name": "clientId",
767
+ "type": "string",
768
+ "required": false,
769
+ "description": "Azure AD client ID for Workload Identity (adds azure.workload.identity annotations to ServiceAccount)."
770
+ },
771
+ {
772
+ "name": "defaults",
773
+ "type": "{ daemonSet?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Part...",
774
+ "required": false,
775
+ "description": "Per-member defaults for fine-grained overrides."
776
+ }
777
+ ]
778
+ },
779
+ {
780
+ "name": "BatchJob",
781
+ "lexicon": "k8s",
782
+ "description": "Create a BatchJob composite — returns prop objects for a Job, and optional ServiceAccount, Role, and RoleBinding.",
783
+ "bundles": [
784
+ "Job",
785
+ "Role",
786
+ "RoleBinding",
787
+ "ServiceAccount"
788
+ ],
789
+ "params": [
790
+ {
791
+ "name": "name",
792
+ "type": "string",
793
+ "required": true,
794
+ "description": "Job name — used in metadata and labels."
795
+ },
796
+ {
797
+ "name": "image",
798
+ "type": "string",
799
+ "required": true,
800
+ "description": "Container image."
801
+ },
802
+ {
803
+ "name": "command",
804
+ "type": "string[]",
805
+ "required": false,
806
+ "description": "Command to run in the container."
807
+ },
808
+ {
809
+ "name": "args",
810
+ "type": "string[]",
811
+ "required": false,
812
+ "description": "Arguments to the command."
813
+ },
814
+ {
815
+ "name": "backoffLimit",
816
+ "type": "number",
817
+ "required": false,
818
+ "description": "Number of retries before marking the job as failed (default: 6)."
819
+ },
820
+ {
821
+ "name": "ttlSecondsAfterFinished",
822
+ "type": "number",
823
+ "required": false,
824
+ "description": "Seconds after completion before the job is eligible for GC."
825
+ },
826
+ {
827
+ "name": "completions",
828
+ "type": "number",
829
+ "required": false,
830
+ "description": "Number of completions required (default: 1)."
831
+ },
832
+ {
833
+ "name": "parallelism",
834
+ "type": "number",
835
+ "required": false,
836
+ "description": "Number of pods running in parallel (default: 1)."
837
+ },
838
+ {
839
+ "name": "restartPolicy",
840
+ "type": "string",
841
+ "required": false,
842
+ "description": "Restart policy (default: \"OnFailure\")."
843
+ },
844
+ {
845
+ "name": "rbacRules",
846
+ "type": "Array<{ apiGroups: string[]; resources: string[]; verbs: string[]; }>",
847
+ "required": false,
848
+ "description": "RBAC rules for the service account."
849
+ },
850
+ {
851
+ "name": "labels",
852
+ "type": "Record<string, string>",
853
+ "required": false,
854
+ "description": "Additional labels to apply to all resources."
855
+ },
856
+ {
857
+ "name": "namespace",
858
+ "type": "string",
859
+ "required": false,
860
+ "description": "Namespace for all resources."
861
+ },
862
+ {
863
+ "name": "cpuRequest",
864
+ "type": "string",
865
+ "required": false,
866
+ "description": "CPU request (default: \"100m\")."
867
+ },
868
+ {
869
+ "name": "memoryRequest",
870
+ "type": "string",
871
+ "required": false,
872
+ "description": "Memory request (default: \"128Mi\")."
873
+ },
874
+ {
875
+ "name": "cpuLimit",
876
+ "type": "string",
877
+ "required": false,
878
+ "description": "CPU limit (default: \"500m\")."
879
+ },
880
+ {
881
+ "name": "memoryLimit",
882
+ "type": "string",
883
+ "required": false,
884
+ "description": "Memory limit (default: \"256Mi\")."
885
+ },
886
+ {
887
+ "name": "env",
888
+ "type": "Array<{ name: string; value: string }>",
889
+ "required": false,
890
+ "description": "Environment variables for the container."
891
+ },
892
+ {
893
+ "name": "securityContext",
894
+ "type": "ContainerSecurityContext",
895
+ "required": false,
896
+ "description": "Container security context (supports PSS restricted fields)."
897
+ },
898
+ {
899
+ "name": "defaults",
900
+ "type": "{ job?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; role?: Partial<Record<st...",
901
+ "required": false,
902
+ "description": "Per-member defaults for fine-grained overrides."
903
+ }
904
+ ]
905
+ },
906
+ {
907
+ "name": "CockroachDbCluster",
908
+ "lexicon": "k8s",
909
+ "description": "Create a CockroachDbCluster composite — returns prop objects for a full CockroachDB StatefulSet deployment including RBAC, Services, PDB, and Jobs.",
910
+ "bundles": [
911
+ "ClusterRole",
912
+ "ClusterRoleBinding",
913
+ "Job",
914
+ "PodDisruptionBudget",
915
+ "Role",
916
+ "RoleBinding",
917
+ "Service",
918
+ "ServiceAccount",
919
+ "StatefulSet"
920
+ ],
921
+ "params": [
922
+ {
923
+ "name": "name",
924
+ "type": "string",
925
+ "required": true,
926
+ "description": "Cluster name — used in metadata, labels, and service names."
927
+ },
928
+ {
929
+ "name": "namespace",
930
+ "type": "string",
931
+ "required": false,
932
+ "description": "Namespace for all namespaced resources."
933
+ },
934
+ {
935
+ "name": "replicas",
936
+ "type": "number",
937
+ "required": false,
938
+ "description": "Number of StatefulSet replicas (default: 3)."
939
+ },
940
+ {
941
+ "name": "image",
942
+ "type": "string",
943
+ "required": false,
944
+ "description": "CockroachDB container image (default: \"cockroachdb/cockroach:v24.3.0\")."
945
+ },
946
+ {
947
+ "name": "storageSize",
948
+ "type": "string",
949
+ "required": false,
950
+ "description": "PVC storage size per node (default: \"100Gi\")."
951
+ },
952
+ {
953
+ "name": "storageClassName",
954
+ "type": "string",
955
+ "required": false,
956
+ "description": "StorageClass name for PVCs."
957
+ },
958
+ {
959
+ "name": "cpuLimit",
960
+ "type": "string",
961
+ "required": false,
962
+ "description": "CPU limit per pod (default: \"2\")."
963
+ },
964
+ {
965
+ "name": "memoryLimit",
966
+ "type": "string",
967
+ "required": false,
968
+ "description": "Memory limit per pod (default: \"8Gi\")."
969
+ },
970
+ {
971
+ "name": "cachePercent",
972
+ "type": "string",
973
+ "required": false,
974
+ "description": "Fraction of container memory for CockroachDB cache (default: \".25\")."
975
+ },
976
+ {
977
+ "name": "sqlMemoryPercent",
978
+ "type": "string",
979
+ "required": false,
980
+ "description": "Fraction of container memory for SQL temp storage (default: \".25\")."
981
+ },
982
+ {
983
+ "name": "locality",
984
+ "type": "string",
985
+ "required": false,
986
+ "description": "CockroachDB locality flag (e.g., \"cloud=aws,region=us-east-1\")."
987
+ },
988
+ {
989
+ "name": "joinAddresses",
990
+ "type": "string[]",
991
+ "required": false,
992
+ "description": "All node DNS names for --join (cross-cloud cluster membership)."
993
+ },
994
+ {
995
+ "name": "secure",
996
+ "type": "boolean",
997
+ "required": false,
998
+ "description": "Enable TLS via self-signed CA certs (default: true)."
999
+ },
1000
+ {
1001
+ "name": "skipInit",
1002
+ "type": "boolean",
1003
+ "required": false,
1004
+ "description": "Skip the cockroach init Job (default: false)."
1005
+ },
1006
+ {
1007
+ "name": "skipCertGen",
1008
+ "type": "boolean",
1009
+ "required": false,
1010
+ "description": "Skip the cert-gen Job (default: false)."
1011
+ },
1012
+ {
1013
+ "name": "extraCertNodeAddresses",
1014
+ "type": "string[]",
1015
+ "required": false,
1016
+ "description": "Extra DNS names / IPs to include in node cert SANs beyond the auto-generated cluster-local names."
1017
+ },
1018
+ {
1019
+ "name": "advertiseHostDomain",
1020
+ "type": "string",
1021
+ "required": false,
1022
+ "description": "Domain suffix for cross-cluster advertise address (e.g. \"east.crdb.internal\")."
1023
+ },
1024
+ {
1025
+ "name": "mountClientCerts",
1026
+ "type": "boolean",
1027
+ "required": false,
1028
+ "description": "Mount the client certs secret (`${name}-client-certs`) into pods at `/cockroach/cockroach-client-certs` (default: false)."
1029
+ },
1030
+ {
1031
+ "name": "labels",
1032
+ "type": "Record<string, string>",
1033
+ "required": false,
1034
+ "description": "Additional labels to apply to all resources."
1035
+ },
1036
+ {
1037
+ "name": "defaults",
1038
+ "type": "{ serviceAccount?: Partial<Record<string, unknown>>; role?: Partial<Record<string, unknown>>; roleBinding?: Partial<R...",
1039
+ "required": false,
1040
+ "description": "Per-member defaults for fine-grained overrides."
1041
+ }
1042
+ ]
1043
+ },
1044
+ {
1045
+ "name": "CockroachDbRegionStack",
1046
+ "lexicon": "k8s",
1047
+ "description": "Create a CockroachDbRegionStack composite — returns all K8s resources for one CockroachDB region in a single call.",
1048
+ "bundles": [
1049
+ "BackendConfig",
1050
+ "ClusterRole",
1051
+ "ClusterRoleBinding",
1052
+ "ClusterSecretStore",
1053
+ "ConfigMap",
1054
+ "Deployment",
1055
+ "ExternalSecret",
1056
+ "FrontendConfig",
1057
+ "Ingress",
1058
+ "Job",
1059
+ "LimitRange",
1060
+ "ManagedCertificate",
1061
+ "Namespace",
1062
+ "NetworkPolicy",
1063
+ "PodDisruptionBudget",
1064
+ "ResourceQuota",
1065
+ "Role",
1066
+ "RoleBinding",
1067
+ "Service",
1068
+ "ServiceAccount",
1069
+ "StatefulSet",
1070
+ "StorageClass"
1071
+ ],
1072
+ "params": [
1073
+ {
1074
+ "name": "region",
1075
+ "type": "string",
1076
+ "required": true,
1077
+ "description": "Short region identifier used in resource names and labels (e.g. \"east\")."
1078
+ },
1079
+ {
1080
+ "name": "namespace",
1081
+ "type": "string",
1082
+ "required": true,
1083
+ "description": "K8s namespace for all namespaced resources (e.g. \"crdb-east\")."
1084
+ },
1085
+ {
1086
+ "name": "domain",
1087
+ "type": "string",
1088
+ "required": true,
1089
+ "description": "Public UI domain for this region (e.g. \"east.crdb.example.com\")."
1090
+ },
1091
+ {
1092
+ "name": "internalDomain",
1093
+ "type": "string",
1094
+ "required": true,
1095
+ "description": "Cross-cluster ExternalDNS domain (e.g. \"east.crdb.internal\")."
1096
+ },
1097
+ {
1098
+ "name": "publicRootDomain",
1099
+ "type": "string",
1100
+ "required": true,
1101
+ "description": "Root public domain for ExternalDNS domain filter (e.g. \"crdb.example.com\")."
1102
+ },
1103
+ {
1104
+ "name": "projectId",
1105
+ "type": "string",
1106
+ "required": true,
1107
+ "description": "GCP project ID — used in ClusterSecretStore Workload Identity config."
1108
+ },
1109
+ {
1110
+ "name": "clusterName",
1111
+ "type": "string",
1112
+ "required": true,
1113
+ "description": "GKE cluster name — used in ClusterSecretStore Workload Identity config."
1114
+ },
1115
+ {
1116
+ "name": "clusterRegion",
1117
+ "type": "string",
1118
+ "required": true,
1119
+ "description": "GKE cluster region (e.g. \"us-east4\") — used in ClusterSecretStore config."
1120
+ },
1121
+ {
1122
+ "name": "crdbGsaEmail",
1123
+ "type": "string",
1124
+ "required": true,
1125
+ "description": "GCP service account email for CRDB Workload Identity annotation on the K8s SA."
1126
+ },
1127
+ {
1128
+ "name": "externalDnsGsaEmail",
1129
+ "type": "string",
1130
+ "required": true,
1131
+ "description": "GCP service account email for ExternalDNS Workload Identity."
1132
+ },
1133
+ {
1134
+ "name": "cockroachdb",
1135
+ "type": "CockroachDbRegionCockroachConfig",
1136
+ "required": true,
1137
+ "description": "CockroachDB cluster configuration."
1138
+ },
1139
+ {
1140
+ "name": "tls",
1141
+ "type": "CockroachDbRegionTlsConfig",
1142
+ "required": true,
1143
+ "description": "TLS certificate sync config (External Secrets Operator)."
1144
+ },
1145
+ {
1146
+ "name": "quota",
1147
+ "type": "{ /** Total CPU limit quota (e.g. \"8\"). */ cpu?: string; /** Total memory limit quota (e.g. \"20Gi\"). */ memory?: stri...",
1148
+ "required": false,
1149
+ "description": "Namespace resource quotas."
1150
+ },
1151
+ {
1152
+ "name": "allowCidrs",
1153
+ "type": "string[]",
1154
+ "required": false,
1155
+ "description": "CIDRs that may send traffic to CockroachDB ports (26257 + 8080)."
1156
+ },
1157
+ {
1158
+ "name": "cloudArmor",
1159
+ "type": "{ /** Cloud Armor security policy name. */ policyName: string; }",
1160
+ "required": false,
1161
+ "description": "Cloud Armor WAF configuration."
1162
+ },
1163
+ {
1164
+ "name": "monitoring",
1165
+ "type": "boolean",
1166
+ "required": false,
1167
+ "description": "Emit Prometheus ConfigMap + Deployment + Service for CockroachDB metrics."
1168
+ },
1169
+ {
1170
+ "name": "labels",
1171
+ "type": "Record<string, string>",
1172
+ "required": false,
1173
+ "description": "Additional labels for all resources."
1174
+ }
1175
+ ]
1176
+ },
1177
+ {
1178
+ "name": "ConfigConnectorContext",
1179
+ "lexicon": "k8s",
1180
+ "description": "Create a ConfigConnectorContext composite — returns prop objects for a ConfigConnectorContext resource.",
1181
+ "bundles": [
1182
+ "Deployment"
1183
+ ],
1184
+ "params": [
1185
+ {
1186
+ "name": "name",
1187
+ "type": "string",
1188
+ "required": false,
1189
+ "description": "Context name (default: \"configconnectorcontext.core.cnrm.cloud.google.com\")."
1190
+ },
1191
+ {
1192
+ "name": "googleServiceAccountEmail",
1193
+ "type": "string",
1194
+ "required": true,
1195
+ "description": "Google service account email for Config Connector to use."
1196
+ },
1197
+ {
1198
+ "name": "namespace",
1199
+ "type": "string",
1200
+ "required": false,
1201
+ "description": "Namespace for the context (default: \"default\")."
1202
+ },
1203
+ {
1204
+ "name": "stateIntoSpec",
1205
+ "type": "\"Absent\" | \"Merge\"",
1206
+ "required": false,
1207
+ "description": "Whether to sync status into spec (default: \"Absent\")."
1208
+ },
1209
+ {
1210
+ "name": "defaults",
1211
+ "type": "{ context?: Partial<Record<string, unknown>>; }",
1212
+ "required": false,
1213
+ "description": "Per-member defaults for fine-grained overrides."
1214
+ }
1215
+ ]
1216
+ },
1217
+ {
1218
+ "name": "ConfiguredApp",
1219
+ "lexicon": "k8s",
1220
+ "description": "Create a ConfiguredApp composite — returns prop objects for a Deployment, Service, and optional ConfigMap.",
1221
+ "bundles": [
1222
+ "ConfigMap",
1223
+ "Deployment",
1224
+ "Service"
1225
+ ],
1226
+ "params": [
1227
+ {
1228
+ "name": "name",
1229
+ "type": "string",
1230
+ "required": true,
1231
+ "description": "Application name — used in metadata and labels."
1232
+ },
1233
+ {
1234
+ "name": "image",
1235
+ "type": "string",
1236
+ "required": true,
1237
+ "description": "Container image."
1238
+ },
1239
+ {
1240
+ "name": "port",
1241
+ "type": "number",
1242
+ "required": false,
1243
+ "description": "Container port (default: 80)."
1244
+ },
1245
+ {
1246
+ "name": "replicas",
1247
+ "type": "number",
1248
+ "required": false,
1249
+ "description": "Number of replicas (default: 2)."
1250
+ },
1251
+ {
1252
+ "name": "configData",
1253
+ "type": "Record<string, string>",
1254
+ "required": false,
1255
+ "description": "Config data — creates a ConfigMap."
1256
+ },
1257
+ {
1258
+ "name": "configMountPath",
1259
+ "type": "string",
1260
+ "required": false,
1261
+ "description": "Mount path for the ConfigMap volume."
1262
+ },
1263
+ {
1264
+ "name": "secretName",
1265
+ "type": "string",
1266
+ "required": false,
1267
+ "description": "Existing Secret name to mount as a volume."
1268
+ },
1269
+ {
1270
+ "name": "secretMountPath",
1271
+ "type": "string",
1272
+ "required": false,
1273
+ "description": "Mount path for the Secret volume."
1274
+ },
1275
+ {
1276
+ "name": "envFrom",
1277
+ "type": "{ configMapRef?: string; secretRef?: string; }",
1278
+ "required": false,
1279
+ "description": "Inject config/secrets as environment variables."
1280
+ },
1281
+ {
1282
+ "name": "initContainers",
1283
+ "type": "Array<{ name: string; image: string; command?: string[]; args?: string[]; }>",
1284
+ "required": false,
1285
+ "description": "Init containers (e.g., migrations, cert setup)."
1286
+ },
1287
+ {
1288
+ "name": "labels",
1289
+ "type": "Record<string, string>",
1290
+ "required": false,
1291
+ "description": "Additional labels to apply to all resources."
1292
+ },
1293
+ {
1294
+ "name": "cpuLimit",
1295
+ "type": "string",
1296
+ "required": false,
1297
+ "description": "CPU limit (default: \"500m\")."
1298
+ },
1299
+ {
1300
+ "name": "memoryLimit",
1301
+ "type": "string",
1302
+ "required": false,
1303
+ "description": "Memory limit (default: \"256Mi\")."
1304
+ },
1305
+ {
1306
+ "name": "cpuRequest",
1307
+ "type": "string",
1308
+ "required": false,
1309
+ "description": "CPU request (default: \"100m\")."
1310
+ },
1311
+ {
1312
+ "name": "memoryRequest",
1313
+ "type": "string",
1314
+ "required": false,
1315
+ "description": "Memory request (default: \"128Mi\")."
1316
+ },
1317
+ {
1318
+ "name": "namespace",
1319
+ "type": "string",
1320
+ "required": false,
1321
+ "description": "Namespace for all resources."
1322
+ },
1323
+ {
1324
+ "name": "env",
1325
+ "type": "Array<{ name: string; value: string }>",
1326
+ "required": false,
1327
+ "description": "Environment variables for the container."
1328
+ },
1329
+ {
1330
+ "name": "securityContext",
1331
+ "type": "ContainerSecurityContext",
1332
+ "required": false,
1333
+ "description": "Container security context (supports PSS restricted fields)."
1334
+ },
1335
+ {
1336
+ "name": "defaults",
1337
+ "type": "{ deployment?: Partial<Record<string, unknown>>; service?: Partial<Record<string, unknown>>; configMap?: Partial<Reco...",
1338
+ "required": false,
1339
+ "description": "Per-member defaults for fine-grained overrides."
1340
+ }
1341
+ ]
1342
+ },
1343
+ {
1344
+ "name": "CronWorkload",
1345
+ "lexicon": "k8s",
1346
+ "description": "Create a CronWorkload composite — returns prop objects for a CronJob, ServiceAccount, Role, and RoleBinding.",
1347
+ "bundles": [
1348
+ "CronJob",
1349
+ "Role",
1350
+ "RoleBinding",
1351
+ "ServiceAccount"
1352
+ ],
1353
+ "params": [
1354
+ {
1355
+ "name": "name",
1356
+ "type": "string",
1357
+ "required": true,
1358
+ "description": "Workload name — used in metadata and labels."
1359
+ },
1360
+ {
1361
+ "name": "image",
1362
+ "type": "string",
1363
+ "required": true,
1364
+ "description": "Container image."
1365
+ },
1366
+ {
1367
+ "name": "schedule",
1368
+ "type": "string",
1369
+ "required": true,
1370
+ "description": "Cron schedule expression (e.g., \"0 * * * *\")."
1371
+ },
1372
+ {
1373
+ "name": "command",
1374
+ "type": "string[]",
1375
+ "required": false,
1376
+ "description": "Command to run in the container."
1377
+ },
1378
+ {
1379
+ "name": "args",
1380
+ "type": "string[]",
1381
+ "required": false,
1382
+ "description": "Arguments to the command."
1383
+ },
1384
+ {
1385
+ "name": "rbacRules",
1386
+ "type": "Array<{ apiGroups: string[]; resources: string[]; verbs: string[]; }>",
1387
+ "required": false,
1388
+ "description": "RBAC rules for the service account."
1389
+ },
1390
+ {
1391
+ "name": "successfulJobsHistoryLimit",
1392
+ "type": "number",
1393
+ "required": false,
1394
+ "description": "Job history limits."
1395
+ },
1396
+ {
1397
+ "name": "failedJobsHistoryLimit",
1398
+ "type": "number",
1399
+ "required": false
1400
+ },
1401
+ {
1402
+ "name": "restartPolicy",
1403
+ "type": "string",
1404
+ "required": false,
1405
+ "description": "Restart policy for the job (default: \"OnFailure\")."
1406
+ },
1407
+ {
1408
+ "name": "labels",
1409
+ "type": "Record<string, string>",
1410
+ "required": false,
1411
+ "description": "Additional labels to apply to all resources."
1412
+ },
1413
+ {
1414
+ "name": "namespace",
1415
+ "type": "string",
1416
+ "required": false,
1417
+ "description": "Namespace for all resources."
1418
+ },
1419
+ {
1420
+ "name": "env",
1421
+ "type": "Array<{ name: string; value: string }>",
1422
+ "required": false,
1423
+ "description": "Environment variables."
1424
+ },
1425
+ {
1426
+ "name": "securityContext",
1427
+ "type": "ContainerSecurityContext",
1428
+ "required": false,
1429
+ "description": "Container security context (supports PSS restricted fields)."
1430
+ },
1431
+ {
1432
+ "name": "defaults",
1433
+ "type": "{ cronJob?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; role?: Partial<Recor...",
1434
+ "required": false,
1435
+ "description": "Per-member defaults for fine-grained overrides."
1436
+ }
1437
+ ]
1438
+ },
1439
+ {
1440
+ "name": "EbsStorageClass",
1441
+ "lexicon": "k8s",
1442
+ "description": "Create an EbsStorageClass composite — returns prop objects for a StorageClass with the EBS CSI provisioner.",
1443
+ "bundles": [
1444
+ "StorageClass"
1445
+ ],
1446
+ "params": [
1447
+ {
1448
+ "name": "name",
1449
+ "type": "string",
1450
+ "required": true,
1451
+ "description": "StorageClass name."
1452
+ },
1453
+ {
1454
+ "name": "type",
1455
+ "type": "string",
1456
+ "required": false,
1457
+ "description": "EBS volume type (default: \"gp3\")."
1458
+ },
1459
+ {
1460
+ "name": "iops",
1461
+ "type": "string | number",
1462
+ "required": false,
1463
+ "description": "IOPS for io1/io2/gp3 volumes."
1464
+ },
1465
+ {
1466
+ "name": "throughput",
1467
+ "type": "string | number",
1468
+ "required": false,
1469
+ "description": "Throughput for gp3 volumes (MiB/s)."
1470
+ },
1471
+ {
1472
+ "name": "encrypted",
1473
+ "type": "boolean",
1474
+ "required": false,
1475
+ "description": "Enable encryption (default: true)."
1476
+ },
1477
+ {
1478
+ "name": "kmsKeyId",
1479
+ "type": "string",
1480
+ "required": false,
1481
+ "description": "KMS key ID for encryption."
1482
+ },
1483
+ {
1484
+ "name": "fsType",
1485
+ "type": "string",
1486
+ "required": false,
1487
+ "description": "Filesystem type (default: \"ext4\")."
1488
+ },
1489
+ {
1490
+ "name": "reclaimPolicy",
1491
+ "type": "string",
1492
+ "required": false,
1493
+ "description": "Reclaim policy (default: \"Delete\")."
1494
+ },
1495
+ {
1496
+ "name": "volumeBindingMode",
1497
+ "type": "string",
1498
+ "required": false,
1499
+ "description": "Volume binding mode (default: \"WaitForFirstConsumer\")."
1500
+ },
1501
+ {
1502
+ "name": "allowVolumeExpansion",
1503
+ "type": "boolean",
1504
+ "required": false,
1505
+ "description": "Allow volume expansion (default: true)."
1506
+ },
1507
+ {
1508
+ "name": "labels",
1509
+ "type": "Record<string, string>",
1510
+ "required": false,
1511
+ "description": "Additional labels."
1512
+ },
1513
+ {
1514
+ "name": "defaults",
1515
+ "type": "{ storageClass?: Partial<Record<string, unknown>>; }",
1516
+ "required": false,
1517
+ "description": "Per-member defaults for fine-grained overrides."
1518
+ }
1519
+ ]
1520
+ },
1521
+ {
1522
+ "name": "EfsStorageClass",
1523
+ "lexicon": "k8s",
1524
+ "description": "Create an EfsStorageClass composite — returns prop objects for a StorageClass with the EFS CSI provisioner.",
1525
+ "bundles": [
1526
+ "StorageClass"
1527
+ ],
1528
+ "params": [
1529
+ {
1530
+ "name": "name",
1531
+ "type": "string",
1532
+ "required": true,
1533
+ "description": "StorageClass name."
1534
+ },
1535
+ {
1536
+ "name": "fileSystemId",
1537
+ "type": "string",
1538
+ "required": true,
1539
+ "description": "EFS filesystem ID (required)."
1540
+ },
1541
+ {
1542
+ "name": "directoryPerms",
1543
+ "type": "string",
1544
+ "required": false,
1545
+ "description": "Directory permissions (default: \"700\")."
1546
+ },
1547
+ {
1548
+ "name": "basePath",
1549
+ "type": "string",
1550
+ "required": false,
1551
+ "description": "Base path for dynamic provisioning (default: \"/dynamic_provisioning\")."
1552
+ },
1553
+ {
1554
+ "name": "reclaimPolicy",
1555
+ "type": "string",
1556
+ "required": false,
1557
+ "description": "Reclaim policy (default: \"Delete\")."
1558
+ },
1559
+ {
1560
+ "name": "provisioningMode",
1561
+ "type": "string",
1562
+ "required": false,
1563
+ "description": "Provisioning mode (default: \"efs-ap\")."
1564
+ },
1565
+ {
1566
+ "name": "labels",
1567
+ "type": "Record<string, string>",
1568
+ "required": false,
1569
+ "description": "Additional labels."
1570
+ },
1571
+ {
1572
+ "name": "defaults",
1573
+ "type": "{ storageClass?: Partial<Record<string, unknown>>; }",
1574
+ "required": false,
1575
+ "description": "Per-member defaults for fine-grained overrides."
1576
+ }
1577
+ ]
1578
+ },
1579
+ {
1580
+ "name": "ExternalDnsAgent",
1581
+ "lexicon": "k8s",
1582
+ "description": "Create an ExternalDnsAgent composite — returns prop objects for a Deployment, ServiceAccount (with IRSA), ClusterRole, and ClusterRoleBinding.",
1583
+ "bundles": [
1584
+ "ClusterRole",
1585
+ "ClusterRoleBinding",
1586
+ "Deployment",
1587
+ "ServiceAccount"
1588
+ ],
1589
+ "params": [
1590
+ {
1591
+ "name": "iamRoleArn",
1592
+ "type": "string",
1593
+ "required": true,
1594
+ "description": "IAM Role ARN for IRSA (needs Route53 permissions)."
1595
+ },
1596
+ {
1597
+ "name": "domainFilters",
1598
+ "type": "string[]",
1599
+ "required": true,
1600
+ "description": "Domain filters — only manage DNS records for these domains."
1601
+ },
1602
+ {
1603
+ "name": "provider",
1604
+ "type": "string",
1605
+ "required": false,
1606
+ "description": "DNS provider (default: \"aws\")."
1607
+ },
1608
+ {
1609
+ "name": "source",
1610
+ "type": "string",
1611
+ "required": false,
1612
+ "description": "Source of DNS records (default: \"ingress\")."
1613
+ },
1614
+ {
1615
+ "name": "txtOwnerId",
1616
+ "type": "string",
1617
+ "required": false,
1618
+ "description": "TXT record owner ID for identifying managed records."
1619
+ },
1620
+ {
1621
+ "name": "name",
1622
+ "type": "string",
1623
+ "required": false,
1624
+ "description": "Agent name (default: \"external-dns\")."
1625
+ },
1626
+ {
1627
+ "name": "image",
1628
+ "type": "string",
1629
+ "required": false,
1630
+ "description": "Container image (default: \"registry.k8s.io/external-dns/external-dns:v0.14.0\")."
1631
+ },
1632
+ {
1633
+ "name": "namespace",
1634
+ "type": "string",
1635
+ "required": false,
1636
+ "description": "Namespace (default: \"kube-system\")."
1637
+ },
1638
+ {
1639
+ "name": "labels",
1640
+ "type": "Record<string, string>",
1641
+ "required": false,
1642
+ "description": "Additional labels."
1643
+ },
1644
+ {
1645
+ "name": "defaults",
1646
+ "type": "{ deployment?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Par...",
1647
+ "required": false,
1648
+ "description": "Per-member defaults for fine-grained overrides."
1649
+ }
1650
+ ]
1651
+ },
1652
+ {
1653
+ "name": "FilestoreStorageClass",
1654
+ "lexicon": "k8s",
1655
+ "description": "Create a FilestoreStorageClass composite — returns prop objects for a StorageClass with the GCP Filestore CSI provisioner.",
1656
+ "bundles": [
1657
+ "StorageClass"
1658
+ ],
1659
+ "params": [
1660
+ {
1661
+ "name": "name",
1662
+ "type": "string",
1663
+ "required": true,
1664
+ "description": "StorageClass name."
1665
+ },
1666
+ {
1667
+ "name": "tier",
1668
+ "type": "\"standard\" | \"premium\" | \"enterprise\"",
1669
+ "required": false,
1670
+ "description": "Filestore tier (default: \"standard\")."
1671
+ },
1672
+ {
1673
+ "name": "network",
1674
+ "type": "string",
1675
+ "required": false,
1676
+ "description": "VPC network for the Filestore instance."
1677
+ },
1678
+ {
1679
+ "name": "reclaimPolicy",
1680
+ "type": "string",
1681
+ "required": false,
1682
+ "description": "Reclaim policy (default: \"Delete\")."
1683
+ },
1684
+ {
1685
+ "name": "volumeBindingMode",
1686
+ "type": "string",
1687
+ "required": false,
1688
+ "description": "Volume binding mode (default: \"WaitForFirstConsumer\")."
1689
+ },
1690
+ {
1691
+ "name": "labels",
1692
+ "type": "Record<string, string>",
1693
+ "required": false,
1694
+ "description": "Additional labels."
1695
+ },
1696
+ {
1697
+ "name": "defaults",
1698
+ "type": "{ storageClass?: Partial<Record<string, unknown>>; }",
1699
+ "required": false,
1700
+ "description": "Per-member defaults for fine-grained overrides."
1701
+ }
1702
+ ]
1703
+ },
1704
+ {
1705
+ "name": "FluentBitAgent",
1706
+ "lexicon": "k8s",
1707
+ "description": "Create a FluentBitAgent composite — returns prop objects for a DaemonSet, ServiceAccount, ClusterRole, ClusterRoleBinding, and ConfigMap.",
1708
+ "bundles": [
1709
+ "ClusterRole",
1710
+ "ClusterRoleBinding",
1711
+ "ConfigMap",
1712
+ "DaemonSet",
1713
+ "ServiceAccount"
1714
+ ],
1715
+ "params": [
1716
+ {
1717
+ "name": "name",
1718
+ "type": "string",
1719
+ "required": false,
1720
+ "description": "Agent name (default: \"fluent-bit\")."
1721
+ },
1722
+ {
1723
+ "name": "image",
1724
+ "type": "string",
1725
+ "required": false,
1726
+ "description": "Fluent Bit image (default: \"public.ecr.aws/aws-observability/aws-for-fluent-bit:stable\")."
1727
+ },
1728
+ {
1729
+ "name": "logGroup",
1730
+ "type": "string",
1731
+ "required": true,
1732
+ "description": "CloudWatch log group name."
1733
+ },
1734
+ {
1735
+ "name": "region",
1736
+ "type": "string",
1737
+ "required": true,
1738
+ "description": "AWS region."
1739
+ },
1740
+ {
1741
+ "name": "clusterName",
1742
+ "type": "string",
1743
+ "required": true,
1744
+ "description": "Cluster name — used as log stream prefix."
1745
+ },
1746
+ {
1747
+ "name": "namespace",
1748
+ "type": "string",
1749
+ "required": false,
1750
+ "description": "Namespace (default: \"amazon-cloudwatch\")."
1751
+ },
1752
+ {
1753
+ "name": "labels",
1754
+ "type": "Record<string, string>",
1755
+ "required": false,
1756
+ "description": "Additional labels."
1757
+ },
1758
+ {
1759
+ "name": "cpuRequest",
1760
+ "type": "string",
1761
+ "required": false,
1762
+ "description": "CPU request (default: \"50m\")."
1763
+ },
1764
+ {
1765
+ "name": "memoryRequest",
1766
+ "type": "string",
1767
+ "required": false,
1768
+ "description": "Memory request (default: \"64Mi\")."
1769
+ },
1770
+ {
1771
+ "name": "cpuLimit",
1772
+ "type": "string",
1773
+ "required": false,
1774
+ "description": "CPU limit (default: \"200m\")."
1775
+ },
1776
+ {
1777
+ "name": "memoryLimit",
1778
+ "type": "string",
1779
+ "required": false,
1780
+ "description": "Memory limit (default: \"128Mi\")."
1781
+ },
1782
+ {
1783
+ "name": "iamRoleArn",
1784
+ "type": "string",
1785
+ "required": false,
1786
+ "description": "IAM Role ARN for IRSA (adds eks.amazonaws.com/role-arn annotation to ServiceAccount)."
1787
+ },
1788
+ {
1789
+ "name": "defaults",
1790
+ "type": "{ daemonSet?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Part...",
1791
+ "required": false,
1792
+ "description": "Per-member defaults for fine-grained overrides."
1793
+ }
1794
+ ]
1795
+ },
1796
+ {
1797
+ "name": "GceIngress",
1798
+ "lexicon": "k8s",
1799
+ "description": "Create a GceIngress composite — returns prop objects for an Ingress with GCE Ingress Controller annotations.",
1800
+ "bundles": [
1801
+ "Ingress"
1802
+ ],
1803
+ "params": [
1804
+ {
1805
+ "name": "name",
1806
+ "type": "string",
1807
+ "required": true,
1808
+ "description": "Ingress name — used in metadata and labels."
1809
+ },
1810
+ {
1811
+ "name": "hosts",
1812
+ "type": "GceIngressHost[]",
1813
+ "required": true,
1814
+ "description": "Host definitions with paths."
1815
+ },
1816
+ {
1817
+ "name": "staticIpName",
1818
+ "type": "string",
1819
+ "required": false,
1820
+ "description": "Global static IP name reserved in GCP (sets `kubernetes.io/ingress.global-static-ip-name`)."
1821
+ },
1822
+ {
1823
+ "name": "managedCertificate",
1824
+ "type": "string",
1825
+ "required": false,
1826
+ "description": "GKE managed certificate name (sets `networking.gke.io/managed-certificates`)."
1827
+ },
1828
+ {
1829
+ "name": "frontendConfig",
1830
+ "type": "string",
1831
+ "required": false,
1832
+ "description": "FrontendConfig name for SSL policy / redirects (sets `networking.gke.io/v1beta1.FrontendConfig`)."
1833
+ },
1834
+ {
1835
+ "name": "healthCheckPath",
1836
+ "type": "string",
1837
+ "required": false,
1838
+ "description": "Health check path for backend (sets `cloud.google.com/backend-config` is NOT handled here — use BackendConfig CRD)."
1839
+ },
1840
+ {
1841
+ "name": "sslRedirect",
1842
+ "type": "boolean",
1843
+ "required": false,
1844
+ "description": "Enable HTTP->HTTPS redirect (default: true when managedCertificate set)."
1845
+ },
1846
+ {
1847
+ "name": "annotations",
1848
+ "type": "Record<string, string>",
1849
+ "required": false,
1850
+ "description": "Additional annotations on the Ingress."
1851
+ },
1852
+ {
1853
+ "name": "labels",
1854
+ "type": "Record<string, string>",
1855
+ "required": false,
1856
+ "description": "Additional labels to apply to all resources."
1857
+ },
1858
+ {
1859
+ "name": "namespace",
1860
+ "type": "string",
1861
+ "required": false,
1862
+ "description": "Namespace for all resources."
1863
+ },
1864
+ {
1865
+ "name": "defaults",
1866
+ "type": "{ ingress?: Partial<Record<string, unknown>>; }",
1867
+ "required": false,
1868
+ "description": "Per-member defaults for fine-grained overrides."
1869
+ }
1870
+ ]
1871
+ },
1872
+ {
1873
+ "name": "GcePdStorageClass",
1874
+ "lexicon": "k8s",
1875
+ "description": "Create a GcePdStorageClass composite — returns prop objects for a StorageClass with the GCE Persistent Disk CSI provisioner.",
1876
+ "bundles": [
1877
+ "StorageClass"
1878
+ ],
1879
+ "params": [
1880
+ {
1881
+ "name": "name",
1882
+ "type": "string",
1883
+ "required": true,
1884
+ "description": "StorageClass name."
1885
+ },
1886
+ {
1887
+ "name": "type",
1888
+ "type": "\"pd-standard\" | \"pd-ssd\" | \"pd-balanced\" | \"pd-extreme\"",
1889
+ "required": false,
1890
+ "description": "PD type (default: \"pd-balanced\")."
1891
+ },
1892
+ {
1893
+ "name": "replicationType",
1894
+ "type": "\"none\" | \"regional-pd\"",
1895
+ "required": false,
1896
+ "description": "Replication type (default: \"none\")."
1897
+ },
1898
+ {
1899
+ "name": "fsType",
1900
+ "type": "string",
1901
+ "required": false,
1902
+ "description": "Filesystem type (default: \"ext4\")."
1903
+ },
1904
+ {
1905
+ "name": "reclaimPolicy",
1906
+ "type": "string",
1907
+ "required": false,
1908
+ "description": "Reclaim policy (default: \"Delete\")."
1909
+ },
1910
+ {
1911
+ "name": "volumeBindingMode",
1912
+ "type": "string",
1913
+ "required": false,
1914
+ "description": "Volume binding mode (default: \"WaitForFirstConsumer\")."
1915
+ },
1916
+ {
1917
+ "name": "allowVolumeExpansion",
1918
+ "type": "boolean",
1919
+ "required": false,
1920
+ "description": "Allow volume expansion (default: true)."
1921
+ },
1922
+ {
1923
+ "name": "labels",
1924
+ "type": "Record<string, string>",
1925
+ "required": false,
1926
+ "description": "Additional labels."
1927
+ },
1928
+ {
1929
+ "name": "defaults",
1930
+ "type": "{ storageClass?: Partial<Record<string, unknown>>; }",
1931
+ "required": false,
1932
+ "description": "Per-member defaults for fine-grained overrides."
1933
+ }
1934
+ ]
1935
+ },
1936
+ {
1937
+ "name": "GkeExternalDnsAgent",
1938
+ "lexicon": "k8s",
1939
+ "description": "Create a GkeExternalDnsAgent composite — returns prop objects for a Deployment, ServiceAccount (with Workload Identity), ClusterRole, and ClusterRoleBinding.",
1940
+ "bundles": [
1941
+ "ClusterRole",
1942
+ "ClusterRoleBinding",
1943
+ "Deployment",
1944
+ "ServiceAccount"
1945
+ ],
1946
+ "params": [
1947
+ {
1948
+ "name": "gcpServiceAccountEmail",
1949
+ "type": "string",
1950
+ "required": true,
1951
+ "description": "GCP service account email for Workload Identity (needs Cloud DNS permissions)."
1952
+ },
1953
+ {
1954
+ "name": "gcpProjectId",
1955
+ "type": "string",
1956
+ "required": true,
1957
+ "description": "GCP project ID."
1958
+ },
1959
+ {
1960
+ "name": "domainFilters",
1961
+ "type": "string[]",
1962
+ "required": true,
1963
+ "description": "Domain filters — only manage DNS records for these domains."
1964
+ },
1965
+ {
1966
+ "name": "txtOwnerId",
1967
+ "type": "string",
1968
+ "required": false,
1969
+ "description": "TXT record owner ID for identifying managed records."
1970
+ },
1971
+ {
1972
+ "name": "source",
1973
+ "type": "string | string[]",
1974
+ "required": false,
1975
+ "description": "Source(s) of DNS records (default: \"ingress\")."
1976
+ },
1977
+ {
1978
+ "name": "name",
1979
+ "type": "string",
1980
+ "required": false,
1981
+ "description": "Agent name (default: \"external-dns\")."
1982
+ },
1983
+ {
1984
+ "name": "image",
1985
+ "type": "string",
1986
+ "required": false,
1987
+ "description": "Container image (default: \"registry.k8s.io/external-dns/external-dns:v0.14.0\")."
1988
+ },
1989
+ {
1990
+ "name": "namespace",
1991
+ "type": "string",
1992
+ "required": false,
1993
+ "description": "Namespace (default: \"kube-system\")."
1994
+ },
1995
+ {
1996
+ "name": "labels",
1997
+ "type": "Record<string, string>",
1998
+ "required": false,
1999
+ "description": "Additional labels."
2000
+ },
2001
+ {
2002
+ "name": "defaults",
2003
+ "type": "{ deployment?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Par...",
2004
+ "required": false,
2005
+ "description": "Per-member defaults for fine-grained overrides."
2006
+ }
2007
+ ]
2008
+ },
2009
+ {
2010
+ "name": "GkeFluentBitAgent",
2011
+ "lexicon": "k8s",
2012
+ "description": "Create a GkeFluentBitAgent composite — returns prop objects for a DaemonSet, ServiceAccount, ClusterRole, ClusterRoleBinding, and ConfigMap.",
2013
+ "bundles": [
2014
+ "ClusterRole",
2015
+ "ClusterRoleBinding",
2016
+ "ConfigMap",
2017
+ "DaemonSet",
2018
+ "ServiceAccount"
2019
+ ],
2020
+ "params": [
2021
+ {
2022
+ "name": "clusterName",
2023
+ "type": "string",
2024
+ "required": true,
2025
+ "description": "GKE cluster name — used as log stream prefix."
2026
+ },
2027
+ {
2028
+ "name": "projectId",
2029
+ "type": "string",
2030
+ "required": true,
2031
+ "description": "GCP project ID."
2032
+ },
2033
+ {
2034
+ "name": "gcpServiceAccountEmail",
2035
+ "type": "string",
2036
+ "required": false,
2037
+ "description": "GCP service account email for Workload Identity."
2038
+ },
2039
+ {
2040
+ "name": "name",
2041
+ "type": "string",
2042
+ "required": false,
2043
+ "description": "Agent name (default: \"fluent-bit\")."
2044
+ },
2045
+ {
2046
+ "name": "image",
2047
+ "type": "string",
2048
+ "required": false,
2049
+ "description": "Fluent Bit image (default: \"fluent/fluent-bit:latest\")."
2050
+ },
2051
+ {
2052
+ "name": "namespace",
2053
+ "type": "string",
2054
+ "required": false,
2055
+ "description": "Namespace (default: \"gke-logging\")."
2056
+ },
2057
+ {
2058
+ "name": "labels",
2059
+ "type": "Record<string, string>",
2060
+ "required": false,
2061
+ "description": "Additional labels."
2062
+ },
2063
+ {
2064
+ "name": "cpuRequest",
2065
+ "type": "string",
2066
+ "required": false,
2067
+ "description": "CPU request (default: \"50m\")."
2068
+ },
2069
+ {
2070
+ "name": "memoryRequest",
2071
+ "type": "string",
2072
+ "required": false,
2073
+ "description": "Memory request (default: \"64Mi\")."
2074
+ },
2075
+ {
2076
+ "name": "cpuLimit",
2077
+ "type": "string",
2078
+ "required": false,
2079
+ "description": "CPU limit (default: \"200m\")."
2080
+ },
2081
+ {
2082
+ "name": "memoryLimit",
2083
+ "type": "string",
2084
+ "required": false,
2085
+ "description": "Memory limit (default: \"128Mi\")."
2086
+ },
2087
+ {
2088
+ "name": "defaults",
2089
+ "type": "{ daemonSet?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Part...",
2090
+ "required": false,
2091
+ "description": "Per-member defaults for fine-grained overrides."
2092
+ }
2093
+ ]
2094
+ },
2095
+ {
2096
+ "name": "GkeGateway",
2097
+ "lexicon": "k8s",
2098
+ "description": "Create a GkeGateway composite — returns prop objects for a Gateway and HTTPRoute with GKE-specific gateway class.",
2099
+ "bundles": [
2100
+ "Deployment"
2101
+ ],
2102
+ "params": [
2103
+ {
2104
+ "name": "name",
2105
+ "type": "string",
2106
+ "required": true,
2107
+ "description": "Gateway name — used in metadata and labels."
2108
+ },
2109
+ {
2110
+ "name": "gatewayClassName",
2111
+ "type": "| \"gke-l7-global-external-managed\" | \"gke-l7-regional-external-managed\" | \"gke-l7-rilb\"",
2112
+ "required": false,
2113
+ "description": "GKE gateway class (default: \"gke-l7-global-external-managed\")."
2114
+ },
2115
+ {
2116
+ "name": "hosts",
2117
+ "type": "GkeGatewayHost[]",
2118
+ "required": true,
2119
+ "description": "Host definitions with paths."
2120
+ },
2121
+ {
2122
+ "name": "certificateName",
2123
+ "type": "string",
2124
+ "required": false,
2125
+ "description": "Google-managed certificate name for TLS."
2126
+ },
2127
+ {
2128
+ "name": "labels",
2129
+ "type": "Record<string, string>",
2130
+ "required": false,
2131
+ "description": "Additional labels to apply to all resources."
2132
+ },
2133
+ {
2134
+ "name": "namespace",
2135
+ "type": "string",
2136
+ "required": false,
2137
+ "description": "Namespace for all resources."
2138
+ },
2139
+ {
2140
+ "name": "defaults",
2141
+ "type": "{ gateway?: Partial<Record<string, unknown>>; httpRoute?: Partial<Record<string, unknown>>; }",
2142
+ "required": false,
2143
+ "description": "Per-member defaults for fine-grained overrides."
2144
+ }
2145
+ ]
2146
+ },
2147
+ {
2148
+ "name": "GkeOtelCollector",
2149
+ "lexicon": "k8s",
2150
+ "description": "Create a GkeOtelCollector composite — returns prop objects for a DaemonSet, ServiceAccount, ClusterRole, ClusterRoleBinding, and ConfigMap.",
2151
+ "bundles": [
2152
+ "ClusterRole",
2153
+ "ClusterRoleBinding",
2154
+ "ConfigMap",
2155
+ "DaemonSet",
2156
+ "ServiceAccount"
2157
+ ],
2158
+ "params": [
2159
+ {
2160
+ "name": "clusterName",
2161
+ "type": "string",
2162
+ "required": true,
2163
+ "description": "GKE cluster name."
2164
+ },
2165
+ {
2166
+ "name": "projectId",
2167
+ "type": "string",
2168
+ "required": true,
2169
+ "description": "GCP project ID."
2170
+ },
2171
+ {
2172
+ "name": "gcpServiceAccountEmail",
2173
+ "type": "string",
2174
+ "required": false,
2175
+ "description": "GCP service account email for Workload Identity."
2176
+ },
2177
+ {
2178
+ "name": "name",
2179
+ "type": "string",
2180
+ "required": false,
2181
+ "description": "Agent name (default: \"gke-otel-collector\")."
2182
+ },
2183
+ {
2184
+ "name": "image",
2185
+ "type": "string",
2186
+ "required": false,
2187
+ "description": "OTel Collector image (default: \"otel/opentelemetry-collector-contrib:latest\")."
2188
+ },
2189
+ {
2190
+ "name": "namespace",
2191
+ "type": "string",
2192
+ "required": false,
2193
+ "description": "Namespace (default: \"gke-monitoring\")."
2194
+ },
2195
+ {
2196
+ "name": "labels",
2197
+ "type": "Record<string, string>",
2198
+ "required": false,
2199
+ "description": "Additional labels."
2200
+ },
2201
+ {
2202
+ "name": "cpuRequest",
2203
+ "type": "string",
2204
+ "required": false,
2205
+ "description": "CPU request (default: \"100m\")."
2206
+ },
2207
+ {
2208
+ "name": "memoryRequest",
2209
+ "type": "string",
2210
+ "required": false,
2211
+ "description": "Memory request (default: \"256Mi\")."
2212
+ },
2213
+ {
2214
+ "name": "cpuLimit",
2215
+ "type": "string",
2216
+ "required": false,
2217
+ "description": "CPU limit (default: \"500m\")."
2218
+ },
2219
+ {
2220
+ "name": "memoryLimit",
2221
+ "type": "string",
2222
+ "required": false,
2223
+ "description": "Memory limit (default: \"512Mi\")."
2224
+ },
2225
+ {
2226
+ "name": "defaults",
2227
+ "type": "{ daemonSet?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Part...",
2228
+ "required": false,
2229
+ "description": "Per-member defaults for fine-grained overrides."
2230
+ }
2231
+ ]
2232
+ },
2233
+ {
2234
+ "name": "InferenceService",
2235
+ "lexicon": "k8s",
2236
+ "description": "Create an InferenceService composite.",
2237
+ "bundles": [
2238
+ "InferenceService"
2239
+ ],
2240
+ "params": [
2241
+ {
2242
+ "name": "name",
2243
+ "type": "string",
2244
+ "required": true
2245
+ },
2246
+ {
2247
+ "name": "namespace",
2248
+ "type": "string",
2249
+ "required": true
2250
+ },
2251
+ {
2252
+ "name": "model",
2253
+ "type": "string | ModelReference",
2254
+ "required": true,
2255
+ "description": "A raw `storageUri` (e.g. `\"gs://bucket/model\"`) or a resolved model ref."
2256
+ },
2257
+ {
2258
+ "name": "runtime",
2259
+ "type": "string",
2260
+ "required": true,
2261
+ "description": "`ServingRuntime`/`ClusterServingRuntime` name the predictor pins to."
2262
+ },
2263
+ {
2264
+ "name": "modelFormat",
2265
+ "type": "string",
2266
+ "required": false,
2267
+ "description": "Model format name for KServe's runtime auto-matching (e.g. `\"vLLM\"`)."
2268
+ },
2269
+ {
2270
+ "name": "minReplicas",
2271
+ "type": "number",
2272
+ "required": false,
2273
+ "description": "Minimum predictor replicas."
2274
+ },
2275
+ {
2276
+ "name": "maxReplicas",
2277
+ "type": "number",
2278
+ "required": false,
2279
+ "description": "Maximum predictor replicas."
2280
+ },
2281
+ {
2282
+ "name": "scaleTarget",
2283
+ "type": "number",
2284
+ "required": false,
2285
+ "description": "Autoscaling target value (e.g. concurrency-per-replica, or CPU/memory/RPS target)."
2286
+ },
2287
+ {
2288
+ "name": "scaleMetric",
2289
+ "type": "ScaleMetric",
2290
+ "required": false,
2291
+ "description": "Which metric `scaleTarget` is measured against."
2292
+ },
2293
+ {
2294
+ "name": "canaryTrafficPercent",
2295
+ "type": "number",
2296
+ "required": false,
2297
+ "description": "Percentage of traffic (0-100) routed to this revision as a canary."
2298
+ },
2299
+ {
2300
+ "name": "labels",
2301
+ "type": "Record<string, string>",
2302
+ "required": false
2303
+ },
2304
+ {
2305
+ "name": "defaults",
2306
+ "type": "{ inferenceService?: Partial<Record<string, unknown>>; }",
2307
+ "required": false
2308
+ }
2309
+ ]
2310
+ },
2311
+ {
2312
+ "name": "IrsaServiceAccount",
2313
+ "lexicon": "k8s",
2314
+ "description": "Create an IrsaServiceAccount composite — returns prop objects for a ServiceAccount with IRSA annotation, and optional Role + RoleBinding.",
2315
+ "bundles": [
2316
+ "Role",
2317
+ "RoleBinding",
2318
+ "ServiceAccount"
2319
+ ],
2320
+ "params": [
2321
+ {
2322
+ "name": "name",
2323
+ "type": "string",
2324
+ "required": true,
2325
+ "description": "ServiceAccount name — used in metadata and labels."
2326
+ },
2327
+ {
2328
+ "name": "iamRoleArn",
2329
+ "type": "string",
2330
+ "required": true,
2331
+ "description": "IAM Role ARN for IRSA annotation."
2332
+ },
2333
+ {
2334
+ "name": "rbacRules",
2335
+ "type": "Array<{ apiGroups: string[]; resources: string[]; verbs: string[]; }>",
2336
+ "required": false,
2337
+ "description": "Optional RBAC rules — if provided, creates Role + RoleBinding."
2338
+ },
2339
+ {
2340
+ "name": "labels",
2341
+ "type": "Record<string, string>",
2342
+ "required": false,
2343
+ "description": "Additional labels to apply to all resources."
2344
+ },
2345
+ {
2346
+ "name": "namespace",
2347
+ "type": "string",
2348
+ "required": false,
2349
+ "description": "Namespace for all resources."
2350
+ },
2351
+ {
2352
+ "name": "defaults",
2353
+ "type": "{ serviceAccount?: Partial<Record<string, unknown>>; role?: Partial<Record<string, unknown>>; roleBinding?: Partial<R...",
2354
+ "required": false,
2355
+ "description": "Per-member defaults for fine-grained overrides."
2356
+ }
2357
+ ]
2358
+ },
2359
+ {
2360
+ "name": "MetricsServer",
2361
+ "lexicon": "k8s",
2362
+ "description": "Create a MetricsServer composite — returns prop objects for a Deployment, Service, ServiceAccount, ClusterRoles, ClusterRoleBindings, and APIService.",
2363
+ "bundles": [
2364
+ "APIService",
2365
+ "ClusterRole",
2366
+ "ClusterRoleBinding",
2367
+ "Deployment",
2368
+ "Service",
2369
+ "ServiceAccount"
2370
+ ],
2371
+ "params": [
2372
+ {
2373
+ "name": "name",
2374
+ "type": "string",
2375
+ "required": false,
2376
+ "description": "Agent name (default: \"metrics-server\")."
2377
+ },
2378
+ {
2379
+ "name": "image",
2380
+ "type": "string",
2381
+ "required": false,
2382
+ "description": "Container image (default: \"registry.k8s.io/metrics-server/metrics-server:v0.7.2\")."
2383
+ },
2384
+ {
2385
+ "name": "replicas",
2386
+ "type": "number",
2387
+ "required": false,
2388
+ "description": "Replicas (default: 1)."
2389
+ },
2390
+ {
2391
+ "name": "namespace",
2392
+ "type": "string",
2393
+ "required": false,
2394
+ "description": "Namespace (default: \"kube-system\")."
2395
+ },
2396
+ {
2397
+ "name": "labels",
2398
+ "type": "Record<string, string>",
2399
+ "required": false,
2400
+ "description": "Additional labels."
2401
+ },
2402
+ {
2403
+ "name": "defaults",
2404
+ "type": "{ deployment?: Partial<Record<string, unknown>>; service?: Partial<Record<string, unknown>>; serviceAccount?: Partial...",
2405
+ "required": false,
2406
+ "description": "Per-member defaults for fine-grained overrides."
2407
+ }
2408
+ ]
2409
+ },
2410
+ {
2411
+ "name": "MonitoredService",
2412
+ "lexicon": "k8s",
2413
+ "description": "Create a MonitoredService composite — returns prop objects for a Deployment, Service, ServiceMonitor, and optional PrometheusRule.",
2414
+ "bundles": [
2415
+ "Deployment",
2416
+ "PrometheusRule",
2417
+ "Service",
2418
+ "ServiceMonitor"
2419
+ ],
2420
+ "params": [
2421
+ {
2422
+ "name": "name",
2423
+ "type": "string",
2424
+ "required": true,
2425
+ "description": "Application name — used in metadata and labels."
2426
+ },
2427
+ {
2428
+ "name": "image",
2429
+ "type": "string",
2430
+ "required": true,
2431
+ "description": "Container image."
2432
+ },
2433
+ {
2434
+ "name": "port",
2435
+ "type": "number",
2436
+ "required": false,
2437
+ "description": "Application container port (default: 80)."
2438
+ },
2439
+ {
2440
+ "name": "metricsPort",
2441
+ "type": "number",
2442
+ "required": false,
2443
+ "description": "Metrics port (default: 9090)."
2444
+ },
2445
+ {
2446
+ "name": "metricsPath",
2447
+ "type": "string",
2448
+ "required": false,
2449
+ "description": "Metrics path (default: \"/metrics\")."
2450
+ },
2451
+ {
2452
+ "name": "scrapeInterval",
2453
+ "type": "string",
2454
+ "required": false,
2455
+ "description": "Scrape interval (default: \"30s\")."
2456
+ },
2457
+ {
2458
+ "name": "alertRules",
2459
+ "type": "AlertRule[]",
2460
+ "required": false,
2461
+ "description": "Alert rules — if provided, creates a PrometheusRule."
2462
+ },
2463
+ {
2464
+ "name": "replicas",
2465
+ "type": "number",
2466
+ "required": false,
2467
+ "description": "Number of replicas (default: 2)."
2468
+ },
2469
+ {
2470
+ "name": "labels",
2471
+ "type": "Record<string, string>",
2472
+ "required": false,
2473
+ "description": "Additional labels to apply to all resources."
2474
+ },
2475
+ {
2476
+ "name": "cpuLimit",
2477
+ "type": "string",
2478
+ "required": false,
2479
+ "description": "CPU limit (default: \"500m\")."
2480
+ },
2481
+ {
2482
+ "name": "memoryLimit",
2483
+ "type": "string",
2484
+ "required": false,
2485
+ "description": "Memory limit (default: \"256Mi\")."
2486
+ },
2487
+ {
2488
+ "name": "cpuRequest",
2489
+ "type": "string",
2490
+ "required": false,
2491
+ "description": "CPU request (default: \"100m\")."
2492
+ },
2493
+ {
2494
+ "name": "memoryRequest",
2495
+ "type": "string",
2496
+ "required": false,
2497
+ "description": "Memory request (default: \"128Mi\")."
2498
+ },
2499
+ {
2500
+ "name": "namespace",
2501
+ "type": "string",
2502
+ "required": false,
2503
+ "description": "Namespace for all resources."
2504
+ },
2505
+ {
2506
+ "name": "env",
2507
+ "type": "Array<{ name: string; value: string }>",
2508
+ "required": false,
2509
+ "description": "Environment variables for the container."
2510
+ },
2511
+ {
2512
+ "name": "securityContext",
2513
+ "type": "ContainerSecurityContext",
2514
+ "required": false,
2515
+ "description": "Container security context (supports PSS restricted fields)."
2516
+ },
2517
+ {
2518
+ "name": "defaults",
2519
+ "type": "{ deployment?: Partial<Record<string, unknown>>; service?: Partial<Record<string, unknown>>; serviceMonitor?: Partial...",
2520
+ "required": false,
2521
+ "description": "Per-member defaults for fine-grained overrides."
2522
+ }
2523
+ ]
2524
+ },
2525
+ {
2526
+ "name": "NamespaceEnv",
2527
+ "lexicon": "k8s",
2528
+ "description": "Create a NamespaceEnv composite — returns prop objects for a Namespace, optional ResourceQuota, LimitRange, and NetworkPolicy.",
2529
+ "bundles": [
2530
+ "LimitRange",
2531
+ "Namespace",
2532
+ "NetworkPolicy",
2533
+ "ResourceQuota"
2534
+ ],
2535
+ "params": [
2536
+ {
2537
+ "name": "name",
2538
+ "type": "string",
2539
+ "required": true,
2540
+ "description": "Namespace name."
2541
+ },
2542
+ {
2543
+ "name": "cpuQuota",
2544
+ "type": "string",
2545
+ "required": false,
2546
+ "description": "Total namespace CPU quota (e.g., \"8\")."
2547
+ },
2548
+ {
2549
+ "name": "memoryQuota",
2550
+ "type": "string",
2551
+ "required": false,
2552
+ "description": "Total namespace memory quota (e.g., \"16Gi\")."
2553
+ },
2554
+ {
2555
+ "name": "maxPods",
2556
+ "type": "number",
2557
+ "required": false,
2558
+ "description": "Maximum pods in namespace."
2559
+ },
2560
+ {
2561
+ "name": "defaultCpuRequest",
2562
+ "type": "string",
2563
+ "required": false,
2564
+ "description": "LimitRange default CPU request (e.g., \"100m\")."
2565
+ },
2566
+ {
2567
+ "name": "defaultMemoryRequest",
2568
+ "type": "string",
2569
+ "required": false,
2570
+ "description": "LimitRange default memory request (e.g., \"128Mi\")."
2571
+ },
2572
+ {
2573
+ "name": "defaultCpuLimit",
2574
+ "type": "string",
2575
+ "required": false,
2576
+ "description": "LimitRange default CPU limit (e.g., \"500m\")."
2577
+ },
2578
+ {
2579
+ "name": "defaultMemoryLimit",
2580
+ "type": "string",
2581
+ "required": false,
2582
+ "description": "LimitRange default memory limit (e.g., \"512Mi\")."
2583
+ },
2584
+ {
2585
+ "name": "defaultDenyIngress",
2586
+ "type": "boolean",
2587
+ "required": false,
2588
+ "description": "Create default-deny ingress NetworkPolicy (default: true)."
2589
+ },
2590
+ {
2591
+ "name": "defaultDenyEgress",
2592
+ "type": "boolean",
2593
+ "required": false,
2594
+ "description": "Create default-deny egress NetworkPolicy (default: false)."
2595
+ },
2596
+ {
2597
+ "name": "labels",
2598
+ "type": "Record<string, string>",
2599
+ "required": false,
2600
+ "description": "Additional labels to apply to all resources."
2601
+ },
2602
+ {
2603
+ "name": "defaults",
2604
+ "type": "{ namespace?: Partial<Record<string, unknown>>; resourceQuota?: Partial<Record<string, unknown>>; limitRange?: Partia...",
2605
+ "required": false,
2606
+ "description": "Per-member defaults for fine-grained overrides."
2607
+ }
2608
+ ]
2609
+ },
2610
+ {
2611
+ "name": "NetworkIsolatedApp",
2612
+ "lexicon": "k8s",
2613
+ "description": "Create a NetworkIsolatedApp composite — returns prop objects for a Deployment, Service, and NetworkPolicy.",
2614
+ "bundles": [
2615
+ "Deployment",
2616
+ "NetworkPolicy",
2617
+ "Service"
2618
+ ],
2619
+ "params": [
2620
+ {
2621
+ "name": "name",
2622
+ "type": "string",
2623
+ "required": true,
2624
+ "description": "Application name — used in metadata and labels."
2625
+ },
2626
+ {
2627
+ "name": "image",
2628
+ "type": "string",
2629
+ "required": true,
2630
+ "description": "Container image."
2631
+ },
2632
+ {
2633
+ "name": "port",
2634
+ "type": "number",
2635
+ "required": false,
2636
+ "description": "Container port (default: 80)."
2637
+ },
2638
+ {
2639
+ "name": "replicas",
2640
+ "type": "number",
2641
+ "required": false,
2642
+ "description": "Number of replicas (default: 2)."
2643
+ },
2644
+ {
2645
+ "name": "allowIngressFrom",
2646
+ "type": "NetworkPolicyPeer[]",
2647
+ "required": false,
2648
+ "description": "Allowed ingress sources."
2649
+ },
2650
+ {
2651
+ "name": "allowEgressTo",
2652
+ "type": "NetworkPolicyEgressPeer[]",
2653
+ "required": false,
2654
+ "description": "Allowed egress destinations."
2655
+ },
2656
+ {
2657
+ "name": "labels",
2658
+ "type": "Record<string, string>",
2659
+ "required": false,
2660
+ "description": "Additional labels to apply to all resources."
2661
+ },
2662
+ {
2663
+ "name": "cpuLimit",
2664
+ "type": "string",
2665
+ "required": false,
2666
+ "description": "CPU limit (default: \"500m\")."
2667
+ },
2668
+ {
2669
+ "name": "memoryLimit",
2670
+ "type": "string",
2671
+ "required": false,
2672
+ "description": "Memory limit (default: \"256Mi\")."
2673
+ },
2674
+ {
2675
+ "name": "cpuRequest",
2676
+ "type": "string",
2677
+ "required": false,
2678
+ "description": "CPU request (default: \"100m\")."
2679
+ },
2680
+ {
2681
+ "name": "memoryRequest",
2682
+ "type": "string",
2683
+ "required": false,
2684
+ "description": "Memory request (default: \"128Mi\")."
2685
+ },
2686
+ {
2687
+ "name": "namespace",
2688
+ "type": "string",
2689
+ "required": false,
2690
+ "description": "Namespace for all resources."
2691
+ },
2692
+ {
2693
+ "name": "env",
2694
+ "type": "Array<{ name: string; value: string }>",
2695
+ "required": false,
2696
+ "description": "Environment variables for the container."
2697
+ },
2698
+ {
2699
+ "name": "securityContext",
2700
+ "type": "ContainerSecurityContext",
2701
+ "required": false,
2702
+ "description": "Container security context (supports PSS restricted fields)."
2703
+ },
2704
+ {
2705
+ "name": "defaults",
2706
+ "type": "{ deployment?: Partial<Record<string, unknown>>; service?: Partial<Record<string, unknown>>; networkPolicy?: Partial<...",
2707
+ "required": false,
2708
+ "description": "Per-member defaults for fine-grained overrides."
2709
+ }
2710
+ ]
2711
+ },
2712
+ {
2713
+ "name": "NodeAgent",
2714
+ "lexicon": "k8s",
2715
+ "description": "Create a NodeAgent composite — returns prop objects for a DaemonSet, ServiceAccount, ClusterRole, ClusterRoleBinding, and optional ConfigMap.",
2716
+ "bundles": [
2717
+ "ClusterRole",
2718
+ "ClusterRoleBinding",
2719
+ "ConfigMap",
2720
+ "DaemonSet",
2721
+ "ServiceAccount"
2722
+ ],
2723
+ "params": [
2724
+ {
2725
+ "name": "name",
2726
+ "type": "string",
2727
+ "required": true,
2728
+ "description": "Agent name — used in metadata and labels."
2729
+ },
2730
+ {
2731
+ "name": "image",
2732
+ "type": "string",
2733
+ "required": true,
2734
+ "description": "Container image."
2735
+ },
2736
+ {
2737
+ "name": "port",
2738
+ "type": "number",
2739
+ "required": false,
2740
+ "description": "Metrics port (optional)."
2741
+ },
2742
+ {
2743
+ "name": "hostPaths",
2744
+ "type": "Array<{ name: string; hostPath: string; mountPath: string; readOnly?: boolean; }>",
2745
+ "required": false,
2746
+ "description": "Host path mounts."
2747
+ },
2748
+ {
2749
+ "name": "config",
2750
+ "type": "Record<string, string>",
2751
+ "required": false,
2752
+ "description": "Config data — creates a ConfigMap mounted at /etc/{name}/."
2753
+ },
2754
+ {
2755
+ "name": "rbacRules",
2756
+ "type": "Array<{ apiGroups: string[]; resources: string[]; verbs: string[]; }>",
2757
+ "required": true,
2758
+ "description": "ClusterRole RBAC rules (required)."
2759
+ },
2760
+ {
2761
+ "name": "tolerateAllTaints",
2762
+ "type": "boolean",
2763
+ "required": false,
2764
+ "description": "Tolerate all taints so agent runs on every node (default: true)."
2765
+ },
2766
+ {
2767
+ "name": "namespace",
2768
+ "type": "string",
2769
+ "required": false,
2770
+ "description": "Namespace for namespaced resources (DaemonSet, ServiceAccount, ConfigMap)."
2771
+ },
2772
+ {
2773
+ "name": "labels",
2774
+ "type": "Record<string, string>",
2775
+ "required": false,
2776
+ "description": "Additional labels to apply to all resources."
2777
+ },
2778
+ {
2779
+ "name": "cpuRequest",
2780
+ "type": "string",
2781
+ "required": false,
2782
+ "description": "CPU request (default: \"50m\")."
2783
+ },
2784
+ {
2785
+ "name": "memoryRequest",
2786
+ "type": "string",
2787
+ "required": false,
2788
+ "description": "Memory request (default: \"64Mi\")."
2789
+ },
2790
+ {
2791
+ "name": "cpuLimit",
2792
+ "type": "string",
2793
+ "required": false,
2794
+ "description": "CPU limit (default: \"200m\")."
2795
+ },
2796
+ {
2797
+ "name": "memoryLimit",
2798
+ "type": "string",
2799
+ "required": false,
2800
+ "description": "Memory limit (default: \"128Mi\")."
2801
+ },
2802
+ {
2803
+ "name": "env",
2804
+ "type": "Array<{ name: string; value: string }>",
2805
+ "required": false,
2806
+ "description": "Environment variables for the container."
2807
+ },
2808
+ {
2809
+ "name": "securityContext",
2810
+ "type": "ContainerSecurityContext",
2811
+ "required": false,
2812
+ "description": "Container security context (supports PSS restricted fields)."
2813
+ },
2814
+ {
2815
+ "name": "defaults",
2816
+ "type": "{ daemonSet?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Part...",
2817
+ "required": false,
2818
+ "description": "Per-member defaults for fine-grained overrides."
2819
+ }
2820
+ ]
2821
+ },
2822
+ {
2823
+ "name": "OperatorStack",
2824
+ "lexicon": "k8s",
2825
+ "description": "Create an OperatorStack composite.",
2826
+ "bundles": [
2827
+ "CronJob",
2828
+ "Namespace",
2829
+ "Role",
2830
+ "RoleBinding",
2831
+ "ServiceAccount"
2832
+ ],
2833
+ "params": [
2834
+ {
2835
+ "name": "name",
2836
+ "type": "string",
2837
+ "required": true,
2838
+ "description": "Stack name — also the Namespace name unless `namespace` is given."
2839
+ },
2840
+ {
2841
+ "name": "namespace",
2842
+ "type": "string",
2843
+ "required": false,
2844
+ "description": "Namespace hosting every CronJob."
2845
+ },
2846
+ {
2847
+ "name": "image",
2848
+ "type": "string",
2849
+ "required": true,
2850
+ "description": "Container image running the chant CLI."
2851
+ },
2852
+ {
2853
+ "name": "converge",
2854
+ "type": "OperatorStackConvergeHost[]",
2855
+ "required": true,
2856
+ "description": "ConvergeOps to host — one CronJob (+ ServiceAccount + Role + RoleBinding) per entry."
2857
+ },
2858
+ {
2859
+ "name": "defaultResources",
2860
+ "type": "OperatorRbacResourceRule[]",
2861
+ "required": false,
2862
+ "description": "RBAC resource kinds granted by default when a host doesn't name its own `resources`."
2863
+ },
2864
+ {
2865
+ "name": "successfulJobsHistoryLimit",
2866
+ "type": "number",
2867
+ "required": false
2868
+ },
2869
+ {
2870
+ "name": "failedJobsHistoryLimit",
2871
+ "type": "number",
2872
+ "required": false
2873
+ },
2874
+ {
2875
+ "name": "labels",
2876
+ "type": "Record<string, string>",
2877
+ "required": false,
2878
+ "description": "Additional labels applied to every resource."
2879
+ },
2880
+ {
2881
+ "name": "defaults",
2882
+ "type": "{ namespace?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; role?: Partial<Rec...",
2883
+ "required": false,
2884
+ "description": "Per-member-kind defaults for fine-grained overrides, applied to every host's member of that kind."
2885
+ }
2886
+ ]
2887
+ },
2888
+ {
2889
+ "name": "OtelCollector",
2890
+ "lexicon": "k8s",
2891
+ "description": "Create an OtelCollector composite.",
2892
+ "bundles": [
2893
+ "ClusterRole",
2894
+ "ClusterRoleBinding",
2895
+ "ConfigMap",
2896
+ "DaemonSet",
2897
+ "Service",
2898
+ "ServiceAccount"
2899
+ ],
2900
+ "params": [
2901
+ {
2902
+ "name": "name",
2903
+ "type": "string",
2904
+ "required": false,
2905
+ "description": "Agent name (default: \"otel-collector\")."
2906
+ },
2907
+ {
2908
+ "name": "namespace",
2909
+ "type": "string",
2910
+ "required": false,
2911
+ "description": "Namespace (default: \"observability\")."
2912
+ },
2913
+ {
2914
+ "name": "image",
2915
+ "type": "string",
2916
+ "required": false,
2917
+ "description": "Collector image (default: the contrib image at the otel lexicon's pinned collector version)."
2918
+ },
2919
+ {
2920
+ "name": "config",
2921
+ "type": "Iterable<Declarable>",
2922
+ "required": false,
2923
+ "description": "The collector config, as otel lexicon entities (components and pipelines)."
2924
+ },
2925
+ {
2926
+ "name": "exporters",
2927
+ "type": "OTelComponent<\"exporter\", string, any>[]",
2928
+ "required": false,
2929
+ "description": "Exporters for the default config (default: one `debug` exporter)."
2930
+ },
2931
+ {
2932
+ "name": "signals",
2933
+ "type": "Signal[]",
2934
+ "required": false,
2935
+ "description": "Signals the default config has pipelines for (default: traces, metrics and logs)."
2936
+ },
2937
+ {
2938
+ "name": "labels",
2939
+ "type": "Record<string, string>",
2940
+ "required": false,
2941
+ "description": "Additional labels."
2942
+ },
2943
+ {
2944
+ "name": "cpuRequest",
2945
+ "type": "string",
2946
+ "required": false,
2947
+ "description": "CPU request (default: \"100m\")."
2948
+ },
2949
+ {
2950
+ "name": "memoryRequest",
2951
+ "type": "string",
2952
+ "required": false,
2953
+ "description": "Memory request (default: \"256Mi\")."
2954
+ },
2955
+ {
2956
+ "name": "cpuLimit",
2957
+ "type": "string",
2958
+ "required": false,
2959
+ "description": "CPU limit (default: \"500m\")."
2960
+ },
2961
+ {
2962
+ "name": "memoryLimit",
2963
+ "type": "string",
2964
+ "required": false,
2965
+ "description": "Memory limit (default: \"512Mi\")."
2966
+ },
2967
+ {
2968
+ "name": "defaults",
2969
+ "type": "{ daemonSet?: Partial<Record<string, unknown>>; service?: Partial<Record<string, unknown>>; serviceAccount?: Partial<...",
2970
+ "required": false,
2971
+ "description": "Per-member defaults for fine-grained overrides."
2972
+ }
2973
+ ]
2974
+ },
2975
+ {
2976
+ "name": "RayCluster",
2977
+ "lexicon": "k8s",
2978
+ "description": "Create a RayCluster composite — returns a KubeRay RayCluster CR and the surrounding K8s resources needed for a production Ray cluster.",
2979
+ "bundles": [
2980
+ "ClusterRole",
2981
+ "ClusterRoleBinding",
2982
+ "NetworkPolicy",
2983
+ "PersistentVolumeClaim",
2984
+ "PodDisruptionBudget",
2985
+ "RayCluster",
2986
+ "Service",
2987
+ "ServiceAccount"
2988
+ ],
2989
+ "params": [
2990
+ {
2991
+ "name": "name",
2992
+ "type": "string",
2993
+ "required": true
2994
+ },
2995
+ {
2996
+ "name": "namespace",
2997
+ "type": "string",
2998
+ "required": true
2999
+ },
3000
+ {
3001
+ "name": "cluster",
3002
+ "type": "RayClusterSpec",
3003
+ "required": true
3004
+ },
3005
+ {
3006
+ "name": "sharedStorage",
3007
+ "type": "{ storageClass: string; size: string; /** Mount path in all containers (default: \"/mnt/ray-data\"). */ mountPath?: str...",
3008
+ "required": false,
3009
+ "description": "Shared ReadWriteMany storage for training data."
3010
+ },
3011
+ {
3012
+ "name": "enableAutoscaler",
3013
+ "type": "boolean",
3014
+ "required": false,
3015
+ "description": "Enable Ray in-tree autoscaler."
3016
+ },
3017
+ {
3018
+ "name": "spilloverBucket",
3019
+ "type": "string",
3020
+ "required": false,
3021
+ "description": "GCS bucket name for object store spill-to-GCS."
3022
+ },
3023
+ {
3024
+ "name": "exposeDashboard",
3025
+ "type": "boolean",
3026
+ "required": false,
3027
+ "description": "Emit a LoadBalancer Service exposing the Ray dashboard on port 8265."
3028
+ },
3029
+ {
3030
+ "name": "labels",
3031
+ "type": "Record<string, string>",
3032
+ "required": false,
3033
+ "description": "Additional labels applied to all resources."
3034
+ },
3035
+ {
3036
+ "name": "defaults",
3037
+ "type": "{ serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Partial<Record<string, unknown>>; clusterRoleBindi...",
3038
+ "required": false,
3039
+ "description": "Per-member defaults for fine-grained overrides via mergeDefaults."
3040
+ }
3041
+ ]
3042
+ },
3043
+ {
3044
+ "name": "RayJob",
3045
+ "lexicon": "k8s",
3046
+ "description": "Create a RayJob composite — ephemeral Ray cluster for a single batch job.",
3047
+ "bundles": [
3048
+ "ClusterRole",
3049
+ "ClusterRoleBinding",
3050
+ "NetworkPolicy",
3051
+ "PersistentVolumeClaim",
3052
+ "RayJob",
3053
+ "ServiceAccount"
3054
+ ],
3055
+ "params": [
3056
+ {
3057
+ "name": "name",
3058
+ "type": "string",
3059
+ "required": true
3060
+ },
3061
+ {
3062
+ "name": "namespace",
3063
+ "type": "string",
3064
+ "required": true
3065
+ },
3066
+ {
3067
+ "name": "entrypoint",
3068
+ "type": "string",
3069
+ "required": true,
3070
+ "description": "Entrypoint command to run on the Ray cluster."
3071
+ },
3072
+ {
3073
+ "name": "cluster",
3074
+ "type": "RayClusterSpec",
3075
+ "required": true
3076
+ },
3077
+ {
3078
+ "name": "runtimeEnvYAML",
3079
+ "type": "string",
3080
+ "required": false,
3081
+ "description": "Ray runtime environment YAML string."
3082
+ },
3083
+ {
3084
+ "name": "shutdownAfterJobFinishes",
3085
+ "type": "boolean",
3086
+ "required": false,
3087
+ "description": "Tear down the cluster after the job finishes (default: true)."
3088
+ },
3089
+ {
3090
+ "name": "ttlSecondsAfterFinished",
3091
+ "type": "number",
3092
+ "required": false,
3093
+ "description": "TTL in seconds before a finished RayJob is garbage-collected (default: 300)."
3094
+ },
3095
+ {
3096
+ "name": "sharedStorage",
3097
+ "type": "{ storageClass: string; size: string; mountPath?: string; }",
3098
+ "required": false
3099
+ },
3100
+ {
3101
+ "name": "enableAutoscaler",
3102
+ "type": "boolean",
3103
+ "required": false
3104
+ },
3105
+ {
3106
+ "name": "spilloverBucket",
3107
+ "type": "string",
3108
+ "required": false
3109
+ },
3110
+ {
3111
+ "name": "labels",
3112
+ "type": "Record<string, string>",
3113
+ "required": false
3114
+ },
3115
+ {
3116
+ "name": "defaults",
3117
+ "type": "{ serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Partial<Record<string, unknown>>; clusterRoleBindi...",
3118
+ "required": false
3119
+ }
3120
+ ]
3121
+ },
3122
+ {
3123
+ "name": "RayService",
3124
+ "lexicon": "k8s",
3125
+ "description": "Create a RayService composite — persistent Ray Serve endpoint with zero-downtime blue-green upgrades.",
3126
+ "bundles": [
3127
+ "ClusterRole",
3128
+ "ClusterRoleBinding",
3129
+ "NetworkPolicy",
3130
+ "PersistentVolumeClaim",
3131
+ "PodDisruptionBudget",
3132
+ "RayService",
3133
+ "Service",
3134
+ "ServiceAccount"
3135
+ ],
3136
+ "params": [
3137
+ {
3138
+ "name": "name",
3139
+ "type": "string",
3140
+ "required": true
3141
+ },
3142
+ {
3143
+ "name": "namespace",
3144
+ "type": "string",
3145
+ "required": true
3146
+ },
3147
+ {
3148
+ "name": "serveConfigV2",
3149
+ "type": "string",
3150
+ "required": true,
3151
+ "description": "Ray Serve application config in YAML format."
3152
+ },
3153
+ {
3154
+ "name": "cluster",
3155
+ "type": "RayClusterSpec",
3156
+ "required": true
3157
+ },
3158
+ {
3159
+ "name": "sharedStorage",
3160
+ "type": "{ storageClass: string; size: string; mountPath?: string; }",
3161
+ "required": false
3162
+ },
3163
+ {
3164
+ "name": "enableAutoscaler",
3165
+ "type": "boolean",
3166
+ "required": false
3167
+ },
3168
+ {
3169
+ "name": "spilloverBucket",
3170
+ "type": "string",
3171
+ "required": false
3172
+ },
3173
+ {
3174
+ "name": "labels",
3175
+ "type": "Record<string, string>",
3176
+ "required": false
3177
+ },
3178
+ {
3179
+ "name": "defaults",
3180
+ "type": "{ serviceAccount?: Partial<Record<string, unknown>>; clusterRole?: Partial<Record<string, unknown>>; clusterRoleBindi...",
3181
+ "required": false
3182
+ }
3183
+ ]
3184
+ },
3185
+ {
3186
+ "name": "SecureIngress",
3187
+ "lexicon": "k8s",
3188
+ "description": "Create a SecureIngress composite — returns prop objects for an Ingress and optional cert-manager Certificate.",
3189
+ "bundles": [
3190
+ "Certificate",
3191
+ "Ingress"
3192
+ ],
3193
+ "params": [
3194
+ {
3195
+ "name": "name",
3196
+ "type": "string",
3197
+ "required": true,
3198
+ "description": "Ingress name — used in metadata and labels."
3199
+ },
3200
+ {
3201
+ "name": "hosts",
3202
+ "type": "SecureIngressHost[]",
3203
+ "required": true,
3204
+ "description": "Host definitions with paths."
3205
+ },
3206
+ {
3207
+ "name": "clusterIssuer",
3208
+ "type": "string",
3209
+ "required": false,
3210
+ "description": "cert-manager ClusterIssuer name — if set, creates a Certificate resource."
3211
+ },
3212
+ {
3213
+ "name": "ingressClassName",
3214
+ "type": "string",
3215
+ "required": false,
3216
+ "description": "Ingress class name (e.g., \"nginx\")."
3217
+ },
3218
+ {
3219
+ "name": "annotations",
3220
+ "type": "Record<string, string>",
3221
+ "required": false,
3222
+ "description": "Additional annotations on the Ingress."
3223
+ },
3224
+ {
3225
+ "name": "labels",
3226
+ "type": "Record<string, string>",
3227
+ "required": false,
3228
+ "description": "Additional labels to apply to all resources."
3229
+ },
3230
+ {
3231
+ "name": "namespace",
3232
+ "type": "string",
3233
+ "required": false,
3234
+ "description": "Namespace for all resources."
3235
+ },
3236
+ {
3237
+ "name": "defaults",
3238
+ "type": "{ ingress?: Partial<Record<string, unknown>>; certificate?: Partial<Record<string, unknown>>; }",
3239
+ "required": false,
3240
+ "description": "Per-member defaults for fine-grained overrides."
3241
+ }
3242
+ ]
3243
+ },
3244
+ {
3245
+ "name": "SidecarApp",
3246
+ "lexicon": "k8s",
3247
+ "description": "Create a SidecarApp composite — returns prop objects for a multi-container Deployment and Service.",
3248
+ "bundles": [
3249
+ "Deployment",
3250
+ "Service"
3251
+ ],
3252
+ "params": [
3253
+ {
3254
+ "name": "name",
3255
+ "type": "string",
3256
+ "required": true,
3257
+ "description": "Application name — used in metadata and labels."
3258
+ },
3259
+ {
3260
+ "name": "image",
3261
+ "type": "string",
3262
+ "required": true,
3263
+ "description": "Primary container image."
3264
+ },
3265
+ {
3266
+ "name": "port",
3267
+ "type": "number",
3268
+ "required": false,
3269
+ "description": "Primary container port (default: 80)."
3270
+ },
3271
+ {
3272
+ "name": "replicas",
3273
+ "type": "number",
3274
+ "required": false,
3275
+ "description": "Number of replicas (default: 2)."
3276
+ },
3277
+ {
3278
+ "name": "sidecars",
3279
+ "type": "SidecarContainer[]",
3280
+ "required": true,
3281
+ "description": "Sidecar containers."
3282
+ },
3283
+ {
3284
+ "name": "initContainers",
3285
+ "type": "InitContainer[]",
3286
+ "required": false,
3287
+ "description": "Init containers (run before main containers)."
3288
+ },
3289
+ {
3290
+ "name": "sharedVolumes",
3291
+ "type": "SharedVolume[]",
3292
+ "required": false,
3293
+ "description": "Shared volumes between containers."
3294
+ },
3295
+ {
3296
+ "name": "labels",
3297
+ "type": "Record<string, string>",
3298
+ "required": false,
3299
+ "description": "Additional labels to apply to all resources."
3300
+ },
3301
+ {
3302
+ "name": "cpuLimit",
3303
+ "type": "string",
3304
+ "required": false,
3305
+ "description": "CPU limit for the primary container (default: \"500m\")."
3306
+ },
3307
+ {
3308
+ "name": "memoryLimit",
3309
+ "type": "string",
3310
+ "required": false,
3311
+ "description": "Memory limit for the primary container (default: \"256Mi\")."
3312
+ },
3313
+ {
3314
+ "name": "cpuRequest",
3315
+ "type": "string",
3316
+ "required": false,
3317
+ "description": "CPU request for the primary container (default: \"100m\")."
3318
+ },
3319
+ {
3320
+ "name": "memoryRequest",
3321
+ "type": "string",
3322
+ "required": false,
3323
+ "description": "Memory request for the primary container (default: \"128Mi\")."
3324
+ },
3325
+ {
3326
+ "name": "namespace",
3327
+ "type": "string",
3328
+ "required": false,
3329
+ "description": "Namespace for all resources."
3330
+ },
3331
+ {
3332
+ "name": "env",
3333
+ "type": "Array<{ name: string; value: string }>",
3334
+ "required": false,
3335
+ "description": "Environment variables for the primary container."
3336
+ },
3337
+ {
3338
+ "name": "securityContext",
3339
+ "type": "ContainerSecurityContext",
3340
+ "required": false,
3341
+ "description": "Container security context for the primary container (supports PSS restricted fields)."
3342
+ },
3343
+ {
3344
+ "name": "defaults",
3345
+ "type": "{ deployment?: Partial<Record<string, unknown>>; service?: Partial<Record<string, unknown>>; }",
3346
+ "required": false,
3347
+ "description": "Per-member defaults for fine-grained overrides."
3348
+ }
3349
+ ]
3350
+ },
3351
+ {
3352
+ "name": "StatefulApp",
3353
+ "lexicon": "k8s",
3354
+ "description": "Create a StatefulApp composite — returns prop objects for a StatefulSet and headless Service.",
3355
+ "bundles": [
3356
+ "PodDisruptionBudget",
3357
+ "Service",
3358
+ "StatefulSet"
3359
+ ],
3360
+ "params": [
3361
+ {
3362
+ "name": "name",
3363
+ "type": "string",
3364
+ "required": true,
3365
+ "description": "Application name — used in metadata and labels."
3366
+ },
3367
+ {
3368
+ "name": "image",
3369
+ "type": "string",
3370
+ "required": true,
3371
+ "description": "Container image (e.g., \"postgres:16\")."
3372
+ },
3373
+ {
3374
+ "name": "port",
3375
+ "type": "number",
3376
+ "required": false,
3377
+ "description": "Container port (default: 5432)."
3378
+ },
3379
+ {
3380
+ "name": "replicas",
3381
+ "type": "number",
3382
+ "required": false,
3383
+ "description": "Number of replicas (default: 1)."
3384
+ },
3385
+ {
3386
+ "name": "storageSize",
3387
+ "type": "string",
3388
+ "required": false,
3389
+ "description": "Storage size for the PVC (e.g., \"10Gi\")."
3390
+ },
3391
+ {
3392
+ "name": "storageClassName",
3393
+ "type": "string",
3394
+ "required": false,
3395
+ "description": "Storage class name."
3396
+ },
3397
+ {
3398
+ "name": "mountPath",
3399
+ "type": "string",
3400
+ "required": false,
3401
+ "description": "Volume mount path inside the container (default: \"/data\")."
3402
+ },
3403
+ {
3404
+ "name": "minAvailable",
3405
+ "type": "number | string",
3406
+ "required": false,
3407
+ "description": "PodDisruptionBudget minAvailable — if set, creates a PDB."
3408
+ },
3409
+ {
3410
+ "name": "initContainers",
3411
+ "type": "Array<{ name: string; image: string; command?: string[]; args?: string[]; }>",
3412
+ "required": false,
3413
+ "description": "Init containers (e.g., schema migrations, permission setup)."
3414
+ },
3415
+ {
3416
+ "name": "securityContext",
3417
+ "type": "ContainerSecurityContext",
3418
+ "required": false,
3419
+ "description": "Container security context (supports PSS restricted fields)."
3420
+ },
3421
+ {
3422
+ "name": "terminationGracePeriodSeconds",
3423
+ "type": "number",
3424
+ "required": false,
3425
+ "description": "Termination grace period in seconds."
3426
+ },
3427
+ {
3428
+ "name": "priorityClassName",
3429
+ "type": "string",
3430
+ "required": false,
3431
+ "description": "Priority class name for pod scheduling."
3432
+ },
3433
+ {
3434
+ "name": "labels",
3435
+ "type": "Record<string, string>",
3436
+ "required": false,
3437
+ "description": "Additional labels to apply to all resources."
3438
+ },
3439
+ {
3440
+ "name": "cpuLimit",
3441
+ "type": "string",
3442
+ "required": false,
3443
+ "description": "CPU limit (e.g., \"1\")."
3444
+ },
3445
+ {
3446
+ "name": "memoryLimit",
3447
+ "type": "string",
3448
+ "required": false,
3449
+ "description": "Memory limit (e.g., \"1Gi\")."
3450
+ },
3451
+ {
3452
+ "name": "namespace",
3453
+ "type": "string",
3454
+ "required": false,
3455
+ "description": "Namespace for all resources."
3456
+ },
3457
+ {
3458
+ "name": "env",
3459
+ "type": "Array<{ name: string; value: string }>",
3460
+ "required": false,
3461
+ "description": "Environment variables for the container."
3462
+ },
3463
+ {
3464
+ "name": "defaults",
3465
+ "type": "{ statefulSet?: Partial<Record<string, unknown>>; service?: Partial<Record<string, unknown>>; pdb?: Partial<Record<st...",
3466
+ "required": false,
3467
+ "description": "Per-member defaults for fine-grained overrides."
3468
+ }
3469
+ ]
3470
+ },
3471
+ {
3472
+ "name": "VllmServingRuntime",
3473
+ "lexicon": "k8s",
3474
+ "description": "Create a VllmServingRuntime composite.",
3475
+ "bundles": [
3476
+ "ClusterServingRuntime",
3477
+ "ServingRuntime"
3478
+ ],
3479
+ "params": [
3480
+ {
3481
+ "name": "name",
3482
+ "type": "string",
3483
+ "required": true,
3484
+ "description": "ServingRuntime/ClusterServingRuntime name."
3485
+ },
3486
+ {
3487
+ "name": "namespace",
3488
+ "type": "string",
3489
+ "required": false,
3490
+ "description": "Namespace — required unless clusterScoped is true."
3491
+ },
3492
+ {
3493
+ "name": "clusterScoped",
3494
+ "type": "boolean",
3495
+ "required": false,
3496
+ "description": "Emit a cluster-scoped ClusterServingRuntime instead of a namespaced ServingRuntime."
3497
+ },
3498
+ {
3499
+ "name": "image",
3500
+ "type": "string",
3501
+ "required": true,
3502
+ "description": "vLLM container image (e.g. \"vllm/vllm-openai:v0.7.0\")."
3503
+ },
3504
+ {
3505
+ "name": "tensorParallelSize",
3506
+ "type": "number",
3507
+ "required": false,
3508
+ "description": "--tensor-parallel-size"
3509
+ },
3510
+ {
3511
+ "name": "maxModelLen",
3512
+ "type": "number",
3513
+ "required": false,
3514
+ "description": "--max-model-len"
3515
+ },
3516
+ {
3517
+ "name": "dtype",
3518
+ "type": "\"auto\" | \"half\" | \"float16\" | \"bfloat16\" | \"float\" | \"float32\"",
3519
+ "required": false,
3520
+ "description": "--dtype"
3521
+ },
3522
+ {
3523
+ "name": "quantization",
3524
+ "type": "string",
3525
+ "required": false,
3526
+ "description": "--quantization (e.g. \"awq\", \"gptq\", \"fp8\")"
3527
+ },
3528
+ {
3529
+ "name": "gpuMemoryUtilization",
3530
+ "type": "number",
3531
+ "required": false,
3532
+ "description": "--gpu-memory-utilization (0.0-1.0)"
3533
+ },
3534
+ {
3535
+ "name": "maxNumSeqs",
3536
+ "type": "number",
3537
+ "required": false,
3538
+ "description": "--max-num-seqs"
3539
+ },
3540
+ {
3541
+ "name": "resources",
3542
+ "type": "VllmResourceSpec",
3543
+ "required": false,
3544
+ "description": "Container resources."
3545
+ },
3546
+ {
3547
+ "name": "containerArgs",
3548
+ "type": "string[]",
3549
+ "required": false,
3550
+ "description": "Additional raw args appended after the typed vLLM flags — escape hatch for anything not yet modeled as a typed prop."
3551
+ },
3552
+ {
3553
+ "name": "modelFormat",
3554
+ "type": "{ name: string; version?: string; autoSelect?: boolean; priority?: number }",
3555
+ "required": false,
3556
+ "description": "supportedModelFormats entry registered on the runtime."
3557
+ },
3558
+ {
3559
+ "name": "labels",
3560
+ "type": "Record<string, string>",
3561
+ "required": false,
3562
+ "description": "Additional labels applied to the resource."
3563
+ },
3564
+ {
3565
+ "name": "defaults",
3566
+ "type": "{ servingRuntime?: Partial<Record<string, unknown>>; }",
3567
+ "required": false,
3568
+ "description": "Per-member defaults for fine-grained overrides via mergeDefaults."
3569
+ }
3570
+ ]
3571
+ },
3572
+ {
3573
+ "name": "WebApp",
3574
+ "lexicon": "k8s",
3575
+ "description": "Create a WebApp composite — returns declarable instances for a Deployment, Service, and optional Ingress.",
3576
+ "bundles": [
3577
+ "Deployment",
3578
+ "Ingress",
3579
+ "PodDisruptionBudget",
3580
+ "Service"
3581
+ ],
3582
+ "params": [
3583
+ {
3584
+ "name": "name",
3585
+ "type": "string",
3586
+ "required": true,
3587
+ "description": "Application name — used in metadata and labels."
3588
+ },
3589
+ {
3590
+ "name": "image",
3591
+ "type": "string",
3592
+ "required": true,
3593
+ "description": "Container image (e.g., \"nginx:1.25\")."
3594
+ },
3595
+ {
3596
+ "name": "port",
3597
+ "type": "number",
3598
+ "required": false,
3599
+ "description": "Container port (default: 80)."
3600
+ },
3601
+ {
3602
+ "name": "replicas",
3603
+ "type": "number",
3604
+ "required": false,
3605
+ "description": "Number of replicas (default: 2)."
3606
+ },
3607
+ {
3608
+ "name": "ingressHost",
3609
+ "type": "string",
3610
+ "required": false,
3611
+ "description": "Ingress hostname — if set, creates an Ingress resource."
3612
+ },
3613
+ {
3614
+ "name": "ingressTlsSecret",
3615
+ "type": "string",
3616
+ "required": false,
3617
+ "description": "Ingress TLS secret name — if set, enables TLS on the Ingress."
3618
+ },
3619
+ {
3620
+ "name": "ingressPaths",
3621
+ "type": "Array<{ path: string; pathType?: string; serviceName?: string; servicePort?: number; }>",
3622
+ "required": false,
3623
+ "description": "Multi-path ingress rules — overrides the default single \"/\" path."
3624
+ },
3625
+ {
3626
+ "name": "minAvailable",
3627
+ "type": "number | string",
3628
+ "required": false,
3629
+ "description": "PodDisruptionBudget minAvailable — if set, creates a PDB."
3630
+ },
3631
+ {
3632
+ "name": "initContainers",
3633
+ "type": "Array<{ name: string; image: string; command?: string[]; args?: string[]; }>",
3634
+ "required": false,
3635
+ "description": "Init containers (e.g., migrations, cert setup)."
3636
+ },
3637
+ {
3638
+ "name": "securityContext",
3639
+ "type": "ContainerSecurityContext",
3640
+ "required": false,
3641
+ "description": "Container security context (supports PSS restricted fields)."
3642
+ },
3643
+ {
3644
+ "name": "terminationGracePeriodSeconds",
3645
+ "type": "number",
3646
+ "required": false,
3647
+ "description": "Termination grace period in seconds."
3648
+ },
3649
+ {
3650
+ "name": "priorityClassName",
3651
+ "type": "string",
3652
+ "required": false,
3653
+ "description": "Priority class name for pod scheduling."
3654
+ },
3655
+ {
3656
+ "name": "labels",
3657
+ "type": "Record<string, string>",
3658
+ "required": false,
3659
+ "description": "Additional labels to apply to all resources."
3660
+ },
3661
+ {
3662
+ "name": "cpuLimit",
3663
+ "type": "string",
3664
+ "required": false,
3665
+ "description": "CPU limit (e.g., \"500m\")."
3666
+ },
3667
+ {
3668
+ "name": "memoryLimit",
3669
+ "type": "string",
3670
+ "required": false,
3671
+ "description": "Memory limit (e.g., \"256Mi\")."
3672
+ },
3673
+ {
3674
+ "name": "cpuRequest",
3675
+ "type": "string",
3676
+ "required": false,
3677
+ "description": "CPU request (e.g., \"100m\")."
3678
+ },
3679
+ {
3680
+ "name": "memoryRequest",
3681
+ "type": "string",
3682
+ "required": false,
3683
+ "description": "Memory request (e.g., \"128Mi\")."
3684
+ },
3685
+ {
3686
+ "name": "namespace",
3687
+ "type": "string",
3688
+ "required": false,
3689
+ "description": "Namespace for all resources."
3690
+ },
3691
+ {
3692
+ "name": "env",
3693
+ "type": "Array<{ name: string; value: string }>",
3694
+ "required": false,
3695
+ "description": "Environment variables for the container."
3696
+ },
3697
+ {
3698
+ "name": "defaults",
3699
+ "type": "{ deployment?: Partial<Record<string, unknown>>; service?: Partial<Record<string, unknown>>; ingress?: Partial<Record...",
3700
+ "required": false,
3701
+ "description": "Per-member defaults for fine-grained overrides."
3702
+ }
3703
+ ]
3704
+ },
3705
+ {
3706
+ "name": "WorkerPool",
3707
+ "lexicon": "k8s",
3708
+ "description": "Create a WorkerPool composite — returns prop objects for a Deployment, ServiceAccount, Role, RoleBinding, optional ConfigMap, and optional HPA.",
3709
+ "bundles": [
3710
+ "ConfigMap",
3711
+ "Deployment",
3712
+ "HorizontalPodAutoscaler",
3713
+ "PodDisruptionBudget",
3714
+ "Role",
3715
+ "RoleBinding",
3716
+ "ServiceAccount"
3717
+ ],
3718
+ "params": [
3719
+ {
3720
+ "name": "name",
3721
+ "type": "string",
3722
+ "required": true,
3723
+ "description": "Worker name — used in metadata and labels."
3724
+ },
3725
+ {
3726
+ "name": "image",
3727
+ "type": "string",
3728
+ "required": true,
3729
+ "description": "Container image."
3730
+ },
3731
+ {
3732
+ "name": "command",
3733
+ "type": "string[]",
3734
+ "required": false,
3735
+ "description": "Command to run in the container."
3736
+ },
3737
+ {
3738
+ "name": "args",
3739
+ "type": "string[]",
3740
+ "required": false,
3741
+ "description": "Arguments to the command."
3742
+ },
3743
+ {
3744
+ "name": "replicas",
3745
+ "type": "number",
3746
+ "required": false,
3747
+ "description": "Number of replicas (default: 1, ignored if autoscaling)."
3748
+ },
3749
+ {
3750
+ "name": "config",
3751
+ "type": "Record<string, string>",
3752
+ "required": false,
3753
+ "description": "Config data — creates a ConfigMap and injects via envFrom."
3754
+ },
3755
+ {
3756
+ "name": "rbacRules",
3757
+ "type": "Array<{ apiGroups: string[]; resources: string[]; verbs: string[]; }>",
3758
+ "required": false,
3759
+ "description": "RBAC rules for the service account."
3760
+ },
3761
+ {
3762
+ "name": "autoscaling",
3763
+ "type": "{ minReplicas: number; maxReplicas: number; targetCPUPercent?: number; }",
3764
+ "required": false,
3765
+ "description": "Optional autoscaling — creates an HPA when provided."
3766
+ },
3767
+ {
3768
+ "name": "minAvailable",
3769
+ "type": "number | string",
3770
+ "required": false,
3771
+ "description": "PodDisruptionBudget minAvailable — if set, creates a PDB."
3772
+ },
3773
+ {
3774
+ "name": "securityContext",
3775
+ "type": "ContainerSecurityContext",
3776
+ "required": false,
3777
+ "description": "Container security context (supports PSS restricted fields)."
3778
+ },
3779
+ {
3780
+ "name": "terminationGracePeriodSeconds",
3781
+ "type": "number",
3782
+ "required": false,
3783
+ "description": "Termination grace period in seconds."
3784
+ },
3785
+ {
3786
+ "name": "priorityClassName",
3787
+ "type": "string",
3788
+ "required": false,
3789
+ "description": "Priority class name for pod scheduling."
3790
+ },
3791
+ {
3792
+ "name": "cpuRequest",
3793
+ "type": "string",
3794
+ "required": false,
3795
+ "description": "CPU request (default: \"100m\")."
3796
+ },
3797
+ {
3798
+ "name": "memoryRequest",
3799
+ "type": "string",
3800
+ "required": false,
3801
+ "description": "Memory request (default: \"128Mi\")."
3802
+ },
3803
+ {
3804
+ "name": "cpuLimit",
3805
+ "type": "string",
3806
+ "required": false,
3807
+ "description": "CPU limit (default: \"500m\")."
3808
+ },
3809
+ {
3810
+ "name": "memoryLimit",
3811
+ "type": "string",
3812
+ "required": false,
3813
+ "description": "Memory limit (default: \"256Mi\")."
3814
+ },
3815
+ {
3816
+ "name": "labels",
3817
+ "type": "Record<string, string>",
3818
+ "required": false,
3819
+ "description": "Additional labels to apply to all resources."
3820
+ },
3821
+ {
3822
+ "name": "namespace",
3823
+ "type": "string",
3824
+ "required": false,
3825
+ "description": "Namespace for all resources."
3826
+ },
3827
+ {
3828
+ "name": "env",
3829
+ "type": "Array<{ name: string; value: string }>",
3830
+ "required": false,
3831
+ "description": "Environment variables for the container."
3832
+ },
3833
+ {
3834
+ "name": "defaults",
3835
+ "type": "{ deployment?: Partial<Record<string, unknown>>; serviceAccount?: Partial<Record<string, unknown>>; role?: Partial<Re...",
3836
+ "required": false,
3837
+ "description": "Per-member defaults for fine-grained overrides."
3838
+ }
3839
+ ]
3840
+ },
3841
+ {
3842
+ "name": "WorkloadIdentityServiceAccount",
3843
+ "lexicon": "k8s",
3844
+ "description": "Create a WorkloadIdentityServiceAccount composite.",
3845
+ "bundles": [
3846
+ "Role",
3847
+ "RoleBinding",
3848
+ "ServiceAccount"
3849
+ ],
3850
+ "params": [
3851
+ {
3852
+ "name": "name",
3853
+ "type": "string",
3854
+ "required": true,
3855
+ "description": "ServiceAccount name — used in metadata and labels."
3856
+ },
3857
+ {
3858
+ "name": "gcpServiceAccountEmail",
3859
+ "type": "string",
3860
+ "required": true,
3861
+ "description": "GCP service account email for Workload Identity annotation."
3862
+ },
3863
+ {
3864
+ "name": "rbacRules",
3865
+ "type": "Array<{ apiGroups: string[]; resources: string[]; verbs: string[]; }>",
3866
+ "required": false,
3867
+ "description": "Optional RBAC rules — if provided, creates Role + RoleBinding."
3868
+ },
3869
+ {
3870
+ "name": "labels",
3871
+ "type": "Record<string, string>",
3872
+ "required": false,
3873
+ "description": "Additional labels to apply to all resources."
3874
+ },
3875
+ {
3876
+ "name": "namespace",
3877
+ "type": "string",
3878
+ "required": false,
3879
+ "description": "Namespace for all resources."
3880
+ },
3881
+ {
3882
+ "name": "defaults",
3883
+ "type": "{ serviceAccount?: Partial<Record<string, unknown>>; role?: Partial<Record<string, unknown>>; roleBinding?: Partial<R...",
3884
+ "required": false,
3885
+ "description": "Per-member defaults for fine-grained overrides."
3886
+ }
3887
+ ]
3888
+ }
3889
+ ];