timonel 2.8.0-beta.5 → 2.8.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 +9 -25
- package/README.md +12 -55
- package/dist/cli.d.ts.map +1 -0
- package/dist/{src/cli.js → cli.js} +4 -35
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/{src/lib → lib}/helm.d.ts +234 -4
- package/dist/lib/helm.d.ts.map +1 -0
- package/dist/{src/lib → lib}/helm.js +309 -20
- package/dist/lib/helm.js.map +1 -0
- package/dist/lib/helmChartWriter.d.ts.map +1 -0
- package/dist/{src/lib → lib}/helmChartWriter.js +5 -19
- package/dist/lib/helmChartWriter.js.map +1 -0
- package/dist/{src/lib → lib}/resources/baseResourceProvider.d.ts +1 -1
- package/dist/lib/resources/baseResourceProvider.d.ts.map +1 -0
- package/dist/lib/resources/baseResourceProvider.js.map +1 -0
- package/dist/{src/lib → lib}/resources/cloud/aws/awsResources.d.ts +5 -14
- package/dist/lib/resources/cloud/aws/awsResources.d.ts.map +1 -0
- package/dist/{src/lib → lib}/resources/cloud/aws/awsResources.js +63 -78
- package/dist/lib/resources/cloud/aws/awsResources.js.map +1 -0
- package/dist/lib/resources/cloud/aws/karpenterResources.d.ts.map +1 -0
- package/dist/lib/resources/cloud/aws/karpenterResources.js.map +1 -0
- package/dist/lib/rutter.d.ts +445 -0
- package/dist/lib/rutter.d.ts.map +1 -0
- package/dist/lib/rutter.js +585 -0
- package/dist/lib/rutter.js.map +1 -0
- package/dist/{src/lib → lib}/security.d.ts +2 -72
- package/dist/lib/security.d.ts.map +1 -0
- package/dist/lib/security.js +390 -0
- package/dist/lib/security.js.map +1 -0
- package/dist/lib/umbrella.d.ts.map +1 -0
- package/dist/lib/umbrella.js.map +1 -0
- package/dist/{src/lib → lib}/umbrellaRutter.d.ts +1 -1
- package/dist/lib/umbrellaRutter.d.ts.map +1 -0
- package/dist/lib/umbrellaRutter.js.map +1 -0
- package/dist/{src/lib → lib}/utils/helmHelpers.d.ts +2 -12
- package/dist/lib/utils/helmHelpers.d.ts.map +1 -0
- package/dist/{src/lib → lib}/utils/helmHelpers.js +2 -46
- package/dist/lib/utils/helmHelpers.js.map +1 -0
- package/package.json +3 -4
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js.map +0 -1
- package/dist/src/index.d.ts +0 -23
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -15
- package/dist/src/index.js.map +0 -1
- package/dist/src/lib/constants.d.ts +0 -142
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -167
- package/dist/src/lib/constants.js.map +0 -1
- package/dist/src/lib/helm.d.ts.map +0 -1
- package/dist/src/lib/helm.js.map +0 -1
- package/dist/src/lib/helmChartWriter.d.ts.map +0 -1
- package/dist/src/lib/helmChartWriter.js.map +0 -1
- package/dist/src/lib/resources/autoscaling/autoscalingResources.d.ts +0 -248
- package/dist/src/lib/resources/autoscaling/autoscalingResources.d.ts.map +0 -1
- package/dist/src/lib/resources/autoscaling/autoscalingResources.js +0 -81
- package/dist/src/lib/resources/autoscaling/autoscalingResources.js.map +0 -1
- package/dist/src/lib/resources/baseResourceProvider.d.ts.map +0 -1
- package/dist/src/lib/resources/baseResourceProvider.js.map +0 -1
- package/dist/src/lib/resources/cloud/aws/awsResources.d.ts.map +0 -1
- package/dist/src/lib/resources/cloud/aws/awsResources.js.map +0 -1
- package/dist/src/lib/resources/cloud/aws/karpenterResources.d.ts.map +0 -1
- package/dist/src/lib/resources/cloud/aws/karpenterResources.js.map +0 -1
- package/dist/src/lib/resources/cloud/azure/azureResources.d.ts +0 -169
- package/dist/src/lib/resources/cloud/azure/azureResources.d.ts.map +0 -1
- package/dist/src/lib/resources/cloud/azure/azureResources.js +0 -218
- package/dist/src/lib/resources/cloud/azure/azureResources.js.map +0 -1
- package/dist/src/lib/resources/cloud/gcp/gcpResources.d.ts +0 -164
- package/dist/src/lib/resources/cloud/gcp/gcpResources.d.ts.map +0 -1
- package/dist/src/lib/resources/cloud/gcp/gcpResources.js +0 -192
- package/dist/src/lib/resources/cloud/gcp/gcpResources.js.map +0 -1
- package/dist/src/lib/resources/core/coreResources.d.ts +0 -790
- package/dist/src/lib/resources/core/coreResources.d.ts.map +0 -1
- package/dist/src/lib/resources/core/coreResources.js +0 -1115
- package/dist/src/lib/resources/core/coreResources.js.map +0 -1
- package/dist/src/lib/resources/core/storageResources.d.ts +0 -133
- package/dist/src/lib/resources/core/storageResources.d.ts.map +0 -1
- package/dist/src/lib/resources/core/storageResources.js +0 -120
- package/dist/src/lib/resources/core/storageResources.js.map +0 -1
- package/dist/src/lib/resources/network/networkResources.d.ts +0 -515
- package/dist/src/lib/resources/network/networkResources.d.ts.map +0 -1
- package/dist/src/lib/resources/network/networkResources.js +0 -784
- package/dist/src/lib/resources/network/networkResources.js.map +0 -1
- package/dist/src/lib/resources/security/encryption.d.ts +0 -290
- package/dist/src/lib/resources/security/encryption.d.ts.map +0 -1
- package/dist/src/lib/resources/security/encryption.js +0 -295
- package/dist/src/lib/resources/security/encryption.js.map +0 -1
- package/dist/src/lib/resources/security/index.d.ts +0 -6
- package/dist/src/lib/resources/security/index.d.ts.map +0 -1
- package/dist/src/lib/resources/security/index.js +0 -6
- package/dist/src/lib/resources/security/index.js.map +0 -1
- package/dist/src/lib/resources/validation/validationResources.d.ts +0 -26
- package/dist/src/lib/resources/validation/validationResources.d.ts.map +0 -1
- package/dist/src/lib/resources/validation/validationResources.js +0 -33
- package/dist/src/lib/resources/validation/validationResources.js.map +0 -1
- package/dist/src/lib/rutter.d.ts +0 -1106
- package/dist/src/lib/rutter.d.ts.map +0 -1
- package/dist/src/lib/rutter.js +0 -1295
- package/dist/src/lib/rutter.js.map +0 -1
- package/dist/src/lib/security.d.ts.map +0 -1
- package/dist/src/lib/security.js +0 -569
- package/dist/src/lib/security.js.map +0 -1
- package/dist/src/lib/umbrella.d.ts.map +0 -1
- package/dist/src/lib/umbrella.js.map +0 -1
- package/dist/src/lib/umbrellaRutter.d.ts.map +0 -1
- package/dist/src/lib/umbrellaRutter.js.map +0 -1
- package/dist/src/lib/utils/helmHelpers.d.ts.map +0 -1
- package/dist/src/lib/utils/helmHelpers.js.map +0 -1
- package/dist/src/lib/utils/podTemplates.d.ts +0 -192
- package/dist/src/lib/utils/podTemplates.d.ts.map +0 -1
- package/dist/src/lib/utils/podTemplates.js +0 -331
- package/dist/src/lib/utils/podTemplates.js.map +0 -1
- package/dist/src/lib/utils/resourceNaming.d.ts +0 -57
- package/dist/src/lib/utils/resourceNaming.d.ts.map +0 -1
- package/dist/src/lib/utils/resourceNaming.js +0 -82
- package/dist/src/lib/utils/resourceNaming.js.map +0 -1
- /package/dist/{src/cli.d.ts → cli.d.ts} +0 -0
- /package/dist/{src/lib → lib}/helmChartWriter.d.ts +0 -0
- /package/dist/{src/lib → lib}/resources/baseResourceProvider.js +0 -0
- /package/dist/{src/lib → lib}/resources/cloud/aws/karpenterResources.d.ts +0 -0
- /package/dist/{src/lib → lib}/resources/cloud/aws/karpenterResources.js +0 -0
- /package/dist/{src/lib → lib}/umbrella.d.ts +0 -0
- /package/dist/{src/lib → lib}/umbrella.js +0 -0
- /package/dist/{src/lib → lib}/umbrellaRutter.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rutter.d.ts","sourceRoot":"","sources":["../../src/lib/rutter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,585 @@
|
|
|
1
|
+
import { ApiObject, App, Chart, Testing } from 'cdk8s';
|
|
2
|
+
import YAML from 'yaml';
|
|
3
|
+
import { helm, include } from './helm.js';
|
|
4
|
+
import { HelmChartWriter } from './helmChartWriter.js';
|
|
5
|
+
import { AWSResources } from './resources/cloud/aws/awsResources.js';
|
|
6
|
+
import { KarpenterResources } from './resources/cloud/aws/karpenterResources.js';
|
|
7
|
+
import { generateHelpersTemplate } from './utils/helmHelpers.js';
|
|
8
|
+
/**
|
|
9
|
+
* Rutter class with modular architecture
|
|
10
|
+
* Provides a clean API while delegating to specialized resource providers
|
|
11
|
+
* Maintains full backward compatibility with the original Rutter class
|
|
12
|
+
*
|
|
13
|
+
* @since 2.4.0
|
|
14
|
+
*/
|
|
15
|
+
export class Rutter {
|
|
16
|
+
constructor(props) {
|
|
17
|
+
this.assets = [];
|
|
18
|
+
this.props = props;
|
|
19
|
+
this.meta = props.meta;
|
|
20
|
+
this.defaultValues = props.defaultValues ?? {};
|
|
21
|
+
this.envValues = props.envValues ?? {};
|
|
22
|
+
// Create CDK8s infrastructure
|
|
23
|
+
this.app = new App();
|
|
24
|
+
this.chart = new Chart(this.app, props.meta.name, {
|
|
25
|
+
...props.chartProps,
|
|
26
|
+
...(props.namespace ? { namespace: props.namespace } : {}),
|
|
27
|
+
});
|
|
28
|
+
// Initialize resource providers
|
|
29
|
+
this.awsResources = new AWSResources(this.chart);
|
|
30
|
+
this.karpenterResources = new KarpenterResources(this.chart);
|
|
31
|
+
}
|
|
32
|
+
// AWS Resources
|
|
33
|
+
/**
|
|
34
|
+
* Creates an AWS EBS StorageClass
|
|
35
|
+
* @param spec - EBS StorageClass specification
|
|
36
|
+
* @returns Created StorageClass ApiObject
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* rutter.addAWSEBSStorageClass({
|
|
41
|
+
* name: 'fast-ebs',
|
|
42
|
+
* volumeType: 'gp3',
|
|
43
|
+
* encrypted: true,
|
|
44
|
+
* allowVolumeExpansion: true
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
*/
|
|
50
|
+
addAWSEBSStorageClass(spec) {
|
|
51
|
+
return this.awsResources.addEBSStorageClass(spec);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates an AWS EFS StorageClass
|
|
55
|
+
* @param spec - EFS StorageClass specification
|
|
56
|
+
* @returns Created StorageClass ApiObject
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* rutter.addAWSEFSStorageClass({
|
|
61
|
+
* name: 'efs-storage',
|
|
62
|
+
* fileSystemId: 'fs-12345678',
|
|
63
|
+
* directoryPerms: '0755'
|
|
64
|
+
* });
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @since 1.0.0
|
|
68
|
+
*/
|
|
69
|
+
addAWSEFSStorageClass(spec) {
|
|
70
|
+
return this.awsResources.addEFSStorageClass(spec);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Creates an AWS IRSA ServiceAccount
|
|
74
|
+
* @param spec - IRSA ServiceAccount specification
|
|
75
|
+
* @returns Created ServiceAccount ApiObject
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* rutter.addAWSIRSAServiceAccount({
|
|
80
|
+
* name: 'my-service-account',
|
|
81
|
+
* roleArn: 'arn:aws:iam::ACCOUNT_ID:role/MyRole'
|
|
82
|
+
* });
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @since 1.0.0
|
|
86
|
+
*/
|
|
87
|
+
addAWSIRSAServiceAccount(spec) {
|
|
88
|
+
return this.awsResources.addIRSAServiceAccount(spec);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Creates an AWS ALB Ingress
|
|
92
|
+
* @param spec - ALB Ingress specification
|
|
93
|
+
* @returns Created Ingress ApiObject
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* rutter.addAWSALBIngress({
|
|
98
|
+
* name: 'web-ingress',
|
|
99
|
+
* rules: [{
|
|
100
|
+
* paths: [{
|
|
101
|
+
* path: '/',
|
|
102
|
+
* pathType: 'Prefix',
|
|
103
|
+
* backend: { service: { name: 'web-service', port: { number: 80 } } }
|
|
104
|
+
* }]
|
|
105
|
+
* }],
|
|
106
|
+
* scheme: 'internet-facing'
|
|
107
|
+
* });
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* @since 1.0.0
|
|
111
|
+
*/
|
|
112
|
+
addAWSALBIngress(spec) {
|
|
113
|
+
return this.awsResources.addALBIngress(spec);
|
|
114
|
+
}
|
|
115
|
+
// AWS Karpenter Resources
|
|
116
|
+
/**
|
|
117
|
+
* Creates a Karpenter NodePool resource
|
|
118
|
+
* @param spec - NodePool specification
|
|
119
|
+
* @returns Created NodePool ApiObject
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* rutter.addKarpenterNodePool({
|
|
124
|
+
* name: 'default-nodepool',
|
|
125
|
+
* template: {
|
|
126
|
+
* spec: {
|
|
127
|
+
* nodeClassRef: {
|
|
128
|
+
* apiVersion: 'karpenter.k8s.aws/v1beta1',
|
|
129
|
+
* kind: 'EC2NodeClass',
|
|
130
|
+
* name: 'default'
|
|
131
|
+
* }
|
|
132
|
+
* }
|
|
133
|
+
* }
|
|
134
|
+
* });
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
137
|
+
* @since 2.7.0
|
|
138
|
+
*/
|
|
139
|
+
addKarpenterNodePool(spec) {
|
|
140
|
+
return this.karpenterResources.addKarpenterNodePool(spec);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Creates a Karpenter NodeClaim resource
|
|
144
|
+
* @param spec - NodeClaim specification
|
|
145
|
+
* @returns Created NodeClaim ApiObject
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* rutter.addKarpenterNodeClaim({
|
|
150
|
+
* name: 'my-node-claim',
|
|
151
|
+
* nodeClassRef: {
|
|
152
|
+
* apiVersion: 'karpenter.k8s.aws/v1beta1',
|
|
153
|
+
* kind: 'EC2NodeClass',
|
|
154
|
+
* name: 'default'
|
|
155
|
+
* }
|
|
156
|
+
* });
|
|
157
|
+
* ```
|
|
158
|
+
*
|
|
159
|
+
* @since 2.7.0
|
|
160
|
+
*/
|
|
161
|
+
addKarpenterNodeClaim(spec) {
|
|
162
|
+
return this.karpenterResources.addKarpenterNodeClaim(spec);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Creates a Karpenter EC2NodeClass resource
|
|
166
|
+
* @param spec - EC2NodeClass specification
|
|
167
|
+
* @returns Created EC2NodeClass ApiObject
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```typescript
|
|
171
|
+
* rutter.addKarpenterEC2NodeClass({
|
|
172
|
+
* name: 'default',
|
|
173
|
+
* amiFamily: 'AL2',
|
|
174
|
+
* subnetSelectorTerms: [{ tags: { 'karpenter.sh/discovery': 'my-cluster' } }],
|
|
175
|
+
* securityGroupSelectorTerms: [{ tags: { 'karpenter.sh/discovery': 'my-cluster' } }]
|
|
176
|
+
* });
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* @since 2.7.0
|
|
180
|
+
*/
|
|
181
|
+
addKarpenterEC2NodeClass(spec) {
|
|
182
|
+
return this.karpenterResources.addKarpenterEC2NodeClass(spec);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Creates a Karpenter NodePool with optimized disruption settings for cost efficiency
|
|
186
|
+
* @param spec - NodePool specification with disruption optimization
|
|
187
|
+
* @returns Created NodePool ApiObject
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* ```typescript
|
|
191
|
+
* rutter.addKarpenterNodePoolWithDisruption({
|
|
192
|
+
* name: 'cost-optimized',
|
|
193
|
+
* nodeClassRef: {
|
|
194
|
+
* apiVersion: 'karpenter.k8s.aws/v1beta1',
|
|
195
|
+
* kind: 'EC2NodeClass',
|
|
196
|
+
* name: 'default'
|
|
197
|
+
* },
|
|
198
|
+
* consolidationPolicy: 'WhenEmptyOrUnderutilized',
|
|
199
|
+
* consolidateAfter: '30s',
|
|
200
|
+
* expireAfter: '24h',
|
|
201
|
+
* disruptionBudgets: [
|
|
202
|
+
* { nodes: '20%' },
|
|
203
|
+
* { nodes: '0', schedule: '0 9 * * 1-5', duration: '8h' }
|
|
204
|
+
* ]
|
|
205
|
+
* });
|
|
206
|
+
* ```
|
|
207
|
+
*
|
|
208
|
+
* @since 2.7.1
|
|
209
|
+
*/
|
|
210
|
+
addKarpenterNodePoolWithDisruption(spec) {
|
|
211
|
+
return this.karpenterResources.addKarpenterNodePoolWithDisruption(spec);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Creates a Karpenter NodePool with scheduling constraints and priorities
|
|
215
|
+
* @param spec - NodePool specification with scheduling optimization
|
|
216
|
+
* @returns Created NodePool ApiObject
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```typescript
|
|
220
|
+
* rutter.addKarpenterNodePoolWithScheduling({
|
|
221
|
+
* name: 'gpu-workloads',
|
|
222
|
+
* nodeClassRef: {
|
|
223
|
+
* apiVersion: 'karpenter.k8s.aws/v1beta1',
|
|
224
|
+
* kind: 'EC2NodeClass',
|
|
225
|
+
* name: 'gpu-nodeclass'
|
|
226
|
+
* },
|
|
227
|
+
* requirements: [
|
|
228
|
+
* { key: 'node.kubernetes.io/instance-type', operator: 'In', values: ['g4dn.xlarge', 'g4dn.2xlarge'] }
|
|
229
|
+
* ],
|
|
230
|
+
* taints: [
|
|
231
|
+
* { key: 'nvidia.com/gpu', effect: 'NoSchedule' }
|
|
232
|
+
* ],
|
|
233
|
+
* terminationGracePeriod: '60s',
|
|
234
|
+
* weight: 100
|
|
235
|
+
* });
|
|
236
|
+
* ```
|
|
237
|
+
*
|
|
238
|
+
* @since 2.7.1
|
|
239
|
+
*/
|
|
240
|
+
addKarpenterNodePoolWithScheduling(spec) {
|
|
241
|
+
return this.karpenterResources.addKarpenterNodePoolWithScheduling(spec);
|
|
242
|
+
}
|
|
243
|
+
// AWS ECR ServiceAccount
|
|
244
|
+
/**
|
|
245
|
+
* Creates a ServiceAccount with ECR access annotations
|
|
246
|
+
* @param spec - ECR ServiceAccount specification
|
|
247
|
+
* @returns Created ServiceAccount ApiObject
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```typescript
|
|
251
|
+
* rutter.addAWSECRServiceAccount({
|
|
252
|
+
* name: 'ecr-service-account',
|
|
253
|
+
* roleArn: 'arn:aws:iam::ACCOUNT_ID:role/ECRAccessRole'
|
|
254
|
+
* });
|
|
255
|
+
* ```
|
|
256
|
+
*
|
|
257
|
+
* @since 2.7.0
|
|
258
|
+
*/
|
|
259
|
+
addAWSECRServiceAccount(spec) {
|
|
260
|
+
return this.awsResources.addECRServiceAccount(spec);
|
|
261
|
+
}
|
|
262
|
+
// Utility methods
|
|
263
|
+
/**
|
|
264
|
+
* Adds a Kubernetes manifest to the chart using CDK8S
|
|
265
|
+
*
|
|
266
|
+
* This method allows you to add any Kubernetes manifest (CRDs, custom resources, etc.)
|
|
267
|
+
* either as YAML strings or as objects. The manifest will be processed using CDK8S
|
|
268
|
+
* for better type safety and validation.
|
|
269
|
+
*
|
|
270
|
+
* @param yamlOrObject - Kubernetes manifest as YAML string or object
|
|
271
|
+
* @param id - Unique identifier for the manifest (required for multiple manifests)
|
|
272
|
+
*
|
|
273
|
+
* @example
|
|
274
|
+
* ```typescript
|
|
275
|
+
* // Using YAML string for CRD
|
|
276
|
+
* rutter.addManifest(`
|
|
277
|
+
* apiVersion: apiextensions.k8s.io/v1
|
|
278
|
+
* kind: CustomResourceDefinition
|
|
279
|
+
* metadata:
|
|
280
|
+
* name: example.com
|
|
281
|
+
* spec:
|
|
282
|
+
* group: example.com
|
|
283
|
+
* versions: []
|
|
284
|
+
* `, 'my-crd');
|
|
285
|
+
*
|
|
286
|
+
* // Using object for any Kubernetes resource
|
|
287
|
+
* rutter.addManifest({
|
|
288
|
+
* apiVersion: 'v1',
|
|
289
|
+
* kind: 'ConfigMap',
|
|
290
|
+
* metadata: { name: 'my-config' },
|
|
291
|
+
* data: { key: 'value' }
|
|
292
|
+
* }, 'my-configmap');
|
|
293
|
+
* ```
|
|
294
|
+
*
|
|
295
|
+
* @since 3.0.0
|
|
296
|
+
* @note Consider using cdk8s-plus constructs for better type safety when available
|
|
297
|
+
*/
|
|
298
|
+
addManifest(yamlOrObject, id) {
|
|
299
|
+
let manifestObject;
|
|
300
|
+
if (typeof yamlOrObject === 'string') {
|
|
301
|
+
// Parse YAML string to object
|
|
302
|
+
try {
|
|
303
|
+
manifestObject = YAML.parse(yamlOrObject);
|
|
304
|
+
}
|
|
305
|
+
catch (error) {
|
|
306
|
+
throw new Error(`Invalid YAML provided to addManifest(): ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
else if (typeof yamlOrObject === 'object' && yamlOrObject !== null) {
|
|
310
|
+
// Use object directly
|
|
311
|
+
manifestObject = yamlOrObject;
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
throw new Error('addManifest() requires either a YAML string or an object');
|
|
315
|
+
}
|
|
316
|
+
// Validate basic Kubernetes manifest structure
|
|
317
|
+
this.validateManifestStructure(manifestObject);
|
|
318
|
+
// Create CDK8S ApiObject from the manifest
|
|
319
|
+
return new ApiObject(this.chart, id, {
|
|
320
|
+
apiVersion: manifestObject['apiVersion'],
|
|
321
|
+
kind: manifestObject['kind'],
|
|
322
|
+
metadata: manifestObject['metadata'],
|
|
323
|
+
spec: manifestObject['spec'],
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Adds a Kubernetes manifest wrapped in a Helm conditional
|
|
328
|
+
*
|
|
329
|
+
* This method creates a manifest that will only be rendered if the specified
|
|
330
|
+
* condition evaluates to true. The condition is checked against .Values in Helm.
|
|
331
|
+
*
|
|
332
|
+
* @param manifestObject - JavaScript object representing the Kubernetes manifest
|
|
333
|
+
* @param condition - Path to the condition value in .Values (e.g., 'createNamespace')
|
|
334
|
+
* @param id - Unique identifier for this manifest within the chart
|
|
335
|
+
* @returns The created ApiObject instance
|
|
336
|
+
* @throws {Error} If the manifest structure is incorrect or condition path is invalid
|
|
337
|
+
*
|
|
338
|
+
* @example
|
|
339
|
+
* ```typescript
|
|
340
|
+
* // Add a namespace that's only created if .Values.createNamespace is true
|
|
341
|
+
* rutter.addConditionalManifest(
|
|
342
|
+
* {
|
|
343
|
+
* apiVersion: 'v1',
|
|
344
|
+
* kind: 'Namespace',
|
|
345
|
+
* metadata: {
|
|
346
|
+
* name: valuesRef('namespace'),
|
|
347
|
+
* labels: {
|
|
348
|
+
* environment: conditionalRef('environment', 'environment')
|
|
349
|
+
* }
|
|
350
|
+
* }
|
|
351
|
+
* },
|
|
352
|
+
* 'createNamespace',
|
|
353
|
+
* 'namespace'
|
|
354
|
+
* );
|
|
355
|
+
* ```
|
|
356
|
+
*
|
|
357
|
+
* @since 2.7.4
|
|
358
|
+
*/
|
|
359
|
+
addConditionalManifest(manifestObject, condition, id) {
|
|
360
|
+
// Validate condition path
|
|
361
|
+
if (!condition || typeof condition !== 'string') {
|
|
362
|
+
throw new Error('Condition must be a non-empty string');
|
|
363
|
+
}
|
|
364
|
+
// Validate basic Kubernetes manifest structure
|
|
365
|
+
this.validateManifestStructure(manifestObject);
|
|
366
|
+
// Store the manifest as a conditional asset that will be processed during write
|
|
367
|
+
const conditionalAsset = {
|
|
368
|
+
id,
|
|
369
|
+
yaml: `{{- if .Values.${condition} }}\n${YAML.stringify(manifestObject)}{{- end }}`,
|
|
370
|
+
target: 'templates',
|
|
371
|
+
};
|
|
372
|
+
this.assets.push(conditionalAsset);
|
|
373
|
+
// Create a placeholder CDK8S ApiObject for consistency
|
|
374
|
+
return new ApiObject(this.chart, id, {
|
|
375
|
+
apiVersion: manifestObject['apiVersion'],
|
|
376
|
+
kind: manifestObject['kind'],
|
|
377
|
+
metadata: {
|
|
378
|
+
...(manifestObject['metadata'] || {}),
|
|
379
|
+
annotations: {
|
|
380
|
+
...(manifestObject['metadata']?.['annotations'] || {}),
|
|
381
|
+
'timonel.sh/conditional': condition,
|
|
382
|
+
},
|
|
383
|
+
},
|
|
384
|
+
spec: manifestObject['spec'],
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Validates the structure of a Kubernetes manifest object
|
|
389
|
+
* @param manifest - The manifest object to validate
|
|
390
|
+
* @private
|
|
391
|
+
* @since 3.0.0
|
|
392
|
+
*/
|
|
393
|
+
validateManifestStructure(manifest) {
|
|
394
|
+
if (!manifest['apiVersion'] || typeof manifest['apiVersion'] !== 'string') {
|
|
395
|
+
throw new Error('Kubernetes manifest must have a valid apiVersion');
|
|
396
|
+
}
|
|
397
|
+
if (!manifest['kind'] || typeof manifest['kind'] !== 'string') {
|
|
398
|
+
throw new Error('Kubernetes manifest must have a valid kind');
|
|
399
|
+
}
|
|
400
|
+
if (!manifest['metadata'] ||
|
|
401
|
+
typeof manifest['metadata'] !== 'object' ||
|
|
402
|
+
manifest['metadata'] === null) {
|
|
403
|
+
throw new Error('Kubernetes manifest must have valid metadata');
|
|
404
|
+
}
|
|
405
|
+
const metadata = manifest['metadata'];
|
|
406
|
+
if (!metadata['name'] || typeof metadata['name'] !== 'string') {
|
|
407
|
+
throw new Error('Kubernetes manifest metadata must have a valid name');
|
|
408
|
+
}
|
|
409
|
+
// Additional validation for specific resource types
|
|
410
|
+
const kind = manifest['kind'];
|
|
411
|
+
if (kind === 'CustomResourceDefinition') {
|
|
412
|
+
if (!manifest['spec'] || typeof manifest['spec'] !== 'object' || manifest['spec'] === null) {
|
|
413
|
+
throw new Error('CustomResourceDefinition must have a valid spec');
|
|
414
|
+
}
|
|
415
|
+
const spec = manifest['spec'];
|
|
416
|
+
if (!spec['group'] || typeof spec['group'] !== 'string') {
|
|
417
|
+
throw new Error('CustomResourceDefinition spec must have a valid group');
|
|
418
|
+
}
|
|
419
|
+
if (!Array.isArray(spec['versions']) || spec['versions'].length === 0) {
|
|
420
|
+
throw new Error('CustomResourceDefinition must have at least one version in spec.versions');
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Gets chart metadata
|
|
426
|
+
* @returns Chart metadata
|
|
427
|
+
*
|
|
428
|
+
* @since 1.0.0
|
|
429
|
+
*/
|
|
430
|
+
getMeta() {
|
|
431
|
+
return { ...this.meta };
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Gets default values
|
|
435
|
+
* @returns Default values object
|
|
436
|
+
*
|
|
437
|
+
* @since 1.0.0
|
|
438
|
+
*/
|
|
439
|
+
getDefaultValues() {
|
|
440
|
+
return { ...this.defaultValues };
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Gets environment-specific values
|
|
444
|
+
* @returns Environment values object
|
|
445
|
+
*
|
|
446
|
+
* @since 1.0.0
|
|
447
|
+
*/
|
|
448
|
+
getEnvValues() {
|
|
449
|
+
return { ...this.envValues };
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Gets all assets (CRDs, etc.)
|
|
453
|
+
* @returns Array of assets
|
|
454
|
+
*
|
|
455
|
+
* @since 1.0.0
|
|
456
|
+
*/
|
|
457
|
+
getAssets() {
|
|
458
|
+
return [...this.assets];
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Converts the chart to SynthAsset array for HelmChartWriter
|
|
462
|
+
* @returns Array of synthesized assets
|
|
463
|
+
*
|
|
464
|
+
* @since 2.4.0
|
|
465
|
+
*/
|
|
466
|
+
toSynthArray() {
|
|
467
|
+
// Get ApiObject IDs before synthesis
|
|
468
|
+
const apiObjectIds = [];
|
|
469
|
+
for (const child of this.chart.node.children) {
|
|
470
|
+
if (child instanceof ApiObject) {
|
|
471
|
+
apiObjectIds.push(child.node.id);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
// Use cdk8s Testing.synth to obtain manifest objects
|
|
475
|
+
const manifestObjs = Testing.synth(this.chart);
|
|
476
|
+
// Enforce common labels best-practice on all rendered objects
|
|
477
|
+
const enriched = manifestObjs.map((obj) => {
|
|
478
|
+
if (obj && typeof obj === 'object') {
|
|
479
|
+
const o = obj;
|
|
480
|
+
o.metadata = o.metadata ?? {};
|
|
481
|
+
o.metadata.labels = o.metadata.labels ?? {};
|
|
482
|
+
const labels = o.metadata.labels;
|
|
483
|
+
const defaults = {
|
|
484
|
+
'helm.sh/chart': '{{ .Chart.Name }}-{{ .Chart.Version }}',
|
|
485
|
+
'app.kubernetes.io/name': include(Rutter.HELPER_NAME),
|
|
486
|
+
'app.kubernetes.io/instance': helm.releaseName,
|
|
487
|
+
'app.kubernetes.io/version': helm.chartVersion,
|
|
488
|
+
'app.kubernetes.io/managed-by': '{{ .Release.Service }}',
|
|
489
|
+
'app.kubernetes.io/part-of': helm.chartName,
|
|
490
|
+
};
|
|
491
|
+
// Apply defaults only if not already set
|
|
492
|
+
for (const [key, value] of Object.entries(defaults)) {
|
|
493
|
+
if (!(key in labels)) {
|
|
494
|
+
// eslint-disable-next-line security/detect-object-injection -- Safe: controlled label assignment
|
|
495
|
+
labels[key] = value;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
return obj;
|
|
500
|
+
});
|
|
501
|
+
const synthAssets = [];
|
|
502
|
+
if (this.props.singleManifestFile) {
|
|
503
|
+
// Combine all resources into single manifest
|
|
504
|
+
const combinedYaml = enriched
|
|
505
|
+
.map((obj) => this.processHelmTemplates(YAML.stringify(obj).trim()))
|
|
506
|
+
.filter(Boolean)
|
|
507
|
+
.join('\n---\n');
|
|
508
|
+
const manifestId = this.props.manifestPrefix ?? 'manifests';
|
|
509
|
+
synthAssets.push({ id: manifestId, yaml: combinedYaml });
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
// Create separate files for each resource (default behavior)
|
|
513
|
+
enriched.forEach((obj, index) => {
|
|
514
|
+
const yaml = this.processHelmTemplates(YAML.stringify(obj).trim());
|
|
515
|
+
if (yaml) {
|
|
516
|
+
// Use descriptive name from ApiObject ID if available, otherwise fallback to generic name
|
|
517
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
518
|
+
const apiObjectId = apiObjectIds[index];
|
|
519
|
+
const manifestId = apiObjectId || `manifest-${index + 1}`;
|
|
520
|
+
synthAssets.push({ id: manifestId, yaml });
|
|
521
|
+
}
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
// Add any additional assets (CRDs, etc.)
|
|
525
|
+
this.assets.forEach((asset) => {
|
|
526
|
+
synthAssets.push({ id: asset.id, yaml: asset.yaml });
|
|
527
|
+
});
|
|
528
|
+
return synthAssets;
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Process YAML content to remove quotes from Helm templates
|
|
532
|
+
* This fixes the issue where YAML.stringify adds quotes around Helm template expressions
|
|
533
|
+
* Removes quotes from all Helm template expressions
|
|
534
|
+
*/
|
|
535
|
+
processHelmTemplates(yaml) {
|
|
536
|
+
// Remove quotes from Helm template expressions
|
|
537
|
+
// Match patterns like "{{ .Values.replicas | int }}", "{{ .Release.Name }}", etc.
|
|
538
|
+
// Handle both key-value pairs and standalone values
|
|
539
|
+
return yaml
|
|
540
|
+
.replace(/": "\{\{([^}]+)\}\}"/g, ': {{ $1 }}')
|
|
541
|
+
.replace(/: "\{\{([^}]+)\}\}"/g, ': {{ $1 }}')
|
|
542
|
+
.replace(/"\{\{([^}]+)\}\}"/g, '{{ $1 }}')
|
|
543
|
+
.replace(/": "\.nan"/g, ': .nan');
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Writes the Helm chart to the specified output directory
|
|
547
|
+
* @param outDir - Output directory path
|
|
548
|
+
*
|
|
549
|
+
* @since 1.0.0
|
|
550
|
+
*/
|
|
551
|
+
write(outDir) {
|
|
552
|
+
// Generate helpers template
|
|
553
|
+
let helpersContent;
|
|
554
|
+
if (this.props.helpersTpl) {
|
|
555
|
+
if (typeof this.props.helpersTpl === 'string') {
|
|
556
|
+
helpersContent = this.props.helpersTpl;
|
|
557
|
+
}
|
|
558
|
+
else {
|
|
559
|
+
helpersContent = this.props.helpersTpl
|
|
560
|
+
.map((helper) => `{{/*
|
|
561
|
+
${helper.name}
|
|
562
|
+
*/}}
|
|
563
|
+
{{- define "${helper.name}" -}}
|
|
564
|
+
${helper.template}
|
|
565
|
+
{{- end }}`)
|
|
566
|
+
.join('\n\n');
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
else {
|
|
570
|
+
// Auto-generate standard helpers
|
|
571
|
+
helpersContent = generateHelpersTemplate(this.props.cloudProvider);
|
|
572
|
+
}
|
|
573
|
+
HelmChartWriter.write({
|
|
574
|
+
outDir,
|
|
575
|
+
meta: this.meta,
|
|
576
|
+
defaultValues: this.defaultValues,
|
|
577
|
+
envValues: this.envValues,
|
|
578
|
+
assets: this.toSynthArray(),
|
|
579
|
+
helpersTpl: helpersContent,
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
// Constants for labels
|
|
584
|
+
Rutter.HELPER_NAME = 'chart.name';
|
|
585
|
+
//# sourceMappingURL=rutter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rutter.js","sourceRoot":"","sources":["../../src/lib/rutter.ts"],"names":[],"mappings":"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"}
|