@r8s/core 0.1.0 → 0.2.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.
@@ -15,10 +15,26 @@ export interface DatabaseConnection {
15
15
  }
16
16
  /** Secret provider configuration */
17
17
  export interface SecretProvider {
18
- backend: 'vault' | 'openbao' | 'sealed-secrets' | 'manual-secrets';
18
+ backend: 'vault' | 'openbao' | 'sealed-secrets' | 'manual-secrets' | 'kubernetes' | (string & {});
19
+ /**
20
+ * Custom provisioner hook. Built-in backends (vault/openbao) get one
21
+ * attached by the recipes' SecretProvider; anything carrying
22
+ * `provision()` is treated as provisioning-capable regardless of
23
+ * backend identity — orgs can plug ESO/Infisical/CSI without touching
24
+ * packages.
25
+ */
26
+ provision?: SecretProvisioner;
19
27
  mount?: string;
20
28
  path?: string;
21
29
  authRef?: string;
30
+ /**
31
+ * How often the secrets operator re-syncs from the backend (e.g. '3600s'),
32
+ * rendered as `refreshAfter` on every generated
33
+ * VaultStaticSecret/OpenBaoStaticSecret. Enables credential rotation —
34
+ * combine with `rolloutRestartTargets` on consumers so pods pick up
35
+ * rotated values.
36
+ */
37
+ refreshAfter?: string;
22
38
  }
23
39
  /**
24
40
  * Default contexts for shared infrastructure properties.
@@ -44,6 +60,72 @@ export interface SecretProvider {
44
60
  */
45
61
  /** Inherits namespace to all child resources */
46
62
  export declare const Namespace: import("./context").Context<string>;
63
+ /**
64
+ * Resolve the effective namespace: explicit prop wins, otherwise inherit
65
+ * from the Platform tree, otherwise 'default'. Replaces the inline
66
+ * `namespaceProp ?? (contextNamespace !== 'default' ? contextNamespace :
67
+ * undefined) ?? 'default'` formula that was copied through every recipe
68
+ * and package — namespace policy lives here now.
69
+ */
70
+ export declare function useNamespace(override?: string): string;
71
+ /** One bundle to provision through a secrets backend */
72
+ export interface StaticSecretRequest {
73
+ /** Resource name (usually equals the destination Secret name) */
74
+ name: string;
75
+ namespace: string;
76
+ /** KV path in the secret store */
77
+ path: string;
78
+ /** Destination→source key mapping (env-case destination, snake_case source) */
79
+ keys: Record<string, string>;
80
+ /**
81
+ * Raw Go-template passthrough merged AFTER the keys mapping — for
82
+ * advanced bundles needing literals or composed templates
83
+ * (e.g. `AWS_ENDPOINTS: 'https://s3.berget.cloud'`).
84
+ */
85
+ templates?: Record<string, string>;
86
+ /** Provisioned Kubernetes Secret name (defaults to name) */
87
+ secretName?: string;
88
+ /** Store mount path */
89
+ mount?: string;
90
+ /** Auth reference override (defaults to the provider's authRef) */
91
+ authRef?: string;
92
+ /** Re-sync interval */
93
+ refreshAfter?: string;
94
+ /** Workloads restarted after rotation (already field-normalized) */
95
+ restartTargets?: {
96
+ kind?: string;
97
+ name: string;
98
+ apiVersion?: string;
99
+ }[];
100
+ }
101
+ /**
102
+ * Provisioner hook: given a request, produce the backend-specific resources
103
+ * (e.g. VaultStaticSecret, OpenBaoStaticSecret, ExternalSecret, …).
104
+ * Elements are flattened into the render result.
105
+ */
106
+ export type SecretProvisioner = (req: StaticSecretRequest) => unknown;
107
+ /** Route request handed to a custom routing provisioner */
108
+ export interface RouteRequest {
109
+ name: string;
110
+ namespace: string;
111
+ host: string;
112
+ serviceName: string;
113
+ servicePort: number;
114
+ pathPrefix?: string;
115
+ annotations?: Record<string, string>;
116
+ additionalAnnotations?: Record<string, string>;
117
+ tls?: {
118
+ secretName?: string;
119
+ clusterIssuer?: string;
120
+ wildcardSecretName?: string;
121
+ ingressClassName?: string;
122
+ };
123
+ }
124
+ /**
125
+ * Route provisioner hook: given a request, produce the backend-specific
126
+ * route resources (Ingress/HTTPRoute/… + any supporting objects).
127
+ */
128
+ export type RouteProvisioner = (req: RouteRequest) => unknown;
47
129
  /** Inherits labels to all child resources */
48
130
  export declare const Labels: import("./context").Context<Record<string, string>>;
49
131
  /** Inherits annotations to all child resources */
@@ -196,9 +278,15 @@ export declare const OperatorContext: import("./context").Context<Operator[]>;
196
278
  */
197
279
  export interface RoutingConfig {
198
280
  /** Routing implementation: 'ingress' (nginx) or 'gateway' (Envoy Gateway API) */
199
- mode: 'ingress' | 'gateway';
281
+ mode: 'ingress' | 'gateway' | (string & {});
200
282
  /** Gateway class name (only used when mode='gateway', default: 'eg') */
201
283
  gatewayClassName?: string;
284
+ /**
285
+ * Custom route provisioner hook. When set, <Endpoint/> delegates the
286
+ * whole route render to it and ignores mode — orgs can plug a custom
287
+ * ingress controller / L7 stack without touching recipes or packages.
288
+ */
289
+ route?: RouteProvisioner;
202
290
  }
203
291
  export declare const RoutingContext: import("./context").Context<RoutingConfig>;
204
292
  export { createContext } from './context';
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,kDAAkD;AAClD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,oCAAoC;AACpC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gDAAgD;AAChD,eAAO,MAAM,SAAS,qCAAmC,CAAA;AAEzD,6CAA6C;AAC7C,eAAO,MAAM,MAAM,qDAA4C,CAAA;AAE/D,kDAAkD;AAClD,eAAO,MAAM,WAAW,qDAA4C,CAAA;AAEpE,6DAA6D;AAC7D,eAAO,MAAM,WAAW;UAA+B,MAAM;WAAS,MAAM;IAAQ,CAAA;AAEpF,gEAAgE;AAChE,eAAO,MAAM,SAAS;eACT,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;aACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;EAC3B,CAAA;AAEN,sDAAsD;AACtD,eAAO,MAAM,cAAc,qCAAmC,CAAA;AAE9D,6DAA6D;AAC7D,eAAO,MAAM,aAAa,qCAA4B,CAAA;AAEtD,2CAA2C;AAC3C,eAAO,MAAM,MAAM,qCAA4B,CAAA;AAE/C,iCAAiC;AACjC,eAAO,MAAM,GAAG;aACL,OAAO;aACP,MAAM;iBACF,MAAM;EACC,CAAA;AAEtB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAC/C;AAED,eAAO,MAAM,cAAc,mDAA4C,CAAA;AAEvE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,wDAAiD,CAAA;AAE7E;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,oDAA6C,CAAA;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,eAAe,yCAAgC,CAAA;AAE5D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,aAAa;IAC5B,iFAAiF;IACjF,IAAI,EAAE,SAAS,GAAG,SAAS,CAAA;IAC3B,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,eAAO,MAAM,cAAc,4CAAoD,CAAA;AAG/E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"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"}
package/dist/defaults.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createContext = exports.RoutingContext = exports.OperatorContext = exports.SecretContext = exports.DatabaseContext = exports.ClusterContext = exports.TLS = exports.Domain = exports.ImageRegistry = exports.ServiceAccount = exports.Resources = exports.Environment = exports.Annotations = exports.Labels = exports.Namespace = void 0;
4
+ exports.useNamespace = useNamespace;
4
5
  const context_1 = require("./context");
6
+ const renderer_1 = require("./renderer");
5
7
  /**
6
8
  * Default contexts for shared infrastructure properties.
7
9
  *
@@ -26,6 +28,17 @@ const context_1 = require("./context");
26
28
  */
27
29
  /** Inherits namespace to all child resources */
28
30
  exports.Namespace = (0, context_1.createContext)('default');
31
+ /**
32
+ * Resolve the effective namespace: explicit prop wins, otherwise inherit
33
+ * from the Platform tree, otherwise 'default'. Replaces the inline
34
+ * `namespaceProp ?? (contextNamespace !== 'default' ? contextNamespace :
35
+ * undefined) ?? 'default'` formula that was copied through every recipe
36
+ * and package — namespace policy lives here now.
37
+ */
38
+ function useNamespace(override) {
39
+ const contextNamespace = (0, renderer_1.useContext)(exports.Namespace);
40
+ return override ?? (contextNamespace !== 'default' ? contextNamespace : undefined) ?? 'default';
41
+ }
29
42
  /** Inherits labels to all child resources */
30
43
  exports.Labels = (0, context_1.createContext)({});
31
44
  /** Inherits annotations to all child resources */
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAuBzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gDAAgD;AACnC,QAAA,SAAS,GAAG,IAAA,uBAAa,EAAS,SAAS,CAAC,CAAA;AAEzD,6CAA6C;AAChC,QAAA,MAAM,GAAG,IAAA,uBAAa,EAAyB,EAAE,CAAC,CAAA;AAE/D,kDAAkD;AACrC,QAAA,WAAW,GAAG,IAAA,uBAAa,EAAyB,EAAE,CAAC,CAAA;AAEpE,6DAA6D;AAChD,QAAA,WAAW,GAAG,IAAA,uBAAa,EAAyC,EAAE,CAAC,CAAA;AAEpF,gEAAgE;AACnD,QAAA,SAAS,GAAG,IAAA,uBAAa,EAGnC,EAAE,CAAC,CAAA;AAEN,sDAAsD;AACzC,QAAA,cAAc,GAAG,IAAA,uBAAa,EAAS,SAAS,CAAC,CAAA;AAE9D,6DAA6D;AAChD,QAAA,aAAa,GAAG,IAAA,uBAAa,EAAS,EAAE,CAAC,CAAA;AAEtD,2CAA2C;AAC9B,QAAA,MAAM,GAAG,IAAA,uBAAa,EAAS,EAAE,CAAC,CAAA;AAE/C,iCAAiC;AACpB,QAAA,GAAG,GAAG,IAAA,uBAAa,EAI7B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;AAoCT,QAAA,cAAc,GAAG,IAAA,uBAAa,EAAuB,IAAI,CAAC,CAAA;AAEvE;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,eAAe,GAAG,IAAA,uBAAa,EAA4B,IAAI,CAAC,CAAA;AAE7E;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,aAAa,GAAG,IAAA,uBAAa,EAAwB,IAAI,CAAC,CAAA;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACU,QAAA,eAAe,GAAG,IAAA,uBAAa,EAAa,EAAE,CAAC,CAAA;AA6B/C,QAAA,cAAc,GAAG,IAAA,uBAAa,EAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAE/E,6DAA6D;AAC7D,qCAAyC;AAAhC,wGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":";;;AAyEA,oCAGC;AA5ED,uCAAyC;AACzC,yCAAuC;AAuCvC;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gDAAgD;AACnC,QAAA,SAAS,GAAG,IAAA,uBAAa,EAAS,SAAS,CAAC,CAAA;AAEzD;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,QAAiB;IAC5C,MAAM,gBAAgB,GAAG,IAAA,qBAAU,EAAC,iBAAS,CAAC,CAAA;IAC9C,OAAO,QAAQ,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAA;AACjG,CAAC;AAkED,6CAA6C;AAChC,QAAA,MAAM,GAAG,IAAA,uBAAa,EAAyB,EAAE,CAAC,CAAA;AAE/D,kDAAkD;AACrC,QAAA,WAAW,GAAG,IAAA,uBAAa,EAAyB,EAAE,CAAC,CAAA;AAEpE,6DAA6D;AAChD,QAAA,WAAW,GAAG,IAAA,uBAAa,EAAyC,EAAE,CAAC,CAAA;AAEpF,gEAAgE;AACnD,QAAA,SAAS,GAAG,IAAA,uBAAa,EAGnC,EAAE,CAAC,CAAA;AAEN,sDAAsD;AACzC,QAAA,cAAc,GAAG,IAAA,uBAAa,EAAS,SAAS,CAAC,CAAA;AAE9D,6DAA6D;AAChD,QAAA,aAAa,GAAG,IAAA,uBAAa,EAAS,EAAE,CAAC,CAAA;AAEtD,2CAA2C;AAC9B,QAAA,MAAM,GAAG,IAAA,uBAAa,EAAS,EAAE,CAAC,CAAA;AAE/C,iCAAiC;AACpB,QAAA,GAAG,GAAG,IAAA,uBAAa,EAI7B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;AAoCT,QAAA,cAAc,GAAG,IAAA,uBAAa,EAAuB,IAAI,CAAC,CAAA;AAEvE;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,eAAe,GAAG,IAAA,uBAAa,EAA4B,IAAI,CAAC,CAAA;AAE7E;;;;;;;;;;;;;;;;;;GAkBG;AACU,QAAA,aAAa,GAAG,IAAA,uBAAa,EAAwB,IAAI,CAAC,CAAA;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACU,QAAA,eAAe,GAAG,IAAA,uBAAa,EAAa,EAAE,CAAC,CAAA;AAmC/C,QAAA,cAAc,GAAG,IAAA,uBAAa,EAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAE/E,6DAA6D;AAC7D,qCAAyC;AAAhC,wGAAA,aAAa,OAAA"}
@@ -13,14 +13,27 @@ export interface GuardrailRule {
13
13
  /** Check that all namespaces have NetworkPolicies */
14
14
  export declare const requireNetworkPolicies: GuardrailRule;
15
15
  /** Check that all Deployments have resource limits */
16
+ /** Workload kinds carrying a pod template with resource needs. */
17
+ export declare const RESOURCE_LIMIT_KINDS: readonly ["Deployment", "StatefulSet", "DaemonSet"];
16
18
  export declare const requireResourceLimits: GuardrailRule;
17
19
  /** Check that all resources have required labels */
18
20
  export declare const requireLabels: (requiredLabels: string[]) => GuardrailRule;
19
- /** Check that no secrets contain plaintext passwords */
21
+ /**
22
+ * Check that no credentials are rendered as plaintext. Covers:
23
+ * - Secret stringData/data values for credential keys, connection-string
24
+ * URIs, and PEM private keys (encryptedData from sealed-secrets and
25
+ * system TLS/service-account secrets are exempt)
26
+ * - ConfigMap data — flat credential keys and credential-looking
27
+ * `key: value` lines inside embedded YAML/INI payloads (e.g. appservice
28
+ * registrations holding as_token/hs_token)
29
+ * - Workload env vars that embed credentials via `value` (secretKeyRef or
30
+ * $(VAR) runtime expansion are fine)
31
+ * - Any nested field (CRD specs, realm users, …) holding a plaintext
32
+ * credential value
33
+ */
20
34
  export declare const noPlaintextSecrets: GuardrailRule;
21
35
  /** Check that Ingresses have TLS configured */
22
36
  export declare const requireTLS: GuardrailRule;
23
- /** Check that Pods don't run as root */
24
37
  export declare const noRootContainers: GuardrailRule;
25
38
  /** Default set of guardrails for production use */
26
39
  export declare const defaultGuardrails: GuardrailRule[];
@@ -1 +1 @@
1
- {"version":3,"file":"guardrails.d.ts","sourceRoot":"","sources":["../src/guardrails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,qBAAqB;IACrB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;IACtC,wFAAwF;IACxF,IAAI,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,CAAA;CAC7D;AAED,qDAAqD;AACrD,eAAO,MAAM,sBAAsB,EAAE,aAgCpC,CAAA;AAED,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,EAAE,aAwCnC,CAAA;AAED,oDAAoD;AACpD,eAAO,MAAM,aAAa,GAAI,gBAAgB,MAAM,EAAE,KAAG,aAwBvD,CAAA;AAEF,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,EAAE,aA8BhC,CAAA;AAED,+CAA+C;AAC/C,eAAO,MAAM,UAAU,EAAE,aAyBxB,CAAA;AAED,wCAAwC;AACxC,eAAO,MAAM,gBAAgB,EAAE,aA4C9B,CAAA;AAED,mDAAmD;AACnD,eAAO,MAAM,iBAAiB,EAAE,aAAa,EAM5C,CAAA;AAED,yDAAyD;AACzD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,kBAAkB,EAAE,EAC/B,KAAK,GAAE,aAAa,EAAsB,GACzC;IACD,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,eAAe,EAAE,CAAA;IACzB,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,IAAI,EAAE,eAAe,EAAE,CAAA;CACxB,CAwBA"}
1
+ {"version":3,"file":"guardrails.d.ts","sourceRoot":"","sources":["../src/guardrails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,qBAAqB;IACrB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;IACtC,wFAAwF;IACxF,IAAI,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,CAAA;CAC7D;AAED,qDAAqD;AACrD,eAAO,MAAM,sBAAsB,EAAE,aAgCpC,CAAA;AAED,sDAAsD;AACtD,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,qDAAsD,CAAA;AA6BvF,eAAO,MAAM,qBAAqB,EAAE,aAQnC,CAAA;AACD,oDAAoD;AACpD,eAAO,MAAM,aAAa,GAAI,gBAAgB,MAAM,EAAE,KAAG,aAwBvD,CAAA;AA+WF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAyDhC,CAAA;AAED,+CAA+C;AAC/C,eAAO,MAAM,UAAU,EAAE,aAyBxB,CAAA;AAkCD,eAAO,MAAM,gBAAgB,EAAE,aAU9B,CAAA;AACD,mDAAmD;AACnD,eAAO,MAAM,iBAAiB,EAAE,aAAa,EAM5C,CAAA;AAED,yDAAyD;AACzD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,kBAAkB,EAAE,EAC/B,KAAK,GAAE,aAAa,EAAsB,GACzC;IACD,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,eAAe,EAAE,CAAA;IACzB,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,IAAI,EAAE,eAAe,EAAE,CAAA;CACxB,CAwBA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultGuardrails = exports.noRootContainers = exports.requireTLS = exports.noPlaintextSecrets = exports.requireLabels = exports.requireResourceLimits = exports.requireNetworkPolicies = void 0;
3
+ exports.defaultGuardrails = exports.noRootContainers = exports.requireTLS = exports.noPlaintextSecrets = exports.requireLabels = exports.requireResourceLimits = exports.RESOURCE_LIMIT_KINDS = exports.requireNetworkPolicies = void 0;
4
4
  exports.runGuardrails = runGuardrails;
5
5
  /** Check that all namespaces have NetworkPolicies */
6
6
  exports.requireNetworkPolicies = {
@@ -34,41 +34,41 @@ exports.requireNetworkPolicies = {
34
34
  },
35
35
  };
36
36
  /** Check that all Deployments have resource limits */
37
+ /** Workload kinds carrying a pod template with resource needs. */
38
+ exports.RESOURCE_LIMIT_KINDS = ['Deployment', 'StatefulSet', 'DaemonSet'];
39
+ function containerResourceErrors(resource) {
40
+ const name = resource.metadata?.name;
41
+ return (resource.spec?.template?.spec?.containers || []).flatMap((container) => {
42
+ const label = `Container "${container.name}" in ${resource.kind} "${name}"`;
43
+ const errors = [];
44
+ if (!container.resources?.requests) {
45
+ errors.push({
46
+ code: 'MISSING_RESOURCE_REQUESTS',
47
+ message: `${label} is missing resource requests`,
48
+ resource: resource.kind,
49
+ field: 'spec.template.spec.containers[].resources.requests',
50
+ suggestion: 'Add resource.requests with cpu and memory values',
51
+ });
52
+ }
53
+ if (!container.resources?.limits) {
54
+ errors.push({
55
+ code: 'MISSING_RESOURCE_LIMITS',
56
+ message: `${label} is missing resource limits`,
57
+ resource: resource.kind,
58
+ field: 'spec.template.spec.containers[].resources.limits',
59
+ suggestion: 'Add resource.limits with cpu and memory values to prevent resource exhaustion',
60
+ });
61
+ }
62
+ return errors;
63
+ });
64
+ }
37
65
  exports.requireResourceLimits = {
38
66
  id: 'require-resource-limits',
39
67
  description: 'All containers must have resource requests and limits',
40
68
  severity: 'error',
41
- test: (resources) => {
42
- const errors = [];
43
- for (const resource of resources) {
44
- if (resource.kind === 'Deployment' ||
45
- resource.kind === 'StatefulSet' ||
46
- resource.kind === 'DaemonSet') {
47
- const containers = resource.spec?.template?.spec?.containers || [];
48
- for (const container of containers) {
49
- if (!container.resources?.requests) {
50
- errors.push({
51
- code: 'MISSING_RESOURCE_REQUESTS',
52
- message: `Container "${container.name}" in ${resource.kind} "${resource.metadata?.name}" is missing resource requests`,
53
- resource: resource.kind,
54
- field: 'spec.template.spec.containers[].resources.requests',
55
- suggestion: 'Add resource.requests with cpu and memory values',
56
- });
57
- }
58
- if (!container.resources?.limits) {
59
- errors.push({
60
- code: 'MISSING_RESOURCE_LIMITS',
61
- message: `Container "${container.name}" in ${resource.kind} "${resource.metadata?.name}" is missing resource limits`,
62
- resource: resource.kind,
63
- field: 'spec.template.spec.containers[].resources.limits',
64
- suggestion: 'Add resource.limits with cpu and memory values to prevent resource exhaustion',
65
- });
66
- }
67
- }
68
- }
69
- }
70
- return errors;
71
- },
69
+ test: (resources) => resources
70
+ .filter((resource) => exports.RESOURCE_LIMIT_KINDS.includes(resource.kind))
71
+ .flatMap(containerResourceErrors),
72
72
  };
73
73
  /** Check that all resources have required labels */
74
74
  const requireLabels = (requiredLabels) => ({
@@ -95,31 +95,361 @@ const requireLabels = (requiredLabels) => ({
95
95
  },
96
96
  });
97
97
  exports.requireLabels = requireLabels;
98
- /** Check that no secrets contain plaintext passwords */
98
+ /**
99
+ * Keys whose value is a credential when they appear with these endings
100
+ * (normalized: lowercased, `-`/`_`/`.` removed).
101
+ */
102
+ const SECRET_KEY_SUFFIXES = [
103
+ 'password',
104
+ 'passwd',
105
+ 'pwd',
106
+ 'secretkey',
107
+ 'secretaccesskey',
108
+ 'accesskey',
109
+ 'accesskeyid',
110
+ 'privatekey',
111
+ 'clientsecret',
112
+ 'apikey',
113
+ 'token', // bare token: csrf/as/hs/api tokens are all credentials
114
+ 'authtoken',
115
+ 'connectionstring',
116
+ ];
117
+ /** Key endings that hold the *name* of a secret, not a credential value. */
118
+ const SECRET_REFERENCE_SUFFIXES = [
119
+ 'secretname',
120
+ 'secretref',
121
+ 'passwordsecret',
122
+ 'passwordkey',
123
+ 'passwordref',
124
+ 'passwordname',
125
+ 'secretkeyref',
126
+ 'secretkeyname',
127
+ 'tokenname',
128
+ 'tokenref',
129
+ 'keyref',
130
+ 'keyname',
131
+ 'credentialsref',
132
+ ];
133
+ /**
134
+ * Key prefixes that name a reference to an existing secret (chart
135
+ * convention), not credential values — e.g. the Harbor/Bitnami
136
+ * `existingSecretAdminPassword`, `existingSecretSecretKey` parameters.
137
+ */
138
+ const SECRET_REFERENCE_PREFIXES = ['existingsecret'];
139
+ /** Does this normalized key hold a reference rather than a credential? */
140
+ function isReferenceKey(normalized) {
141
+ return (SECRET_REFERENCE_SUFFIXES.some((s) => normalized.endsWith(s)) ||
142
+ SECRET_REFERENCE_PREFIXES.some((s) => normalized.startsWith(s)));
143
+ }
144
+ /** Env var names that suggest the value is a credential. */
145
+ const SECRET_ENV_NAME_PATTERN = /(password|passwd|pwd|secret|token|api[_-]?key|access[_-]?key|private[_-]?key|credential|client[_-]?secret)/i;
146
+ /** Env var names that carry policy/lifetime metadata, not credentials
147
+ * (e.g. REFRESH_TOKEN_EXPIRY, ACCESS_TOKEN_TTL, JWT_LIFESPAN). */
148
+ const NON_SECRET_ENV_NAME_PATTERN = /(_expiry|_expires(_at|_in)?$|_ttl$|max[_-]age|lifespan|_timeout$|_url|_uri|_endpoint$|_provider$|_issuer$|_audience$|_header$|_transport$)/i;
149
+ /** Matches scheme://[user[:password]@]host — a credentials-bearing URI. */
150
+ const CONNECTION_STRING_RE = /[a-z][a-z0-9+.-]*:\/\/([^/\s:@]*):([^@/\s]+)@/i;
151
+ /** Secret types that hold non-credential material (TLS certs, SA tokens managed in-cluster). */
152
+ const EXEMPT_SECRET_TYPES = [
153
+ 'kubernetes.io/tls',
154
+ 'kubernetes.io/ssl',
155
+ 'kubernetes.io/service-account-token',
156
+ 'bootstrap.kubernetes.io/token',
157
+ 'helm.sh/release.v1',
158
+ ];
159
+ function normalizeKey(key) {
160
+ return key.toLowerCase().replace(/[-_.]/g, '');
161
+ }
162
+ /** Values that are references/placeholders rather than live credentials. */
163
+ function looksLikeReference(value) {
164
+ return (value.includes('$(') ||
165
+ /^\$\{.+\}/.test(value) ||
166
+ value.startsWith('${') ||
167
+ value.startsWith('$') ||
168
+ value.startsWith('file://'));
169
+ }
170
+ /** "Fill in via GitOps"-style placeholder values — not live credentials. */
171
+ const PLACEHOLDER_VALUE_RE = /^(replace|provide|change|todo|fixme|your[_-]|xxx+|<|\.\.\.|\*+)/i;
172
+ /**
173
+ * Credential-looking `key: value` / `key=value` / `export key=value` lines
174
+ * inside multi-line text — embedded YAML/INI/dotenv payloads in ConfigMap
175
+ * data and Secret stringData blobs.
176
+ */
177
+ const EMBEDDED_CREDENTIAL_LINE_RE = /^[ \t]*(?:export[ \t]+)?([A-Za-z0-9_.-]*?(?:token|password|passwd|secret|secretaccesskey|private[_-]?key|api[_-]?key|access[_-]?key|client[_-]?secret|authtoken)[A-Za-z0-9_.-]*?)\s*[:=]\s*['"]?([^\s'"]{8,})['"]?[ \t]*$/gim;
178
+ /**
179
+ * Embedded keys whose value is metadata about a credential, not the
180
+ * credential itself (token_endpoint, password_file, secret_name, …).
181
+ */
182
+ const EMBEDDED_KEY_EXCLUDE_SUFFIXES = [
183
+ 'endpoint',
184
+ 'url',
185
+ 'uri',
186
+ 'ttl',
187
+ 'expiry',
188
+ 'expires',
189
+ 'maxage',
190
+ 'lifespan',
191
+ 'timeout',
192
+ 'header',
193
+ 'name',
194
+ 'type',
195
+ 'ref',
196
+ 'file',
197
+ 'path',
198
+ 'algorithm',
199
+ 'alg',
200
+ 'issuer',
201
+ 'audience',
202
+ 'provider',
203
+ 'transport',
204
+ 'rotation',
205
+ 'method', // e.g. token_endpoint_auth_method — OIDC metadata, not a credential
206
+ ];
207
+ /** Find live credential values embedded in multi-line config text. */
208
+ function embeddedCredentialLines(text) {
209
+ const hits = [];
210
+ for (const match of text.matchAll(EMBEDDED_CREDENTIAL_LINE_RE)) {
211
+ const [, key, value] = match;
212
+ const normalized = normalizeKey(key);
213
+ if (EMBEDDED_KEY_EXCLUDE_SUFFIXES.some((suffix) => normalized.endsWith(suffix)))
214
+ continue;
215
+ if (looksLikeReference(value))
216
+ continue;
217
+ if (PLACEHOLDER_VALUE_RE.test(value))
218
+ continue;
219
+ // Paths and URLs point at credentials; they are not credentials
220
+ if (value.startsWith('/') || /^[a-z][a-z0-9+.-]*:\/\//i.test(value))
221
+ continue;
222
+ hits.push({ key, value });
223
+ }
224
+ return hits;
225
+ }
226
+ function connectionStringPassword(value) {
227
+ const match = value.match(CONNECTION_STRING_RE);
228
+ if (!match)
229
+ return null;
230
+ const [, , password] = match;
231
+ // Kubernetes $(VAR) expansion and env interpolation — the credential is
232
+ // injected at runtime, not embedded in the manifest.
233
+ if (password.includes('$(') || password.includes('${'))
234
+ return null;
235
+ return password;
236
+ }
237
+ /** Collect pod containers from any workload-shaped resource. */
238
+ function workloadsContainers(resource) {
239
+ const anyResource = resource;
240
+ const kind = anyResource.kind;
241
+ if (kind === 'CronJob') {
242
+ return [
243
+ ...(anyResource.spec?.jobTemplate?.spec?.template?.spec?.containers ?? []),
244
+ ...(anyResource.spec?.jobTemplate?.spec?.template?.spec?.initContainers ?? []),
245
+ ];
246
+ }
247
+ const podSpec = anyResource.spec?.template?.spec ?? anyResource.spec ?? {};
248
+ return [...(podSpec.containers ?? []), ...(podSpec.initContainers ?? [])];
249
+ }
250
+ const CREDENTIAL_VALUE_SUGGESTION = 'Use a secrets backend (openbao/vault/sealed-secrets) or let the operator provision the credential';
251
+ const SEALED_FILE_SUGGESTION = 'Move the credential into a secrets backend and reference it, or render this file as a sealed secret';
252
+ const CONFIGMAP_SUGGESTION = 'ConfigMaps carry no protection — render credentials as a Secret (from a secrets backend or sealed secret) instead';
253
+ function isNonEmptyString(value) {
254
+ return typeof value === 'string' && value.length > 0;
255
+ }
256
+ /** Does this key name look like it holds a credential value (not a reference)? */
257
+ function isCredentialKeyName(normalized, extraExclusions = []) {
258
+ return (SECRET_KEY_SUFFIXES.some((suffix) => normalized.endsWith(suffix)) &&
259
+ !isReferenceKey(normalized) &&
260
+ !extraExclusions.some((suffix) => normalized.endsWith(suffix)));
261
+ }
262
+ /** Multi-line values may embed YAML/INI payloads holding credential keys (e.g. appservice registration.yaml). */
263
+ function pushEmbeddedCredentialHits(ctx, hitInfo) {
264
+ const { kind, where, field, value, suggestion } = hitInfo;
265
+ if (typeof value !== 'string' || !value.includes('\n'))
266
+ return;
267
+ for (const hit of embeddedCredentialLines(value)) {
268
+ ctx.push(kind, `${where} — embedded key "${hit.key}"`, field, suggestion);
269
+ }
270
+ }
271
+ /** One stringData/data entry: credential keys, connection strings, PEM keys, embedded payloads. */
272
+ function scanSecretEntry(ctx, entry) {
273
+ const { name, map, key, value } = entry;
274
+ const where = `Secret "${name}" (${map}.${key})`;
275
+ const field = `${map}.${key}`;
276
+ if (isCredentialKeyName(normalizeKey(key)) && isNonEmptyString(value)) {
277
+ ctx.push('Secret', where, field, CREDENTIAL_VALUE_SUGGESTION);
278
+ }
279
+ ctx.scanValue('Secret', where, field, value);
280
+ pushEmbeddedCredentialHits(ctx, {
281
+ kind: 'Secret',
282
+ where,
283
+ field,
284
+ value,
285
+ suggestion: SEALED_FILE_SUGGESTION,
286
+ });
287
+ }
288
+ /** Secret stringData/data maps of a non-exempt Secret. */
289
+ function scanSecretResource(resource, ctx) {
290
+ const anyResource = resource;
291
+ const secretType = anyResource.type || '';
292
+ if (EXEMPT_SECRET_TYPES.includes(secretType) || anyResource.encryptedData !== undefined)
293
+ return;
294
+ for (const map of ['stringData', 'data']) {
295
+ const data = anyResource[map];
296
+ if (!data || typeof data !== 'object')
297
+ continue;
298
+ for (const [key, value] of Object.entries(data)) {
299
+ scanSecretEntry(ctx, { name: resource.metadata?.name, map, key, value });
300
+ }
301
+ }
302
+ }
303
+ /** ConfigMap data — same exposure as Secrets when credentials are embedded. */
304
+ function scanConfigMapResource(resource, ctx) {
305
+ const { push, scanValue } = ctx;
306
+ const data = resource.data;
307
+ if (!data || typeof data !== 'object')
308
+ return;
309
+ const name = resource.metadata?.name;
310
+ for (const [key, value] of Object.entries(data)) {
311
+ if (!isNonEmptyString(value))
312
+ continue;
313
+ const where = `ConfigMap "${name}" (data.${key})`;
314
+ const field = `data.${key}`;
315
+ const isCredentialKey = isCredentialKeyName(normalizeKey(key), EMBEDDED_KEY_EXCLUDE_SUFFIXES) &&
316
+ !looksLikeReference(value) &&
317
+ !PLACEHOLDER_VALUE_RE.test(value);
318
+ if (isCredentialKey)
319
+ push('ConfigMap', where, field, CONFIGMAP_SUGGESTION);
320
+ pushEmbeddedCredentialHits(ctx, {
321
+ kind: 'ConfigMap',
322
+ where,
323
+ field,
324
+ value,
325
+ suggestion: CONFIGMAP_SUGGESTION,
326
+ });
327
+ scanValue('ConfigMap', where, field, value);
328
+ }
329
+ }
330
+ /** Env entries that embed a literal string via `value` (valueFrom is a reference, not exposure). */
331
+ function hasPlainValue(env) {
332
+ return (!!env &&
333
+ typeof env === 'object' &&
334
+ typeof env.name === 'string' &&
335
+ typeof env.value === 'string' &&
336
+ env.valueFrom === undefined);
337
+ }
338
+ function envIsSecretNamed(name) {
339
+ return SECRET_ENV_NAME_PATTERN.test(name) && !NON_SECRET_ENV_NAME_PATTERN.test(name);
340
+ }
341
+ /** Workload env vars: only `value` embeds the credential — valueFrom is a reference. */
342
+ function scanWorkloadEnv(resource, kindName, push) {
343
+ for (const container of workloadsContainers(resource)) {
344
+ for (const env of (container.env ?? []).filter(hasPlainValue)) {
345
+ const where = `${kindName} container "${container.name}" env "${env.name}"`;
346
+ const field = `spec.template.spec.containers[].env[name=${env.name}].value`;
347
+ if (envIsSecretNamed(env.name) && !looksLikeReference(env.value)) {
348
+ push(resource.kind, where, field, 'Use valueFrom.secretKeyRef, a Vault/OpenBao secret reference, or $(VAR) expansion');
349
+ }
350
+ if (connectionStringPassword(env.value) !== null) {
351
+ push(resource.kind, where, field, 'Connection string embeds a password. Split into individual vars and reference the secret');
352
+ }
353
+ }
354
+ }
355
+ }
356
+ /** Nested fields — credentials anywhere in the resource tree (CRD specs, realm users, …). */
357
+ function walkNestedFields(resource, kindName, ctx) {
358
+ const { push, scanValue } = ctx;
359
+ const leafScan = (value, path) => {
360
+ if (typeof value === 'string')
361
+ scanValue(resource.kind, `${kindName} (${path})`, path, value);
362
+ };
363
+ const reportCredentialKey = (key, value, path) => {
364
+ if (!isCredentialKeyName(normalizeKey(key)))
365
+ return;
366
+ if (!isNonEmptyString(value) || looksLikeReference(value))
367
+ return;
368
+ push(resource.kind, `${kindName} (${path}.${key})`, `${path}.${key}`, 'Move the credential into a secrets backend and reference it by name');
369
+ };
370
+ const walkObject = (obj, path) => {
371
+ for (const [key, value] of Object.entries(obj)) {
372
+ // sealed-secrets ciphertext is encrypted with the cluster key
373
+ if (key === 'encryptedData')
374
+ continue;
375
+ reportCredentialKey(key, value, path);
376
+ // Recurse into child objects/arrays so credentials are caught at every
377
+ // depth; leaf strings are scanned for connection strings / PEM keys
378
+ if (value && typeof value === 'object')
379
+ walk(value, `${path}.${key}`);
380
+ else
381
+ leafScan(value, `${path}.${key}`);
382
+ }
383
+ };
384
+ const walk = (node, path) => {
385
+ if (Array.isArray(node)) {
386
+ node.forEach((item, i) => walk(item, `${path}[${i}]`));
387
+ return;
388
+ }
389
+ if (!node || typeof node !== 'object') {
390
+ leafScan(node, path);
391
+ return;
392
+ }
393
+ walkObject(node, path);
394
+ };
395
+ walk(resource.spec, 'spec');
396
+ }
397
+ /**
398
+ * Check that no credentials are rendered as plaintext. Covers:
399
+ * - Secret stringData/data values for credential keys, connection-string
400
+ * URIs, and PEM private keys (encryptedData from sealed-secrets and
401
+ * system TLS/service-account secrets are exempt)
402
+ * - ConfigMap data — flat credential keys and credential-looking
403
+ * `key: value` lines inside embedded YAML/INI payloads (e.g. appservice
404
+ * registrations holding as_token/hs_token)
405
+ * - Workload env vars that embed credentials via `value` (secretKeyRef or
406
+ * $(VAR) runtime expansion are fine)
407
+ * - Any nested field (CRD specs, realm users, …) holding a plaintext
408
+ * credential value
409
+ */
99
410
  exports.noPlaintextSecrets = {
100
411
  id: 'no-plaintext-secrets',
101
- description: 'Secrets should not contain plaintext passwords in rendered output',
412
+ description: 'Manifests must not contain plaintext credentials',
102
413
  severity: 'error',
103
414
  test: (resources) => {
104
415
  const errors = [];
416
+ const seen = new Set();
417
+ const push = (kind, where, field, suggestion) => {
418
+ const dedupeKey = `${where}:${field}`;
419
+ if (seen.has(dedupeKey))
420
+ return;
421
+ seen.add(dedupeKey);
422
+ errors.push({
423
+ code: 'PLAINTEXT_SECRET',
424
+ message: `Plaintext credential in ${where}`,
425
+ resource: kind,
426
+ field,
427
+ suggestion,
428
+ });
429
+ };
430
+ const scanValue = (resourceKind, where, field, value) => {
431
+ if (typeof value !== 'string' || value.length === 0)
432
+ return;
433
+ if (connectionStringPassword(value) !== null) {
434
+ push(resourceKind, where, field, 'Connection string embeds a password. Inject the credential at runtime via secretKeyRef or $(VAR) expansion instead');
435
+ }
436
+ else if (value.startsWith('-----BEGIN') && value.includes('PRIVATE KEY')) {
437
+ push(resourceKind, where, field, 'PEM private key is embedded in the manifest. Store it in a secrets backend or a sealed secret instead');
438
+ }
439
+ };
440
+ const ctx = { push, scanValue };
105
441
  for (const resource of resources) {
442
+ const kindName = `${resource.kind} "${resource.metadata?.name ?? '?'}"`;
106
443
  if (resource.kind === 'Secret') {
107
- const data = resource.stringData || resource.data || {};
108
- for (const [key, value] of Object.entries(data)) {
109
- if (typeof value === 'string' && value.length > 0) {
110
- // Check if it looks like a password (not a reference)
111
- if (key.toLowerCase().includes('password') || key.toLowerCase().includes('secret')) {
112
- errors.push({
113
- code: 'PLAINTEXT_SECRET',
114
- message: `Secret "${resource.metadata?.name}" contains plaintext value for key "${key}"`,
115
- resource: 'Secret',
116
- field: `stringData.${key}`,
117
- suggestion: 'Use Vault, Sealed Secrets, or external secret management instead of plaintext',
118
- });
119
- }
120
- }
121
- }
444
+ scanSecretResource(resource, ctx);
445
+ continue;
446
+ }
447
+ if (resource.kind === 'ConfigMap') {
448
+ scanConfigMapResource(resource, ctx);
449
+ continue;
122
450
  }
451
+ scanWorkloadEnv(resource, kindName, push);
452
+ walkNestedFields(resource, kindName, ctx);
123
453
  }
124
454
  return errors;
125
455
  },
@@ -149,44 +479,42 @@ exports.requireTLS = {
149
479
  },
150
480
  };
151
481
  /** Check that Pods don't run as root */
482
+ function runsAsRoot(securityContext) {
483
+ return securityContext?.runAsUser === 0 || securityContext?.runAsRoot === true;
484
+ }
485
+ function rootContainerErrors(resource) {
486
+ const podSpec = resource.spec?.template?.spec || resource.spec || {};
487
+ const name = resource.metadata?.name;
488
+ const errors = [];
489
+ if (runsAsRoot(podSpec.securityContext ?? {})) {
490
+ errors.push({
491
+ code: 'CONTAINER_RUNS_AS_ROOT',
492
+ message: `${resource.kind} "${name}" is configured to run as root`,
493
+ resource: resource.kind,
494
+ field: 'spec.template.spec.securityContext.runAsUser',
495
+ suggestion: 'Set runAsUser to a non-zero UID and runAsRoot to false',
496
+ });
497
+ }
498
+ for (const container of podSpec.containers || []) {
499
+ if (runsAsRoot(container.securityContext ?? {})) {
500
+ errors.push({
501
+ code: 'CONTAINER_RUNS_AS_ROOT',
502
+ message: `Container "${container.name}" in ${resource.kind} "${name}" runs as root`,
503
+ resource: resource.kind,
504
+ field: 'spec.template.spec.containers[].securityContext.runAsUser',
505
+ suggestion: 'Set securityContext.runAsUser to a non-zero UID',
506
+ });
507
+ }
508
+ }
509
+ return errors;
510
+ }
152
511
  exports.noRootContainers = {
153
512
  id: 'no-root-containers',
154
513
  description: 'Containers should not run as root user',
155
514
  severity: 'error',
156
- test: (resources) => {
157
- const errors = [];
158
- for (const resource of resources) {
159
- if (resource.kind === 'Deployment' ||
160
- resource.kind === 'StatefulSet' ||
161
- resource.kind === 'DaemonSet' ||
162
- resource.kind === 'Pod') {
163
- const podSpec = resource.spec?.template?.spec || resource.spec || {};
164
- const securityContext = podSpec.securityContext || {};
165
- if (securityContext.runAsUser === 0 || securityContext.runAsRoot === true) {
166
- errors.push({
167
- code: 'CONTAINER_RUNS_AS_ROOT',
168
- message: `${resource.kind} "${resource.metadata?.name}" is configured to run as root`,
169
- resource: resource.kind,
170
- field: 'spec.template.spec.securityContext.runAsUser',
171
- suggestion: 'Set runAsUser to a non-zero UID and runAsRoot to false',
172
- });
173
- }
174
- for (const container of podSpec.containers || []) {
175
- const containerSecurity = container.securityContext || {};
176
- if (containerSecurity.runAsUser === 0 || containerSecurity.runAsRoot === true) {
177
- errors.push({
178
- code: 'CONTAINER_RUNS_AS_ROOT',
179
- message: `Container "${container.name}" in ${resource.kind} "${resource.metadata?.name}" runs as root`,
180
- resource: resource.kind,
181
- field: 'spec.template.spec.containers[].securityContext.runAsUser',
182
- suggestion: 'Set securityContext.runAsUser to a non-zero UID',
183
- });
184
- }
185
- }
186
- }
187
- }
188
- return errors;
189
- },
515
+ test: (resources) => resources
516
+ .filter((resource) => [...exports.RESOURCE_LIMIT_KINDS, 'Pod'].includes(resource.kind))
517
+ .flatMap(rootContainerErrors),
190
518
  };
191
519
  /** Default set of guardrails for production use */
192
520
  exports.defaultGuardrails = [
@@ -1 +1 @@
1
- {"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../src/guardrails.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../src/guardrails.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,4 +8,5 @@ export { validateResource, validateIngress, validateService, validateDeployment,
8
8
  export type { ValidationError } from './validate';
9
9
  export { runGuardrails, defaultGuardrails, requireNetworkPolicies, requireResourceLimits, requireLabels, noPlaintextSecrets, requireTLS, noRootContainers, } from './guardrails';
10
10
  export type { GuardrailRule } from './guardrails';
11
+ export { sanitizeErrorMessage, redactConnectionStrings, redactPrivateKeys, maskSecretValues, } from './redact';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,gBAAgB,GACjB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,gBAAgB,GACjB,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,UAAU,CAAA"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.noRootContainers = exports.requireTLS = exports.noPlaintextSecrets = exports.requireLabels = exports.requireResourceLimits = exports.requireNetworkPolicies = exports.defaultGuardrails = exports.runGuardrails = exports.r8sValidationError = exports.checkDuplicates = exports.validateOperator = exports.validateDeployment = exports.validateService = exports.validateIngress = exports.validateResource = exports.fetchOperatorManifests = exports.createContext = exports.getOperator = exports.isOperatorDeclaration = exports.declareOperator = exports.useContext = exports.render = exports.Fragment = exports.jsxDEV = exports.jsxs = exports.jsx = void 0;
3
+ exports.maskSecretValues = exports.redactPrivateKeys = exports.redactConnectionStrings = exports.sanitizeErrorMessage = exports.noRootContainers = exports.requireTLS = exports.noPlaintextSecrets = exports.requireLabels = exports.requireResourceLimits = exports.requireNetworkPolicies = exports.defaultGuardrails = exports.runGuardrails = exports.r8sValidationError = exports.checkDuplicates = exports.validateOperator = exports.validateDeployment = exports.validateService = exports.validateIngress = exports.validateResource = exports.fetchOperatorManifests = exports.createContext = exports.getOperator = exports.isOperatorDeclaration = exports.declareOperator = exports.useContext = exports.render = exports.Fragment = exports.jsxDEV = exports.jsxs = exports.jsx = void 0;
4
4
  var jsx_runtime_1 = require("./jsx-runtime");
5
5
  Object.defineProperty(exports, "jsx", { enumerable: true, get: function () { return jsx_runtime_1.jsx; } });
6
6
  Object.defineProperty(exports, "jsxs", { enumerable: true, get: function () { return jsx_runtime_1.jsxs; } });
@@ -34,4 +34,9 @@ Object.defineProperty(exports, "requireLabels", { enumerable: true, get: functio
34
34
  Object.defineProperty(exports, "noPlaintextSecrets", { enumerable: true, get: function () { return guardrails_1.noPlaintextSecrets; } });
35
35
  Object.defineProperty(exports, "requireTLS", { enumerable: true, get: function () { return guardrails_1.requireTLS; } });
36
36
  Object.defineProperty(exports, "noRootContainers", { enumerable: true, get: function () { return guardrails_1.noRootContainers; } });
37
+ var redact_1 = require("./redact");
38
+ Object.defineProperty(exports, "sanitizeErrorMessage", { enumerable: true, get: function () { return redact_1.sanitizeErrorMessage; } });
39
+ Object.defineProperty(exports, "redactConnectionStrings", { enumerable: true, get: function () { return redact_1.redactConnectionStrings; } });
40
+ Object.defineProperty(exports, "redactPrivateKeys", { enumerable: true, get: function () { return redact_1.redactPrivateKeys; } });
41
+ Object.defineProperty(exports, "maskSecretValues", { enumerable: true, get: function () { return redact_1.maskSecretValues; } });
37
42
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA2D;AAAlD,kGAAA,GAAG,OAAA;AAAE,mGAAA,IAAI,OAAA;AAAE,qGAAA,MAAM,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAEpC,uCAAkE;AAAzD,kGAAA,MAAM,OAAA;AAAqB,sGAAA,UAAU,OAAA;AAC9C,uCAAgF;AAAvE,2GAAA,eAAe,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AAAE,uGAAA,WAAW,OAAA;AAC5D,qCAAyC;AAAhC,wGAAA,aAAa,OAAA;AACtB,qDAA0D;AAAjD,yHAAA,sBAAsB,OAAA;AAC/B,uCAQmB;AAPjB,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,8GAAA,kBAAkB,OAAA;AAClB,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AACf,8GAAA,kBAAkB,OAAA;AAGpB,2CASqB;AARnB,2GAAA,aAAa,OAAA;AACb,+GAAA,iBAAiB,OAAA;AACjB,oHAAA,sBAAsB,OAAA;AACtB,mHAAA,qBAAqB,OAAA;AACrB,2GAAA,aAAa,OAAA;AACb,gHAAA,kBAAkB,OAAA;AAClB,wGAAA,UAAU,OAAA;AACV,8GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA2D;AAAlD,kGAAA,GAAG,OAAA;AAAE,mGAAA,IAAI,OAAA;AAAE,qGAAA,MAAM,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAEpC,uCAAkE;AAAzD,kGAAA,MAAM,OAAA;AAAqB,sGAAA,UAAU,OAAA;AAC9C,uCAAgF;AAAvE,2GAAA,eAAe,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AAAE,uGAAA,WAAW,OAAA;AAC5D,qCAAyC;AAAhC,wGAAA,aAAa,OAAA;AACtB,qDAA0D;AAAjD,yHAAA,sBAAsB,OAAA;AAC/B,uCAQmB;AAPjB,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,8GAAA,kBAAkB,OAAA;AAClB,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AACf,8GAAA,kBAAkB,OAAA;AAGpB,2CASqB;AARnB,2GAAA,aAAa,OAAA;AACb,+GAAA,iBAAiB,OAAA;AACjB,oHAAA,sBAAsB,OAAA;AACtB,mHAAA,qBAAqB,OAAA;AACrB,2GAAA,aAAa,OAAA;AACb,gHAAA,kBAAkB,OAAA;AAClB,wGAAA,UAAU,OAAA;AACV,8GAAA,gBAAgB,OAAA;AAGlB,mCAKiB;AAJf,8GAAA,oBAAoB,OAAA;AACpB,iHAAA,uBAAuB,OAAA;AACvB,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Redaction helpers — scrub credential material from error messages,
3
+ * logs and rendered output so secrets don't leak through secondary
4
+ * channels (CI logs, CRD status, support tickets).
5
+ */
6
+ /**
7
+ * Mask credentials embedded in connection strings:
8
+ * postgresql://app:staging-password@db:5432/app
9
+ * → postgresql://app:*****@db:5432/app
10
+ */
11
+ export declare function redactConnectionStrings(text: string): string;
12
+ /**
13
+ * Mask PEM private key blocks:
14
+ * -----BEGIN RSA PRIVATE KEY-----
15
+ * ...
16
+ * -----END RSA PRIVATE KEY-----
17
+ * → [REDACTED PRIVATE KEY]
18
+ */
19
+ export declare function redactPrivateKeys(text: string): string;
20
+ /**
21
+ * Return a copy of a resource with plaintext credential values masked:
22
+ * - Secret stringData/data values for credential keys → '*****'
23
+ * - Connection-string passwords anywhere → '*****'
24
+ * - PEM private key blocks → '[REDACTED PRIVATE KEY]'
25
+ *
26
+ * Used when rendered output is written to logs/stdout so committed or
27
+ * displayed YAML never carries live credentials.
28
+ */
29
+ export declare function maskSecretValues<T>(resource: T): T;
30
+ /**
31
+ * Best-effort sanitization for error messages, logs and CRD status.
32
+ * Masks connection-string credentials and private key blocks. Framework
33
+ * errors are value-free by design (they reference the location of a
34
+ * credential, never its value); this covers messages produced by
35
+ * external tooling (kubectl, kubernetes API, esbuild source excerpts).
36
+ */
37
+ export declare function sanitizeErrorMessage(text: string): string;
38
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKtD;AAkBD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAElD;AA8CD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD"}
package/dist/redact.js ADDED
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * Redaction helpers — scrub credential material from error messages,
4
+ * logs and rendered output so secrets don't leak through secondary
5
+ * channels (CI logs, CRD status, support tickets).
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.redactConnectionStrings = redactConnectionStrings;
9
+ exports.redactPrivateKeys = redactPrivateKeys;
10
+ exports.maskSecretValues = maskSecretValues;
11
+ exports.sanitizeErrorMessage = sanitizeErrorMessage;
12
+ /**
13
+ * Mask credentials embedded in connection strings:
14
+ * postgresql://app:staging-password@db:5432/app
15
+ * → postgresql://app:*****@db:5432/app
16
+ */
17
+ function redactConnectionStrings(text) {
18
+ return text.replace(/([a-z][a-z0-9+.-]*:\/\/[^/\s:@]*):([^@/\s]+)@/gi, (_match, schemeAndUser) => `${schemeAndUser}:*****@`);
19
+ }
20
+ /**
21
+ * Mask PEM private key blocks:
22
+ * -----BEGIN RSA PRIVATE KEY-----
23
+ * ...
24
+ * -----END RSA PRIVATE KEY-----
25
+ * → [REDACTED PRIVATE KEY]
26
+ */
27
+ function redactPrivateKeys(text) {
28
+ return text.replace(/-----BEGIN [^-]*PRIVATE KEY-----[\s\S]*?-----END [^-]*PRIVATE KEY-----/g, '[REDACTED PRIVATE KEY]');
29
+ }
30
+ /** Keys (normalized) whose value in a Secret map is a credential. */
31
+ const SECRET_DATA_KEY_SUFFIXES = [
32
+ 'password',
33
+ 'passwd',
34
+ 'pwd',
35
+ 'secretkey',
36
+ 'secretaccesskey',
37
+ 'accesskey',
38
+ 'accesskeyid',
39
+ 'privatekey',
40
+ 'clientsecret',
41
+ 'apikey',
42
+ 'authtoken',
43
+ 'connectionstring',
44
+ ];
45
+ /**
46
+ * Return a copy of a resource with plaintext credential values masked:
47
+ * - Secret stringData/data values for credential keys → '*****'
48
+ * - Connection-string passwords anywhere → '*****'
49
+ * - PEM private key blocks → '[REDACTED PRIVATE KEY]'
50
+ *
51
+ * Used when rendered output is written to logs/stdout so committed or
52
+ * displayed YAML never carries live credentials.
53
+ */
54
+ function maskSecretValues(resource) {
55
+ return maskNode(resource);
56
+ }
57
+ function maskNode(node) {
58
+ if (typeof node === 'string') {
59
+ let masked = redactPrivateKeys(node);
60
+ masked = redactConnectionStrings(masked);
61
+ return masked;
62
+ }
63
+ if (Array.isArray(node)) {
64
+ return node.map(maskNode);
65
+ }
66
+ if (node && typeof node === 'object') {
67
+ const result = {};
68
+ for (const [key, value] of Object.entries(node)) {
69
+ const normalized = key.toLowerCase().replace(/[-_.]/g, '');
70
+ if (normalized === 'data' || normalized === 'stringdata') {
71
+ result[key] = maskSecretMap(value);
72
+ }
73
+ else {
74
+ result[key] = maskNode(value);
75
+ }
76
+ }
77
+ return result;
78
+ }
79
+ return node;
80
+ }
81
+ function maskSecretMap(value) {
82
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
83
+ return maskNode(value);
84
+ }
85
+ const result = {};
86
+ for (const [key, entry] of Object.entries(value)) {
87
+ const normalized = key.toLowerCase().replace(/[-_.]/g, '');
88
+ if (typeof entry === 'string' &&
89
+ entry.length > 0 &&
90
+ SECRET_DATA_KEY_SUFFIXES.some((suffix) => normalized.endsWith(suffix))) {
91
+ result[key] = '*****';
92
+ }
93
+ else {
94
+ result[key] = maskNode(entry);
95
+ }
96
+ }
97
+ return result;
98
+ }
99
+ /**
100
+ * Best-effort sanitization for error messages, logs and CRD status.
101
+ * Masks connection-string credentials and private key blocks. Framework
102
+ * errors are value-free by design (they reference the location of a
103
+ * credential, never its value); this covers messages produced by
104
+ * external tooling (kubectl, kubernetes API, esbuild source excerpts).
105
+ */
106
+ function sanitizeErrorMessage(text) {
107
+ return redactPrivateKeys(redactConnectionStrings(text));
108
+ }
109
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,EAAE,eAAe,EAAE,CAAA;gBAEb,MAAM,EAAE,eAAe,EAAE;CAMtC;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,eAAe,EAAE,CAoEhF;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,GAAG,eAAe,EAAE,CAkE/E;AAED,kCAAkC;AAClC,wBAAgB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,GAAG,eAAe,EAAE,CAwC/E;AAED,qCAAqC;AACrC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,eAAe,EAAE,CA6DlF;AAED,uCAAuC;AACvC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,eAAe,EAAE,CAsCjE;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,eAAe,EAAE,CA2BlF"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,EAAE,eAAe,EAAE,CAAA;gBAEb,MAAM,EAAE,eAAe,EAAE;CAMtC;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,eAAe,EAAE,CAoEhF;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,GAAG,eAAe,EAAE,CAkE/E;AAED,kCAAkC;AAClC,wBAAgB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,GAAG,eAAe,EAAE,CAoD/E;AAED,qCAAqC;AACrC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,eAAe,EAAE,CA6DlF;AAED,uCAAuC;AACvC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,eAAe,EAAE,CAsCjE;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,eAAe,EAAE,CA2BlF"}
package/dist/validate.js CHANGED
@@ -174,6 +174,17 @@ function validateService(resource) {
174
174
  else {
175
175
  for (let i = 0; i < spec.ports.length; i++) {
176
176
  const port = spec.ports[i];
177
+ // The API server rejects multi-port Services whose ports lack names —
178
+ // Flux catches this at dry-run time (after merge), so catch it in tests
179
+ if (spec.ports.length > 1 && !port.name) {
180
+ errors.push({
181
+ code: 'MULTI_PORT_WITHOUT_NAME',
182
+ message: `Service "${resource.metadata?.name}" has ${spec.ports.length} ports — every port requires a name (spec.ports[${i}] is anonymous)`,
183
+ resource: 'Service',
184
+ field: `spec.ports[${i}].name`,
185
+ suggestion: 'Name every port when a Service has more than one, e.g. { name: "http", port: 8080 }',
186
+ });
187
+ }
177
188
  if (!port.port || port.port < 1 || port.port > 65535) {
178
189
  errors.push({
179
190
  code: 'INVALID_PORT',
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@r8s/core",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "JSX factory and renderer for r8s",
5
5
  "license": "MIT",
6
6
  "author": "Berget AI AB",
@@ -52,7 +52,7 @@
52
52
  "clean": "rm -rf dist tsconfig.tsbuildinfo"
53
53
  },
54
54
  "dependencies": {
55
- "@r8s/k8s-types": "^0.1.0"
55
+ "@r8s/k8s-types": "^0.2.0"
56
56
  },
57
57
  "devDependencies": {
58
58
  "typescript": "^5.3.0",