@bluedynamics/cdk8s-monitoring 0.0.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.
Files changed (47) hide show
  1. package/CLAUDE.md +76 -0
  2. package/LICENSE +202 -0
  3. package/README.md +87 -0
  4. package/examples/synth.ts +17 -0
  5. package/lib/constructs/alloy.d.ts +29 -0
  6. package/lib/constructs/alloy.js +214 -0
  7. package/lib/constructs/grafana-password-secret.d.ts +57 -0
  8. package/lib/constructs/grafana-password-secret.js +99 -0
  9. package/lib/constructs/loki-s3-bucket.d.ts +24 -0
  10. package/lib/constructs/loki-s3-bucket.js +147 -0
  11. package/lib/constructs/loki-s3-credentials.d.ts +27 -0
  12. package/lib/constructs/loki-s3-credentials.js +71 -0
  13. package/lib/constructs/loki.d.ts +30 -0
  14. package/lib/constructs/loki.js +185 -0
  15. package/lib/constructs/namespace.d.ts +13 -0
  16. package/lib/constructs/namespace.js +34 -0
  17. package/lib/constructs/priority-class.d.ts +12 -0
  18. package/lib/constructs/priority-class.js +38 -0
  19. package/lib/constructs/prometheus-stack.d.ts +30 -0
  20. package/lib/constructs/prometheus-stack.js +477 -0
  21. package/lib/constructs/thanos-compactor.d.ts +35 -0
  22. package/lib/constructs/thanos-compactor.js +198 -0
  23. package/lib/constructs/thanos-query.d.ts +30 -0
  24. package/lib/constructs/thanos-query.js +205 -0
  25. package/lib/constructs/thanos-s3-bucket.d.ts +24 -0
  26. package/lib/constructs/thanos-s3-bucket.js +147 -0
  27. package/lib/constructs/thanos-s3-credentials.d.ts +27 -0
  28. package/lib/constructs/thanos-s3-credentials.js +93 -0
  29. package/lib/constructs/thanos-store.d.ts +30 -0
  30. package/lib/constructs/thanos-store.js +239 -0
  31. package/lib/default-config.d.ts +12 -0
  32. package/lib/default-config.js +77 -0
  33. package/lib/imports/external-secrets.io.d.ts +39243 -0
  34. package/lib/imports/external-secrets.io.js +23112 -0
  35. package/lib/imports/generators.external-secrets.io.d.ts +7831 -0
  36. package/lib/imports/generators.external-secrets.io.js +4895 -0
  37. package/lib/imports/k8s.d.ts +24537 -0
  38. package/lib/imports/k8s.js +18268 -0
  39. package/lib/imports/s3.aws.upbound.io.d.ts +2882 -0
  40. package/lib/imports/s3.aws.upbound.io.js +1828 -0
  41. package/lib/index.d.ts +17 -0
  42. package/lib/index.js +38 -0
  43. package/lib/monitoring-chart.d.ts +39 -0
  44. package/lib/monitoring-chart.js +127 -0
  45. package/lib/types.d.ts +142 -0
  46. package/lib/types.js +3 -0
  47. package/package.json +117 -0
package/lib/index.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ export * from './types';
2
+ export * from './default-config';
3
+ export * from './monitoring-chart';
4
+ export { KubeConfigMap } from './imports/k8s';
5
+ export * from './constructs/namespace';
6
+ export * from './constructs/priority-class';
7
+ export * from './constructs/thanos-s3-bucket';
8
+ export * from './constructs/loki-s3-bucket';
9
+ export * from './constructs/thanos-s3-credentials';
10
+ export * from './constructs/loki-s3-credentials';
11
+ export * from './constructs/grafana-password-secret';
12
+ export * from './constructs/prometheus-stack';
13
+ export * from './constructs/loki';
14
+ export * from './constructs/alloy';
15
+ export * from './constructs/thanos-query';
16
+ export * from './constructs/thanos-store';
17
+ export * from './constructs/thanos-compactor';
package/lib/index.js ADDED
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.KubeConfigMap = void 0;
18
+ __exportStar(require("./types"), exports);
19
+ __exportStar(require("./default-config"), exports);
20
+ __exportStar(require("./monitoring-chart"), exports);
21
+ // Convenience re-export so integration charts can build dashboard ConfigMaps
22
+ // (Grafana sidecar discovery) without depending on the generated imports directly.
23
+ var k8s_1 = require("./imports/k8s");
24
+ Object.defineProperty(exports, "KubeConfigMap", { enumerable: true, get: function () { return k8s_1.KubeConfigMap; } });
25
+ __exportStar(require("./constructs/namespace"), exports);
26
+ __exportStar(require("./constructs/priority-class"), exports);
27
+ __exportStar(require("./constructs/thanos-s3-bucket"), exports);
28
+ __exportStar(require("./constructs/loki-s3-bucket"), exports);
29
+ __exportStar(require("./constructs/thanos-s3-credentials"), exports);
30
+ __exportStar(require("./constructs/loki-s3-credentials"), exports);
31
+ __exportStar(require("./constructs/grafana-password-secret"), exports);
32
+ __exportStar(require("./constructs/prometheus-stack"), exports);
33
+ __exportStar(require("./constructs/loki"), exports);
34
+ __exportStar(require("./constructs/alloy"), exports);
35
+ __exportStar(require("./constructs/thanos-query"), exports);
36
+ __exportStar(require("./constructs/thanos-store"), exports);
37
+ __exportStar(require("./constructs/thanos-compactor"), exports);
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsbURBQWlDO0FBQ2pDLHFEQUFtQztBQUNuQyw2RUFBNkU7QUFDN0UsbUZBQW1GO0FBQ25GLHFDQUE4QztBQUFyQyxvR0FBQSxhQUFhLE9BQUE7QUFDdEIseURBQXVDO0FBQ3ZDLDhEQUE0QztBQUM1QyxnRUFBOEM7QUFDOUMsOERBQTRDO0FBQzVDLHFFQUFtRDtBQUNuRCxtRUFBaUQ7QUFDakQsdUVBQXFEO0FBQ3JELGdFQUE4QztBQUM5QyxvREFBa0M7QUFDbEMscURBQW1DO0FBQ25DLDREQUEwQztBQUMxQyw0REFBMEM7QUFDMUMsZ0VBQThDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbW9uaXRvcmluZy1jaGFydCc7XG4vLyBDb252ZW5pZW5jZSByZS1leHBvcnQgc28gaW50ZWdyYXRpb24gY2hhcnRzIGNhbiBidWlsZCBkYXNoYm9hcmQgQ29uZmlnTWFwc1xuLy8gKEdyYWZhbmEgc2lkZWNhciBkaXNjb3ZlcnkpIHdpdGhvdXQgZGVwZW5kaW5nIG9uIHRoZSBnZW5lcmF0ZWQgaW1wb3J0cyBkaXJlY3RseS5cbmV4cG9ydCB7IEt1YmVDb25maWdNYXAgfSBmcm9tICcuL2ltcG9ydHMvazhzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0cy9uYW1lc3BhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RzL3ByaW9yaXR5LWNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0cy90aGFub3MtczMtYnVja2V0JztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0cy9sb2tpLXMzLWJ1Y2tldCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdHMvdGhhbm9zLXMzLWNyZWRlbnRpYWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0cy9sb2tpLXMzLWNyZWRlbnRpYWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0cy9ncmFmYW5hLXBhc3N3b3JkLXNlY3JldCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdHMvcHJvbWV0aGV1cy1zdGFjayc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdHMvbG9raSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdHMvYWxsb3knO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdHJ1Y3RzL3RoYW5vcy1xdWVyeSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0cnVjdHMvdGhhbm9zLXN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RydWN0cy90aGFub3MtY29tcGFjdG9yJztcbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { Chart, ChartProps } from 'cdk8s';
2
+ import { Construct } from 'constructs';
3
+ import { MonitoringConfig } from './types';
4
+ /**
5
+ * MonitoringChart orchestrates the complete monitoring stack.
6
+ *
7
+ * This chart creates all resources in the correct order using ArgoCD sync-waves:
8
+ *
9
+ * Wave 0: Foundation
10
+ * - Namespace
11
+ * - PriorityClass
12
+ *
13
+ * Wave 1: External Dependencies
14
+ * - S3 Buckets (Crossplane)
15
+ * - S3 Credentials (ExternalSecret)
16
+ *
17
+ * Wave 2: Core Services
18
+ * - Prometheus Stack (Prometheus, Grafana, Alertmanager)
19
+ * - Loki (log aggregation)
20
+ *
21
+ * Wave 3: Advanced Services
22
+ * - Alloy (log collection)
23
+ * - Thanos Query (unified metrics query)
24
+ * - Thanos Store (S3 gateway)
25
+ * - Thanos Compactor (downsampling)
26
+ *
27
+ * App-specific dashboards and alert rules are intentionally NOT part of this
28
+ * chart. Integration charts attach their own dashboard/alert constructs beside
29
+ * this one (the Grafana sidecar discovers ConfigMaps labeled
30
+ * `grafana_dashboard: "1"` in the same namespace).
31
+ *
32
+ * Configuration is provided via the MonitoringConfig interface, which combines:
33
+ * - config.yaml (default values)
34
+ * - Environment variables (overrides)
35
+ */
36
+ export declare class MonitoringChart extends Chart {
37
+ readonly config: MonitoringConfig;
38
+ constructor(scope: Construct, id: string, config: MonitoringConfig, props?: ChartProps);
39
+ }
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MonitoringChart = void 0;
4
+ const cdk8s_1 = require("cdk8s");
5
+ // Import all constructs
6
+ const alloy_1 = require("./constructs/alloy");
7
+ const grafana_password_secret_1 = require("./constructs/grafana-password-secret");
8
+ const loki_1 = require("./constructs/loki");
9
+ const loki_s3_bucket_1 = require("./constructs/loki-s3-bucket");
10
+ const loki_s3_credentials_1 = require("./constructs/loki-s3-credentials");
11
+ const namespace_1 = require("./constructs/namespace");
12
+ const priority_class_1 = require("./constructs/priority-class");
13
+ const prometheus_stack_1 = require("./constructs/prometheus-stack");
14
+ const thanos_compactor_1 = require("./constructs/thanos-compactor");
15
+ const thanos_query_1 = require("./constructs/thanos-query");
16
+ const thanos_s3_bucket_1 = require("./constructs/thanos-s3-bucket");
17
+ const thanos_s3_credentials_1 = require("./constructs/thanos-s3-credentials");
18
+ const thanos_store_1 = require("./constructs/thanos-store");
19
+ /**
20
+ * MonitoringChart orchestrates the complete monitoring stack.
21
+ *
22
+ * This chart creates all resources in the correct order using ArgoCD sync-waves:
23
+ *
24
+ * Wave 0: Foundation
25
+ * - Namespace
26
+ * - PriorityClass
27
+ *
28
+ * Wave 1: External Dependencies
29
+ * - S3 Buckets (Crossplane)
30
+ * - S3 Credentials (ExternalSecret)
31
+ *
32
+ * Wave 2: Core Services
33
+ * - Prometheus Stack (Prometheus, Grafana, Alertmanager)
34
+ * - Loki (log aggregation)
35
+ *
36
+ * Wave 3: Advanced Services
37
+ * - Alloy (log collection)
38
+ * - Thanos Query (unified metrics query)
39
+ * - Thanos Store (S3 gateway)
40
+ * - Thanos Compactor (downsampling)
41
+ *
42
+ * App-specific dashboards and alert rules are intentionally NOT part of this
43
+ * chart. Integration charts attach their own dashboard/alert constructs beside
44
+ * this one (the Grafana sidecar discovers ConfigMaps labeled
45
+ * `grafana_dashboard: "1"` in the same namespace).
46
+ *
47
+ * Configuration is provided via the MonitoringConfig interface, which combines:
48
+ * - config.yaml (default values)
49
+ * - Environment variables (overrides)
50
+ */
51
+ class MonitoringChart extends cdk8s_1.Chart {
52
+ constructor(scope, id, config, props = {}) {
53
+ super(scope, id, props);
54
+ this.config = config;
55
+ const namespace = config.namespace;
56
+ // =========================================================================
57
+ // Wave 0: Foundation
58
+ // =========================================================================
59
+ // Must exist before any other resources
60
+ new namespace_1.NamespaceConstruct(this, 'namespace', {
61
+ name: namespace,
62
+ });
63
+ new priority_class_1.PriorityClassConstruct(this, 'priority-class');
64
+ // =========================================================================
65
+ // Wave 1: External Dependencies
66
+ // =========================================================================
67
+ // S3 buckets must be created before pods try to access them
68
+ new thanos_s3_bucket_1.ThanosS3BucketConstruct(this, 'thanos-s3-bucket', {
69
+ config,
70
+ });
71
+ new loki_s3_bucket_1.LokiS3BucketConstruct(this, 'loki-s3-bucket', {
72
+ config,
73
+ });
74
+ // Secrets must exist before pods mount them
75
+ new thanos_s3_credentials_1.ThanosS3CredentialsConstruct(this, 'thanos-s3-credentials', {
76
+ namespace,
77
+ config,
78
+ });
79
+ const lokiS3Credentials = new loki_s3_credentials_1.LokiS3CredentialsConstruct(this, 'loki-s3-credentials', {
80
+ namespace,
81
+ config,
82
+ });
83
+ // Grafana admin credentials (stable password across Helm upgrades)
84
+ new grafana_password_secret_1.GrafanaPasswordSecret(this, 'grafana-password', {
85
+ namespace,
86
+ });
87
+ // =========================================================================
88
+ // Wave 2: Core Services
89
+ // =========================================================================
90
+ // Prometheus Stack (includes Prometheus, Grafana, Alertmanager, operators)
91
+ new prometheus_stack_1.PrometheusStackConstruct(this, 'prometheus-stack', {
92
+ namespace,
93
+ config,
94
+ });
95
+ // Loki (log aggregation)
96
+ new loki_1.LokiConstruct(this, 'loki', {
97
+ namespace,
98
+ config,
99
+ s3CredentialsSecretName: lokiS3Credentials.secretName,
100
+ });
101
+ // =========================================================================
102
+ // Wave 3: Advanced Services
103
+ // =========================================================================
104
+ // Alloy (log collection - after Loki is ready)
105
+ new alloy_1.AlloyConstruct(this, 'alloy', {
106
+ namespace,
107
+ config,
108
+ });
109
+ // Thanos Query (unified query interface - after Prometheus is ready)
110
+ new thanos_query_1.ThanosQueryConstruct(this, 'thanos-query', {
111
+ namespace,
112
+ config,
113
+ });
114
+ // Thanos Store (S3 gateway - after S3 bucket and credentials)
115
+ new thanos_store_1.ThanosStoreConstruct(this, 'thanos-store', {
116
+ namespace,
117
+ config,
118
+ });
119
+ // Thanos Compactor (downsampling - after S3 bucket and credentials)
120
+ new thanos_compactor_1.ThanosCompactorConstruct(this, 'thanos-compactor', {
121
+ namespace,
122
+ config,
123
+ });
124
+ }
125
+ }
126
+ exports.MonitoringChart = MonitoringChart;
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXRvcmluZy1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tb25pdG9yaW5nLWNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUEwQztBQUcxQyx3QkFBd0I7QUFDeEIsOENBQW9EO0FBQ3BELGtGQUE2RTtBQUM3RSw0Q0FBa0Q7QUFDbEQsZ0VBQW9FO0FBQ3BFLDBFQUE4RTtBQUM5RSxzREFBNEQ7QUFDNUQsZ0VBQXFFO0FBQ3JFLG9FQUF5RTtBQUN6RSxvRUFBeUU7QUFDekUsNERBQWlFO0FBQ2pFLG9FQUF3RTtBQUN4RSw4RUFBa0Y7QUFDbEYsNERBQWlFO0FBR2pFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLGFBQUs7SUFDeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBVyxNQUF3QixFQUFFLFFBQW9CLEVBQUU7UUFDakcsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFEeUIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFHekUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUVuQyw0RUFBNEU7UUFDNUUscUJBQXFCO1FBQ3JCLDRFQUE0RTtRQUM1RSx3Q0FBd0M7UUFDeEMsSUFBSSw4QkFBa0IsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3hDLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksdUNBQXNCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFFbkQsNEVBQTRFO1FBQzVFLGdDQUFnQztRQUNoQyw0RUFBNEU7UUFDNUUsNERBQTREO1FBQzVELElBQUksMENBQXVCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3BELE1BQU07U0FDUCxDQUFDLENBQUM7UUFFSCxJQUFJLHNDQUFxQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUNoRCxNQUFNO1NBQ1AsQ0FBQyxDQUFDO1FBRUgsNENBQTRDO1FBQzVDLElBQUksb0RBQTRCLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQzlELFNBQVM7WUFDVCxNQUFNO1NBQ1AsQ0FBQyxDQUFDO1FBRUgsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGdEQUEwQixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNwRixTQUFTO1lBQ1QsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILG1FQUFtRTtRQUNuRSxJQUFJLCtDQUFxQixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUNsRCxTQUFTO1NBQ1YsQ0FBQyxDQUFDO1FBRUgsNEVBQTRFO1FBQzVFLHdCQUF3QjtRQUN4Qiw0RUFBNEU7UUFDNUUsMkVBQTJFO1FBQzNFLElBQUksMkNBQXdCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3JELFNBQVM7WUFDVCxNQUFNO1NBQ1AsQ0FBQyxDQUFDO1FBRUgseUJBQXlCO1FBQ3pCLElBQUksb0JBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQzlCLFNBQVM7WUFDVCxNQUFNO1lBQ04sdUJBQXVCLEVBQUUsaUJBQWlCLENBQUMsVUFBVTtTQUN0RCxDQUFDLENBQUM7UUFFSCw0RUFBNEU7UUFDNUUsNEJBQTRCO1FBQzVCLDRFQUE0RTtRQUM1RSwrQ0FBK0M7UUFDL0MsSUFBSSxzQkFBYyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDaEMsU0FBUztZQUNULE1BQU07U0FDUCxDQUFDLENBQUM7UUFFSCxxRUFBcUU7UUFDckUsSUFBSSxtQ0FBb0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQzdDLFNBQVM7WUFDVCxNQUFNO1NBQ1AsQ0FBQyxDQUFDO1FBRUgsOERBQThEO1FBQzlELElBQUksbUNBQW9CLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUM3QyxTQUFTO1lBQ1QsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILG9FQUFvRTtRQUNwRSxJQUFJLDJDQUF3QixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUNyRCxTQUFTO1lBQ1QsTUFBTTtTQUNQLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXZGRCwwQ0F1RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFydCwgQ2hhcnRQcm9wcyB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vLyBJbXBvcnQgYWxsIGNvbnN0cnVjdHNcbmltcG9ydCB7IEFsbG95Q29uc3RydWN0IH0gZnJvbSAnLi9jb25zdHJ1Y3RzL2FsbG95JztcbmltcG9ydCB7IEdyYWZhbmFQYXNzd29yZFNlY3JldCB9IGZyb20gJy4vY29uc3RydWN0cy9ncmFmYW5hLXBhc3N3b3JkLXNlY3JldCc7XG5pbXBvcnQgeyBMb2tpQ29uc3RydWN0IH0gZnJvbSAnLi9jb25zdHJ1Y3RzL2xva2knO1xuaW1wb3J0IHsgTG9raVMzQnVja2V0Q29uc3RydWN0IH0gZnJvbSAnLi9jb25zdHJ1Y3RzL2xva2ktczMtYnVja2V0JztcbmltcG9ydCB7IExva2lTM0NyZWRlbnRpYWxzQ29uc3RydWN0IH0gZnJvbSAnLi9jb25zdHJ1Y3RzL2xva2ktczMtY3JlZGVudGlhbHMnO1xuaW1wb3J0IHsgTmFtZXNwYWNlQ29uc3RydWN0IH0gZnJvbSAnLi9jb25zdHJ1Y3RzL25hbWVzcGFjZSc7XG5pbXBvcnQgeyBQcmlvcml0eUNsYXNzQ29uc3RydWN0IH0gZnJvbSAnLi9jb25zdHJ1Y3RzL3ByaW9yaXR5LWNsYXNzJztcbmltcG9ydCB7IFByb21ldGhldXNTdGFja0NvbnN0cnVjdCB9IGZyb20gJy4vY29uc3RydWN0cy9wcm9tZXRoZXVzLXN0YWNrJztcbmltcG9ydCB7IFRoYW5vc0NvbXBhY3RvckNvbnN0cnVjdCB9IGZyb20gJy4vY29uc3RydWN0cy90aGFub3MtY29tcGFjdG9yJztcbmltcG9ydCB7IFRoYW5vc1F1ZXJ5Q29uc3RydWN0IH0gZnJvbSAnLi9jb25zdHJ1Y3RzL3RoYW5vcy1xdWVyeSc7XG5pbXBvcnQgeyBUaGFub3NTM0J1Y2tldENvbnN0cnVjdCB9IGZyb20gJy4vY29uc3RydWN0cy90aGFub3MtczMtYnVja2V0JztcbmltcG9ydCB7IFRoYW5vc1MzQ3JlZGVudGlhbHNDb25zdHJ1Y3QgfSBmcm9tICcuL2NvbnN0cnVjdHMvdGhhbm9zLXMzLWNyZWRlbnRpYWxzJztcbmltcG9ydCB7IFRoYW5vc1N0b3JlQ29uc3RydWN0IH0gZnJvbSAnLi9jb25zdHJ1Y3RzL3RoYW5vcy1zdG9yZSc7XG5pbXBvcnQgeyBNb25pdG9yaW5nQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogTW9uaXRvcmluZ0NoYXJ0IG9yY2hlc3RyYXRlcyB0aGUgY29tcGxldGUgbW9uaXRvcmluZyBzdGFjay5cbiAqXG4gKiBUaGlzIGNoYXJ0IGNyZWF0ZXMgYWxsIHJlc291cmNlcyBpbiB0aGUgY29ycmVjdCBvcmRlciB1c2luZyBBcmdvQ0Qgc3luYy13YXZlczpcbiAqXG4gKiBXYXZlIDA6IEZvdW5kYXRpb25cbiAqIC0gTmFtZXNwYWNlXG4gKiAtIFByaW9yaXR5Q2xhc3NcbiAqXG4gKiBXYXZlIDE6IEV4dGVybmFsIERlcGVuZGVuY2llc1xuICogLSBTMyBCdWNrZXRzIChDcm9zc3BsYW5lKVxuICogLSBTMyBDcmVkZW50aWFscyAoRXh0ZXJuYWxTZWNyZXQpXG4gKlxuICogV2F2ZSAyOiBDb3JlIFNlcnZpY2VzXG4gKiAtIFByb21ldGhldXMgU3RhY2sgKFByb21ldGhldXMsIEdyYWZhbmEsIEFsZXJ0bWFuYWdlcilcbiAqIC0gTG9raSAobG9nIGFnZ3JlZ2F0aW9uKVxuICpcbiAqIFdhdmUgMzogQWR2YW5jZWQgU2VydmljZXNcbiAqIC0gQWxsb3kgKGxvZyBjb2xsZWN0aW9uKVxuICogLSBUaGFub3MgUXVlcnkgKHVuaWZpZWQgbWV0cmljcyBxdWVyeSlcbiAqIC0gVGhhbm9zIFN0b3JlIChTMyBnYXRld2F5KVxuICogLSBUaGFub3MgQ29tcGFjdG9yIChkb3duc2FtcGxpbmcpXG4gKlxuICogQXBwLXNwZWNpZmljIGRhc2hib2FyZHMgYW5kIGFsZXJ0IHJ1bGVzIGFyZSBpbnRlbnRpb25hbGx5IE5PVCBwYXJ0IG9mIHRoaXNcbiAqIGNoYXJ0LiBJbnRlZ3JhdGlvbiBjaGFydHMgYXR0YWNoIHRoZWlyIG93biBkYXNoYm9hcmQvYWxlcnQgY29uc3RydWN0cyBiZXNpZGVcbiAqIHRoaXMgb25lICh0aGUgR3JhZmFuYSBzaWRlY2FyIGRpc2NvdmVycyBDb25maWdNYXBzIGxhYmVsZWRcbiAqIGBncmFmYW5hX2Rhc2hib2FyZDogXCIxXCJgIGluIHRoZSBzYW1lIG5hbWVzcGFjZSkuXG4gKlxuICogQ29uZmlndXJhdGlvbiBpcyBwcm92aWRlZCB2aWEgdGhlIE1vbml0b3JpbmdDb25maWcgaW50ZXJmYWNlLCB3aGljaCBjb21iaW5lczpcbiAqIC0gY29uZmlnLnlhbWwgKGRlZmF1bHQgdmFsdWVzKVxuICogLSBFbnZpcm9ubWVudCB2YXJpYWJsZXMgKG92ZXJyaWRlcylcbiAqL1xuZXhwb3J0IGNsYXNzIE1vbml0b3JpbmdDaGFydCBleHRlbmRzIENoYXJ0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcmVhZG9ubHkgY29uZmlnOiBNb25pdG9yaW5nQ29uZmlnLCBwcm9wczogQ2hhcnRQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBjb25zdCBuYW1lc3BhY2UgPSBjb25maWcubmFtZXNwYWNlO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFdhdmUgMDogRm91bmRhdGlvblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBNdXN0IGV4aXN0IGJlZm9yZSBhbnkgb3RoZXIgcmVzb3VyY2VzXG4gICAgbmV3IE5hbWVzcGFjZUNvbnN0cnVjdCh0aGlzLCAnbmFtZXNwYWNlJywge1xuICAgICAgbmFtZTogbmFtZXNwYWNlLFxuICAgIH0pO1xuXG4gICAgbmV3IFByaW9yaXR5Q2xhc3NDb25zdHJ1Y3QodGhpcywgJ3ByaW9yaXR5LWNsYXNzJyk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gV2F2ZSAxOiBFeHRlcm5hbCBEZXBlbmRlbmNpZXNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gUzMgYnVja2V0cyBtdXN0IGJlIGNyZWF0ZWQgYmVmb3JlIHBvZHMgdHJ5IHRvIGFjY2VzcyB0aGVtXG4gICAgbmV3IFRoYW5vc1MzQnVja2V0Q29uc3RydWN0KHRoaXMsICd0aGFub3MtczMtYnVja2V0Jywge1xuICAgICAgY29uZmlnLFxuICAgIH0pO1xuXG4gICAgbmV3IExva2lTM0J1Y2tldENvbnN0cnVjdCh0aGlzLCAnbG9raS1zMy1idWNrZXQnLCB7XG4gICAgICBjb25maWcsXG4gICAgfSk7XG5cbiAgICAvLyBTZWNyZXRzIG11c3QgZXhpc3QgYmVmb3JlIHBvZHMgbW91bnQgdGhlbVxuICAgIG5ldyBUaGFub3NTM0NyZWRlbnRpYWxzQ29uc3RydWN0KHRoaXMsICd0aGFub3MtczMtY3JlZGVudGlhbHMnLCB7XG4gICAgICBuYW1lc3BhY2UsXG4gICAgICBjb25maWcsXG4gICAgfSk7XG5cbiAgICBjb25zdCBsb2tpUzNDcmVkZW50aWFscyA9IG5ldyBMb2tpUzNDcmVkZW50aWFsc0NvbnN0cnVjdCh0aGlzLCAnbG9raS1zMy1jcmVkZW50aWFscycsIHtcbiAgICAgIG5hbWVzcGFjZSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KTtcblxuICAgIC8vIEdyYWZhbmEgYWRtaW4gY3JlZGVudGlhbHMgKHN0YWJsZSBwYXNzd29yZCBhY3Jvc3MgSGVsbSB1cGdyYWRlcylcbiAgICBuZXcgR3JhZmFuYVBhc3N3b3JkU2VjcmV0KHRoaXMsICdncmFmYW5hLXBhc3N3b3JkJywge1xuICAgICAgbmFtZXNwYWNlLFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFdhdmUgMjogQ29yZSBTZXJ2aWNlc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBQcm9tZXRoZXVzIFN0YWNrIChpbmNsdWRlcyBQcm9tZXRoZXVzLCBHcmFmYW5hLCBBbGVydG1hbmFnZXIsIG9wZXJhdG9ycylcbiAgICBuZXcgUHJvbWV0aGV1c1N0YWNrQ29uc3RydWN0KHRoaXMsICdwcm9tZXRoZXVzLXN0YWNrJywge1xuICAgICAgbmFtZXNwYWNlLFxuICAgICAgY29uZmlnLFxuICAgIH0pO1xuXG4gICAgLy8gTG9raSAobG9nIGFnZ3JlZ2F0aW9uKVxuICAgIG5ldyBMb2tpQ29uc3RydWN0KHRoaXMsICdsb2tpJywge1xuICAgICAgbmFtZXNwYWNlLFxuICAgICAgY29uZmlnLFxuICAgICAgczNDcmVkZW50aWFsc1NlY3JldE5hbWU6IGxva2lTM0NyZWRlbnRpYWxzLnNlY3JldE5hbWUsXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gV2F2ZSAzOiBBZHZhbmNlZCBTZXJ2aWNlc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBBbGxveSAobG9nIGNvbGxlY3Rpb24gLSBhZnRlciBMb2tpIGlzIHJlYWR5KVxuICAgIG5ldyBBbGxveUNvbnN0cnVjdCh0aGlzLCAnYWxsb3knLCB7XG4gICAgICBuYW1lc3BhY2UsXG4gICAgICBjb25maWcsXG4gICAgfSk7XG5cbiAgICAvLyBUaGFub3MgUXVlcnkgKHVuaWZpZWQgcXVlcnkgaW50ZXJmYWNlIC0gYWZ0ZXIgUHJvbWV0aGV1cyBpcyByZWFkeSlcbiAgICBuZXcgVGhhbm9zUXVlcnlDb25zdHJ1Y3QodGhpcywgJ3RoYW5vcy1xdWVyeScsIHtcbiAgICAgIG5hbWVzcGFjZSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KTtcblxuICAgIC8vIFRoYW5vcyBTdG9yZSAoUzMgZ2F0ZXdheSAtIGFmdGVyIFMzIGJ1Y2tldCBhbmQgY3JlZGVudGlhbHMpXG4gICAgbmV3IFRoYW5vc1N0b3JlQ29uc3RydWN0KHRoaXMsICd0aGFub3Mtc3RvcmUnLCB7XG4gICAgICBuYW1lc3BhY2UsXG4gICAgICBjb25maWcsXG4gICAgfSk7XG5cbiAgICAvLyBUaGFub3MgQ29tcGFjdG9yIChkb3duc2FtcGxpbmcgLSBhZnRlciBTMyBidWNrZXQgYW5kIGNyZWRlbnRpYWxzKVxuICAgIG5ldyBUaGFub3NDb21wYWN0b3JDb25zdHJ1Y3QodGhpcywgJ3RoYW5vcy1jb21wYWN0b3InLCB7XG4gICAgICBuYW1lc3BhY2UsXG4gICAgICBjb25maWcsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
package/lib/types.d.ts ADDED
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Resource allocation for a component (CPU and memory)
3
+ */
4
+ export interface ResourceAllocation {
5
+ cpu: string;
6
+ memory: string;
7
+ }
8
+ /**
9
+ * Resource requests and limits for a component
10
+ */
11
+ export interface ResourceRequirements {
12
+ requests: ResourceAllocation;
13
+ limits: ResourceAllocation;
14
+ }
15
+ /**
16
+ * S3 configuration for object storage
17
+ */
18
+ export interface S3Config {
19
+ endpoint: string;
20
+ endpointNoProtocol: string;
21
+ region: string;
22
+ buckets: {
23
+ thanos: string;
24
+ loki: string;
25
+ };
26
+ }
27
+ /**
28
+ * SMTP configuration for alerting
29
+ */
30
+ export interface SmtpConfig {
31
+ host: string;
32
+ port: number;
33
+ from: string;
34
+ username?: string;
35
+ password?: string;
36
+ requireTls: boolean;
37
+ }
38
+ /**
39
+ * Domain configuration for ingresses
40
+ */
41
+ export interface DomainConfig {
42
+ grafana: string;
43
+ }
44
+ /**
45
+ * Retention policies for metrics and logs
46
+ */
47
+ export interface RetentionConfig {
48
+ prometheus: string;
49
+ prometheusS3Raw: number;
50
+ prometheusS35m: number;
51
+ prometheusS31h: number;
52
+ loki: string;
53
+ }
54
+ /**
55
+ * Storage sizes for persistent volumes
56
+ */
57
+ export interface StorageConfig {
58
+ prometheus: string;
59
+ grafana: string;
60
+ alertmanager: string;
61
+ lokiBackend: string;
62
+ lokiWrite: string;
63
+ thanosStore: string;
64
+ thanosCompactor: string;
65
+ }
66
+ /**
67
+ * Replica counts for high availability
68
+ */
69
+ export interface ReplicaConfig {
70
+ prometheus: number;
71
+ alertmanager: number;
72
+ grafana: number;
73
+ lokiBackend: number;
74
+ lokiRead: number;
75
+ lokiWrite: number;
76
+ thanosQuery: number;
77
+ thanosStore: number;
78
+ }
79
+ /**
80
+ * Resource requirements for all components
81
+ */
82
+ export interface ResourceConfig {
83
+ prometheus: ResourceRequirements;
84
+ grafana: ResourceRequirements;
85
+ alertmanager: ResourceRequirements;
86
+ lokiBackend: ResourceRequirements;
87
+ lokiRead: ResourceRequirements;
88
+ lokiWrite: ResourceRequirements;
89
+ lokiGateway: ResourceRequirements;
90
+ alloy: ResourceRequirements;
91
+ thanosQuery: ResourceRequirements;
92
+ thanosStore: ResourceRequirements;
93
+ thanosCompactor: ResourceRequirements;
94
+ configReloader: ResourceRequirements;
95
+ thanosSidecar: ResourceRequirements;
96
+ }
97
+ /**
98
+ * Helm chart version configuration
99
+ */
100
+ export interface VersionConfig {
101
+ prometheusStack: string;
102
+ loki: string;
103
+ alloy: string;
104
+ thanos: string;
105
+ }
106
+ /**
107
+ * Configuration the package ships sensible defaults for.
108
+ * Integration charts may override any of these (deep-merged over DEFAULT_CONFIG).
109
+ */
110
+ export interface DefaultableConfig {
111
+ versions: VersionConfig;
112
+ retention: RetentionConfig;
113
+ storage: StorageConfig;
114
+ replicas: ReplicaConfig;
115
+ resources: ResourceConfig;
116
+ }
117
+ /**
118
+ * Cluster-specific configuration with no sensible universal default.
119
+ * Integration charts must provide these.
120
+ */
121
+ export interface RequiredClusterConfig {
122
+ namespace: string;
123
+ domains: DomainConfig;
124
+ s3: S3Config;
125
+ smtp: SmtpConfig;
126
+ }
127
+ /**
128
+ * Recursive partial — every property (including nested ones) becomes optional.
129
+ */
130
+ export type DeepPartial<T> = {
131
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
132
+ };
133
+ /**
134
+ * Input accepted by mergeConfig: required cluster values plus optional,
135
+ * deeply-partial overrides of the package defaults.
136
+ */
137
+ export type MonitoringConfigInput = RequiredClusterConfig & DeepPartial<DefaultableConfig>;
138
+ /**
139
+ * Complete, resolved monitoring stack configuration consumed by MonitoringChart.
140
+ */
141
+ export interface MonitoringConfig extends RequiredClusterConfig, DefaultableConfig {
142
+ }
package/lib/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb3VyY2UgYWxsb2NhdGlvbiBmb3IgYSBjb21wb25lbnQgKENQVSBhbmQgbWVtb3J5KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQWxsb2NhdGlvbiB7XG4gIGNwdTogc3RyaW5nO1xuICBtZW1vcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNvdXJjZSByZXF1ZXN0cyBhbmQgbGltaXRzIGZvciBhIGNvbXBvbmVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUmVxdWlyZW1lbnRzIHtcbiAgcmVxdWVzdHM6IFJlc291cmNlQWxsb2NhdGlvbjtcbiAgbGltaXRzOiBSZXNvdXJjZUFsbG9jYXRpb247XG59XG5cbi8qKlxuICogUzMgY29uZmlndXJhdGlvbiBmb3Igb2JqZWN0IHN0b3JhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0NvbmZpZyB7XG4gIGVuZHBvaW50OiBzdHJpbmc7IC8vIEZ1bGwgZW5kcG9pbnQgd2l0aCBwcm90b2NvbCAoZS5nLiwgaHR0cHM6Ly9mc24xLnlvdXItb2JqZWN0c3RvcmFnZS5jb20pXG4gIGVuZHBvaW50Tm9Qcm90b2NvbDogc3RyaW5nOyAvLyBFbmRwb2ludCB3aXRob3V0IHByb3RvY29sIChmb3IgVGhhbm9zKVxuICByZWdpb246IHN0cmluZzsgLy8gUzMgcmVnaW9uIChlLmcuLCBmc24xKVxuICBidWNrZXRzOiB7XG4gICAgdGhhbm9zOiBzdHJpbmc7IC8vIFRoYW5vcyBtZXRyaWNzIGJ1Y2tldFxuICAgIGxva2k6IHN0cmluZzsgLy8gTG9raSBsb2dzIGJ1Y2tldFxuICB9O1xufVxuXG4vKipcbiAqIFNNVFAgY29uZmlndXJhdGlvbiBmb3IgYWxlcnRpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbXRwQ29uZmlnIHtcbiAgaG9zdDogc3RyaW5nOyAvLyBTTVRQIHNlcnZlciBob3N0bmFtZVxuICBwb3J0OiBudW1iZXI7IC8vIFNNVFAgc2VydmVyIHBvcnRcbiAgZnJvbTogc3RyaW5nOyAvLyBGcm9tIGVtYWlsIGFkZHJlc3NcbiAgdXNlcm5hbWU/OiBzdHJpbmc7IC8vIFNNVFAgdXNlcm5hbWUgKG9wdGlvbmFsKVxuICBwYXNzd29yZD86IHN0cmluZzsgLy8gU01UUCBwYXNzd29yZCAob3B0aW9uYWwpXG4gIHJlcXVpcmVUbHM6IGJvb2xlYW47IC8vIFJlcXVpcmUgVExTIGZvciBTTVRQXG59XG5cbi8qKlxuICogRG9tYWluIGNvbmZpZ3VyYXRpb24gZm9yIGluZ3Jlc3Nlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERvbWFpbkNvbmZpZyB7XG4gIGdyYWZhbmE6IHN0cmluZzsgLy8gR3JhZmFuYSBkb21haW4gKGUuZy4sIGdyYWZhbmEub3BzLmt1cDZzLm5ldClcbn1cblxuLyoqXG4gKiBSZXRlbnRpb24gcG9saWNpZXMgZm9yIG1ldHJpY3MgYW5kIGxvZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXRlbnRpb25Db25maWcge1xuICBwcm9tZXRoZXVzOiBzdHJpbmc7IC8vIFByb21ldGhldXMgbG9jYWwgcmV0ZW50aW9uIChlLmcuLCBcIjNkXCIpXG4gIHByb21ldGhldXNTM1JhdzogbnVtYmVyOyAvLyBUaGFub3MgcmF3IGRhdGEgcmV0ZW50aW9uIChkYXlzKVxuICBwcm9tZXRoZXVzUzM1bTogbnVtYmVyOyAvLyBUaGFub3MgNS1taW51dGUgZG93bnNhbXBsZWQgcmV0ZW50aW9uIChkYXlzKVxuICBwcm9tZXRoZXVzUzMxaDogbnVtYmVyOyAvLyBUaGFub3MgMS1ob3VyIGRvd25zYW1wbGVkIHJldGVudGlvbiAoZGF5cylcbiAgbG9raTogc3RyaW5nOyAvLyBMb2tpIHJldGVudGlvbiAoZS5nLiwgXCI3NDRoXCIgZm9yIDMxIGRheXMpXG59XG5cbi8qKlxuICogU3RvcmFnZSBzaXplcyBmb3IgcGVyc2lzdGVudCB2b2x1bWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUNvbmZpZyB7XG4gIHByb21ldGhldXM6IHN0cmluZzsgLy8gUHJvbWV0aGV1cyBQVkMgc2l6ZVxuICBncmFmYW5hOiBzdHJpbmc7IC8vIEdyYWZhbmEgUFZDIHNpemVcbiAgYWxlcnRtYW5hZ2VyOiBzdHJpbmc7IC8vIEFsZXJ0bWFuYWdlciBQVkMgc2l6ZVxuICBsb2tpQmFja2VuZDogc3RyaW5nOyAvLyBMb2tpIGJhY2tlbmQgUFZDIHNpemVcbiAgbG9raVdyaXRlOiBzdHJpbmc7IC8vIExva2kgd3JpdGUgUFZDIHNpemVcbiAgdGhhbm9zU3RvcmU6IHN0cmluZzsgLy8gVGhhbm9zIHN0b3JlIFBWQyBzaXplIChwZXIgcmVwbGljYSlcbiAgdGhhbm9zQ29tcGFjdG9yOiBzdHJpbmc7IC8vIFRoYW5vcyBjb21wYWN0b3IgUFZDIHNpemVcbn1cblxuLyoqXG4gKiBSZXBsaWNhIGNvdW50cyBmb3IgaGlnaCBhdmFpbGFiaWxpdHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhQ29uZmlnIHtcbiAgcHJvbWV0aGV1czogbnVtYmVyOyAvLyBQcm9tZXRoZXVzIHJlcGxpY2FzXG4gIGFsZXJ0bWFuYWdlcjogbnVtYmVyOyAvLyBBbGVydG1hbmFnZXIgcmVwbGljYXNcbiAgZ3JhZmFuYTogbnVtYmVyOyAvLyBHcmFmYW5hIHJlcGxpY2FzICh1c3VhbGx5IDEpXG4gIGxva2lCYWNrZW5kOiBudW1iZXI7IC8vIExva2kgYmFja2VuZCByZXBsaWNhc1xuICBsb2tpUmVhZDogbnVtYmVyOyAvLyBMb2tpIHJlYWQgcmVwbGljYXNcbiAgbG9raVdyaXRlOiBudW1iZXI7IC8vIExva2kgd3JpdGUgcmVwbGljYXNcbiAgdGhhbm9zUXVlcnk6IG51bWJlcjsgLy8gVGhhbm9zIFF1ZXJ5IHJlcGxpY2FzXG4gIHRoYW5vc1N0b3JlOiBudW1iZXI7IC8vIFRoYW5vcyBTdG9yZSByZXBsaWNhc1xufVxuXG4vKipcbiAqIFJlc291cmNlIHJlcXVpcmVtZW50cyBmb3IgYWxsIGNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZUNvbmZpZyB7XG4gIHByb21ldGhldXM6IFJlc291cmNlUmVxdWlyZW1lbnRzO1xuICBncmFmYW5hOiBSZXNvdXJjZVJlcXVpcmVtZW50cztcbiAgYWxlcnRtYW5hZ2VyOiBSZXNvdXJjZVJlcXVpcmVtZW50cztcbiAgbG9raUJhY2tlbmQ6IFJlc291cmNlUmVxdWlyZW1lbnRzO1xuICBsb2tpUmVhZDogUmVzb3VyY2VSZXF1aXJlbWVudHM7XG4gIGxva2lXcml0ZTogUmVzb3VyY2VSZXF1aXJlbWVudHM7XG4gIGxva2lHYXRld2F5OiBSZXNvdXJjZVJlcXVpcmVtZW50cztcbiAgYWxsb3k6IFJlc291cmNlUmVxdWlyZW1lbnRzO1xuICB0aGFub3NRdWVyeTogUmVzb3VyY2VSZXF1aXJlbWVudHM7XG4gIHRoYW5vc1N0b3JlOiBSZXNvdXJjZVJlcXVpcmVtZW50cztcbiAgdGhhbm9zQ29tcGFjdG9yOiBSZXNvdXJjZVJlcXVpcmVtZW50cztcbiAgLy8gU2lkZWNhciBjb250YWluZXJzIChhZGRlZCAyMDI1LTExLTE4KVxuICBjb25maWdSZWxvYWRlcjogUmVzb3VyY2VSZXF1aXJlbWVudHM7IC8vIGNvbmZpZy1yZWxvYWRlciBzaWRlY2FyIChQcm9tZXRoZXVzLCBBbGVydG1hbmFnZXIsIEFsbG95KVxuICB0aGFub3NTaWRlY2FyOiBSZXNvdXJjZVJlcXVpcmVtZW50czsgLy8gdGhhbm9zLXNpZGVjYXIgZm9yIFByb21ldGhldXNcbn1cblxuLyoqXG4gKiBIZWxtIGNoYXJ0IHZlcnNpb24gY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25Db25maWcge1xuICBwcm9tZXRoZXVzU3RhY2s6IHN0cmluZzsgLy8ga3ViZS1wcm9tZXRoZXVzLXN0YWNrIGNoYXJ0IHZlcnNpb24gKGUuZy4sIFwibGF0ZXN0XCIgb3IgXCI2NS4wLjBcIilcbiAgbG9raTogc3RyaW5nOyAvLyBMb2tpIGNoYXJ0IHZlcnNpb25cbiAgYWxsb3k6IHN0cmluZzsgLy8gQWxsb3kgY2hhcnQgdmVyc2lvblxuICB0aGFub3M6IHN0cmluZzsgLy8gVGhhbm9zIGltYWdlIHZlcnNpb24gKGUuZy4sIFwidjAuMzYuMVwiKVxufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gdGhlIHBhY2thZ2Ugc2hpcHMgc2Vuc2libGUgZGVmYXVsdHMgZm9yLlxuICogSW50ZWdyYXRpb24gY2hhcnRzIG1heSBvdmVycmlkZSBhbnkgb2YgdGhlc2UgKGRlZXAtbWVyZ2VkIG92ZXIgREVGQVVMVF9DT05GSUcpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRhYmxlQ29uZmlnIHtcbiAgdmVyc2lvbnM6IFZlcnNpb25Db25maWc7IC8vIENoYXJ0IGFuZCBpbWFnZSB2ZXJzaW9uc1xuICByZXRlbnRpb246IFJldGVudGlvbkNvbmZpZzsgLy8gRGF0YSByZXRlbnRpb24gcG9saWNpZXNcbiAgc3RvcmFnZTogU3RvcmFnZUNvbmZpZzsgLy8gUFZDIHN0b3JhZ2Ugc2l6ZXNcbiAgcmVwbGljYXM6IFJlcGxpY2FDb25maWc7IC8vIFJlcGxpY2EgY291bnRzXG4gIHJlc291cmNlczogUmVzb3VyY2VDb25maWc7IC8vIFJlc291cmNlIHJlcXVlc3RzIGFuZCBsaW1pdHNcbn1cblxuLyoqXG4gKiBDbHVzdGVyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gd2l0aCBubyBzZW5zaWJsZSB1bml2ZXJzYWwgZGVmYXVsdC5cbiAqIEludGVncmF0aW9uIGNoYXJ0cyBtdXN0IHByb3ZpZGUgdGhlc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWlyZWRDbHVzdGVyQ29uZmlnIHtcbiAgbmFtZXNwYWNlOiBzdHJpbmc7IC8vIEt1YmVybmV0ZXMgbmFtZXNwYWNlXG4gIGRvbWFpbnM6IERvbWFpbkNvbmZpZzsgLy8gRG9tYWluIG5hbWVzIGZvciBpbmdyZXNzZXNcbiAgczM6IFMzQ29uZmlnOyAvLyBTMyBvYmplY3Qgc3RvcmFnZSBjb25maWd1cmF0aW9uXG4gIHNtdHA6IFNtdHBDb25maWc7IC8vIFNNVFAgYWxlcnRpbmcgY29uZmlndXJhdGlvblxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZSBwYXJ0aWFsIOKAlCBldmVyeSBwcm9wZXJ0eSAoaW5jbHVkaW5nIG5lc3RlZCBvbmVzKSBiZWNvbWVzIG9wdGlvbmFsLlxuICovXG5leHBvcnQgdHlwZSBEZWVwUGFydGlhbDxUPiA9IHtcbiAgW1AgaW4ga2V5b2YgVF0/OiBUW1BdIGV4dGVuZHMgb2JqZWN0ID8gRGVlcFBhcnRpYWw8VFtQXT4gOiBUW1BdO1xufTtcblxuLyoqXG4gKiBJbnB1dCBhY2NlcHRlZCBieSBtZXJnZUNvbmZpZzogcmVxdWlyZWQgY2x1c3RlciB2YWx1ZXMgcGx1cyBvcHRpb25hbCxcbiAqIGRlZXBseS1wYXJ0aWFsIG92ZXJyaWRlcyBvZiB0aGUgcGFja2FnZSBkZWZhdWx0cy5cbiAqL1xuZXhwb3J0IHR5cGUgTW9uaXRvcmluZ0NvbmZpZ0lucHV0ID0gUmVxdWlyZWRDbHVzdGVyQ29uZmlnICYgRGVlcFBhcnRpYWw8RGVmYXVsdGFibGVDb25maWc+O1xuXG4vKipcbiAqIENvbXBsZXRlLCByZXNvbHZlZCBtb25pdG9yaW5nIHN0YWNrIGNvbmZpZ3VyYXRpb24gY29uc3VtZWQgYnkgTW9uaXRvcmluZ0NoYXJ0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbml0b3JpbmdDb25maWcgZXh0ZW5kcyBSZXF1aXJlZENsdXN0ZXJDb25maWcsIERlZmF1bHRhYmxlQ29uZmlnIHt9XG4iXX0=
package/package.json ADDED
@@ -0,0 +1,117 @@
1
+ {
2
+ "name": "@bluedynamics/cdk8s-monitoring",
3
+ "description": "Generic cdk8s monitoring stack (Prometheus, Thanos, Loki, Grafana, Alloy) for Kubernetes",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/bluedynamics/cdk8s-monitoring.git"
7
+ },
8
+ "scripts": {
9
+ "build": "projen build",
10
+ "bump": "projen bump",
11
+ "clobber": "projen clobber",
12
+ "compile": "projen compile",
13
+ "default": "projen default",
14
+ "eject": "projen eject",
15
+ "eslint": "projen eslint",
16
+ "package": "projen package",
17
+ "post-compile": "projen post-compile",
18
+ "post-upgrade": "projen post-upgrade",
19
+ "pre-compile": "projen pre-compile",
20
+ "release": "projen release",
21
+ "test": "projen test",
22
+ "test:watch": "projen test:watch",
23
+ "unbump": "projen unbump",
24
+ "upgrade": "projen upgrade",
25
+ "watch": "projen watch",
26
+ "projen": "projen"
27
+ },
28
+ "author": {
29
+ "name": "Jens W. Klein",
30
+ "email": "jk@kleinundpartner.at",
31
+ "organization": false
32
+ },
33
+ "devDependencies": {
34
+ "@stylistic/eslint-plugin": "^2",
35
+ "@types/jest": "^30.0.0",
36
+ "@types/node": "^26.0.0",
37
+ "@typescript-eslint/eslint-plugin": "^8",
38
+ "@typescript-eslint/parser": "^8",
39
+ "cdk8s-cli": "^2.207.28",
40
+ "commit-and-tag-version": "^12",
41
+ "constructs": "10.4.2",
42
+ "eslint": "^9",
43
+ "eslint-import-resolver-typescript": "^4.4.5",
44
+ "eslint-plugin-import": "^2.32.0",
45
+ "jest": "^30.4.2",
46
+ "jest-junit": "^17",
47
+ "projen": "^0.100.5",
48
+ "ts-jest": "^29.4.11",
49
+ "ts-node": "^10.9.2",
50
+ "typescript": "^6.0.3",
51
+ "yaml": "^2.8.1"
52
+ },
53
+ "peerDependencies": {
54
+ "cdk8s": "^2.70.0",
55
+ "cdk8s-plus-33": "^2.4.0",
56
+ "constructs": "^10.4.2"
57
+ },
58
+ "dependencies": {
59
+ "cdk8s": "^2.70.0",
60
+ "cdk8s-plus-33": "^2.4.0",
61
+ "constructs": "^10.4.2",
62
+ "deepmerge-ts": "^7.1.5"
63
+ },
64
+ "main": "lib/index.js",
65
+ "license": "Apache-2.0",
66
+ "publishConfig": {
67
+ "access": "public"
68
+ },
69
+ "version": "0.0.1",
70
+ "jest": {
71
+ "coverageProvider": "v8",
72
+ "testMatch": [
73
+ "<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)",
74
+ "<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)",
75
+ "<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)",
76
+ "<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"
77
+ ],
78
+ "clearMocks": true,
79
+ "collectCoverage": true,
80
+ "coverageReporters": [
81
+ "json",
82
+ "lcov",
83
+ "clover",
84
+ "cobertura",
85
+ "text"
86
+ ],
87
+ "coverageDirectory": "coverage",
88
+ "coveragePathIgnorePatterns": [
89
+ "/node_modules/"
90
+ ],
91
+ "testPathIgnorePatterns": [
92
+ "/node_modules/"
93
+ ],
94
+ "watchPathIgnorePatterns": [
95
+ "/node_modules/"
96
+ ],
97
+ "reporters": [
98
+ "default",
99
+ [
100
+ "jest-junit",
101
+ {
102
+ "outputDirectory": "test-reports"
103
+ }
104
+ ]
105
+ ],
106
+ "transform": {
107
+ "^.+\\.[t]sx?$": [
108
+ "ts-jest",
109
+ {
110
+ "tsconfig": "test/tsconfig.json"
111
+ }
112
+ ]
113
+ }
114
+ },
115
+ "types": "lib/index.d.ts",
116
+ "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
117
+ }