timonel 2.7.2 → 2.8.0-beta.1
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 +25 -0
- package/dist/cli.js +148 -84
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/helmChartWriter.js +4 -2
- package/dist/lib/helmChartWriter.js.map +1 -1
- package/dist/lib/resources/network/networkResources.d.ts +80 -7
- package/dist/lib/resources/network/networkResources.d.ts.map +1 -1
- package/dist/lib/resources/network/networkResources.js +184 -3
- package/dist/lib/resources/network/networkResources.js.map +1 -1
- package/dist/lib/rutter.d.ts +87 -1
- package/dist/lib/rutter.d.ts.map +1 -1
- package/dist/lib/rutter.js +120 -8
- package/dist/lib/rutter.js.map +1 -1
- package/package.json +3 -1
|
@@ -61,7 +61,22 @@ export interface NetworkPolicySpec {
|
|
|
61
61
|
annotations?: Record<string, string>;
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
|
-
* Ingress
|
|
64
|
+
* TLS configuration for Ingress
|
|
65
|
+
* @since 2.8.0
|
|
66
|
+
*/
|
|
67
|
+
export interface IngressTLSConfig {
|
|
68
|
+
/** Hosts covered by the TLS certificate */
|
|
69
|
+
hosts?: string[];
|
|
70
|
+
/** Name of the secret containing the TLS certificate and key */
|
|
71
|
+
secretName?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Environment types for Ingress security validation
|
|
75
|
+
* @since 2.8.0
|
|
76
|
+
*/
|
|
77
|
+
export type IngressEnvironment = 'development' | 'staging' | 'production';
|
|
78
|
+
/**
|
|
79
|
+
* Ingress specification with enhanced TLS validation and security defaults
|
|
65
80
|
* @since 2.7.0
|
|
66
81
|
*/
|
|
67
82
|
export interface IngressSpec {
|
|
@@ -69,11 +84,8 @@ export interface IngressSpec {
|
|
|
69
84
|
name: string;
|
|
70
85
|
/** Ingress class name */
|
|
71
86
|
ingressClassName?: string;
|
|
72
|
-
/** TLS configuration */
|
|
73
|
-
tls?:
|
|
74
|
-
hosts?: string[];
|
|
75
|
-
secretName?: string;
|
|
76
|
-
}>;
|
|
87
|
+
/** TLS configuration with validation */
|
|
88
|
+
tls?: IngressTLSConfig[];
|
|
77
89
|
/** Ingress rules */
|
|
78
90
|
rules?: Array<{
|
|
79
91
|
host?: string;
|
|
@@ -93,6 +105,12 @@ export interface IngressSpec {
|
|
|
93
105
|
}>;
|
|
94
106
|
};
|
|
95
107
|
}>;
|
|
108
|
+
/** Environment for security validation (production requires TLS) */
|
|
109
|
+
environment?: IngressEnvironment;
|
|
110
|
+
/** Force TLS requirement regardless of environment */
|
|
111
|
+
requireTLS?: boolean;
|
|
112
|
+
/** Automatically redirect HTTP to HTTPS */
|
|
113
|
+
forceSSLRedirect?: boolean;
|
|
96
114
|
/** Resource labels */
|
|
97
115
|
labels?: Record<string, string>;
|
|
98
116
|
/** Resource annotations */
|
|
@@ -104,6 +122,8 @@ export interface IngressSpec {
|
|
|
104
122
|
* @since 2.7.0
|
|
105
123
|
*/
|
|
106
124
|
export declare class NetworkResources extends BaseResourceProvider {
|
|
125
|
+
private static readonly TLS_REQUIRED_ERROR_MESSAGE;
|
|
126
|
+
private static readonly NETWORKING_API_VERSION;
|
|
107
127
|
/**
|
|
108
128
|
* Creates a NetworkPolicy resource
|
|
109
129
|
* @param spec - NetworkPolicy specification
|
|
@@ -146,9 +166,62 @@ export declare class NetworkResources extends BaseResourceProvider {
|
|
|
146
166
|
*/
|
|
147
167
|
addAllowFromNamespaceNetworkPolicy(name: string, podSelector: NetworkPolicySpec['podSelector'], fromNamespaceSelector: NetworkPolicyRule['namespaceSelector'], ports?: NetworkPolicyRule['ports'], labels?: Record<string, string>, annotations?: Record<string, string>): ApiObject;
|
|
148
168
|
/**
|
|
149
|
-
*
|
|
169
|
+
* Validates TLS configuration for security compliance
|
|
170
|
+
* @param spec - Ingress specification to validate
|
|
171
|
+
* @throws Error if TLS validation fails
|
|
172
|
+
* @since 2.8.0
|
|
173
|
+
*/
|
|
174
|
+
private validateIngressSecurity;
|
|
175
|
+
/**
|
|
176
|
+
* Validates hostname format (supports wildcards) with ReDoS protection
|
|
177
|
+
* @param hostname - Hostname to validate
|
|
178
|
+
* @returns True if hostname is valid
|
|
179
|
+
* @since 2.8.0
|
|
180
|
+
*/
|
|
181
|
+
private isValidHostname;
|
|
182
|
+
/**
|
|
183
|
+
* Applies security defaults to Ingress annotations
|
|
184
|
+
* @param spec - Ingress specification
|
|
185
|
+
* @returns Enhanced annotations with security defaults
|
|
186
|
+
* @since 2.8.0
|
|
187
|
+
*/
|
|
188
|
+
private applySecurityDefaults;
|
|
189
|
+
/**
|
|
190
|
+
* Creates a secure Ingress with TLS validation and environment-aware defaults
|
|
191
|
+
* @param spec - Enhanced Ingress specification
|
|
192
|
+
* @returns Created Ingress ApiObject
|
|
193
|
+
* @example
|
|
194
|
+
* ```typescript
|
|
195
|
+
* // Production Ingress with mandatory TLS
|
|
196
|
+
* networkResources.addSecureIngress({
|
|
197
|
+
* name: 'web-ingress',
|
|
198
|
+
* environment: 'production',
|
|
199
|
+
* tls: [{
|
|
200
|
+
* hosts: ['example.com'],
|
|
201
|
+
* secretName: 'example-tls'
|
|
202
|
+
* }],
|
|
203
|
+
* rules: [{
|
|
204
|
+
* host: 'example.com',
|
|
205
|
+
* http: {
|
|
206
|
+
* paths: [{
|
|
207
|
+
* path: '/',
|
|
208
|
+
* pathType: 'Prefix',
|
|
209
|
+
* backend: {
|
|
210
|
+
* service: { name: 'web-service', port: { number: 80 } }
|
|
211
|
+
* }
|
|
212
|
+
* }]
|
|
213
|
+
* }
|
|
214
|
+
* }]
|
|
215
|
+
* });
|
|
216
|
+
* ```
|
|
217
|
+
* @since 2.8.0
|
|
218
|
+
*/
|
|
219
|
+
addSecureIngress(spec: IngressSpec): ApiObject;
|
|
220
|
+
/**
|
|
221
|
+
* Creates an Ingress resource with optional TLS validation
|
|
150
222
|
* @param spec - Ingress specification
|
|
151
223
|
* @returns Created Ingress ApiObject
|
|
224
|
+
* @deprecated Use addSecureIngress for enhanced security validation
|
|
152
225
|
* @since 2.7.0
|
|
153
226
|
*/
|
|
154
227
|
addIngress(spec: IngressSpec): ApiObject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkResources.d.ts","sourceRoot":"","sources":["../../../../src/lib/resources/network/networkResources.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,qBAAqB;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;KACnC,CAAC,CAAC;IACH,oCAAoC;IACpC,WAAW,CAAC,EAAE;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,gBAAgB,CAAC,EAAE,KAAK,CAAC;YACvB,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC;YACrD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC,CAAC;KACJ,CAAC;IACF,gDAAgD;IAChD,iBAAiB,CAAC,EAAE;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,gBAAgB,CAAC,EAAE,KAAK,CAAC;YACvB,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC;YACrD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC,CAAC;KACJ,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,WAAW,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,gBAAgB,CAAC,EAAE,KAAK,CAAC;YACvB,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC;YACrD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC,CAAC;KACJ,CAAC;IACF,4BAA4B;IAC5B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC1C,oBAAoB;IACpB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,mBAAmB;IACnB,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"networkResources.d.ts","sourceRoot":"","sources":["../../../../src/lib/resources/network/networkResources.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ export class NetworkResources extends BaseResourceProvider {
|
|
|
28
28
|
if (spec.egress) {
|
|
29
29
|
policySpec['egress'] = spec.egress;
|
|
30
30
|
}
|
|
31
|
-
return this.createApiObject(spec.name,
|
|
31
|
+
return this.createApiObject(spec.name, NetworkResources.NETWORKING_API_VERSION, 'NetworkPolicy', policySpec, spec.labels, spec.annotations);
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Creates a deny-all NetworkPolicy that blocks all ingress and egress traffic
|
|
@@ -107,12 +107,191 @@ export class NetworkResources extends BaseResourceProvider {
|
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
/**
|
|
110
|
-
*
|
|
110
|
+
* Validates TLS configuration for security compliance
|
|
111
|
+
* @param spec - Ingress specification to validate
|
|
112
|
+
* @throws Error if TLS validation fails
|
|
113
|
+
* @since 2.8.0
|
|
114
|
+
*/
|
|
115
|
+
validateIngressSecurity(spec) {
|
|
116
|
+
const isProductionEnvironment = spec.environment === 'production';
|
|
117
|
+
const tlsRequired = spec.requireTLS || isProductionEnvironment;
|
|
118
|
+
// Check if TLS is required but not configured
|
|
119
|
+
if (tlsRequired && (!spec.tls || spec.tls.length === 0)) {
|
|
120
|
+
throw new Error(NetworkResources.TLS_REQUIRED_ERROR_MESSAGE);
|
|
121
|
+
}
|
|
122
|
+
// Validate TLS configuration if present
|
|
123
|
+
if (spec.tls && spec.tls.length > 0) {
|
|
124
|
+
spec.tls.forEach((tlsConfig, index) => {
|
|
125
|
+
if (!tlsConfig.secretName) {
|
|
126
|
+
throw new Error(`TLS configuration at index ${index} must specify a secretName. ` +
|
|
127
|
+
'The secret should contain "tls.crt" and "tls.key" data.');
|
|
128
|
+
}
|
|
129
|
+
// Validate secret name format (RFC 1123 DNS subdomain)
|
|
130
|
+
// This regex is safe as it only matches alphanumeric characters and hyphens
|
|
131
|
+
// eslint-disable-next-line security/detect-unsafe-regex
|
|
132
|
+
const secretNameRegex = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
|
|
133
|
+
if (!secretNameRegex.test(tlsConfig.secretName)) {
|
|
134
|
+
throw new Error(`Invalid TLS secret name "${tlsConfig.secretName}" at index ${index}. ` +
|
|
135
|
+
'Secret names must be valid RFC 1123 DNS subdomains (lowercase alphanumeric and hyphens).');
|
|
136
|
+
}
|
|
137
|
+
// Validate hosts if specified
|
|
138
|
+
if (tlsConfig.hosts && tlsConfig.hosts.length > 0) {
|
|
139
|
+
tlsConfig.hosts.forEach((host, hostIndex) => {
|
|
140
|
+
if (!this.isValidHostname(host)) {
|
|
141
|
+
throw new Error(`Invalid hostname "${host}" in TLS configuration at index ${index}, host ${hostIndex}. ` +
|
|
142
|
+
'Hostnames must be valid DNS names or wildcard patterns.');
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
// Validate that TLS hosts match Ingress rule hosts
|
|
149
|
+
if (spec.tls && spec.rules) {
|
|
150
|
+
const tlsHosts = new Set(spec.tls.flatMap((tls) => tls.hosts || []));
|
|
151
|
+
const ruleHosts = spec.rules
|
|
152
|
+
.map((rule) => rule.host)
|
|
153
|
+
.filter((host) => Boolean(host));
|
|
154
|
+
for (const ruleHost of ruleHosts) {
|
|
155
|
+
if (!tlsHosts.has(ruleHost)) {
|
|
156
|
+
console.warn(`Warning: Host "${ruleHost}" in Ingress rules is not covered by TLS configuration. ` +
|
|
157
|
+
'Consider adding it to the TLS hosts for secure communication.');
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Validates hostname format (supports wildcards) with ReDoS protection
|
|
164
|
+
* @param hostname - Hostname to validate
|
|
165
|
+
* @returns True if hostname is valid
|
|
166
|
+
* @since 2.8.0
|
|
167
|
+
*/
|
|
168
|
+
isValidHostname(hostname) {
|
|
169
|
+
if (!hostname || hostname.length === 0 || hostname.length > 253) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
// Split hostname into parts and validate each part
|
|
173
|
+
const parts = hostname.split('.');
|
|
174
|
+
if (parts.length < 2)
|
|
175
|
+
return false;
|
|
176
|
+
// Handle wildcard
|
|
177
|
+
if (hostname.startsWith('*.')) {
|
|
178
|
+
parts.shift(); // Remove wildcard part
|
|
179
|
+
if (parts.length < 2)
|
|
180
|
+
return false; // Must have at least two parts after wildcard
|
|
181
|
+
}
|
|
182
|
+
// Validate each part
|
|
183
|
+
return parts.every((part) => {
|
|
184
|
+
if (part.length === 0 || part.length > 63)
|
|
185
|
+
return false;
|
|
186
|
+
if (part.startsWith('-') || part.endsWith('-'))
|
|
187
|
+
return false;
|
|
188
|
+
return /^[a-z0-9-]+$/i.test(part);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Applies security defaults to Ingress annotations
|
|
111
193
|
* @param spec - Ingress specification
|
|
194
|
+
* @returns Enhanced annotations with security defaults
|
|
195
|
+
* @since 2.8.0
|
|
196
|
+
*/
|
|
197
|
+
applySecurityDefaults(spec) {
|
|
198
|
+
const annotations = { ...spec.annotations };
|
|
199
|
+
// Apply SSL redirect if TLS is configured or force SSL redirect is enabled
|
|
200
|
+
if ((spec.tls && spec.tls.length > 0) || spec.forceSSLRedirect) {
|
|
201
|
+
// NGINX Ingress Controller annotations
|
|
202
|
+
annotations['nginx.ingress.kubernetes.io/ssl-redirect'] = 'true';
|
|
203
|
+
annotations['nginx.ingress.kubernetes.io/force-ssl-redirect'] = 'true';
|
|
204
|
+
// Traefik annotations
|
|
205
|
+
annotations['traefik.ingress.kubernetes.io/redirect-entry-point'] = 'https';
|
|
206
|
+
// HAProxy annotations
|
|
207
|
+
annotations['haproxy.org/ssl-redirect'] = 'true';
|
|
208
|
+
}
|
|
209
|
+
// Add security headers for production environments
|
|
210
|
+
if (spec.environment === 'production' || spec.requireTLS) {
|
|
211
|
+
// NGINX security headers with CSP
|
|
212
|
+
annotations['nginx.ingress.kubernetes.io/configuration-snippet'] = `
|
|
213
|
+
more_set_headers "X-Frame-Options: DENY";
|
|
214
|
+
more_set_headers "X-Content-Type-Options: nosniff";
|
|
215
|
+
more_set_headers "X-XSS-Protection: 1; mode=block";
|
|
216
|
+
more_set_headers "Referrer-Policy: strict-origin-when-cross-origin";
|
|
217
|
+
more_set_headers "Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';";
|
|
218
|
+
`.trim();
|
|
219
|
+
}
|
|
220
|
+
return annotations;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Creates a secure Ingress with TLS validation and environment-aware defaults
|
|
224
|
+
* @param spec - Enhanced Ingress specification
|
|
112
225
|
* @returns Created Ingress ApiObject
|
|
226
|
+
* @example
|
|
227
|
+
* ```typescript
|
|
228
|
+
* // Production Ingress with mandatory TLS
|
|
229
|
+
* networkResources.addSecureIngress({
|
|
230
|
+
* name: 'web-ingress',
|
|
231
|
+
* environment: 'production',
|
|
232
|
+
* tls: [{
|
|
233
|
+
* hosts: ['example.com'],
|
|
234
|
+
* secretName: 'example-tls'
|
|
235
|
+
* }],
|
|
236
|
+
* rules: [{
|
|
237
|
+
* host: 'example.com',
|
|
238
|
+
* http: {
|
|
239
|
+
* paths: [{
|
|
240
|
+
* path: '/',
|
|
241
|
+
* pathType: 'Prefix',
|
|
242
|
+
* backend: {
|
|
243
|
+
* service: { name: 'web-service', port: { number: 80 } }
|
|
244
|
+
* }
|
|
245
|
+
* }]
|
|
246
|
+
* }
|
|
247
|
+
* }]
|
|
248
|
+
* });
|
|
249
|
+
* ```
|
|
250
|
+
* @since 2.8.0
|
|
251
|
+
*/
|
|
252
|
+
addSecureIngress(spec) {
|
|
253
|
+
// Validate TLS configuration and security requirements
|
|
254
|
+
this.validateIngressSecurity(spec);
|
|
255
|
+
// Apply security defaults to annotations
|
|
256
|
+
const enhancedAnnotations = this.applySecurityDefaults(spec);
|
|
257
|
+
// Create the Ingress with enhanced security
|
|
258
|
+
const ingressSpec = {};
|
|
259
|
+
if (spec.ingressClassName) {
|
|
260
|
+
ingressSpec['ingressClassName'] = spec.ingressClassName;
|
|
261
|
+
}
|
|
262
|
+
if (spec.tls) {
|
|
263
|
+
ingressSpec['tls'] = spec.tls;
|
|
264
|
+
}
|
|
265
|
+
if (spec.rules) {
|
|
266
|
+
ingressSpec['rules'] = spec.rules;
|
|
267
|
+
}
|
|
268
|
+
return this.createApiObject(spec.name, NetworkResources.NETWORKING_API_VERSION, 'Ingress', ingressSpec, spec.labels, enhancedAnnotations);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Creates an Ingress resource with optional TLS validation
|
|
272
|
+
* @param spec - Ingress specification
|
|
273
|
+
* @returns Created Ingress ApiObject
|
|
274
|
+
* @deprecated Use addSecureIngress for enhanced security validation
|
|
113
275
|
* @since 2.7.0
|
|
114
276
|
*/
|
|
115
277
|
addIngress(spec) {
|
|
278
|
+
// Apply basic validation if environment is specified
|
|
279
|
+
if (spec.environment || spec.requireTLS) {
|
|
280
|
+
this.validateIngressSecurity(spec);
|
|
281
|
+
const enhancedAnnotations = this.applySecurityDefaults(spec);
|
|
282
|
+
const ingressSpec = {};
|
|
283
|
+
if (spec.ingressClassName) {
|
|
284
|
+
ingressSpec['ingressClassName'] = spec.ingressClassName;
|
|
285
|
+
}
|
|
286
|
+
if (spec.tls) {
|
|
287
|
+
ingressSpec['tls'] = spec.tls;
|
|
288
|
+
}
|
|
289
|
+
if (spec.rules) {
|
|
290
|
+
ingressSpec['rules'] = spec.rules;
|
|
291
|
+
}
|
|
292
|
+
return this.createApiObject(spec.name, NetworkResources.NETWORKING_API_VERSION, 'Ingress', ingressSpec, spec.labels, enhancedAnnotations);
|
|
293
|
+
}
|
|
294
|
+
// Legacy behavior for backward compatibility
|
|
116
295
|
const ingressSpec = {};
|
|
117
296
|
if (spec.ingressClassName) {
|
|
118
297
|
ingressSpec['ingressClassName'] = spec.ingressClassName;
|
|
@@ -123,7 +302,9 @@ export class NetworkResources extends BaseResourceProvider {
|
|
|
123
302
|
if (spec.rules) {
|
|
124
303
|
ingressSpec['rules'] = spec.rules;
|
|
125
304
|
}
|
|
126
|
-
return this.createApiObject(spec.name,
|
|
305
|
+
return this.createApiObject(spec.name, NetworkResources.NETWORKING_API_VERSION, 'Ingress', ingressSpec, spec.labels, spec.annotations);
|
|
127
306
|
}
|
|
128
307
|
}
|
|
308
|
+
NetworkResources.TLS_REQUIRED_ERROR_MESSAGE = 'TLS configuration is required for production Ingress resources. Please configure the "tls" field with valid certificate references.';
|
|
309
|
+
NetworkResources.NETWORKING_API_VERSION = 'networking.k8s.io/v1';
|
|
129
310
|
//# sourceMappingURL=networkResources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkResources.js","sourceRoot":"","sources":["../../../../src/lib/resources/network/networkResources.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"networkResources.js","sourceRoot":"","sources":["../../../../src/lib/resources/network/networkResources.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/rutter.d.ts
CHANGED
|
@@ -751,7 +751,7 @@ export declare class Rutter {
|
|
|
751
751
|
protocol?: 'TCP' | 'UDP' | 'SCTP';
|
|
752
752
|
}>, labels?: Record<string, string>, annotations?: Record<string, string>): ApiObject;
|
|
753
753
|
/**
|
|
754
|
-
* Creates an Ingress resource
|
|
754
|
+
* Creates an Ingress resource with optional TLS validation
|
|
755
755
|
* @param spec - Ingress specification
|
|
756
756
|
* @returns Created Ingress ApiObject
|
|
757
757
|
*
|
|
@@ -774,9 +774,95 @@ export declare class Rutter {
|
|
|
774
774
|
* });
|
|
775
775
|
* ```
|
|
776
776
|
*
|
|
777
|
+
* @deprecated Use addSecureIngress for enhanced security validation
|
|
778
|
+
* @since 2.7.0
|
|
779
|
+
*/
|
|
780
|
+
/**
|
|
781
|
+
* Creates an Ingress resource for external access to services
|
|
782
|
+
* @param spec - Ingress specification
|
|
783
|
+
* @returns Created Ingress ApiObject
|
|
784
|
+
* @deprecated Use addSecureIngress for enhanced security validation
|
|
777
785
|
* @since 2.7.0
|
|
778
786
|
*/
|
|
779
787
|
addIngress(spec: IngressSpec): ApiObject;
|
|
788
|
+
/**
|
|
789
|
+
* Creates a simple Ingress resource with optional TLS
|
|
790
|
+
* @param name - Resource name
|
|
791
|
+
* @param host - Domain host
|
|
792
|
+
* @param serviceName - Backend service name
|
|
793
|
+
* @param servicePort - Backend service port
|
|
794
|
+
* @param options - Optional configuration
|
|
795
|
+
* @returns Created Ingress ApiObject
|
|
796
|
+
* @since 2.8.1
|
|
797
|
+
*/
|
|
798
|
+
addIngress(name: string, host: string, serviceName: string, servicePort: number, options?: {
|
|
799
|
+
tls?: boolean | string;
|
|
800
|
+
className?: string;
|
|
801
|
+
annotations?: Record<string, string>;
|
|
802
|
+
path?: string;
|
|
803
|
+
pathType?: 'Exact' | 'Prefix' | 'ImplementationSpecific';
|
|
804
|
+
sslRedirect?: boolean;
|
|
805
|
+
certManager?: string;
|
|
806
|
+
}): ApiObject;
|
|
807
|
+
/**
|
|
808
|
+
* Creates a simple Ingress with enhanced options
|
|
809
|
+
* @private
|
|
810
|
+
*/
|
|
811
|
+
private createSimpleIngress;
|
|
812
|
+
/**
|
|
813
|
+
* Builds annotations for Ingress based on options
|
|
814
|
+
* @private
|
|
815
|
+
*/
|
|
816
|
+
private buildIngressAnnotations;
|
|
817
|
+
/**
|
|
818
|
+
* Adds SSL redirect annotation based on class and options
|
|
819
|
+
* @private
|
|
820
|
+
*/
|
|
821
|
+
private addSSLRedirectAnnotation;
|
|
822
|
+
/**
|
|
823
|
+
* Adds cert-manager annotation if specified
|
|
824
|
+
* @private
|
|
825
|
+
*/
|
|
826
|
+
private addCertManagerAnnotation;
|
|
827
|
+
/**
|
|
828
|
+
* Adds NGINX-specific annotations
|
|
829
|
+
* @private
|
|
830
|
+
*/
|
|
831
|
+
private addNginxAnnotations;
|
|
832
|
+
/**
|
|
833
|
+
* Creates a secure Ingress resource with TLS validation and environment-aware security defaults
|
|
834
|
+
* @param spec - Enhanced Ingress specification with security options
|
|
835
|
+
* @returns Created Ingress ApiObject
|
|
836
|
+
*
|
|
837
|
+
* @example
|
|
838
|
+
* ```typescript
|
|
839
|
+
* // Production Ingress with mandatory TLS
|
|
840
|
+
* rutter.addSecureIngress({
|
|
841
|
+
* name: 'secure-web-ingress',
|
|
842
|
+
* environment: 'production',
|
|
843
|
+
* tls: [{
|
|
844
|
+
* hosts: ['secure.example.com'],
|
|
845
|
+
* secretName: 'secure-example-tls'
|
|
846
|
+
* }],
|
|
847
|
+
* forceSSLRedirect: true,
|
|
848
|
+
* rules: [{
|
|
849
|
+
* host: 'secure.example.com',
|
|
850
|
+
* http: {
|
|
851
|
+
* paths: [{
|
|
852
|
+
* path: '/',
|
|
853
|
+
* pathType: 'Prefix',
|
|
854
|
+
* backend: {
|
|
855
|
+
* service: { name: 'web-service', port: { number: 80 } }
|
|
856
|
+
* }
|
|
857
|
+
* }]
|
|
858
|
+
* }
|
|
859
|
+
* }]
|
|
860
|
+
* });
|
|
861
|
+
* ```
|
|
862
|
+
*
|
|
863
|
+
* @since 2.8.0
|
|
864
|
+
*/
|
|
865
|
+
addSecureIngress(spec: IngressSpec): ApiObject;
|
|
780
866
|
/**
|
|
781
867
|
* Creates a ServiceAccount with ECR access annotations
|
|
782
868
|
* @param spec - ECR ServiceAccount specification
|
package/dist/lib/rutter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rutter.d.ts","sourceRoot":"","sources":["../../src/lib/rutter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rutter.d.ts","sourceRoot":"","sources":["../../src/lib/rutter.ts"],"names":[],"mappings":"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"}
|