timonel 1.0.0 → 2.1.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.
- package/CHANGELOG.md +47 -18
- package/README.md +134 -9
- package/dist/lib/HelmChartWriter.js +4 -6
- package/dist/lib/HelmChartWriter.js.map +1 -1
- package/dist/lib/Rutter.d.ts +284 -3
- package/dist/lib/Rutter.d.ts.map +1 -1
- package/dist/lib/Rutter.js +609 -7
- package/dist/lib/Rutter.js.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,35 +1,64 @@
|
|
|
1
|
-
# [1.0
|
|
1
|
+
# [2.1.0](https://github.com/KenkoGeek/timonel/compare/v2.0.0...v2.1.0) (2025-09-08)
|
|
2
2
|
|
|
3
|
+
### Features
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
- **core:** add Job and CronJob helpers for batch workloads ([#21](https://github.com/KenkoGeek/timonel/issues/21)) ([0f375d2](https://github.com/KenkoGeek/timonel/commit/0f375d214e1cb3a2791522c530230757c15b2dee))
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* **ci:** disable footer-leading-blank for semantic-release compatibility - Set footer-leading-blank to 0 (disabled) to allow semantic-release footer format ([2f8c6c8](https://github.com/KenkoGeek/timonel/commit/2f8c6c863c6aabd1d3f3d8022b43fefecb02f010))
|
|
10
|
-
* **ci:** replace CodeQL with security check in release validation ([#15](https://github.com/KenkoGeek/timonel/issues/15)) ([b8cecea](https://github.com/KenkoGeek/timonel/commit/b8cecea1eaf0bb6af3e6fd2f6bc38c2fb2c09f4d))
|
|
11
|
-
* **ci:** resolve release workflow issues ([#16](https://github.com/KenkoGeek/timonel/issues/16)) ([ed5dc9b](https://github.com/KenkoGeek/timonel/commit/ed5dc9b3d86b531d4495d4d05dd913340333322c))
|
|
7
|
+
# [2.0.0](https://github.com/KenkoGeek/timonel/compare/v1.0.0...v2.0.0) (2025-09-07)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
12
10
|
|
|
11
|
+
- **ci:** remove redundant publish workflow and configure release token ([fcea159](https://github.com/KenkoGeek/timonel/commit/fcea15914617e372a2aafc8a30001cc54ec8bff6))
|
|
12
|
+
- **examples:** update timonel dependency to ^1.0.0 ([3d1f692](https://github.com/KenkoGeek/timonel/commit/3d1f6922448648c7efe57cc1fdde9a5808e04d7e))
|
|
13
|
+
- **helm:** remove automatic numbering from template files ([#20](https://github.com/KenkoGeek/timonel/issues/20)) ([f75748a](https://github.com/KenkoGeek/timonel/commit/f75748aee974a254f576807f26396b026262b42c))
|
|
13
14
|
|
|
14
15
|
### Features
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* **ci:** implement automated semantic release with conventional commits ([02ce189](https://github.com/KenkoGeek/timonel/commit/02ce18943efd8019168b5f9af29be0140a9e1524))
|
|
20
|
-
* **ci:** implement automated semantic release with conventional commits ([bb94fda](https://github.com/KenkoGeek/timonel/commit/bb94fda3e80bf3e010e7b53bdd1794f88060408a))
|
|
21
|
-
* **core:** add NetworkPolicy helpers for Zero Trust network security ([34ac6bd](https://github.com/KenkoGeek/timonel/commit/34ac6bda3956e5fe326b72e9831bd4bb8bc660da))
|
|
17
|
+
- **ci:** add automatic CHANGELOG.md formatting to semantic-release ([6846b4d](https://github.com/KenkoGeek/timonel/commit/6846b4de2cfd411b7b9b9724d67830cf192ad2b9))
|
|
18
|
+
- **core:** add Azure Application Gateway Ingress Controller (AGIC) support ([#19](https://github.com/KenkoGeek/timonel/issues/19)) ([75bbb99](https://github.com/KenkoGeek/timonel/commit/75bbb998981ca6492b09ad12c54e03050b307c27))
|
|
19
|
+
- **core:** add Azure Disk StorageClass helper for AKS ([#18](https://github.com/KenkoGeek/timonel/issues/18)) ([5fb29de](https://github.com/KenkoGeek/timonel/commit/5fb29de260c4cabf6732520b0834cf0d0421a33a))
|
|
22
20
|
|
|
21
|
+
### BREAKING CHANGES
|
|
23
22
|
|
|
24
|
-
|
|
23
|
+
- **helm:** Template files no longer have automatic numbering prefixes
|
|
24
|
+
|
|
25
|
+
- refactor(helm): unify template naming strategy and add breaking change notice
|
|
26
|
+
|
|
27
|
+
* Simplify file naming logic with unified approach
|
|
28
|
+
* Use consistent naming strategy for single and multiple documents
|
|
29
|
+
* Add breaking change warning in README for numbered filename dependencies
|
|
30
|
+
* Improve code maintainability with cleaner implementation
|
|
31
|
+
|
|
32
|
+
Addresses PR review feedback for better consistency and user awareness.
|
|
25
33
|
|
|
26
|
-
|
|
34
|
+
# [1.0.0](https://github.com/KenkoGeek/timonel/compare/v0.4.0...v1.0.0) (2025-09-07)
|
|
35
|
+
|
|
36
|
+
### Bug Fixes
|
|
37
|
+
|
|
38
|
+
- **ci:** configure GitHub App token for semantic-release bypass - Use RELEASE_TOKEN from npm-prd environment for checkout and semantic-release ([0d385d1](https://github.com/KenkoGeek/timonel/commit/0d385d1084a45de3ab731094e87196239811e6fb))
|
|
39
|
+
- **ci:** disable body-max-line-length for semantic-release compatibility - Set body-max-line-length to 0 (disabled) to allow long changelog entries - Fixes semantic-release commit validation failures - Maintains other commitlint rules for developer commits ([b215f65](https://github.com/KenkoGeek/timonel/commit/b215f65bccb69a1cfca79084e6a9c96954fb478a))
|
|
40
|
+
- **ci:** disable footer line length limit for semantic-release commits ([d5ae4dc](https://github.com/KenkoGeek/timonel/commit/d5ae4dc83e68f8fade4a8289d1ce4e2bae5046dd))
|
|
41
|
+
- **ci:** disable footer-leading-blank for semantic-release compatibility - Set footer-leading-blank to 0 (disabled) to allow semantic-release footer format ([2f8c6c8](https://github.com/KenkoGeek/timonel/commit/2f8c6c863c6aabd1d3f3d8022b43fefecb02f010))
|
|
42
|
+
- **ci:** replace CodeQL with security check in release validation ([#15](https://github.com/KenkoGeek/timonel/issues/15)) ([b8cecea](https://github.com/KenkoGeek/timonel/commit/b8cecea1eaf0bb6af3e6fd2f6bc38c2fb2c09f4d))
|
|
43
|
+
- **ci:** resolve release workflow issues ([#16](https://github.com/KenkoGeek/timonel/issues/16)) ([ed5dc9b](https://github.com/KenkoGeek/timonel/commit/ed5dc9b3d86b531d4495d4d05dd913340333322c))
|
|
44
|
+
|
|
45
|
+
### Features
|
|
46
|
+
|
|
47
|
+
- add manual release workflow with GitHub Actions ([1035b2e](https://github.com/KenkoGeek/timonel/commit/1035b2e18fbb808e57438353c865ecd129d9e04d))
|
|
48
|
+
- add NetworkPolicy helpers for Zero Trust network security ([#13](https://github.com/KenkoGeek/timonel/issues/13)) ([cee3b58](https://github.com/KenkoGeek/timonel/commit/cee3b5876de839ca3cf16dd6ca6e3b76626392ce))
|
|
49
|
+
- **ci:** add required status checks validation to release workflow ([#14](https://github.com/KenkoGeek/timonel/issues/14)) ([7f8665f](https://github.com/KenkoGeek/timonel/commit/7f8665fa908215cc92a4dbefb7fec00de98464bb))
|
|
50
|
+
- **ci:** implement automated semantic release with conventional commits ([02ce189](https://github.com/KenkoGeek/timonel/commit/02ce18943efd8019168b5f9af29be0140a9e1524))
|
|
51
|
+
- **ci:** implement automated semantic release with conventional commits ([bb94fda](https://github.com/KenkoGeek/timonel/commit/bb94fda3e80bf3e010e7b53bdd1794f88060408a))
|
|
52
|
+
- **core:** add NetworkPolicy helpers for Zero Trust network security ([34ac6bd](https://github.com/KenkoGeek/timonel/commit/34ac6bda3956e5fe326b72e9831bd4bb8bc660da))
|
|
53
|
+
|
|
54
|
+
### Performance Improvements
|
|
27
55
|
|
|
56
|
+
- **ci:** homogenize CI/CD workflows and optimize release pipeline ([#17](https://github.com/KenkoGeek/timonel/issues/17)) ([4622d11](https://github.com/KenkoGeek/timonel/commit/4622d113e5753a5ff69c82a1e3784ecf61c34689))
|
|
28
57
|
|
|
29
58
|
### BREAKING CHANGES
|
|
30
59
|
|
|
31
|
-
|
|
32
|
-
|
|
60
|
+
- **ci:** ESLint configuration migrated to flat config format
|
|
61
|
+
- **ci:** ESLint configuration migrated to flat config format
|
|
33
62
|
|
|
34
63
|
# Changelog
|
|
35
64
|
|
package/README.md
CHANGED
|
@@ -173,6 +173,30 @@ rutter.addPodDisruptionBudget({
|
|
|
173
173
|
selector: { matchLabels: { app: 'my-app' } },
|
|
174
174
|
});
|
|
175
175
|
|
|
176
|
+
// Add one-time Job for database migration
|
|
177
|
+
rutter.addJob({
|
|
178
|
+
name: 'db-migration',
|
|
179
|
+
image: 'migrate:latest',
|
|
180
|
+
command: ['migrate'],
|
|
181
|
+
args: ['up'],
|
|
182
|
+
restartPolicy: 'OnFailure',
|
|
183
|
+
backoffLimit: 3,
|
|
184
|
+
activeDeadlineSeconds: 600,
|
|
185
|
+
ttlSecondsAfterFinished: 86400,
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
// Add scheduled CronJob for backups
|
|
189
|
+
rutter.addCronJob({
|
|
190
|
+
name: 'backup-job',
|
|
191
|
+
schedule: '0 2 * * *', // Daily at 2 AM
|
|
192
|
+
image: 'backup:latest',
|
|
193
|
+
command: ['backup.sh'],
|
|
194
|
+
restartPolicy: 'OnFailure',
|
|
195
|
+
concurrencyPolicy: 'Forbid',
|
|
196
|
+
successfulJobsHistoryLimit: 3,
|
|
197
|
+
failedJobsHistoryLimit: 1,
|
|
198
|
+
});
|
|
199
|
+
|
|
176
200
|
// Add IRSA ServiceAccount for AWS access
|
|
177
201
|
rutter.addAWSIRSAServiceAccount({
|
|
178
202
|
name: 'my-app-irsa',
|
|
@@ -186,6 +210,11 @@ rutter.write('dist/charts/my-app');
|
|
|
186
210
|
|
|
187
211
|
### Custom Manifest Naming
|
|
188
212
|
|
|
213
|
+
> **⚠️ Breaking Change Notice**: Starting from v1.1.0, template files no longer include
|
|
214
|
+
> automatic numbering prefixes (0000-, 0001-, etc.). Files now use descriptive names
|
|
215
|
+
> following Helm best practices. If your scripts or tools depend on numbered filenames,
|
|
216
|
+
> please update them accordingly.
|
|
217
|
+
|
|
189
218
|
Timonel provides flexible options for naming your Kubernetes manifest files:
|
|
190
219
|
|
|
191
220
|
#### Single Manifest File
|
|
@@ -210,9 +239,9 @@ const rutter = new Rutter({
|
|
|
210
239
|
});
|
|
211
240
|
|
|
212
241
|
// Generates:
|
|
213
|
-
// templates/
|
|
214
|
-
// templates/
|
|
215
|
-
// templates/
|
|
242
|
+
// templates/my-app-deployment-web.yaml
|
|
243
|
+
// templates/my-app-service-web.yaml
|
|
244
|
+
// templates/my-app-configmap-config.yaml
|
|
216
245
|
```
|
|
217
246
|
|
|
218
247
|
#### Default Behavior
|
|
@@ -224,9 +253,9 @@ const rutter = new Rutter({
|
|
|
224
253
|
});
|
|
225
254
|
|
|
226
255
|
// Generates:
|
|
227
|
-
// templates/
|
|
228
|
-
// templates/
|
|
229
|
-
// templates/
|
|
256
|
+
// templates/deployment-web.yaml
|
|
257
|
+
// templates/service-web.yaml
|
|
258
|
+
// templates/configmap-config.yaml
|
|
230
259
|
```
|
|
231
260
|
|
|
232
261
|
## Umbrella Charts
|
|
@@ -315,9 +344,13 @@ shared values, and multi-environment support.
|
|
|
315
344
|
(`toString`, `float64`).
|
|
316
345
|
- For numeric fields (ports, replicas), use literal values or template strings with proper casting.
|
|
317
346
|
|
|
318
|
-
##
|
|
347
|
+
## Multi-Cloud Support
|
|
319
348
|
|
|
320
|
-
Timonel provides comprehensive
|
|
349
|
+
Timonel provides comprehensive cloud-specific helpers for major Kubernetes platforms:
|
|
350
|
+
|
|
351
|
+
### AWS Multi-Cloud Support
|
|
352
|
+
|
|
353
|
+
Comprehensive AWS-specific helpers for EKS deployments:
|
|
321
354
|
|
|
322
355
|
### IRSA (IAM Roles for Service Accounts)
|
|
323
356
|
|
|
@@ -429,6 +462,97 @@ rutter.addAWSSecretProviderClass({
|
|
|
429
462
|
});
|
|
430
463
|
```
|
|
431
464
|
|
|
465
|
+
### Azure Multi-Cloud Support
|
|
466
|
+
|
|
467
|
+
Azure-specific helpers for AKS deployments:
|
|
468
|
+
|
|
469
|
+
#### Azure Disk Storage Classes
|
|
470
|
+
|
|
471
|
+
```typescript
|
|
472
|
+
// Premium ZRS disk for production workloads
|
|
473
|
+
rutter.addAzureDiskStorageClass({
|
|
474
|
+
name: 'azure-premium-zrs',
|
|
475
|
+
skuName: 'Premium_ZRS',
|
|
476
|
+
fsType: 'ext4',
|
|
477
|
+
cachingMode: 'ReadWrite',
|
|
478
|
+
allowVolumeExpansion: true,
|
|
479
|
+
volumeBindingMode: 'WaitForFirstConsumer',
|
|
480
|
+
tags: {
|
|
481
|
+
Environment: 'production',
|
|
482
|
+
Application: 'database',
|
|
483
|
+
},
|
|
484
|
+
});
|
|
485
|
+
|
|
486
|
+
// Standard SSD for cost-optimized workloads
|
|
487
|
+
rutter.addAzureDiskStorageClass({
|
|
488
|
+
name: 'azure-standard-ssd',
|
|
489
|
+
skuName: 'StandardSSD_LRS',
|
|
490
|
+
fsType: 'ext4',
|
|
491
|
+
cachingMode: 'ReadOnly',
|
|
492
|
+
});
|
|
493
|
+
|
|
494
|
+
// Ultra SSD for high-performance workloads
|
|
495
|
+
rutter.addAzureDiskStorageClass({
|
|
496
|
+
name: 'azure-ultra-ssd',
|
|
497
|
+
skuName: 'UltraSSD_LRS',
|
|
498
|
+
fsType: 'ext4',
|
|
499
|
+
cachingMode: 'None',
|
|
500
|
+
diskIOPSReadWrite: 2000,
|
|
501
|
+
diskMBpsReadWrite: 200,
|
|
502
|
+
logicalSectorSize: 4096,
|
|
503
|
+
});
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
#### Azure Application Gateway Ingress Controller (AGIC)
|
|
507
|
+
|
|
508
|
+
Comprehensive AGIC support for AKS deployments with advanced features:
|
|
509
|
+
|
|
510
|
+
```typescript
|
|
511
|
+
// AGIC Ingress with SSL and health checks
|
|
512
|
+
rutter.addAzureAGICIngress({
|
|
513
|
+
name: 'app-ingress',
|
|
514
|
+
rules: [
|
|
515
|
+
{
|
|
516
|
+
host: 'app.example.com',
|
|
517
|
+
paths: [
|
|
518
|
+
{
|
|
519
|
+
path: '/',
|
|
520
|
+
pathType: 'Prefix',
|
|
521
|
+
backend: { service: { name: 'app-service', port: { number: 80 } } },
|
|
522
|
+
},
|
|
523
|
+
],
|
|
524
|
+
},
|
|
525
|
+
],
|
|
526
|
+
sslRedirect: true,
|
|
527
|
+
backendProtocol: 'https',
|
|
528
|
+
healthProbePath: '/health',
|
|
529
|
+
healthProbeInterval: 30,
|
|
530
|
+
cookieBasedAffinity: true,
|
|
531
|
+
requestTimeout: 60,
|
|
532
|
+
appgwSslCertificate: 'my-ssl-cert',
|
|
533
|
+
wafPolicyForPath:
|
|
534
|
+
'/subscriptions/sub-id/resourceGroups/rg/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/waf-policy',
|
|
535
|
+
});
|
|
536
|
+
|
|
537
|
+
// Advanced AGIC features
|
|
538
|
+
rutter.addAzureAGICIngress({
|
|
539
|
+
name: 'advanced-ingress',
|
|
540
|
+
rules: [
|
|
541
|
+
/* rules */
|
|
542
|
+
],
|
|
543
|
+
backendPathPrefix: '/api/v1',
|
|
544
|
+
backendHostname: 'internal.example.com',
|
|
545
|
+
usePrivateIp: true,
|
|
546
|
+
overrideFrontendPort: 8080,
|
|
547
|
+
connectionDraining: true,
|
|
548
|
+
connectionDrainingTimeout: 60,
|
|
549
|
+
hostnameExtension: ['api.example.com', 'admin.example.com'],
|
|
550
|
+
appgwTrustedRootCertificate: ['root-cert-1', 'root-cert-2'],
|
|
551
|
+
rewriteRuleSet: 'custom-rewrite-rules',
|
|
552
|
+
rulePriority: 100,
|
|
553
|
+
});
|
|
554
|
+
```
|
|
555
|
+
|
|
432
556
|
## Network Security with NetworkPolicies
|
|
433
557
|
|
|
434
558
|
Timonel provides comprehensive NetworkPolicy helpers for implementing Zero Trust network security
|
|
@@ -691,7 +815,8 @@ Provide `envValues` in the `Rutter` constructor to automatically create
|
|
|
691
815
|
- ✅ Auto-scaling helpers (HPA, VPA, PodDisruptionBudget)
|
|
692
816
|
- ✅ AWS multi-cloud support (EBS, EFS, ALB, IRSA, Secrets Manager, Parameter Store)
|
|
693
817
|
- ✅ Custom manifest naming and file organization
|
|
694
|
-
- Azure multi-cloud support (
|
|
818
|
+
- ✅ Azure multi-cloud support (Azure Disk StorageClass, AGIC)
|
|
819
|
+
- ✅ Job and CronJob helpers for batch workloads
|
|
695
820
|
- GCP multi-cloud support (GKE-specific helpers)
|
|
696
821
|
- Richer CLI (resource generators, diff)
|
|
697
822
|
- Template validation and testing utilities
|
|
@@ -97,7 +97,6 @@ function splitDocs(yamlStr) {
|
|
|
97
97
|
.filter((p) => p.length);
|
|
98
98
|
}
|
|
99
99
|
function writeAssets(outDir, assets) {
|
|
100
|
-
let counter = 0;
|
|
101
100
|
for (const asset of assets) {
|
|
102
101
|
if (asset.singleFile) {
|
|
103
102
|
// Write as a single file without splitting documents
|
|
@@ -109,17 +108,16 @@ function writeAssets(outDir, assets) {
|
|
|
109
108
|
fs.writeFileSync(path.join(outDir, dir, filename), asset.yaml + '\n');
|
|
110
109
|
}
|
|
111
110
|
else {
|
|
112
|
-
// Split documents and create
|
|
111
|
+
// Split documents and create descriptive files following Helm best practices
|
|
113
112
|
const parts = splitDocs(asset.yaml);
|
|
114
|
-
|
|
115
|
-
const filename = `${
|
|
113
|
+
parts.forEach((doc, index) => {
|
|
114
|
+
const filename = `${asset.id}${parts.length > 1 ? `-${index + 1}` : ''}.yaml`;
|
|
116
115
|
const dir = asset.target === 'crds' ? 'crds' : 'templates';
|
|
117
116
|
// eslint-disable-next-line security/detect-non-literal-fs-filename -- Chart writer needs dynamic paths
|
|
118
117
|
fs.mkdirSync(path.join(outDir, dir), { recursive: true });
|
|
119
118
|
// eslint-disable-next-line security/detect-non-literal-fs-filename -- Chart writer needs dynamic paths
|
|
120
119
|
fs.writeFileSync(path.join(outDir, dir, filename), doc + '\n');
|
|
121
|
-
|
|
122
|
-
}
|
|
120
|
+
});
|
|
123
121
|
}
|
|
124
122
|
}
|
|
125
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelmChartWriter.js","sourceRoot":"","sources":["../../src/lib/HelmChartWriter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"HelmChartWriter.js","sourceRoot":"","sources":["../../src/lib/HelmChartWriter.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/Rutter.d.ts
CHANGED
|
@@ -188,6 +188,70 @@ export interface ReplicaSetSpec {
|
|
|
188
188
|
/** Optional annotations on the pod template (useful for reloaders, etc.) */
|
|
189
189
|
podAnnotations?: Record<string, string>;
|
|
190
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
|
+
}
|
|
191
255
|
export interface ServiceSpec {
|
|
192
256
|
name: string;
|
|
193
257
|
ports: Array<{
|
|
@@ -461,7 +525,7 @@ export interface PodDisruptionBudgetSpec {
|
|
|
461
525
|
labels?: Record<string, string>;
|
|
462
526
|
annotations?: Record<string, string>;
|
|
463
527
|
}
|
|
464
|
-
export interface AWSEBSStorageClassSpec {
|
|
528
|
+
export interface AWSEBSStorageClassSpec extends CloudResourceTags {
|
|
465
529
|
name: string;
|
|
466
530
|
volumeType?: 'gp2' | 'gp3' | 'io1' | 'io2' | 'sc1' | 'st1';
|
|
467
531
|
fsType?: 'ext4' | 'xfs';
|
|
@@ -544,7 +608,63 @@ export interface AWSSecretProviderClassSpec {
|
|
|
544
608
|
labels?: Record<string, string>;
|
|
545
609
|
annotations?: Record<string, string>;
|
|
546
610
|
}
|
|
547
|
-
|
|
611
|
+
/**
|
|
612
|
+
* Configuration interface for Azure Disk StorageClass.
|
|
613
|
+
* Defines the parameters for creating an Azure Disk StorageClass in AKS.
|
|
614
|
+
*
|
|
615
|
+
* @see https://learn.microsoft.com/en-us/azure/aks/azure-csi-disk-storage-provision
|
|
616
|
+
*/
|
|
617
|
+
/**
|
|
618
|
+
* Cloud resource tags with basic validation.
|
|
619
|
+
* Provides a consistent interface for tagging resources across cloud providers.
|
|
620
|
+
*/
|
|
621
|
+
export interface CloudResourceTags {
|
|
622
|
+
/** Resource tags as key-value pairs */
|
|
623
|
+
tags?: Record<string, string>;
|
|
624
|
+
}
|
|
625
|
+
export interface AzureDiskStorageClassSpec extends CloudResourceTags {
|
|
626
|
+
/** Name of the StorageClass */
|
|
627
|
+
name: string;
|
|
628
|
+
/** Azure disk SKU to use */
|
|
629
|
+
skuName?: 'Standard_LRS' | 'Premium_LRS' | 'StandardSSD_LRS' | 'PremiumV2_LRS' | 'UltraSSD_LRS' | 'Premium_ZRS' | 'StandardSSD_ZRS';
|
|
630
|
+
/** File system type to use */
|
|
631
|
+
fsType?: 'ext4' | 'ext3' | 'ext2' | 'xfs' | 'btrfs' | 'ntfs';
|
|
632
|
+
/** Host caching mode */
|
|
633
|
+
cachingMode?: 'None' | 'ReadOnly' | 'ReadWrite';
|
|
634
|
+
/** Resource group where disks will be created */
|
|
635
|
+
resourceGroup?: string;
|
|
636
|
+
/** IOPS for the disk (UltraSSD_LRS only) */
|
|
637
|
+
diskIOPSReadWrite?: number;
|
|
638
|
+
/** Throughput in MB/s (UltraSSD_LRS only) */
|
|
639
|
+
diskMBpsReadWrite?: number;
|
|
640
|
+
/** Logical sector size in bytes */
|
|
641
|
+
logicalSectorSize?: 512 | 4096;
|
|
642
|
+
/** ID of the disk encryption set */
|
|
643
|
+
diskEncryptionSetID?: string;
|
|
644
|
+
/** Type of disk encryption */
|
|
645
|
+
diskEncryptionType?: 'EncryptionAtRestWithCustomerKey' | 'EncryptionAtRestWithPlatformAndCustomerKeys';
|
|
646
|
+
/** Enable write accelerator */
|
|
647
|
+
writeAcceleratorEnabled?: boolean;
|
|
648
|
+
/** Network access policy for the disk */
|
|
649
|
+
networkAccessPolicy?: 'AllowAll' | 'DenyAll' | 'AllowPrivate';
|
|
650
|
+
/** ID of the disk access resource */
|
|
651
|
+
diskAccessID?: string;
|
|
652
|
+
/** Enable bursting (Premium SSD only) */
|
|
653
|
+
enableBursting?: boolean;
|
|
654
|
+
/** Maximum number of hosts that can attach to the disk simultaneously */
|
|
655
|
+
maxShares?: number;
|
|
656
|
+
/** Volume reclaim policy */
|
|
657
|
+
reclaimPolicy?: 'Delete' | 'Retain';
|
|
658
|
+
/** Allow volume expansion */
|
|
659
|
+
allowVolumeExpansion?: boolean;
|
|
660
|
+
/** Volume binding mode */
|
|
661
|
+
volumeBindingMode?: 'Immediate' | 'WaitForFirstConsumer';
|
|
662
|
+
/** Labels to apply to the StorageClass */
|
|
663
|
+
labels?: Record<string, string>;
|
|
664
|
+
/** Annotations to apply to the StorageClass */
|
|
665
|
+
annotations?: Record<string, string>;
|
|
666
|
+
}
|
|
667
|
+
export interface AWSALBIngressSpec extends CloudResourceTags {
|
|
548
668
|
name: string;
|
|
549
669
|
rules: IngressRule[];
|
|
550
670
|
tls?: IngressTLS[];
|
|
@@ -562,10 +682,84 @@ export interface AWSALBIngressSpec {
|
|
|
562
682
|
healthCheckTimeoutSeconds?: number;
|
|
563
683
|
healthyThresholdCount?: number;
|
|
564
684
|
unhealthyThresholdCount?: number;
|
|
565
|
-
tags?: Record<string, string>;
|
|
566
685
|
labels?: Record<string, string>;
|
|
567
686
|
annotations?: Record<string, string>;
|
|
568
687
|
}
|
|
688
|
+
/**
|
|
689
|
+
* Configuration interface for Azure Application Gateway Ingress Controller (AGIC).
|
|
690
|
+
* Provides comprehensive support for AGIC annotations and features for AKS deployments.
|
|
691
|
+
*
|
|
692
|
+
* @see https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-annotations
|
|
693
|
+
*/
|
|
694
|
+
export interface AzureAGICIngressSpec {
|
|
695
|
+
/** Name of the Ingress resource */
|
|
696
|
+
name: string;
|
|
697
|
+
/** Ingress rules defining routing configuration */
|
|
698
|
+
rules: IngressRule[];
|
|
699
|
+
/** TLS configuration for HTTPS termination */
|
|
700
|
+
tls?: IngressTLS[];
|
|
701
|
+
/** Backend path prefix to rewrite request paths */
|
|
702
|
+
backendPathPrefix?: string;
|
|
703
|
+
/** Backend hostname for Application Gateway to use when communicating with pods */
|
|
704
|
+
backendHostname?: string;
|
|
705
|
+
/** Backend protocol (http or https) */
|
|
706
|
+
backendProtocol?: 'http' | 'https';
|
|
707
|
+
/** Enable SSL redirect from HTTP to HTTPS */
|
|
708
|
+
sslRedirect?: boolean;
|
|
709
|
+
/** Use private IP address of Application Gateway */
|
|
710
|
+
usePrivateIp?: boolean;
|
|
711
|
+
/** Override frontend port (default: 80 for HTTP, 443 for HTTPS) */
|
|
712
|
+
overrideFrontendPort?: number;
|
|
713
|
+
/** Enable cookie-based session affinity */
|
|
714
|
+
cookieBasedAffinity?: boolean;
|
|
715
|
+
/** Request timeout in seconds */
|
|
716
|
+
requestTimeout?: number;
|
|
717
|
+
/** Enable connection draining */
|
|
718
|
+
connectionDraining?: boolean;
|
|
719
|
+
/** Connection draining timeout in seconds */
|
|
720
|
+
connectionDrainingTimeout?: number;
|
|
721
|
+
/** Custom health probe hostname */
|
|
722
|
+
healthProbeHostname?: string;
|
|
723
|
+
/** Custom health probe port */
|
|
724
|
+
healthProbePort?: number;
|
|
725
|
+
/** Custom health probe path */
|
|
726
|
+
healthProbePath?: string;
|
|
727
|
+
/** Accepted HTTP status codes for health probe */
|
|
728
|
+
healthProbeStatusCodes?: string;
|
|
729
|
+
/** Health probe interval in seconds */
|
|
730
|
+
healthProbeInterval?: number;
|
|
731
|
+
/** Health probe timeout in seconds */
|
|
732
|
+
healthProbeTimeout?: number;
|
|
733
|
+
/** Health probe unhealthy threshold */
|
|
734
|
+
healthProbeUnhealthyThreshold?: number;
|
|
735
|
+
/**
|
|
736
|
+
* Additional hostnames for multisite listener
|
|
737
|
+
* @security Validate hostname format to prevent injection attacks
|
|
738
|
+
*/
|
|
739
|
+
hostnameExtension?: string[];
|
|
740
|
+
/**
|
|
741
|
+
* WAF policy resource ID for path-based protection
|
|
742
|
+
* @security Validate resource ID format to prevent path traversal attacks
|
|
743
|
+
*/
|
|
744
|
+
wafPolicyForPath?: string;
|
|
745
|
+
/**
|
|
746
|
+
* Application Gateway SSL certificate name
|
|
747
|
+
* @security Ensure certificate exists and is properly configured
|
|
748
|
+
*/
|
|
749
|
+
appgwSslCertificate?: string;
|
|
750
|
+
/** Application Gateway SSL profile name */
|
|
751
|
+
appgwSslProfile?: string;
|
|
752
|
+
/** Trusted root certificate names for end-to-end SSL */
|
|
753
|
+
appgwTrustedRootCertificate?: string[];
|
|
754
|
+
/** Rewrite rule set name */
|
|
755
|
+
rewriteRuleSet?: string;
|
|
756
|
+
/** Rule priority for request routing */
|
|
757
|
+
rulePriority?: number;
|
|
758
|
+
/** Labels to apply to the Ingress */
|
|
759
|
+
labels?: Record<string, string>;
|
|
760
|
+
/** Additional annotations to apply to the Ingress */
|
|
761
|
+
annotations?: Record<string, string>;
|
|
762
|
+
}
|
|
569
763
|
export interface VerticalPodAutoscalerSpec {
|
|
570
764
|
name: string;
|
|
571
765
|
targetRef: {
|
|
@@ -677,9 +871,14 @@ export declare class Rutter {
|
|
|
677
871
|
private static readonly LABEL_INSTANCE;
|
|
678
872
|
private static readonly HELPER_NAME;
|
|
679
873
|
private static readonly NETWORKING_API_VERSION;
|
|
874
|
+
private static readonly STORAGE_API_VERSION;
|
|
875
|
+
private static readonly AZURE_DISK_CSI_DRIVER;
|
|
876
|
+
private static readonly AZURE_DISK_PROVISIONER_ANNOTATION;
|
|
680
877
|
addDeployment(spec: DeploymentSpec): ApiObject;
|
|
681
878
|
addService(spec: ServiceSpec): ApiObject;
|
|
682
879
|
addReplicaSet(spec: ReplicaSetSpec): ApiObject;
|
|
880
|
+
addJob(spec: JobSpec): ApiObject;
|
|
881
|
+
addCronJob(spec: CronJobSpec): ApiObject;
|
|
683
882
|
addIngress(spec: IngressSpec): ApiObject;
|
|
684
883
|
addPersistentVolume(spec: PersistentVolumeSpec): ApiObject;
|
|
685
884
|
private optimizePVForCloud;
|
|
@@ -705,8 +904,61 @@ export declare class Rutter {
|
|
|
705
904
|
private addOptionalALBAnnotations;
|
|
706
905
|
private addHealthCheckAnnotations;
|
|
707
906
|
private addTagsAnnotation;
|
|
907
|
+
/**
|
|
908
|
+
* Add Azure Application Gateway Ingress Controller (AGIC) Ingress.
|
|
909
|
+
* Creates an Ingress resource with AGIC-specific annotations for AKS deployments.
|
|
910
|
+
*
|
|
911
|
+
* @param spec - AGIC Ingress specification
|
|
912
|
+
* @returns The created Ingress ApiObject
|
|
913
|
+
*
|
|
914
|
+
* @example
|
|
915
|
+
* ```typescript
|
|
916
|
+
* rutter.addAzureAGICIngress({
|
|
917
|
+
* name: 'app-ingress',
|
|
918
|
+
* rules: [{
|
|
919
|
+
* host: 'app.example.com',
|
|
920
|
+
* paths: [{
|
|
921
|
+
* path: '/',
|
|
922
|
+
* pathType: 'Prefix',
|
|
923
|
+
* backend: { service: { name: 'app-service', port: { number: 80 } } }
|
|
924
|
+
* }]
|
|
925
|
+
* }],
|
|
926
|
+
* sslRedirect: true,
|
|
927
|
+
* backendProtocol: 'https',
|
|
928
|
+
* healthProbePath: '/health'
|
|
929
|
+
* });
|
|
930
|
+
* ```
|
|
931
|
+
*/
|
|
932
|
+
addAzureAGICIngress(spec: AzureAGICIngressSpec): ApiObject;
|
|
933
|
+
private buildAGICAnnotations;
|
|
934
|
+
private addAGICPathAnnotations;
|
|
935
|
+
private addAGICProtocolAnnotations;
|
|
936
|
+
private addAGICHealthProbeAnnotations;
|
|
937
|
+
private addAGICConnectionAnnotations;
|
|
938
|
+
private addAGICSecurityAnnotations;
|
|
939
|
+
private addAGICAdvancedAnnotations;
|
|
708
940
|
addAWSIRSAServiceAccount(spec: AWSIRSAServiceAccountSpec): ApiObject;
|
|
709
941
|
addAWSSecretProviderClass(spec: AWSSecretProviderClassSpec): ApiObject;
|
|
942
|
+
addAzureDiskStorageClass(spec: AzureDiskStorageClassSpec): ApiObject;
|
|
943
|
+
private buildAzureDiskParameters;
|
|
944
|
+
private addOptionalAzureDiskParameters;
|
|
945
|
+
private addAzureDiskEncryptionParameters;
|
|
946
|
+
private addAzureDiskPerformanceParameters;
|
|
947
|
+
private validateAzureDiskNumericParameters;
|
|
948
|
+
private validateAzureDiskIOPS;
|
|
949
|
+
private validateAzureDiskThroughput;
|
|
950
|
+
private validateAzureDiskShares;
|
|
951
|
+
private validateAzureDiskSectorSize;
|
|
952
|
+
/**
|
|
953
|
+
* Format cloud resource tags for provider-specific string format.
|
|
954
|
+
* Provides basic validation and consistent formatting across cloud providers.
|
|
955
|
+
*/
|
|
956
|
+
private formatCloudResourceTags;
|
|
957
|
+
/**
|
|
958
|
+
* Validate cloud resource tags with basic rules.
|
|
959
|
+
* Each cloud provider has specific validation, but these are common basics.
|
|
960
|
+
*/
|
|
961
|
+
private validateCloudResourceTags;
|
|
710
962
|
addNetworkPolicy(spec: NetworkPolicySpec): ApiObject;
|
|
711
963
|
private static readonly EMPTY_POD_SELECTOR;
|
|
712
964
|
/**
|
|
@@ -753,6 +1005,35 @@ export declare class Rutter {
|
|
|
753
1005
|
private validateIngressCIDRs;
|
|
754
1006
|
private validateEgressCIDRs;
|
|
755
1007
|
private validatePeerCIDRs;
|
|
1008
|
+
private validateAGICHealthProbeParams;
|
|
1009
|
+
private validateAGICSecurityParams;
|
|
1010
|
+
private isValidHostname;
|
|
1011
|
+
private validateAGICAnnotationConsistency;
|
|
1012
|
+
private buildPodEnvironment;
|
|
1013
|
+
private buildJobSpec;
|
|
1014
|
+
private buildJobPodTemplate;
|
|
1015
|
+
private buildCronJobSpec;
|
|
1016
|
+
private buildCronJobTemplate;
|
|
1017
|
+
/**
|
|
1018
|
+
* Validate Job specification for security and best practices
|
|
1019
|
+
*/
|
|
1020
|
+
private validateJobSpec;
|
|
1021
|
+
/**
|
|
1022
|
+
* Validate CronJob specification for security and best practices
|
|
1023
|
+
*/
|
|
1024
|
+
private validateCronJobSpec;
|
|
1025
|
+
/**
|
|
1026
|
+
* Validate cron schedule expression
|
|
1027
|
+
*/
|
|
1028
|
+
private validateCronSchedule;
|
|
1029
|
+
/**
|
|
1030
|
+
* Sanitize environment variable names and values
|
|
1031
|
+
*/
|
|
1032
|
+
private sanitizeEnvVar;
|
|
1033
|
+
/**
|
|
1034
|
+
* Get default resource limits for Jobs and CronJobs
|
|
1035
|
+
*/
|
|
1036
|
+
private getDefaultResources;
|
|
756
1037
|
/**
|
|
757
1038
|
* Capture the YAML of an ApiObject or Construct into assets.
|
|
758
1039
|
*/
|