timonel 2.2.0 → 2.4.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.
Files changed (77) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +5 -1
  3. package/SECURITY.md +15 -8
  4. package/dist/cli.js +29 -31
  5. package/dist/cli.js.map +1 -1
  6. package/dist/index.d.ts +7 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +7 -2
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/helm.d.ts +200 -12
  11. package/dist/lib/helm.d.ts.map +1 -1
  12. package/dist/lib/helm.js +234 -13
  13. package/dist/lib/helm.js.map +1 -1
  14. package/dist/lib/helmChartWriter.d.ts +238 -0
  15. package/dist/lib/helmChartWriter.d.ts.map +1 -0
  16. package/dist/lib/helmChartWriter.js +318 -0
  17. package/dist/lib/helmChartWriter.js.map +1 -0
  18. package/dist/lib/resources/autoscaling/autoscalingResources.d.ts +26 -0
  19. package/dist/lib/resources/autoscaling/autoscalingResources.d.ts.map +1 -0
  20. package/dist/lib/resources/autoscaling/autoscalingResources.js +35 -0
  21. package/dist/lib/resources/autoscaling/autoscalingResources.js.map +1 -0
  22. package/dist/lib/resources/baseResourceProvider.d.ts +47 -0
  23. package/dist/lib/resources/baseResourceProvider.d.ts.map +1 -0
  24. package/dist/lib/resources/baseResourceProvider.js +83 -0
  25. package/dist/lib/resources/baseResourceProvider.js.map +1 -0
  26. package/dist/lib/resources/cloud/aws/awsResources.d.ts +165 -0
  27. package/dist/lib/resources/cloud/aws/awsResources.d.ts.map +1 -0
  28. package/dist/lib/resources/cloud/aws/awsResources.js +187 -0
  29. package/dist/lib/resources/cloud/aws/awsResources.js.map +1 -0
  30. package/dist/lib/resources/cloud/azure/azureResources.d.ts +169 -0
  31. package/dist/lib/resources/cloud/azure/azureResources.d.ts.map +1 -0
  32. package/dist/lib/resources/cloud/azure/azureResources.js +218 -0
  33. package/dist/lib/resources/cloud/azure/azureResources.js.map +1 -0
  34. package/dist/lib/resources/cloud/gcp/gcpResources.d.ts +133 -0
  35. package/dist/lib/resources/cloud/gcp/gcpResources.d.ts.map +1 -0
  36. package/dist/lib/resources/cloud/gcp/gcpResources.js +162 -0
  37. package/dist/lib/resources/cloud/gcp/gcpResources.js.map +1 -0
  38. package/dist/lib/resources/core/coreResources.d.ts +584 -0
  39. package/dist/lib/resources/core/coreResources.d.ts.map +1 -0
  40. package/dist/lib/resources/core/coreResources.js +796 -0
  41. package/dist/lib/resources/core/coreResources.js.map +1 -0
  42. package/dist/lib/resources/core/storageResources.d.ts +133 -0
  43. package/dist/lib/resources/core/storageResources.d.ts.map +1 -0
  44. package/dist/lib/resources/core/storageResources.js +120 -0
  45. package/dist/lib/resources/core/storageResources.js.map +1 -0
  46. package/dist/lib/resources/validation/validationResources.d.ts +26 -0
  47. package/dist/lib/resources/validation/validationResources.d.ts.map +1 -0
  48. package/dist/lib/resources/validation/validationResources.js +33 -0
  49. package/dist/lib/resources/validation/validationResources.js.map +1 -0
  50. package/dist/lib/rutter.d.ts +554 -0
  51. package/dist/lib/rutter.d.ts.map +1 -0
  52. package/dist/lib/rutter.js +665 -0
  53. package/dist/lib/rutter.js.map +1 -0
  54. package/dist/lib/security.d.ts +73 -0
  55. package/dist/lib/security.d.ts.map +1 -0
  56. package/dist/lib/security.js +138 -0
  57. package/dist/lib/security.js.map +1 -0
  58. package/dist/lib/umbrella.d.ts +22 -2
  59. package/dist/lib/umbrella.d.ts.map +1 -1
  60. package/dist/lib/umbrella.js +21 -1
  61. package/dist/lib/umbrella.js.map +1 -1
  62. package/dist/lib/umbrellaRutter.d.ts +97 -0
  63. package/dist/lib/umbrellaRutter.d.ts.map +1 -0
  64. package/dist/lib/{UmbrellaRutter.js → umbrellaRutter.js} +72 -23
  65. package/dist/lib/umbrellaRutter.js.map +1 -0
  66. package/package.json +2 -1
  67. package/dist/lib/HelmChartWriter.d.ts +0 -69
  68. package/dist/lib/HelmChartWriter.d.ts.map +0 -1
  69. package/dist/lib/HelmChartWriter.js +0 -124
  70. package/dist/lib/HelmChartWriter.js.map +0 -1
  71. package/dist/lib/Rutter.d.ts +0 -1334
  72. package/dist/lib/Rutter.d.ts.map +0 -1
  73. package/dist/lib/Rutter.js +0 -2138
  74. package/dist/lib/Rutter.js.map +0 -1
  75. package/dist/lib/UmbrellaRutter.d.ts +0 -34
  76. package/dist/lib/UmbrellaRutter.d.ts.map +0 -1
  77. package/dist/lib/UmbrellaRutter.js.map +0 -1
@@ -1,1334 +0,0 @@
1
- import { ApiObject } from 'cdk8s';
2
- import type { HelmChartMeta, HelperDefinition } from './HelmChartWriter.js';
3
- export interface HttpHeader {
4
- name: string;
5
- value: string;
6
- }
7
- export interface HttpGetAction {
8
- path?: string;
9
- port: number | string;
10
- scheme?: 'HTTP' | 'HTTPS';
11
- httpHeaders?: HttpHeader[];
12
- }
13
- export interface ExecAction {
14
- command: string[];
15
- }
16
- export interface TcpSocketAction {
17
- port: number | string;
18
- }
19
- export interface Probe {
20
- httpGet?: HttpGetAction;
21
- exec?: ExecAction;
22
- tcpSocket?: TcpSocketAction;
23
- initialDelaySeconds?: number;
24
- periodSeconds?: number;
25
- timeoutSeconds?: number;
26
- successThreshold?: number;
27
- failureThreshold?: number;
28
- }
29
- export interface EnvFromSource {
30
- configMapRef?: string;
31
- secretRef?: string;
32
- }
33
- export interface VolumeSourceSpec {
34
- name: string;
35
- configMap?: string;
36
- secret?: string;
37
- persistentVolumeClaim?: string;
38
- }
39
- export interface VolumeMountSpec {
40
- name: string;
41
- mountPath: string;
42
- readOnly?: boolean;
43
- subPath?: string;
44
- }
45
- export interface ResourceRequirements {
46
- limits?: {
47
- cpu?: string;
48
- memory?: string;
49
- };
50
- requests?: {
51
- cpu?: string;
52
- memory?: string;
53
- };
54
- }
55
- export type AccessMode = 'ReadWriteOnce' | 'ReadOnlyMany' | 'ReadWriteMany' | 'ReadWriteOncePod';
56
- export type VolumeMode = 'Filesystem' | 'Block';
57
- export type ReclaimPolicy = 'Retain' | 'Recycle' | 'Delete';
58
- export interface CsiVolumeSource {
59
- driver: string;
60
- volumeHandle: string;
61
- fsType?: string;
62
- readOnly?: boolean;
63
- volumeAttributes?: Record<string, string>;
64
- controllerPublishSecretRef?: {
65
- name: string;
66
- namespace?: string;
67
- };
68
- nodeStageSecretRef?: {
69
- name: string;
70
- namespace?: string;
71
- };
72
- nodePublishSecretRef?: {
73
- name: string;
74
- namespace?: string;
75
- };
76
- controllerExpandSecretRef?: {
77
- name: string;
78
- namespace?: string;
79
- };
80
- }
81
- export interface NfsVolumeSource {
82
- server: string;
83
- path: string;
84
- readOnly?: boolean;
85
- }
86
- export interface AwsElasticBlockStoreSource {
87
- volumeID: string;
88
- fsType?: string;
89
- partition?: number;
90
- readOnly?: boolean;
91
- }
92
- export interface HostPathSource {
93
- path: string;
94
- type?: string;
95
- }
96
- export interface PersistentVolumeSourceSpec {
97
- csi?: CsiVolumeSource;
98
- nfs?: NfsVolumeSource;
99
- awsElasticBlockStore?: AwsElasticBlockStoreSource;
100
- hostPath?: HostPathSource;
101
- azureDisk?: {
102
- diskName: string;
103
- diskURI: string;
104
- cachingMode?: 'None' | 'ReadOnly' | 'ReadWrite';
105
- fsType?: string;
106
- readOnly?: boolean;
107
- kind?: 'Shared' | 'Dedicated' | 'Managed';
108
- };
109
- azureFile?: {
110
- secretName: string;
111
- shareName: string;
112
- readOnly?: boolean;
113
- secretNamespace?: string;
114
- };
115
- gcePersistentDisk?: {
116
- pdName: string;
117
- fsType?: string;
118
- partition?: number;
119
- readOnly?: boolean;
120
- };
121
- [key: string]: unknown;
122
- }
123
- export interface PersistentVolumeSpec {
124
- name: string;
125
- capacity: string;
126
- accessModes: AccessMode[];
127
- storageClassName?: string;
128
- volumeMode?: VolumeMode;
129
- reclaimPolicy?: ReclaimPolicy;
130
- mountOptions?: string[];
131
- nodeAffinity?: Record<string, unknown>;
132
- labels?: Record<string, string>;
133
- annotations?: Record<string, string>;
134
- source: PersistentVolumeSourceSpec;
135
- /** Reference to related PVC for binding */
136
- claimRef?: {
137
- name: string;
138
- namespace?: string;
139
- };
140
- /** Cloud provider for optimized defaults */
141
- cloudProvider?: 'aws' | 'azure' | 'gcp';
142
- }
143
- export interface DeploymentSpec {
144
- name: string;
145
- image: string;
146
- replicas?: number;
147
- containerPort?: number;
148
- env?: Record<string, string>;
149
- envFrom?: EnvFromSource[];
150
- volumes?: VolumeSourceSpec[];
151
- volumeMounts?: VolumeMountSpec[];
152
- resources?: ResourceRequirements;
153
- livenessProbe?: Probe;
154
- readinessProbe?: Probe;
155
- imagePullPolicy?: 'Always' | 'IfNotPresent' | 'Never';
156
- serviceAccountName?: string;
157
- matchLabels?: Record<string, string>;
158
- /** Optional extra labels on the Deployment metadata */
159
- labels?: Record<string, string>;
160
- /** Optional annotations on the Deployment metadata */
161
- annotations?: Record<string, string>;
162
- /** Optional extra labels on the pod template (merged with matchLabels) */
163
- podLabels?: Record<string, string>;
164
- /** Optional annotations on the pod template (useful for reloaders, etc.) */
165
- podAnnotations?: Record<string, string>;
166
- }
167
- export interface ReplicaSetSpec {
168
- name: string;
169
- image: string;
170
- replicas?: number;
171
- containerPort?: number;
172
- env?: Record<string, string>;
173
- envFrom?: EnvFromSource[];
174
- volumes?: VolumeSourceSpec[];
175
- volumeMounts?: VolumeMountSpec[];
176
- resources?: ResourceRequirements;
177
- livenessProbe?: Probe;
178
- readinessProbe?: Probe;
179
- imagePullPolicy?: 'Always' | 'IfNotPresent' | 'Never';
180
- serviceAccountName?: string;
181
- matchLabels?: Record<string, string>;
182
- /** Optional extra labels on the ReplicaSet metadata */
183
- labels?: Record<string, string>;
184
- /** Optional annotations on the ReplicaSet metadata */
185
- annotations?: Record<string, string>;
186
- /** Optional extra labels on the pod template (merged with matchLabels) */
187
- podLabels?: Record<string, string>;
188
- /** Optional annotations on the pod template (useful for reloaders, etc.) */
189
- podAnnotations?: Record<string, string>;
190
- }
191
- export interface JobSpec {
192
- name: string;
193
- image: string;
194
- command?: string[];
195
- args?: string[];
196
- env?: Record<string, string>;
197
- envFrom?: EnvFromSource[];
198
- volumes?: VolumeSourceSpec[];
199
- volumeMounts?: VolumeMountSpec[];
200
- resources?: ResourceRequirements;
201
- restartPolicy?: 'Never' | 'OnFailure';
202
- backoffLimit?: number;
203
- activeDeadlineSeconds?: number;
204
- ttlSecondsAfterFinished?: number;
205
- completions?: number;
206
- parallelism?: number;
207
- completionMode?: 'NonIndexed' | 'Indexed';
208
- suspend?: boolean;
209
- imagePullPolicy?: 'Always' | 'IfNotPresent' | 'Never';
210
- serviceAccountName?: string;
211
- /** Optional extra labels on the Job metadata */
212
- labels?: Record<string, string>;
213
- /** Optional annotations on the Job metadata */
214
- annotations?: Record<string, string>;
215
- /** Optional extra labels on the pod template */
216
- podLabels?: Record<string, string>;
217
- /** Optional annotations on the pod template */
218
- podAnnotations?: Record<string, string>;
219
- }
220
- export interface CronJobSpec {
221
- name: string;
222
- schedule: string;
223
- image: string;
224
- command?: string[];
225
- args?: string[];
226
- env?: Record<string, string>;
227
- envFrom?: EnvFromSource[];
228
- volumes?: VolumeSourceSpec[];
229
- volumeMounts?: VolumeMountSpec[];
230
- resources?: ResourceRequirements;
231
- restartPolicy?: 'Never' | 'OnFailure';
232
- backoffLimit?: number;
233
- activeDeadlineSeconds?: number;
234
- ttlSecondsAfterFinished?: number;
235
- completions?: number;
236
- parallelism?: number;
237
- completionMode?: 'NonIndexed' | 'Indexed';
238
- suspend?: boolean;
239
- startingDeadlineSeconds?: number;
240
- concurrencyPolicy?: 'Allow' | 'Forbid' | 'Replace';
241
- successfulJobsHistoryLimit?: number;
242
- failedJobsHistoryLimit?: number;
243
- timeZone?: string;
244
- imagePullPolicy?: 'Always' | 'IfNotPresent' | 'Never';
245
- serviceAccountName?: string;
246
- /** Optional extra labels on the CronJob metadata */
247
- labels?: Record<string, string>;
248
- /** Optional annotations on the CronJob metadata */
249
- annotations?: Record<string, string>;
250
- /** Optional extra labels on the pod template */
251
- podLabels?: Record<string, string>;
252
- /** Optional annotations on the pod template */
253
- podAnnotations?: Record<string, string>;
254
- }
255
- export interface ServiceSpec {
256
- name: string;
257
- ports: Array<{
258
- port: number;
259
- targetPort?: number;
260
- protocol?: 'TCP' | 'UDP' | 'SCTP';
261
- name?: string;
262
- nodePort?: number;
263
- }>;
264
- type?: 'ClusterIP' | 'NodePort' | 'LoadBalancer' | 'ExternalName';
265
- selector?: Record<string, string>;
266
- clusterIP?: string;
267
- externalName?: string;
268
- sessionAffinity?: 'None' | 'ClientIP';
269
- loadBalancerIP?: string;
270
- loadBalancerSourceRanges?: string[];
271
- loadBalancerClass?: string;
272
- externalTrafficPolicy?: 'Cluster' | 'Local';
273
- internalTrafficPolicy?: 'Cluster' | 'Local';
274
- ipFamilyPolicy?: 'SingleStack' | 'PreferDualStack' | 'RequireDualStack';
275
- ipFamilies?: Array<'IPv4' | 'IPv6'>;
276
- labels?: Record<string, string>;
277
- annotations?: Record<string, string>;
278
- }
279
- export interface IngressRule {
280
- host?: string;
281
- paths: Array<{
282
- path: string;
283
- pathType: 'Exact' | 'Prefix' | 'ImplementationSpecific';
284
- backend: {
285
- service: {
286
- name: string;
287
- port: {
288
- number?: number;
289
- name?: string;
290
- };
291
- };
292
- };
293
- }>;
294
- }
295
- export interface IngressTLS {
296
- hosts?: string[];
297
- secretName?: string;
298
- }
299
- export interface IngressSpec {
300
- name: string;
301
- rules: IngressRule[];
302
- tls?: IngressTLS[];
303
- ingressClassName?: string;
304
- defaultBackend?: {
305
- service: {
306
- name: string;
307
- port: {
308
- number?: number;
309
- name?: string;
310
- };
311
- };
312
- };
313
- labels?: Record<string, string>;
314
- annotations?: Record<string, string>;
315
- }
316
- export interface ConfigMapSpec {
317
- name: string;
318
- data?: Record<string, string>;
319
- binaryData?: Record<string, string>;
320
- immutable?: boolean;
321
- labels?: Record<string, string>;
322
- annotations?: Record<string, string>;
323
- }
324
- export interface SecretSpec {
325
- name: string;
326
- type?: string;
327
- stringData?: Record<string, string>;
328
- data?: Record<string, string>;
329
- immutable?: boolean;
330
- labels?: Record<string, string>;
331
- annotations?: Record<string, string>;
332
- }
333
- export interface PersistentVolumeClaimSpec {
334
- name: string;
335
- accessModes: AccessMode[];
336
- resources: {
337
- requests: {
338
- storage: string;
339
- };
340
- limits?: {
341
- storage: string;
342
- };
343
- };
344
- storageClassName?: string;
345
- volumeMode?: VolumeMode;
346
- selector?: {
347
- matchLabels?: Record<string, string>;
348
- matchExpressions?: unknown[];
349
- };
350
- labels?: Record<string, string>;
351
- annotations?: Record<string, string>;
352
- /** Reference to specific PV for static binding */
353
- volumeName?: string;
354
- /** Cloud provider for optimized defaults */
355
- cloudProvider?: 'aws' | 'azure' | 'gcp';
356
- }
357
- export interface ServiceAccountSpec {
358
- name: string;
359
- annotations?: Record<string, string>;
360
- labels?: Record<string, string>;
361
- automountServiceAccountToken?: boolean;
362
- imagePullSecrets?: string[];
363
- secrets?: string[];
364
- /**
365
- * EKS IRSA support: IAM role ARN for service account to assume
366
- * Example: arn:aws:iam::<account-id>:role/<role-name>
367
- * Adds annotation eks.amazonaws.com/role-arn
368
- */
369
- awsRoleArn?: string;
370
- /**
371
- * IRSA audience for token validation (default: sts.amazonaws.com)
372
- * Adds annotation eks.amazonaws.com/audience when provided
373
- */
374
- awsAudience?: string;
375
- /**
376
- * AWS STS endpoint type for IRSA (regional recommended for better performance)
377
- * Adds annotation eks.amazonaws.com/sts-regional-endpoints when provided
378
- * @default 'regional'
379
- */
380
- awsStsEndpointType?: 'regional' | 'legacy';
381
- /**
382
- * AWS region for regional STS endpoint (auto-detected if not provided)
383
- * Used with awsStsEndpointType: 'regional'
384
- */
385
- awsRegion?: string;
386
- /**
387
- * Token expiration time in seconds for IRSA tokens (3600-43200)
388
- * Adds annotation eks.amazonaws.com/token-expiration when provided
389
- * @default 3600
390
- */
391
- awsTokenExpiration?: number;
392
- /**
393
- * AKS Workload Identity: Azure application client ID
394
- * Adds annotation azure.workload.identity/client-id when provided
395
- */
396
- azureClientId?: string;
397
- /**
398
- * AKS Workload Identity: Azure tenant ID
399
- * Adds annotation azure.workload.identity/tenant-id when provided
400
- */
401
- azureTenantId?: string;
402
- /**
403
- * AKS Workload Identity: projected SA token expiration (seconds)
404
- * Adds annotation azure.workload.identity/service-account-token-expiration
405
- */
406
- azureServiceAccountTokenExpiration?: number;
407
- /**
408
- * GKE Workload Identity: Google service account email
409
- * Adds annotation iam.gke.io/gcp-service-account when provided
410
- */
411
- gcpServiceAccountEmail?: string;
412
- }
413
- export interface HorizontalPodAutoscalerMetric {
414
- type: 'Resource' | 'Pods' | 'Object' | 'External';
415
- resource?: {
416
- name: 'cpu' | 'memory';
417
- target: {
418
- type: 'Utilization' | 'AverageValue';
419
- averageUtilization?: number;
420
- averageValue?: string;
421
- };
422
- };
423
- pods?: {
424
- metric: {
425
- name: string;
426
- selector?: Record<string, unknown>;
427
- };
428
- target: {
429
- type: 'AverageValue';
430
- averageValue: string;
431
- };
432
- };
433
- object?: {
434
- metric: {
435
- name: string;
436
- selector?: Record<string, unknown>;
437
- };
438
- describedObject: {
439
- apiVersion: string;
440
- kind: string;
441
- name: string;
442
- };
443
- target: {
444
- type: 'Value' | 'AverageValue';
445
- value?: string;
446
- averageValue?: string;
447
- };
448
- };
449
- external?: {
450
- metric: {
451
- name: string;
452
- selector?: Record<string, unknown>;
453
- };
454
- target: {
455
- type: 'Value' | 'AverageValue';
456
- value?: string;
457
- averageValue?: string;
458
- };
459
- };
460
- }
461
- export interface HorizontalPodAutoscalerBehavior {
462
- scaleUp?: {
463
- stabilizationWindowSeconds?: number;
464
- selectPolicy?: 'Max' | 'Min' | 'Disabled';
465
- policies?: Array<{
466
- type: 'Pods' | 'Percent';
467
- value: number;
468
- periodSeconds: number;
469
- }>;
470
- };
471
- scaleDown?: {
472
- stabilizationWindowSeconds?: number;
473
- selectPolicy?: 'Max' | 'Min' | 'Disabled';
474
- policies?: Array<{
475
- type: 'Pods' | 'Percent';
476
- value: number;
477
- periodSeconds: number;
478
- }>;
479
- };
480
- }
481
- export interface HorizontalPodAutoscalerSpec {
482
- name: string;
483
- scaleTargetRef: {
484
- apiVersion: string;
485
- kind: 'Deployment' | 'StatefulSet' | 'ReplicaSet';
486
- name: string;
487
- };
488
- minReplicas?: number;
489
- maxReplicas: number;
490
- metrics?: HorizontalPodAutoscalerMetric[];
491
- behavior?: HorizontalPodAutoscalerBehavior;
492
- labels?: Record<string, string>;
493
- annotations?: Record<string, string>;
494
- }
495
- export interface VerticalPodAutoscalerResourcePolicy {
496
- containerName?: string;
497
- mode?: 'Auto' | 'Off';
498
- minAllowed?: {
499
- cpu?: string;
500
- memory?: string;
501
- };
502
- maxAllowed?: {
503
- cpu?: string;
504
- memory?: string;
505
- };
506
- controlledResources?: Array<'cpu' | 'memory'>;
507
- controlledValues?: 'RequestsAndLimits' | 'RequestsOnly';
508
- }
509
- export interface VerticalPodAutoscalerUpdatePolicy {
510
- updateMode?: 'Off' | 'Initial' | 'Recreation' | 'Auto';
511
- minReplicas?: number;
512
- }
513
- export interface PodDisruptionBudgetSpec {
514
- name: string;
515
- minAvailable?: number | string;
516
- maxUnavailable?: number | string;
517
- selector?: {
518
- matchLabels?: Record<string, string>;
519
- matchExpressions?: Array<{
520
- key: string;
521
- operator: 'In' | 'NotIn' | 'Exists' | 'DoesNotExist';
522
- values?: string[];
523
- }>;
524
- };
525
- labels?: Record<string, string>;
526
- annotations?: Record<string, string>;
527
- }
528
- export interface AWSEBSStorageClassSpec extends CloudResourceTags {
529
- name: string;
530
- volumeType?: 'gp2' | 'gp3' | 'io1' | 'io2' | 'sc1' | 'st1';
531
- fsType?: 'ext4' | 'xfs';
532
- encrypted?: boolean;
533
- kmsKeyId?: string;
534
- iops?: number;
535
- throughput?: number;
536
- reclaimPolicy?: 'Delete' | 'Retain';
537
- allowVolumeExpansion?: boolean;
538
- volumeBindingMode?: 'Immediate' | 'WaitForFirstConsumer';
539
- labels?: Record<string, string>;
540
- annotations?: Record<string, string>;
541
- }
542
- export interface AWSEBSPersistentVolumeClaimSpec {
543
- name: string;
544
- storageClassName: string;
545
- size: string;
546
- accessModes?: AccessMode[];
547
- labels?: Record<string, string>;
548
- annotations?: Record<string, string>;
549
- }
550
- export interface AWSEFSStorageClassSpec {
551
- name: string;
552
- reclaimPolicy?: 'Delete' | 'Retain';
553
- volumeBindingMode?: 'Immediate' | 'WaitForFirstConsumer';
554
- labels?: Record<string, string>;
555
- annotations?: Record<string, string>;
556
- }
557
- export interface AWSEFSPersistentVolumeSpec {
558
- name: string;
559
- fileSystemId: string;
560
- accessPoint?: string;
561
- directoryPerms?: string;
562
- gidRangeStart?: number;
563
- gidRangeEnd?: number;
564
- basePath?: string;
565
- subPath?: string;
566
- capacity?: string;
567
- accessModes?: AccessMode[];
568
- storageClassName?: string;
569
- labels?: Record<string, string>;
570
- annotations?: Record<string, string>;
571
- }
572
- export interface AWSEFSPersistentVolumeClaimSpec {
573
- name: string;
574
- storageClassName: string;
575
- size?: string;
576
- accessModes?: AccessMode[];
577
- labels?: Record<string, string>;
578
- annotations?: Record<string, string>;
579
- }
580
- export interface AWSIRSAServiceAccountSpec {
581
- name: string;
582
- roleArn: string;
583
- audience?: string;
584
- stsEndpointType?: 'regional' | 'legacy';
585
- region?: string;
586
- tokenExpiration?: number;
587
- labels?: Record<string, string>;
588
- annotations?: Record<string, string>;
589
- automountServiceAccountToken?: boolean;
590
- imagePullSecrets?: string[];
591
- secrets?: string[];
592
- }
593
- export interface AWSSecretsManagerObject {
594
- objectName: string;
595
- objectType: 'secretsmanager';
596
- objectAlias?: string;
597
- jmesPath?: string;
598
- }
599
- export interface AWSParameterStoreObject {
600
- objectName: string;
601
- objectType: 'ssmparameter';
602
- objectAlias?: string;
603
- }
604
- export interface AWSSecretProviderClassSpec {
605
- name: string;
606
- region?: string;
607
- objects: (AWSSecretsManagerObject | AWSParameterStoreObject)[];
608
- labels?: Record<string, string>;
609
- annotations?: Record<string, string>;
610
- }
611
- /**
612
- * Configuration interface for Azure Workload Identity ServiceAccount.
613
- * Enables secure authentication to Azure services without storing credentials.
614
- *
615
- * @see https://learn.microsoft.com/en-us/azure/aks/workload-identity-overview
616
- */
617
- export interface AzureWorkloadIdentityServiceAccountSpec {
618
- /** Name of the ServiceAccount */
619
- name: string;
620
- /** Azure application client ID for workload identity */
621
- clientId: string;
622
- /** Azure tenant ID where the application is registered */
623
- tenantId: string;
624
- /** Service account token expiration in seconds (3600-86400) */
625
- tokenExpiration?: number;
626
- /** Labels to apply to the ServiceAccount */
627
- labels?: Record<string, string>;
628
- /** Additional annotations to apply to the ServiceAccount */
629
- annotations?: Record<string, string>;
630
- /** Whether to automount service account token */
631
- automountServiceAccountToken?: boolean;
632
- /** Names of image pull secrets */
633
- imagePullSecrets?: string[];
634
- /** Names of secrets to mount */
635
- secrets?: string[];
636
- }
637
- /**
638
- * Azure Key Vault object configuration for SecretProviderClass.
639
- */
640
- export interface AzureKeyVaultObject {
641
- /** Name of the object in Azure Key Vault */
642
- objectName: string;
643
- /** Type of object to retrieve */
644
- objectType: 'secret' | 'key' | 'cert';
645
- /** Optional alias for the object when mounted */
646
- objectAlias?: string;
647
- /** Optional version of the object */
648
- objectVersion?: string;
649
- }
650
- /**
651
- * Configuration interface for Azure Key Vault SecretProviderClass.
652
- * Enables mounting secrets from Azure Key Vault using CSI driver.
653
- *
654
- * @see https://learn.microsoft.com/en-us/azure/aks/csi-secrets-store-driver
655
- */
656
- export interface AzureKeyVaultSecretProviderClassSpec {
657
- /** Name of the SecretProviderClass */
658
- name: string;
659
- /** Name of the Azure Key Vault */
660
- keyVaultName: string;
661
- /** Azure tenant ID */
662
- tenantId: string;
663
- /** Objects to retrieve from Key Vault */
664
- objects: AzureKeyVaultObject[];
665
- /** User-assigned managed identity client ID for authentication */
666
- userAssignedIdentityID?: string;
667
- /** Azure cloud environment */
668
- cloudName?: 'AzurePublicCloud' | 'AzureUSGovernmentCloud' | 'AzureChinaCloud';
669
- /** Labels to apply to the SecretProviderClass */
670
- labels?: Record<string, string>;
671
- /** Additional annotations to apply to the SecretProviderClass */
672
- annotations?: Record<string, string>;
673
- }
674
- /**
675
- * Configuration interface for Azure Files StorageClass.
676
- * Defines parameters for creating Azure Files StorageClass in AKS.
677
- *
678
- * @see https://learn.microsoft.com/en-us/azure/aks/azure-csi-files-storage-provision
679
- */
680
- export interface AzureFilesStorageClassSpec {
681
- /** Name of the StorageClass */
682
- name: string;
683
- /** Azure Files SKU */
684
- skuName?: 'Standard_LRS' | 'Standard_GRS' | 'Standard_RAGRS' | 'Standard_ZRS' | 'Premium_LRS' | 'Premium_ZRS';
685
- /** File share protocol */
686
- protocol?: 'smb' | 'nfs';
687
- /** Allow shared access across multiple pods */
688
- allowSharedAccess?: boolean;
689
- /** Resource group for storage account */
690
- resourceGroup?: string;
691
- /** Storage account name */
692
- storageAccount?: string;
693
- /** Location for storage account */
694
- location?: string;
695
- /** Network endpoints for storage account */
696
- networkEndpointType?: 'publicEndpoint' | 'privateEndpoint';
697
- /** Mount permissions for NFS (e.g., '0777') */
698
- mountPermissions?: string;
699
- /** Root squash type for NFS */
700
- rootSquashType?: 'NoRootSquash' | 'RootSquash' | 'AllSquash';
701
- /** Volume reclaim policy */
702
- reclaimPolicy?: 'Delete' | 'Retain';
703
- /** Allow volume expansion */
704
- allowVolumeExpansion?: boolean;
705
- /** Volume binding mode */
706
- volumeBindingMode?: 'Immediate' | 'WaitForFirstConsumer';
707
- /** Mount options for the storage class */
708
- mountOptions?: string[];
709
- /** Labels to apply to the StorageClass */
710
- labels?: Record<string, string>;
711
- /** Annotations to apply to the StorageClass */
712
- annotations?: Record<string, string>;
713
- }
714
- /**
715
- * Configuration interface for Azure Files PersistentVolume.
716
- * Defines parameters for static Azure Files volume provisioning.
717
- */
718
- export interface AzureFilesPersistentVolumeSpec {
719
- /** Name of the PersistentVolume */
720
- name: string;
721
- /** Storage capacity */
722
- capacity: string;
723
- /** Access modes */
724
- accessModes?: AccessMode[];
725
- /** Storage account name */
726
- storageAccount: string;
727
- /** File share name */
728
- shareName: string;
729
- /** Resource group name */
730
- resourceGroup?: string;
731
- /** File share protocol */
732
- protocol?: 'smb' | 'nfs';
733
- /** Secret name containing storage account key (SMB only) */
734
- secretName?: string;
735
- /** Secret namespace (SMB only) */
736
- secretNamespace?: string;
737
- /** Server address override */
738
- server?: string;
739
- /** Folder name within share */
740
- folderName?: string;
741
- /** Mount permissions for NFS */
742
- mountPermissions?: string;
743
- /** Volume reclaim policy */
744
- reclaimPolicy?: ReclaimPolicy;
745
- /** Storage class name */
746
- storageClassName?: string;
747
- /** Mount options */
748
- mountOptions?: string[];
749
- /** Labels to apply to the PersistentVolume */
750
- labels?: Record<string, string>;
751
- /** Annotations to apply to the PersistentVolume */
752
- annotations?: Record<string, string>;
753
- }
754
- /**
755
- * Configuration interface for Azure Files PersistentVolumeClaim.
756
- * Simplifies creation of PVCs for Azure Files.
757
- */
758
- export interface AzureFilesPersistentVolumeClaimSpec {
759
- /** Name of the PersistentVolumeClaim */
760
- name: string;
761
- /** Storage class name */
762
- storageClassName: string;
763
- /** Storage size request */
764
- size: string;
765
- /** Access modes */
766
- accessModes?: AccessMode[];
767
- /** Labels to apply to the PersistentVolumeClaim */
768
- labels?: Record<string, string>;
769
- /** Annotations to apply to the PersistentVolumeClaim */
770
- annotations?: Record<string, string>;
771
- }
772
- /**
773
- * Configuration interface for Azure Container Registry ServiceAccount.
774
- * Simplifies ACR integration with AKS using managed identity.
775
- */
776
- export interface AzureACRServiceAccountSpec {
777
- /** Name of the ServiceAccount */
778
- name: string;
779
- /** Azure Container Registry name */
780
- acrName: string;
781
- /** Resource group containing the ACR */
782
- resourceGroup: string;
783
- /** Client ID for Workload Identity (optional) */
784
- clientId?: string;
785
- /** Tenant ID for Workload Identity (optional) */
786
- tenantId?: string;
787
- /** Labels to apply to the ServiceAccount */
788
- labels?: Record<string, string>;
789
- /** Additional annotations to apply to the ServiceAccount */
790
- annotations?: Record<string, string>;
791
- /** Whether to automount service account token */
792
- automountServiceAccountToken?: boolean;
793
- /** Names of additional image pull secrets */
794
- imagePullSecrets?: string[];
795
- /** Names of secrets to mount */
796
- secrets?: string[];
797
- }
798
- /**
799
- * Configuration interface for Azure Disk StorageClass.
800
- * Defines the parameters for creating an Azure Disk StorageClass in AKS.
801
- *
802
- * @see https://learn.microsoft.com/en-us/azure/aks/azure-csi-disk-storage-provision
803
- */
804
- /**
805
- * Cloud resource tags with basic validation.
806
- * Provides a consistent interface for tagging resources across cloud providers.
807
- */
808
- export interface CloudResourceTags {
809
- /** Resource tags as key-value pairs */
810
- tags?: Record<string, string>;
811
- }
812
- export interface AzureDiskStorageClassSpec extends CloudResourceTags {
813
- /** Name of the StorageClass */
814
- name: string;
815
- /** Azure disk SKU to use */
816
- skuName?: 'Standard_LRS' | 'Premium_LRS' | 'StandardSSD_LRS' | 'PremiumV2_LRS' | 'UltraSSD_LRS' | 'Premium_ZRS' | 'StandardSSD_ZRS';
817
- /** File system type to use */
818
- fsType?: 'ext4' | 'ext3' | 'ext2' | 'xfs' | 'btrfs' | 'ntfs';
819
- /** Host caching mode */
820
- cachingMode?: 'None' | 'ReadOnly' | 'ReadWrite';
821
- /** Resource group where disks will be created */
822
- resourceGroup?: string;
823
- /** IOPS for the disk (UltraSSD_LRS only) */
824
- diskIOPSReadWrite?: number;
825
- /** Throughput in MB/s (UltraSSD_LRS only) */
826
- diskMBpsReadWrite?: number;
827
- /** Logical sector size in bytes */
828
- logicalSectorSize?: 512 | 4096;
829
- /** ID of the disk encryption set */
830
- diskEncryptionSetID?: string;
831
- /** Type of disk encryption */
832
- diskEncryptionType?: 'EncryptionAtRestWithCustomerKey' | 'EncryptionAtRestWithPlatformAndCustomerKeys';
833
- /** Enable write accelerator */
834
- writeAcceleratorEnabled?: boolean;
835
- /** Network access policy for the disk */
836
- networkAccessPolicy?: 'AllowAll' | 'DenyAll' | 'AllowPrivate';
837
- /** ID of the disk access resource */
838
- diskAccessID?: string;
839
- /** Enable bursting (Premium SSD only) */
840
- enableBursting?: boolean;
841
- /** Maximum number of hosts that can attach to the disk simultaneously */
842
- maxShares?: number;
843
- /** Volume reclaim policy */
844
- reclaimPolicy?: 'Delete' | 'Retain';
845
- /** Allow volume expansion */
846
- allowVolumeExpansion?: boolean;
847
- /** Volume binding mode */
848
- volumeBindingMode?: 'Immediate' | 'WaitForFirstConsumer';
849
- /** Labels to apply to the StorageClass */
850
- labels?: Record<string, string>;
851
- /** Annotations to apply to the StorageClass */
852
- annotations?: Record<string, string>;
853
- }
854
- export interface AWSALBIngressSpec extends CloudResourceTags {
855
- name: string;
856
- rules: IngressRule[];
857
- tls?: IngressTLS[];
858
- scheme?: 'internet-facing' | 'internal';
859
- targetType?: 'instance' | 'ip';
860
- ipAddressType?: 'ipv4' | 'dualstack';
861
- groupName?: string;
862
- groupOrder?: number;
863
- subnets?: string[];
864
- securityGroups?: string[];
865
- certificateArn?: string;
866
- sslRedirect?: boolean;
867
- healthCheckPath?: string;
868
- healthCheckIntervalSeconds?: number;
869
- healthCheckTimeoutSeconds?: number;
870
- healthyThresholdCount?: number;
871
- unhealthyThresholdCount?: number;
872
- labels?: Record<string, string>;
873
- annotations?: Record<string, string>;
874
- }
875
- /**
876
- * Configuration interface for Azure Application Gateway Ingress Controller (AGIC).
877
- * Provides comprehensive support for AGIC annotations and features for AKS deployments.
878
- *
879
- * @see https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-annotations
880
- */
881
- export interface AzureAGICIngressSpec {
882
- /** Name of the Ingress resource */
883
- name: string;
884
- /** Ingress rules defining routing configuration */
885
- rules: IngressRule[];
886
- /** TLS configuration for HTTPS termination */
887
- tls?: IngressTLS[];
888
- /** Backend path prefix to rewrite request paths */
889
- backendPathPrefix?: string;
890
- /** Backend hostname for Application Gateway to use when communicating with pods */
891
- backendHostname?: string;
892
- /** Backend protocol (http or https) */
893
- backendProtocol?: 'http' | 'https';
894
- /** Enable SSL redirect from HTTP to HTTPS */
895
- sslRedirect?: boolean;
896
- /** Use private IP address of Application Gateway */
897
- usePrivateIp?: boolean;
898
- /** Override frontend port (default: 80 for HTTP, 443 for HTTPS) */
899
- overrideFrontendPort?: number;
900
- /** Enable cookie-based session affinity */
901
- cookieBasedAffinity?: boolean;
902
- /** Request timeout in seconds */
903
- requestTimeout?: number;
904
- /** Enable connection draining */
905
- connectionDraining?: boolean;
906
- /** Connection draining timeout in seconds */
907
- connectionDrainingTimeout?: number;
908
- /** Custom health probe hostname */
909
- healthProbeHostname?: string;
910
- /** Custom health probe port */
911
- healthProbePort?: number;
912
- /** Custom health probe path */
913
- healthProbePath?: string;
914
- /** Accepted HTTP status codes for health probe */
915
- healthProbeStatusCodes?: string;
916
- /** Health probe interval in seconds */
917
- healthProbeInterval?: number;
918
- /** Health probe timeout in seconds */
919
- healthProbeTimeout?: number;
920
- /** Health probe unhealthy threshold */
921
- healthProbeUnhealthyThreshold?: number;
922
- /**
923
- * Additional hostnames for multisite listener
924
- * @security Validate hostname format to prevent injection attacks
925
- */
926
- hostnameExtension?: string[];
927
- /**
928
- * WAF policy resource ID for path-based protection
929
- * @security Validate resource ID format to prevent path traversal attacks
930
- */
931
- wafPolicyForPath?: string;
932
- /**
933
- * Application Gateway SSL certificate name
934
- * @security Ensure certificate exists and is properly configured
935
- */
936
- appgwSslCertificate?: string;
937
- /** Application Gateway SSL profile name */
938
- appgwSslProfile?: string;
939
- /** Trusted root certificate names for end-to-end SSL */
940
- appgwTrustedRootCertificate?: string[];
941
- /** Rewrite rule set name */
942
- rewriteRuleSet?: string;
943
- /** Rule priority for request routing */
944
- rulePriority?: number;
945
- /** Labels to apply to the Ingress */
946
- labels?: Record<string, string>;
947
- /** Additional annotations to apply to the Ingress */
948
- annotations?: Record<string, string>;
949
- }
950
- export interface VerticalPodAutoscalerSpec {
951
- name: string;
952
- targetRef: {
953
- apiVersion: string;
954
- kind: 'Deployment' | 'StatefulSet' | 'ReplicaSet' | 'DaemonSet' | 'Job' | 'CronJob';
955
- name: string;
956
- };
957
- updatePolicy?: VerticalPodAutoscalerUpdatePolicy;
958
- resourcePolicy?: {
959
- containerPolicies?: VerticalPodAutoscalerResourcePolicy[];
960
- };
961
- recommenders?: Array<{
962
- name: string;
963
- }>;
964
- labels?: Record<string, string>;
965
- annotations?: Record<string, string>;
966
- }
967
- export interface NetworkPolicyPeer {
968
- podSelector?: {
969
- matchLabels?: Record<string, string>;
970
- matchExpressions?: Array<{
971
- key: string;
972
- operator: 'In' | 'NotIn' | 'Exists' | 'DoesNotExist';
973
- values?: string[];
974
- }>;
975
- };
976
- namespaceSelector?: {
977
- matchLabels?: Record<string, string>;
978
- matchExpressions?: Array<{
979
- key: string;
980
- operator: 'In' | 'NotIn' | 'Exists' | 'DoesNotExist';
981
- values?: string[];
982
- }>;
983
- };
984
- ipBlock?: {
985
- cidr: string;
986
- except?: string[];
987
- };
988
- }
989
- export interface NetworkPolicyPort {
990
- protocol?: 'TCP' | 'UDP' | 'SCTP';
991
- port?: number | string;
992
- endPort?: number;
993
- }
994
- export interface NetworkPolicyIngressRule {
995
- from?: NetworkPolicyPeer[];
996
- ports?: NetworkPolicyPort[];
997
- }
998
- export interface NetworkPolicyEgressRule {
999
- to?: NetworkPolicyPeer[];
1000
- ports?: NetworkPolicyPort[];
1001
- }
1002
- export interface NetworkPolicySpec {
1003
- name: string;
1004
- podSelector?: {
1005
- matchLabels?: Record<string, string>;
1006
- matchExpressions?: Array<{
1007
- key: string;
1008
- operator: 'In' | 'NotIn' | 'Exists' | 'DoesNotExist';
1009
- values?: string[];
1010
- }>;
1011
- };
1012
- policyTypes?: Array<'Ingress' | 'Egress'>;
1013
- ingress?: NetworkPolicyIngressRule[];
1014
- egress?: NetworkPolicyEgressRule[];
1015
- labels?: Record<string, string>;
1016
- annotations?: Record<string, string>;
1017
- }
1018
- export interface RutterProps {
1019
- meta: HelmChartMeta;
1020
- defaultValues?: Record<string, unknown>;
1021
- envValues?: Record<string, Record<string, unknown>>;
1022
- /** Optional Helm helpers content for templates/_helpers.tpl */
1023
- helpersTpl?: string | HelperDefinition[];
1024
- /** Optional NOTES.txt content */
1025
- notesTpl?: string;
1026
- /** Optional values.schema.json object */
1027
- valuesSchema?: Record<string, unknown>;
1028
- /** Optional custom name for the generated manifest file (without extension) */
1029
- manifestName?: string;
1030
- /**
1031
- * If true, all Kubernetes resources will be combined into a single manifest file.
1032
- * If false (default), each resource will be in its own numbered file.
1033
- * @default false
1034
- */
1035
- singleManifestFile?: boolean;
1036
- }
1037
- /**
1038
- * Rutter builds Kubernetes manifests using cdk8s and writes a Helm chart.
1039
- */
1040
- export declare class Rutter {
1041
- private readonly props;
1042
- private readonly app;
1043
- private readonly chart;
1044
- private readonly assets;
1045
- private valueOverrides;
1046
- constructor(props: RutterProps);
1047
- /**
1048
- * Set dynamic value overrides (from --set flags)
1049
- */
1050
- setValues(overrides: Record<string, string>): void;
1051
- /**
1052
- * Apply value overrides to nested object using dot notation
1053
- */
1054
- private applyOverrides;
1055
- private setNestedValue;
1056
- private parseValue;
1057
- private static readonly LABEL_NAME;
1058
- private static readonly LABEL_INSTANCE;
1059
- private static readonly HELPER_NAME;
1060
- private static readonly NETWORKING_API_VERSION;
1061
- private static readonly STORAGE_API_VERSION;
1062
- private static readonly AZURE_DISK_CSI_DRIVER;
1063
- private static readonly AZURE_DISK_PROVISIONER_ANNOTATION;
1064
- private static readonly AZURE_FILES_CSI_DRIVER;
1065
- addDeployment(spec: DeploymentSpec): ApiObject;
1066
- addService(spec: ServiceSpec): ApiObject;
1067
- addReplicaSet(spec: ReplicaSetSpec): ApiObject;
1068
- addJob(spec: JobSpec): ApiObject;
1069
- addCronJob(spec: CronJobSpec): ApiObject;
1070
- addIngress(spec: IngressSpec): ApiObject;
1071
- addPersistentVolume(spec: PersistentVolumeSpec): ApiObject;
1072
- private optimizePVForCloud;
1073
- addPersistentVolumeClaim(spec: PersistentVolumeClaimSpec): ApiObject;
1074
- private validatePVCAccessModes;
1075
- addConfigMap(spec: ConfigMapSpec): ApiObject;
1076
- addSecret(spec: SecretSpec): ApiObject;
1077
- addServiceAccount(spec: ServiceAccountSpec): ApiObject;
1078
- private buildServiceAccountAnnotations;
1079
- private addAWSIRSAAnnotations;
1080
- private addAzureWorkloadIdentityAnnotations;
1081
- private addGCPWorkloadIdentityAnnotations;
1082
- addHorizontalPodAutoscaler(spec: HorizontalPodAutoscalerSpec): ApiObject;
1083
- addVerticalPodAutoscaler(spec: VerticalPodAutoscalerSpec): ApiObject;
1084
- addPodDisruptionBudget(spec: PodDisruptionBudgetSpec): ApiObject;
1085
- addAWSEBSStorageClass(spec: AWSEBSStorageClassSpec): ApiObject;
1086
- addAWSEBSPersistentVolumeClaim(spec: AWSEBSPersistentVolumeClaimSpec): ApiObject;
1087
- addAWSEFSStorageClass(spec: AWSEFSStorageClassSpec): ApiObject;
1088
- addAWSEFSPersistentVolume(spec: AWSEFSPersistentVolumeSpec): ApiObject;
1089
- addAWSEFSPersistentVolumeClaim(spec: AWSEFSPersistentVolumeClaimSpec): ApiObject;
1090
- addAWSALBIngress(spec: AWSALBIngressSpec): ApiObject;
1091
- private buildALBAnnotations;
1092
- private addOptionalALBAnnotations;
1093
- private addHealthCheckAnnotations;
1094
- private addTagsAnnotation;
1095
- /**
1096
- * Add Azure Application Gateway Ingress Controller (AGIC) Ingress.
1097
- * Creates an Ingress resource with AGIC-specific annotations for AKS deployments.
1098
- *
1099
- * @param spec - AGIC Ingress specification
1100
- * @returns The created Ingress ApiObject
1101
- *
1102
- * @example
1103
- * ```typescript
1104
- * rutter.addAzureAGICIngress({
1105
- * name: 'app-ingress',
1106
- * rules: [{
1107
- * host: 'app.example.com',
1108
- * paths: [{
1109
- * path: '/',
1110
- * pathType: 'Prefix',
1111
- * backend: { service: { name: 'app-service', port: { number: 80 } } }
1112
- * }]
1113
- * }],
1114
- * sslRedirect: true,
1115
- * backendProtocol: 'https',
1116
- * healthProbePath: '/health'
1117
- * });
1118
- * ```
1119
- */
1120
- addAzureAGICIngress(spec: AzureAGICIngressSpec): ApiObject;
1121
- private buildAGICAnnotations;
1122
- private addAGICPathAnnotations;
1123
- private addAGICProtocolAnnotations;
1124
- private addAGICHealthProbeAnnotations;
1125
- private addAGICConnectionAnnotations;
1126
- private addAGICSecurityAnnotations;
1127
- private addAGICAdvancedAnnotations;
1128
- addAWSIRSAServiceAccount(spec: AWSIRSAServiceAccountSpec): ApiObject;
1129
- addAWSSecretProviderClass(spec: AWSSecretProviderClassSpec): ApiObject;
1130
- /**
1131
- * Add Azure Workload Identity ServiceAccount.
1132
- * Creates a ServiceAccount with Azure Workload Identity annotations for secure authentication.
1133
- *
1134
- * @param spec - Azure Workload Identity ServiceAccount specification
1135
- * @returns The created ServiceAccount ApiObject
1136
- *
1137
- * @example
1138
- * ```typescript
1139
- * rutter.addAzureWorkloadIdentityServiceAccount({
1140
- * name: 'workload-identity-sa',
1141
- * clientId: '12345678-1234-1234-1234-123456789012',
1142
- * tenantId: '87654321-4321-4321-4321-210987654321',
1143
- * tokenExpiration: 3600
1144
- * });
1145
- * ```
1146
- */
1147
- addAzureWorkloadIdentityServiceAccount(spec: AzureWorkloadIdentityServiceAccountSpec): ApiObject;
1148
- /**
1149
- * Add Azure Key Vault SecretProviderClass.
1150
- * Creates a SecretProviderClass for mounting secrets from Azure Key Vault using CSI driver.
1151
- *
1152
- * @param spec - Azure Key Vault SecretProviderClass specification
1153
- * @returns The created SecretProviderClass ApiObject
1154
- *
1155
- * @example
1156
- * ```typescript
1157
- * rutter.addAzureKeyVaultSecretProviderClass({
1158
- * name: 'app-secrets',
1159
- * keyVaultName: 'my-keyvault',
1160
- * tenantId: '87654321-4321-4321-4321-210987654321',
1161
- * objects: [
1162
- * { objectName: 'database-password', objectType: 'secret' },
1163
- * { objectName: 'api-key', objectType: 'secret', objectAlias: 'API_KEY' }
1164
- * ],
1165
- * userAssignedIdentityID: '12345678-1234-1234-1234-123456789012'
1166
- * });
1167
- * ```
1168
- */
1169
- addAzureKeyVaultSecretProviderClass(spec: AzureKeyVaultSecretProviderClassSpec): ApiObject;
1170
- /**
1171
- * Add Azure Files StorageClass.
1172
- * Creates a StorageClass for dynamic provisioning of Azure Files volumes.
1173
- *
1174
- * @param spec - Azure Files StorageClass specification
1175
- * @returns The created StorageClass ApiObject
1176
- *
1177
- * @example
1178
- * ```typescript
1179
- * rutter.addAzureFilesStorageClass({
1180
- * name: 'azure-files-premium',
1181
- * skuName: 'Premium_LRS',
1182
- * protocol: 'smb',
1183
- * allowSharedAccess: true
1184
- * });
1185
- * ```
1186
- */
1187
- addAzureFilesStorageClass(spec: AzureFilesStorageClassSpec): ApiObject;
1188
- /**
1189
- * Add Azure Files PersistentVolume.
1190
- * Creates a PersistentVolume for static Azure Files volume provisioning.
1191
- *
1192
- * @param spec - Azure Files PersistentVolume specification
1193
- * @returns The created PersistentVolume ApiObject
1194
- */
1195
- addAzureFilesPersistentVolume(spec: AzureFilesPersistentVolumeSpec): ApiObject;
1196
- /**
1197
- * Add Azure Files PersistentVolumeClaim.
1198
- * Creates a PersistentVolumeClaim for Azure Files storage.
1199
- *
1200
- * @param spec - Azure Files PersistentVolumeClaim specification
1201
- * @returns The created PersistentVolumeClaim ApiObject
1202
- */
1203
- addAzureFilesPersistentVolumeClaim(spec: AzureFilesPersistentVolumeClaimSpec): ApiObject;
1204
- /**
1205
- * Add Azure Container Registry ServiceAccount.
1206
- * Creates a ServiceAccount configured for ACR access.
1207
- *
1208
- * @param spec - Azure ACR ServiceAccount specification
1209
- * @returns The created ServiceAccount ApiObject
1210
- */
1211
- addAzureACRServiceAccount(spec: AzureACRServiceAccountSpec): ApiObject;
1212
- addAzureDiskStorageClass(spec: AzureDiskStorageClassSpec): ApiObject;
1213
- private buildAzureDiskParameters;
1214
- private addOptionalAzureDiskParameters;
1215
- private addAzureDiskEncryptionParameters;
1216
- private addAzureDiskPerformanceParameters;
1217
- private validateAzureDiskNumericParameters;
1218
- private validateAzureDiskIOPS;
1219
- private validateAzureDiskThroughput;
1220
- private validateAzureDiskShares;
1221
- private validateAzureDiskSectorSize;
1222
- /**
1223
- * Format cloud resource tags for provider-specific string format.
1224
- * Provides basic validation and consistent formatting across cloud providers.
1225
- */
1226
- private formatCloudResourceTags;
1227
- /**
1228
- * Validate cloud resource tags with basic rules.
1229
- * Each cloud provider has specific validation, but these are common basics.
1230
- */
1231
- private validateCloudResourceTags;
1232
- addNetworkPolicy(spec: NetworkPolicySpec): ApiObject;
1233
- private static readonly EMPTY_POD_SELECTOR;
1234
- /**
1235
- * Create a deny-all ingress NetworkPolicy for the current namespace
1236
- */
1237
- addDenyAllIngressNetworkPolicy(name?: string): ApiObject;
1238
- /**
1239
- * Create a deny-all egress NetworkPolicy for the current namespace
1240
- */
1241
- addDenyAllEgressNetworkPolicy(name?: string): ApiObject;
1242
- /**
1243
- * Create a deny-all NetworkPolicy for both ingress and egress
1244
- */
1245
- addDenyAllNetworkPolicy(name?: string): ApiObject;
1246
- /**
1247
- * Allow traffic from specific pods to target pods on specific ports
1248
- */
1249
- addAllowFromPodsNetworkPolicy(spec: {
1250
- name: string;
1251
- targetPodSelector: Record<string, string>;
1252
- sourcePodSelector: Record<string, string>;
1253
- ports?: NetworkPolicyPort[];
1254
- labels?: Record<string, string>;
1255
- annotations?: Record<string, string>;
1256
- }): ApiObject;
1257
- /**
1258
- * Allow traffic from specific namespace to target pods
1259
- */
1260
- addAllowFromNamespaceNetworkPolicy(spec: {
1261
- name: string;
1262
- targetPodSelector: Record<string, string>;
1263
- sourceNamespaceSelector: Record<string, string>;
1264
- ports?: NetworkPolicyPort[];
1265
- labels?: Record<string, string>;
1266
- annotations?: Record<string, string>;
1267
- }): ApiObject;
1268
- private validateNetworkPolicyTypes;
1269
- private validatePolicyTypeValues;
1270
- private validatePolicyTypeRules;
1271
- private validateNetworkPolicyCIDRs;
1272
- private isValidCIDR;
1273
- private isValidIPv4;
1274
- private isValidPrefix;
1275
- private validateIngressCIDRs;
1276
- private validateEgressCIDRs;
1277
- private validatePeerCIDRs;
1278
- private validateAGICHealthProbeParams;
1279
- private validateAGICSecurityParams;
1280
- private isValidHostname;
1281
- private validateAGICAnnotationConsistency;
1282
- private buildAzureFilesParameters;
1283
- private buildAzureFilesPVCSISpec;
1284
- private buildPodEnvironment;
1285
- private buildJobSpec;
1286
- private buildJobPodTemplate;
1287
- private buildCronJobSpec;
1288
- private buildCronJobTemplate;
1289
- /**
1290
- * Validate Job specification for security and best practices
1291
- */
1292
- private validateJobSpec;
1293
- /**
1294
- * Validate CronJob specification for security and best practices
1295
- */
1296
- private validateCronJobSpec;
1297
- /**
1298
- * Validate cron schedule expression
1299
- */
1300
- private validateCronSchedule;
1301
- /**
1302
- * Sanitize environment variable names and values
1303
- */
1304
- private sanitizeEnvVar;
1305
- /**
1306
- * Get default resource limits for Jobs and CronJobs
1307
- */
1308
- private getDefaultResources;
1309
- /**
1310
- * Validate Azure Files parameters for security and compliance
1311
- */
1312
- private validateAzureFilesParameters;
1313
- /**
1314
- * Sanitize volume handle to ensure valid format for CSI driver
1315
- */
1316
- private sanitizeVolumeHandle;
1317
- /**
1318
- * Capture the YAML of an ApiObject or Construct into assets.
1319
- */
1320
- private capture;
1321
- /**
1322
- * Extract a meaningful name from a Kubernetes resource object
1323
- */
1324
- private getResourceName;
1325
- /**
1326
- * Add a raw CRD manifest to the chart (written under crds/).
1327
- */
1328
- addCrd(yaml: string, id?: string): void;
1329
- /**
1330
- * Synthesize the cdk8s app and write a Helm chart to outDir.
1331
- */
1332
- write(outDir: string): void;
1333
- }
1334
- //# sourceMappingURL=Rutter.d.ts.map