@bluedynamics/cdk8s-monitoring 0.3.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +1 -0
- package/README.md +17 -0
- package/lib/constructs/longhorn-monitor.d.ts +24 -0
- package/lib/constructs/longhorn-monitor.js +79 -0
- package/lib/constructs/prometheus-stack.js +2 -2
- package/lib/constructs/traefik-monitor.d.ts +20 -0
- package/lib/constructs/traefik-monitor.js +60 -0
- package/lib/dashboards/traefik-dashboard.d.ts +1 -0
- package/lib/dashboards/traefik-dashboard.js +749 -0
- package/lib/default-config.js +21 -1
- package/lib/imports/monitoring.coreos.com.d.ts +4240 -0
- package/lib/imports/monitoring.coreos.com.js +2213 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/monitoring-chart.d.ts +9 -3
- package/lib/monitoring-chart.js +29 -4
- package/lib/types.d.ts +22 -0
- package/lib/types.js +1 -1
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -46,6 +46,7 @@ documentation/ # Sphinx/MyST docs (Diataxis, plone-doc-style)
|
|
|
46
46
|
## Design Rules
|
|
47
47
|
|
|
48
48
|
- **App-agnostic**: never add cluster- or application-specific resources (dashboards, alert rules, domains) to this library. Integration charts attach those beside `MonitoringChart`.
|
|
49
|
+
- *Exception — generic infra monitors*: monitors for infrastructure components that are generic across clusters using this stack (Traefik ingress, Longhorn storage) may live here as **opt-in, off-by-default** constructs (`config.traefik`, `config.longhorn`), including their scrape config and — gated by their own sub-toggle — the matching generic dashboard/alert. They must stay disabled unless a consumer explicitly enables them. This is *not* a license for anything cluster- or app-specific.
|
|
49
50
|
- **Defaults in the package, overrides in the chart**: universal values live in `DEFAULT_CONFIG`; cluster-specific values are required input. `mergeConfig` deep-merges.
|
|
50
51
|
- **Generated `imports/` are not hand-edited** and are excluded from lint/style.
|
|
51
52
|
|
package/README.md
CHANGED
|
@@ -71,6 +71,23 @@ new MyAppDashboardConstruct(chart, 'my-app-dashboard', { namespace: config.names
|
|
|
71
71
|
|
|
72
72
|
A dashboard construct is a `ConfigMap` (use the re-exported `KubeConfigMap`) labeled `grafana_dashboard: "1"` so the Grafana sidecar discovers it. Alert rules are plain `PrometheusRule` resources you manage in your integration repo.
|
|
73
73
|
|
|
74
|
+
### Generic infrastructure monitors (opt-in)
|
|
75
|
+
|
|
76
|
+
Monitors for infrastructure components that are generic across clusters running this stack are built in but **disabled by default** — enable them per cluster. They are the exception to the "no dashboards/alerts in the library" rule because they are not app- or cluster-specific.
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
new MonitoringChart(app, 'monitoring', mergeConfig({
|
|
80
|
+
// ...required config...
|
|
81
|
+
traefik: { enabled: true, namespace: 'traefik' }, // PodMonitor + Grafana dashboard
|
|
82
|
+
longhorn: { enabled: true }, // ServiceMonitor + volume-health alerts
|
|
83
|
+
}));
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
- **`traefik`** (`TraefikConfig`): a `PodMonitor` (the k3s-bundled Traefik exposes the metrics port on the Pod, not the Service) plus, unless `dashboard: false`, a Grafana dashboard `ConfigMap`. `namespace` is where Traefik runs (default `traefik`).
|
|
87
|
+
- **`longhorn`** (`LonghornConfig`): a `ServiceMonitor` for `longhorn-manager` (port `manager`) plus, unless `alerts: false`, a `PrometheusRule` with `LonghornVolumeFaulted` (critical) / `LonghornVolumeUnhealthy` (warning). `namespace` defaults to `longhorn-system`.
|
|
88
|
+
|
|
89
|
+
Both stay inert unless `enabled: true`, so the base stack and existing consumers are unaffected.
|
|
90
|
+
|
|
74
91
|
## Prerequisites
|
|
75
92
|
|
|
76
93
|
The stack expects these to exist in the cluster:
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Construct } from 'constructs';
|
|
2
|
+
import { LonghornConfig } from '../types';
|
|
3
|
+
export interface LonghornMonitorProps {
|
|
4
|
+
/** Namespace the monitoring stack lives in (where the ServiceMonitor/PrometheusRule go). */
|
|
5
|
+
readonly monitoringNamespace: string;
|
|
6
|
+
/** Longhorn config (namespace it runs in + alerts toggle). */
|
|
7
|
+
readonly longhorn: LonghornConfig;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Generic, opt-in monitor for Longhorn distributed storage.
|
|
11
|
+
*
|
|
12
|
+
* ServiceMonitor scrapes the longhorn-manager metrics (port `manager`, 9500):
|
|
13
|
+
* volume/node/storage-pool health and capacity.
|
|
14
|
+
*
|
|
15
|
+
* Optionally ships volume-health alerts (config.longhorn.alerts). Motivated by a
|
|
16
|
+
* real incident (2026-05-21): a CNPG replica PVC went detached/unknown with no
|
|
17
|
+
* alert; noticed only 2h later via a downstream CNPG error. These rules surface
|
|
18
|
+
* storage health within minutes.
|
|
19
|
+
*
|
|
20
|
+
* longhorn_volume_robustness: 0=unknown, 1=healthy, 2=degraded, 3=faulted.
|
|
21
|
+
*/
|
|
22
|
+
export declare class LonghornMonitorConstruct extends Construct {
|
|
23
|
+
constructor(scope: Construct, id: string, props: LonghornMonitorProps);
|
|
24
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LonghornMonitorConstruct = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const monitoring_coreos_com_1 = require("../imports/monitoring.coreos.com");
|
|
6
|
+
/**
|
|
7
|
+
* Generic, opt-in monitor for Longhorn distributed storage.
|
|
8
|
+
*
|
|
9
|
+
* ServiceMonitor scrapes the longhorn-manager metrics (port `manager`, 9500):
|
|
10
|
+
* volume/node/storage-pool health and capacity.
|
|
11
|
+
*
|
|
12
|
+
* Optionally ships volume-health alerts (config.longhorn.alerts). Motivated by a
|
|
13
|
+
* real incident (2026-05-21): a CNPG replica PVC went detached/unknown with no
|
|
14
|
+
* alert; noticed only 2h later via a downstream CNPG error. These rules surface
|
|
15
|
+
* storage health within minutes.
|
|
16
|
+
*
|
|
17
|
+
* longhorn_volume_robustness: 0=unknown, 1=healthy, 2=degraded, 3=faulted.
|
|
18
|
+
*/
|
|
19
|
+
class LonghornMonitorConstruct extends constructs_1.Construct {
|
|
20
|
+
constructor(scope, id, props) {
|
|
21
|
+
super(scope, id);
|
|
22
|
+
const { monitoringNamespace, longhorn } = props;
|
|
23
|
+
const labels = {
|
|
24
|
+
'app.kubernetes.io/name': 'longhorn',
|
|
25
|
+
'app.kubernetes.io/component': 'storage',
|
|
26
|
+
'app.kubernetes.io/managed-by': 'cdk8s',
|
|
27
|
+
'app.kubernetes.io/part-of': 'monitoring',
|
|
28
|
+
'release': 'kube-prometheus-stack',
|
|
29
|
+
};
|
|
30
|
+
new monitoring_coreos_com_1.ServiceMonitor(this, 'longhorn-metrics', {
|
|
31
|
+
metadata: { name: 'longhorn-metrics', namespace: monitoringNamespace, labels },
|
|
32
|
+
spec: {
|
|
33
|
+
selector: { matchLabels: { app: 'longhorn-manager' } },
|
|
34
|
+
namespaceSelector: { matchNames: [longhorn.namespace] },
|
|
35
|
+
endpoints: [
|
|
36
|
+
{ port: 'manager', path: '/metrics', interval: '30s', scrapeTimeout: '10s' },
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
if (longhorn.alerts) {
|
|
41
|
+
new monitoring_coreos_com_1.PrometheusRule(this, 'longhorn-volume-health-rules', {
|
|
42
|
+
metadata: { name: 'longhorn-volume-health', namespace: monitoringNamespace, labels },
|
|
43
|
+
spec: {
|
|
44
|
+
groups: [
|
|
45
|
+
{
|
|
46
|
+
name: 'longhorn.volume-health',
|
|
47
|
+
rules: [
|
|
48
|
+
{
|
|
49
|
+
alert: 'LonghornVolumeFaulted',
|
|
50
|
+
expr: monitoring_coreos_com_1.PrometheusRuleSpecGroupsRulesExpr.fromString('longhorn_volume_robustness == 3'),
|
|
51
|
+
for: '1m',
|
|
52
|
+
labels: { severity: 'critical' },
|
|
53
|
+
annotations: {
|
|
54
|
+
summary: 'Longhorn volume {{ $labels.volume }} is faulted',
|
|
55
|
+
description: 'Volume {{ $labels.volume }} (node={{ $labels.node }}, pvc={{ $labels.pvc }}) is in faulted state. ' +
|
|
56
|
+
'Data may be lost. Recovery: scale workload down, delete PVC, scale up so the StatefulSet/operator re-creates and re-syncs from a healthy source.',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
alert: 'LonghornVolumeUnhealthy',
|
|
61
|
+
expr: monitoring_coreos_com_1.PrometheusRuleSpecGroupsRulesExpr.fromString('longhorn_volume_robustness == 0 or longhorn_volume_robustness == 2'),
|
|
62
|
+
for: '10m',
|
|
63
|
+
labels: { severity: 'warning' },
|
|
64
|
+
annotations: {
|
|
65
|
+
summary: 'Longhorn volume {{ $labels.volume }} not healthy (robustness={{ $value }})',
|
|
66
|
+
description: 'Volume {{ $labels.volume }} (node={{ $labels.node }}, pvc={{ $labels.pvc }}) has been non-healthy for >10m. ' +
|
|
67
|
+
'robustness values: 0=unknown, 2=degraded. A short degraded window during a replica rebuild is normal; 10m+ means manual investigation.',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.LonghornMonitorConstruct = LonghornMonitorConstruct;
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZ2hvcm4tbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzL2xvbmdob3JuLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDRFQUkwQztBQVUxQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLHdCQUF5QixTQUFRLHNCQUFTO0lBQ3JELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixNQUFNLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRWhELE1BQU0sTUFBTSxHQUFHO1lBQ2Isd0JBQXdCLEVBQUUsVUFBVTtZQUNwQyw2QkFBNkIsRUFBRSxTQUFTO1lBQ3hDLDhCQUE4QixFQUFFLE9BQU87WUFDdkMsMkJBQTJCLEVBQUUsWUFBWTtZQUN6QyxTQUFTLEVBQUUsdUJBQXVCO1NBQ25DLENBQUM7UUFFRixJQUFJLHNDQUFjLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQzNDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFO1lBQzlFLElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsRUFBRTtnQkFDdEQsaUJBQWlCLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3ZELFNBQVMsRUFBRTtvQkFDVCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUU7aUJBQzdFO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixJQUFJLHNDQUFjLENBQUMsSUFBSSxFQUFFLDhCQUE4QixFQUFFO2dCQUN2RCxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRTtnQkFDcEYsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRTt3QkFDTjs0QkFDRSxJQUFJLEVBQUUsd0JBQXdCOzRCQUM5QixLQUFLLEVBQUU7Z0NBQ0w7b0NBQ0UsS0FBSyxFQUFFLHVCQUF1QjtvQ0FDOUIsSUFBSSxFQUFFLHlEQUFpQyxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQztvQ0FDckYsR0FBRyxFQUFFLElBQUk7b0NBQ1QsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtvQ0FDaEMsV0FBVyxFQUFFO3dDQUNYLE9BQU8sRUFBRSxpREFBaUQ7d0NBQzFELFdBQVcsRUFDVCxvR0FBb0c7NENBQ3BHLGtKQUFrSjtxQ0FDcko7aUNBQ0Y7Z0NBQ0Q7b0NBQ0UsS0FBSyxFQUFFLHlCQUF5QjtvQ0FDaEMsSUFBSSxFQUFFLHlEQUFpQyxDQUFDLFVBQVUsQ0FDaEQsb0VBQW9FLENBQ3JFO29DQUNELEdBQUcsRUFBRSxLQUFLO29DQUNWLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUU7b0NBQy9CLFdBQVcsRUFBRTt3Q0FDWCxPQUFPLEVBQUUsNEVBQTRFO3dDQUNyRixXQUFXLEVBQ1QsOEdBQThHOzRDQUM5Ryx3SUFBd0k7cUNBQzNJO2lDQUNGOzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpFRCw0REFpRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7XG4gIFByb21ldGhldXNSdWxlLFxuICBQcm9tZXRoZXVzUnVsZVNwZWNHcm91cHNSdWxlc0V4cHIsXG4gIFNlcnZpY2VNb25pdG9yLFxufSBmcm9tICcuLi9pbXBvcnRzL21vbml0b3JpbmcuY29yZW9zLmNvbSc7XG5pbXBvcnQgeyBMb25naG9ybkNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBMb25naG9ybk1vbml0b3JQcm9wcyB7XG4gIC8qKiBOYW1lc3BhY2UgdGhlIG1vbml0b3Jpbmcgc3RhY2sgbGl2ZXMgaW4gKHdoZXJlIHRoZSBTZXJ2aWNlTW9uaXRvci9Qcm9tZXRoZXVzUnVsZSBnbykuICovXG4gIHJlYWRvbmx5IG1vbml0b3JpbmdOYW1lc3BhY2U6IHN0cmluZztcbiAgLyoqIExvbmdob3JuIGNvbmZpZyAobmFtZXNwYWNlIGl0IHJ1bnMgaW4gKyBhbGVydHMgdG9nZ2xlKS4gKi9cbiAgcmVhZG9ubHkgbG9uZ2hvcm46IExvbmdob3JuQ29uZmlnO1xufVxuXG4vKipcbiAqIEdlbmVyaWMsIG9wdC1pbiBtb25pdG9yIGZvciBMb25naG9ybiBkaXN0cmlidXRlZCBzdG9yYWdlLlxuICpcbiAqIFNlcnZpY2VNb25pdG9yIHNjcmFwZXMgdGhlIGxvbmdob3JuLW1hbmFnZXIgbWV0cmljcyAocG9ydCBgbWFuYWdlcmAsIDk1MDApOlxuICogdm9sdW1lL25vZGUvc3RvcmFnZS1wb29sIGhlYWx0aCBhbmQgY2FwYWNpdHkuXG4gKlxuICogT3B0aW9uYWxseSBzaGlwcyB2b2x1bWUtaGVhbHRoIGFsZXJ0cyAoY29uZmlnLmxvbmdob3JuLmFsZXJ0cykuIE1vdGl2YXRlZCBieSBhXG4gKiByZWFsIGluY2lkZW50ICgyMDI2LTA1LTIxKTogYSBDTlBHIHJlcGxpY2EgUFZDIHdlbnQgZGV0YWNoZWQvdW5rbm93biB3aXRoIG5vXG4gKiBhbGVydDsgbm90aWNlZCBvbmx5IDJoIGxhdGVyIHZpYSBhIGRvd25zdHJlYW0gQ05QRyBlcnJvci4gVGhlc2UgcnVsZXMgc3VyZmFjZVxuICogc3RvcmFnZSBoZWFsdGggd2l0aGluIG1pbnV0ZXMuXG4gKlxuICogbG9uZ2hvcm5fdm9sdW1lX3JvYnVzdG5lc3M6IDA9dW5rbm93biwgMT1oZWFsdGh5LCAyPWRlZ3JhZGVkLCAzPWZhdWx0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb25naG9ybk1vbml0b3JDb25zdHJ1Y3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTG9uZ2hvcm5Nb25pdG9yUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IHsgbW9uaXRvcmluZ05hbWVzcGFjZSwgbG9uZ2hvcm4gfSA9IHByb3BzO1xuXG4gICAgY29uc3QgbGFiZWxzID0ge1xuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiAnbG9uZ2hvcm4nLFxuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCc6ICdzdG9yYWdlJyxcbiAgICAgICdhcHAua3ViZXJuZXRlcy5pby9tYW5hZ2VkLWJ5JzogJ2NkazhzJyxcbiAgICAgICdhcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mJzogJ21vbml0b3JpbmcnLFxuICAgICAgJ3JlbGVhc2UnOiAna3ViZS1wcm9tZXRoZXVzLXN0YWNrJyxcbiAgICB9O1xuXG4gICAgbmV3IFNlcnZpY2VNb25pdG9yKHRoaXMsICdsb25naG9ybi1tZXRyaWNzJywge1xuICAgICAgbWV0YWRhdGE6IHsgbmFtZTogJ2xvbmdob3JuLW1ldHJpY3MnLCBuYW1lc3BhY2U6IG1vbml0b3JpbmdOYW1lc3BhY2UsIGxhYmVscyB9LFxuICAgICAgc3BlYzoge1xuICAgICAgICBzZWxlY3RvcjogeyBtYXRjaExhYmVsczogeyBhcHA6ICdsb25naG9ybi1tYW5hZ2VyJyB9IH0sXG4gICAgICAgIG5hbWVzcGFjZVNlbGVjdG9yOiB7IG1hdGNoTmFtZXM6IFtsb25naG9ybi5uYW1lc3BhY2VdIH0sXG4gICAgICAgIGVuZHBvaW50czogW1xuICAgICAgICAgIHsgcG9ydDogJ21hbmFnZXInLCBwYXRoOiAnL21ldHJpY3MnLCBpbnRlcnZhbDogJzMwcycsIHNjcmFwZVRpbWVvdXQ6ICcxMHMnIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKGxvbmdob3JuLmFsZXJ0cykge1xuICAgICAgbmV3IFByb21ldGhldXNSdWxlKHRoaXMsICdsb25naG9ybi12b2x1bWUtaGVhbHRoLXJ1bGVzJywge1xuICAgICAgICBtZXRhZGF0YTogeyBuYW1lOiAnbG9uZ2hvcm4tdm9sdW1lLWhlYWx0aCcsIG5hbWVzcGFjZTogbW9uaXRvcmluZ05hbWVzcGFjZSwgbGFiZWxzIH0sXG4gICAgICAgIHNwZWM6IHtcbiAgICAgICAgICBncm91cHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2xvbmdob3JuLnZvbHVtZS1oZWFsdGgnLFxuICAgICAgICAgICAgICBydWxlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGFsZXJ0OiAnTG9uZ2hvcm5Wb2x1bWVGYXVsdGVkJyxcbiAgICAgICAgICAgICAgICAgIGV4cHI6IFByb21ldGhldXNSdWxlU3BlY0dyb3Vwc1J1bGVzRXhwci5mcm9tU3RyaW5nKCdsb25naG9ybl92b2x1bWVfcm9idXN0bmVzcyA9PSAzJyksXG4gICAgICAgICAgICAgICAgICBmb3I6ICcxbScsXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHsgc2V2ZXJpdHk6ICdjcml0aWNhbCcgfSxcbiAgICAgICAgICAgICAgICAgIGFubm90YXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6ICdMb25naG9ybiB2b2x1bWUge3sgJGxhYmVscy52b2x1bWUgfX0gaXMgZmF1bHRlZCcsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgICdWb2x1bWUge3sgJGxhYmVscy52b2x1bWUgfX0gKG5vZGU9e3sgJGxhYmVscy5ub2RlIH19LCBwdmM9e3sgJGxhYmVscy5wdmMgfX0pIGlzIGluIGZhdWx0ZWQgc3RhdGUuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICdEYXRhIG1heSBiZSBsb3N0LiBSZWNvdmVyeTogc2NhbGUgd29ya2xvYWQgZG93biwgZGVsZXRlIFBWQywgc2NhbGUgdXAgc28gdGhlIFN0YXRlZnVsU2V0L29wZXJhdG9yIHJlLWNyZWF0ZXMgYW5kIHJlLXN5bmNzIGZyb20gYSBoZWFsdGh5IHNvdXJjZS4nLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGFsZXJ0OiAnTG9uZ2hvcm5Wb2x1bWVVbmhlYWx0aHknLFxuICAgICAgICAgICAgICAgICAgZXhwcjogUHJvbWV0aGV1c1J1bGVTcGVjR3JvdXBzUnVsZXNFeHByLmZyb21TdHJpbmcoXG4gICAgICAgICAgICAgICAgICAgICdsb25naG9ybl92b2x1bWVfcm9idXN0bmVzcyA9PSAwIG9yIGxvbmdob3JuX3ZvbHVtZV9yb2J1c3RuZXNzID09IDInLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGZvcjogJzEwbScsXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHsgc2V2ZXJpdHk6ICd3YXJuaW5nJyB9LFxuICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogJ0xvbmdob3JuIHZvbHVtZSB7eyAkbGFiZWxzLnZvbHVtZSB9fSBub3QgaGVhbHRoeSAocm9idXN0bmVzcz17eyAkdmFsdWUgfX0pJyxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICAgJ1ZvbHVtZSB7eyAkbGFiZWxzLnZvbHVtZSB9fSAobm9kZT17eyAkbGFiZWxzLm5vZGUgfX0sIHB2Yz17eyAkbGFiZWxzLnB2YyB9fSkgaGFzIGJlZW4gbm9uLWhlYWx0aHkgZm9yID4xMG0uICcgK1xuICAgICAgICAgICAgICAgICAgICAgICdyb2J1c3RuZXNzIHZhbHVlczogMD11bmtub3duLCAyPWRlZ3JhZGVkLiBBIHNob3J0IGRlZ3JhZGVkIHdpbmRvdyBkdXJpbmcgYSByZXBsaWNhIHJlYnVpbGQgaXMgbm9ybWFsOyAxMG0rIG1lYW5zIG1hbnVhbCBpbnZlc3RpZ2F0aW9uLicsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -348,7 +348,7 @@ grafana:
|
|
|
348
348
|
enabled: false # We manually provision datasources (Prometheus→Thanos, Loki)
|
|
349
349
|
|
|
350
350
|
ingress:
|
|
351
|
-
enabled: true
|
|
351
|
+
enabled: true${config.domains.ingressClassName ? `\n ingressClassName: ${config.domains.ingressClassName}` : ''}
|
|
352
352
|
hosts:
|
|
353
353
|
- ${config.domains.grafana}
|
|
354
354
|
annotations:
|
|
@@ -473,4 +473,4 @@ kube-state-metrics:
|
|
|
473
473
|
}
|
|
474
474
|
}
|
|
475
475
|
exports.PrometheusStackConstruct = PrometheusStackConstruct;
|
|
476
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWV0aGV1cy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzL3Byb21ldGhldXMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWtDO0FBQ2xDLDJDQUF1QztBQVF2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsc0JBQVM7SUFDckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXBDLDRCQUE0QjtRQUM1QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkQsa0RBQWtEO1FBQ2xELDJDQUEyQztRQUMzQyxJQUFJLGlCQUFTLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQzNDLFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsSUFBSSxFQUFFLFdBQVc7WUFDakIsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixNQUFNLEVBQUU7b0JBQ04sd0JBQXdCLEVBQUUsdUJBQXVCO29CQUNqRCw2QkFBNkIsRUFBRSxZQUFZO29CQUMzQyw4QkFBOEIsRUFBRSxPQUFPO29CQUN2QywyQkFBMkIsRUFBRSxZQUFZO2lCQUMxQztnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsOEJBQThCLEVBQUUsR0FBRztpQkFDcEM7YUFDRjtZQUNELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsb0RBQW9EO2dCQUMxRCxLQUFLLEVBQUUsdUJBQXVCO2dCQUM5QixPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxT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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUF3Q3ZELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTzs7Ozs7OztZQU9wQixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU87Ozs7YUFJckIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUc7Z0JBQ2hDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNOzthQUV6QyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRztnQkFDbEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUF5QjVDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQ0FzQkMsTUFBTSxDQUFDLFNBQVM7Ozs7Ozs7O3VEQVFJLE1BQU0sQ0FBQyxTQUFTOzs7Ozs7OzttQ0FRcEMsTUFBTSxDQUFDLFNBQVM7OzBCQUV6QixlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F1Q3hDLENBQUM7SUFDQSxDQUFDO0NBQ0Y7QUFwY0QsNERBb2NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpT2JqZWN0IH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBNb25pdG9yaW5nQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb21ldGhldXNTdGFja1Byb3BzIHtcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIGNvbmZpZzogTW9uaXRvcmluZ0NvbmZpZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGt1YmUtcHJvbWV0aGV1cy1zdGFjayBIZWxtQ2hhcnQgd2l0aCBQcm9tZXRoZXVzLCBHcmFmYW5hLCBhbmQgQWxlcnRtYW5hZ2VyLlxuICpcbiAqIFRoaXMgaXMgdGhlIGNvcmUgbW9uaXRvcmluZyBzdGFjayB0aGF0IGluY2x1ZGVzOlxuICogLSBQcm9tZXRoZXVzIChtZXRyaWNzIGNvbGxlY3Rpb24sIDIgcmVwbGljYXMsIDNkIHJldGVudGlvbilcbiAqIC0gR3JhZmFuYSAodmlzdWFsaXphdGlvbiwgaW5ncmVzcyB3aXRoIExldCdzIEVuY3J5cHQpXG4gKiAtIEFsZXJ0bWFuYWdlciAoYWxlcnQgcm91dGluZywgU01UUCBub3RpZmljYXRpb25zKVxuICogLSBQcm9tZXRoZXVzIE9wZXJhdG9yIChtYW5hZ2VzIFByb21ldGhldXMgQ1JEcylcbiAqIC0gTm9kZSBFeHBvcnRlciAoc3lzdGVtIG1ldHJpY3MgRGFlbW9uU2V0KVxuICogLSBrdWJlLXN0YXRlLW1ldHJpY3MgKEt1YmVybmV0ZXMgcmVzb3VyY2UgbWV0cmljcylcbiAqXG4gKiBQcmVyZXF1aXNpdGVzOlxuICogLSBOYW1lc3BhY2UgZXhpc3RzXG4gKiAtIFByaW9yaXR5Q2xhc3MgJ2hpZ2gtcHJpb3JpdHknIGV4aXN0c1xuICogLSBMb25naG9ybiBzdG9yYWdlIGNsYXNzIGF2YWlsYWJsZVxuICogLSBjZXJ0LW1hbmFnZXIgQ2x1c3Rlcklzc3VlciBjb25maWd1cmVkXG4gKiAtIFRoYW5vcyBTMyBzZWNyZXQgZXhpc3RzICh0aGFub3Mtb2Jqc3RvcmUtY29uZmlnKVxuICpcbiAqIFN5bmMgV2F2ZTogMiAoY29yZSBzZXJ2aWNlcyAtIGFmdGVyIFMzIGJ1Y2tldHMgYW5kIHNlY3JldHMpXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9tZXRoZXVzU3RhY2tDb25zdHJ1Y3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvbWV0aGV1c1N0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgeyBuYW1lc3BhY2UsIGNvbmZpZyB9ID0gcHJvcHM7XG5cbiAgICAvLyBHZW5lcmF0ZSBIZWxtIHZhbHVlcyBZQU1MXG4gICAgY29uc3QgaGVsbVZhbHVlcyA9IHRoaXMuZ2VuZXJhdGVIZWxtVmFsdWVzKGNvbmZpZyk7XG5cbiAgICAvLyBDcmVhdGUgSGVsbUNoYXJ0IHJlc291cmNlIChLM1MgSGVsbSBjb250cm9sbGVyKVxuICAgIC8vIFdhdmUgMjogQ29yZSBTZXJ2aWNlcyAtIG1vbml0b3Jpbmcgc3RhY2tcbiAgICBuZXcgQXBpT2JqZWN0KHRoaXMsICdrdWJlLXByb21ldGhldXMtc3RhY2snLCB7XG4gICAgICBhcGlWZXJzaW9uOiAnaGVsbS5jYXR0bGUuaW8vdjEnLFxuICAgICAga2luZDogJ0hlbG1DaGFydCcsXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBuYW1lOiAna3ViZS1wcm9tZXRoZXVzLXN0YWNrJyxcbiAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UsXG4gICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogJ2t1YmUtcHJvbWV0aGV1cy1zdGFjaycsXG4gICAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCc6ICdtb25pdG9yaW5nJyxcbiAgICAgICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vbWFuYWdlZC1ieSc6ICdjZGs4cycsXG4gICAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2YnOiAnbW9uaXRvcmluZycsXG4gICAgICAgIH0sXG4gICAgICAgIGFubm90YXRpb25zOiB7XG4gICAgICAgICAgJ2FyZ29jZC5hcmdvcHJvai5pby9zeW5jLXdhdmUnOiAnMicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3BlYzoge1xuICAgICAgICByZXBvOiAnaHR0cHM6Ly9wcm9tZXRoZXVzLWNvbW11bml0eS5naXRodWIuaW8vaGVsbS1jaGFydHMnLFxuICAgICAgICBjaGFydDogJ2t1YmUtcHJvbWV0aGV1cy1zdGFjaycsXG4gICAgICAgIHZlcnNpb246IGNvbmZpZy52ZXJzaW9ucy5wcm9tZXRoZXVzU3RhY2sgPT09ICdsYXRlc3QnID8gdW5kZWZpbmVkIDogY29uZmlnLnZlcnNpb25zLnByb21ldGhldXNTdGFjayxcbiAgICAgICAgdGFyZ2V0TmFtZXNwYWNlOiBuYW1lc3BhY2UsXG4gICAgICAgIHZhbHVlc0NvbnRlbnQ6IGhlbG1WYWx1ZXMsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUhlbG1WYWx1ZXMoY29uZmlnOiBNb25pdG9yaW5nQ29uZmlnKTogc3RyaW5nIHtcbiAgICAvLyBUZW1wbyBkYXRhc291cmNlIGlzIG9ubHkgcHJvdmlzaW9uZWQgd2hlbiB0cmFjaW5nIGlzIGVuYWJsZWQuIFdoZW5cbiAgICAvLyBkaXNhYmxlZCB0aGlzIGlzIGVtcHR5LCBzbyB0aGUgR3JhZmFuYSBibG9jayBpcyBieXRlLWlkZW50aWNhbCB0byBiZWZvcmUuXG4gICAgY29uc3QgdGVtcG9EYXRhc291cmNlID0gY29uZmlnLnRlbXBvLmVuYWJsZWQgPyBgXG4gICAgICAtIG5hbWU6IFRlbXBvXG4gICAgICAgIHR5cGU6IHRlbXBvXG4gICAgICAgIHVpZDogdGVtcG9cbiAgICAgICAgYWNjZXNzOiBwcm94eVxuICAgICAgICB1cmw6IGh0dHA6Ly90ZW1wby4ke2NvbmZpZy5uYW1lc3BhY2V9LnN2Yy5jbHVzdGVyLmxvY2FsOjMyMDBcbiAgICAgICAganNvbkRhdGE6XG4gICAgICAgICAgdGltZW91dDogNjBcbiAgICAgICAgICB0cmFjZXNUb0xvZ3NWMjpcbiAgICAgICAgICAgIGRhdGFzb3VyY2VVaWQ6IGxva2lcbiAgICAgICAgICAgIHNwYW5TdGFydFRpbWVTaGlmdDogXCItMWhcIlxuICAgICAgICAgICAgc3BhbkVuZFRpbWVTaGlmdDogXCIxaFwiXG4gICAgICAgICAgICBmaWx0ZXJCeVRyYWNlSUQ6IHRydWVcbiAgICAgICAgICB0cmFjZXNUb01ldHJpY3M6XG4gICAgICAgICAgICBkYXRhc291cmNlVWlkOiB0aGFub3NgIDogJyc7XG4gICAgcmV0dXJuIGBrdWJlRXRjZDpcbiAgZW5hYmxlZDogZmFsc2VcblxuIyBEaXNhYmxlIGt1YmUtY29udHJvbGxlci1tYW5hZ2VyIGFuZCBrdWJlLXNjaGVkdWxlciBtb25pdG9yaW5nLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2NhYmxlc3BhZ2hldHRpL2szcy1tb25pdG9yaW5nL2lzc3Vlcy8yXG5rdWJlQ29udHJvbGxlck1hbmFnZXI6XG4gIGVuYWJsZWQ6IGZhbHNlXG5rdWJlU2NoZWR1bGVyOlxuICBlbmFibGVkOiBmYWxzZVxuXG4jIERldGVjdCBQb2REaXNydXB0aW9uQnVkZ2V0cyB0aGF0IHdvdWxkIGJsb2NrIGEgbm9kZSBkcmFpbiBkdXJpbmcgazNzIHVwZ3JhZGVzLlxuIyBPcGVyYXRvci1tYW5hZ2VkIFBEQnMgc2l0IGF0IGRpc3J1cHRpb25zQWxsb3dlZD0wIGJ5IGRlc2lnbiAoTG9uZ2hvcm4gaW5zdGFuY2UtbWFuYWdlcnMsXG4jIENOUEcgKi1wcmltYXJ5KSBhbmQgYXJlIGV4Y2x1ZGVkIHNvIHRoZSBhbGVydCBvbmx5IGZpcmVzIG9uIGFub21hbG91cyBhcHAgUERCcy5cbmFkZGl0aW9uYWxQcm9tZXRoZXVzUnVsZXNNYXA6XG4gIHBkYi1kcmFpbi1zYWZldHk6XG4gICAgZ3JvdXBzOlxuICAgICAgLSBuYW1lOiBwZGIucnVsZXNcbiAgICAgICAgaW50ZXJ2YWw6IDFtXG4gICAgICAgIHJ1bGVzOlxuICAgICAgICAgIC0gYWxlcnQ6IFBvZERpc3J1cHRpb25CdWRnZXRVbmRyYWluYWJsZVxuICAgICAgICAgICAgZXhwcjoga3ViZV9wb2RkaXNydXB0aW9uYnVkZ2V0X3N0YXR1c19wb2RfZGlzcnVwdGlvbnNfYWxsb3dlZHtuYW1lc3BhY2UhPVwibG9uZ2hvcm4tc3lzdGVtXCIsIHBvZGRpc3J1cHRpb25idWRnZXQhflwiLiotcHJpbWFyeVwifSA9PSAwXG4gICAgICAgICAgICBmb3I6IDE1bVxuICAgICAgICAgICAgbGFiZWxzOlxuICAgICAgICAgICAgICBzZXZlcml0eTogd2FybmluZ1xuICAgICAgICAgICAgICBjb21wb25lbnQ6IGNsdXN0ZXItdXBncmFkZVxuICAgICAgICAgICAgYW5ub3RhdGlvbnM6XG4gICAgICAgICAgICAgIHN1bW1hcnk6IFwiUERCIHt7ICRsYWJlbHMubmFtZXNwYWNlIH19L3t7ICRsYWJlbHMucG9kZGlzcnVwdGlvbmJ1ZGdldCB9fSBhbGxvd3MgMCB2b2x1bnRhcnkgZGlzcnVwdGlvbnNcIlxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogfFxuICAgICAgICAgICAgICAgIFRoZSBQb2REaXNydXB0aW9uQnVkZ2V0IHt7ICRsYWJlbHMubmFtZXNwYWNlIH19L3t7ICRsYWJlbHMucG9kZGlzcnVwdGlvbmJ1ZGdldCB9fVxuICAgICAgICAgICAgICAgIGhhcyBhbGxvd2VkIDAgdm9sdW50YXJ5IGRpc3J1cHRpb25zIGZvciBvdmVyIDE1IG1pbnV0ZXMuIFRoaXMgd2lsbCBibG9jayBhIG5vZGVcbiAgICAgICAgICAgICAgICBkcmFpbiBkdXJpbmcgazNzIHVwZ3JhZGVzLiBPcGVyYXRvci1tYW5hZ2VkIFBEQnMgKExvbmdob3JuLCBDTlBHIHByaW1hcmllcykgYXJlXG4gICAgICAgICAgICAgICAgZXhjbHVkZWQgZnJvbSB0aGlzIGFsZXJ0LiBMaWtlbHkgYSBkZWdyYWRlZCBkZXBsb3ltZW50ICgwIGhlYWx0aHkgcG9kcykgb3IgYVxuICAgICAgICAgICAgICAgIHNpbmdsZS1yZXBsaWNhIGRlcGxveW1lbnQgd2l0aCBtaW5BdmFpbGFibGU9MS5cbiAgICAgICAgICAgICAgICBDaGVjazoga3ViZWN0bCBnZXQgcGRiIC1uIHt7ICRsYWJlbHMubmFtZXNwYWNlIH19IHt7ICRsYWJlbHMucG9kZGlzcnVwdGlvbmJ1ZGdldCB9fVxuICAgICAgICAgIC0gYWxlcnQ6IFBvZERpc3J1cHRpb25CdWRnZXRVbmRyYWluYWJsZUNyaXRpY2FsXG4gICAgICAgICAgICBleHByOiBrdWJlX3BvZGRpc3J1cHRpb25idWRnZXRfc3RhdHVzX3BvZF9kaXNydXB0aW9uc19hbGxvd2Vke25hbWVzcGFjZSE9XCJsb25naG9ybi1zeXN0ZW1cIiwgcG9kZGlzcnVwdGlvbmJ1ZGdldCF+XCIuKi1wcmltYXJ5XCJ9ID09IDBcbiAgICAgICAgICAgIGZvcjogMWhcbiAgICAgICAgICAgIGxhYmVsczpcbiAgICAgICAgICAgICAgc2V2ZXJpdHk6IGNyaXRpY2FsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogY2x1c3Rlci11cGdyYWRlXG4gICAgICAgICAgICBhbm5vdGF0aW9uczpcbiAgICAgICAgICAgICAgc3VtbWFyeTogXCJQREIge3sgJGxhYmVscy5uYW1lc3BhY2UgfX0ve3sgJGxhYmVscy5wb2RkaXNydXB0aW9uYnVkZ2V0IH19IHVuZHJhaW5hYmxlID4xaFwiXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB8XG4gICAgICAgICAgICAgICAgUERCIHt7ICRsYWJlbHMubmFtZXNwYWNlIH19L3t7ICRsYWJlbHMucG9kZGlzcnVwdGlvbmJ1ZGdldCB9fSBoYXMgYmxvY2tlZFxuICAgICAgICAgICAgICAgIHZvbHVudGFyeSBkaXNydXB0aW9ucyBmb3Igb3ZlciBhbiBob3VyLiBBIGszcyBhZ2VudCB1cGdyYWRlIHdvdWxkIHN0YWxsIG9uIHRoaXMgbm9kZS5cbiMgRHJvcCBoaWdoLWNhcmRpbmFsaXR5IEFQSSBzZXJ2ZXIgYW5kIGV0Y2QgaGlzdG9ncmFtIGJ1Y2tldHMgdG8gcmVkdWNlIG1lbW9yeSB1c2FnZVxuIyBUaGVzZSBtZXRyaWNzIGFsb25lIGFjY291bnQgZm9yIH4yMDBrIHNlcmllcyAoNDclIG9mIHRvdGFsIGNhcmRpbmFsaXR5KVxuIyBXZSBrZWVwIF9zdW0gYW5kIF9jb3VudCBzdWZmaXhlcyB3aGljaCBhcmUgc3VmZmljaWVudCBmb3IgcmF0ZSBjYWxjdWxhdGlvbnNcbmt1YmVBcGlTZXJ2ZXI6XG4gIHNlcnZpY2VNb25pdG9yOlxuICAgIG1ldHJpY1JlbGFiZWxpbmdzOlxuICAgICAgLSBzb3VyY2VMYWJlbHM6IFtfX25hbWVfX11cbiAgICAgICAgcmVnZXg6ICdhcGlzZXJ2ZXJfcmVxdWVzdF9kdXJhdGlvbl9zZWNvbmRzX2J1Y2tldCdcbiAgICAgICAgYWN0aW9uOiBkcm9wXG4gICAgICAtIHNvdXJjZUxhYmVsczogW19fbmFtZV9fXVxuICAgICAgICByZWdleDogJ2FwaXNlcnZlcl9yZXF1ZXN0X3NsaV9kdXJhdGlvbl9zZWNvbmRzX2J1Y2tldCdcbiAgICAgICAgYWN0aW9uOiBkcm9wXG4gICAgICAtIHNvdXJjZUxhYmVsczogW19fbmFtZV9fXVxuICAgICAgICByZWdleDogJ2FwaXNlcnZlcl9yZXF1ZXN0X2JvZHlfc2l6ZV9ieXRlc19idWNrZXQnXG4gICAgICAgIGFjdGlvbjogZHJvcFxuICAgICAgLSBzb3VyY2VMYWJlbHM6IFtfX25hbWVfX11cbiAgICAgICAgcmVnZXg6ICdhcGlzZXJ2ZXJfcmVzcG9uc2Vfc2l6ZXNfYnVja2V0J1xuICAgICAgICBhY3Rpb246IGRyb3BcbiAgICAgIC0gc291cmNlTGFiZWxzOiBbX19uYW1lX19dXG4gICAgICAgIHJlZ2V4OiAnZXRjZF9yZXF1ZXN0X2R1cmF0aW9uX3NlY29uZHNfYnVja2V0J1xuICAgICAgICBhY3Rpb246IGRyb3BcblxuIyBLdWJlbGV0IGFsc28gZXhwb3NlcyBhcGlzZXJ2ZXIgbWV0cmljcyAtIGFwcGx5IHNhbWUgZmlsdGVyc1xua3ViZWxldDpcbiAgc2VydmljZU1vbml0b3I6XG4gICAgbWV0cmljUmVsYWJlbGluZ3M6XG4gICAgICAtIHNvdXJjZUxhYmVsczogW19fbmFtZV9fXVxuICAgICAgICByZWdleDogJ2FwaXNlcnZlcl9yZXF1ZXN0X2R1cmF0aW9uX3NlY29uZHNfYnVja2V0J1xuICAgICAgICBhY3Rpb246IGRyb3BcbiAgICAgIC0gc291cmNlTGFiZWxzOiBbX19uYW1lX19dXG4gICAgICAgIHJlZ2V4OiAnYXBpc2VydmVyX3JlcXVlc3Rfc2xpX2R1cmF0aW9uX3NlY29uZHNfYnVja2V0J1xuICAgICAgICBhY3Rpb246IGRyb3BcbiAgICAgIC0gc291cmNlTGFiZWxzOiBbX19uYW1lX19dXG4gICAgICAgIHJlZ2V4OiAnYXBpc2VydmVyX3JlcXVlc3RfYm9keV9zaXplX2J5dGVzX2J1Y2tldCdcbiAgICAgICAgYWN0aW9uOiBkcm9wXG4gICAgICAtIHNvdXJjZUxhYmVsczogW19fbmFtZV9fXVxuICAgICAgICByZWdleDogJ2FwaXNlcnZlcl9yZXNwb25zZV9zaXplc19idWNrZXQnXG4gICAgICAgIGFjdGlvbjogZHJvcFxuICAgICAgLSBzb3VyY2VMYWJlbHM6IFtfX25hbWVfX11cbiAgICAgICAgcmVnZXg6ICdldGNkX3JlcXVlc3RfZHVyYXRpb25fc2Vjb25kc19idWNrZXQnXG4gICAgICAgIGFjdGlvbjogZHJvcFxuXG5hbGVydG1hbmFnZXI6XG4gIGNvbmZpZzpcbiAgICBnbG9iYWw6XG4gICAgICBzbXRwX2Zyb206ICR7Y29uZmlnLnNtdHAuZnJvbX1cbiAgICAgIHNtdHBfc21hcnRob3N0OiAke2NvbmZpZy5zbXRwLmhvc3R9OiR7Y29uZmlnLnNtdHAucG9ydH1cbiAgICAgIHNtdHBfcmVxdWlyZV90bHM6ICR7Y29uZmlnLnNtdHAucmVxdWlyZVRsc31cbiAgICAgIHNtdHBfYXV0aF91c2VybmFtZTogJHtjb25maWcuc210cC51c2VybmFtZSB8fCBjb25maWcuc210cC5mcm9tfVxuICAgICAgc210cF9hdXRoX3Bhc3N3b3JkOiAke2NvbmZpZy5zbXRwLnBhc3N3b3JkIHx8ICcnfVxuICAgIHJvdXRlOlxuICAgICAgZ3JvdXBfYnk6IFsnam9iJ11cbiAgICAgIGdyb3VwX3dhaXQ6IDMwc1xuICAgICAgZ3JvdXBfaW50ZXJ2YWw6IDVtXG4gICAgICByZXBlYXRfaW50ZXJ2YWw6IDFoXG4gICAgICByZWNlaXZlcjogZW1haWxcbiAgICAgIHJvdXRlczpcbiAgICAgIC0gbWF0Y2g6XG4gICAgICAgICAgYWxlcnRuYW1lOiBXYXRjaGRvZ1xuICAgICAgICByZWNlaXZlcjogJ251bGwnXG4gICAgICAtIG1hdGNoOlxuICAgICAgICAgIGFsZXJ0bmFtZTogQ1BVVGhyb3R0bGluZ0hpZ2hcbiAgICAgICAgcmVjZWl2ZXI6ICdudWxsJ1xuICAgICAgLSBtYXRjaDpcbiAgICAgICAgICBhbGVydG5hbWU6IEt1YmVNZW1vcnlPdmVyY29tbWl0XG4gICAgICAgIHJlY2VpdmVyOiAnbnVsbCdcbiAgICAgIC0gbWF0Y2g6XG4gICAgICAgICAgYWxlcnRuYW1lOiBLdWJlQ1BVT3ZlcmNvbW1pdFxuICAgICAgICByZWNlaXZlcjogJ251bGwnXG4gICAgICAtIG1hdGNoOlxuICAgICAgICAgIGFsZXJ0bmFtZTogS3ViZWxldFRvb01hbnlQb2RzXG4gICAgICAgIHJlY2VpdmVyOiAnbnVsbCdcblxuICAgIHJlY2VpdmVyczpcbiAgICAtIG5hbWU6ICdudWxsJ1xuICAgIC0gbmFtZTogZW1haWxcbiAgICAgIGVtYWlsX2NvbmZpZ3M6XG4gICAgICAtIHNlbmRfcmVzb2x2ZWQ6IHRydWVcbiAgICAgICAgdG86ICR7Y29uZmlnLnNtdHAuZnJvbX1cblxuICAgICMgSW5oaWJpdGlvbiBydWxlcyBhbGxvdyB0byBtdXRlIGEgc2V0IG9mIGFsZXJ0cyBnaXZlbiB0aGF0IGFub3RoZXIgYWxlcnQgaXMgZmlyaW5nLlxuICAgICMgV2UgdXNlIHRoaXMgdG8gbXV0ZSBhbnkgd2FybmluZy1sZXZlbCBub3RpZmljYXRpb25zIGlmIHRoZSBzYW1lIGFsZXJ0IGlzIGFscmVhZHkgY3JpdGljYWwuXG4gICAgaW5oaWJpdF9ydWxlczpcbiAgICAtIHNvdXJjZV9tYXRjaDpcbiAgICAgICAgc2V2ZXJpdHk6ICdjcml0aWNhbCdcbiAgICAgIHRhcmdldF9tYXRjaDpcbiAgICAgICAgc2V2ZXJpdHk6ICd3YXJuaW5nJ1xuICAgICAgIyBBcHBseSBpbmhpYml0aW9uIGlmIHRoZSBhbGVydG5hbWUgaXMgdGhlIHNhbWUuXG4gICAgICBlcXVhbDogWydhbGVydG5hbWUnLCAnbmFtZXNwYWNlJ11cblxuICBhbGVydG1hbmFnZXJTcGVjOlxuICAgIHJlcGxpY2FzOiAke2NvbmZpZy5yZXBsaWNhcy5hbGVydG1hbmFnZXJ9XG4gICAgcG9kQW50aUFmZmluaXR5OiBcInNvZnRcIlxuICAgIHN0b3JhZ2U6XG4gICAgICB2b2x1bWVDbGFpbVRlbXBsYXRlOlxuICAgICAgICBzcGVjOlxuICAgICAgICAgIGFjY2Vzc01vZGVzOiBbXCJSZWFkV3JpdGVPbmNlXCJdXG4gICAgICAgICAgcmVzb3VyY2VzOlxuICAgICAgICAgICAgcmVxdWVzdHM6XG4gICAgICAgICAgICAgIHN0b3JhZ2U6ICR7Y29uZmlnLnN0b3JhZ2UuYWxlcnRtYW5hZ2VyfVxuICAgIHJlc291cmNlczpcbiAgICAgIGxpbWl0czpcbiAgICAgICAgY3B1OiAke2NvbmZpZy5yZXNvdXJjZXMuYWxlcnRtYW5hZ2VyLmxpbWl0cy5jcHV9XG4gICAgICAgIG1lbW9yeTogJHtjb25maWcucmVzb3VyY2VzLmFsZXJ0bWFuYWdlci5saW1pdHMubWVtb3J5fVxuICAgICAgcmVxdWVzdHM6XG4gICAgICAgIGNwdTogJHtjb25maWcucmVzb3VyY2VzLmFsZXJ0bWFuYWdlci5yZXF1ZXN0cy5jcHV9XG4gICAgICAgIG1lbW9yeTogJHtjb25maWcucmVzb3VyY2VzLmFsZXJ0bWFuYWdlci5yZXF1ZXN0cy5tZW1vcnl9XG4gICAgcHJpb3JpdHlDbGFzc05hbWU6IGhpZ2gtcHJpb3JpdHlcblxuICAgICMgU2lkZWNhciBjb250YWluZXJzIHJlc291cmNlIHJlcXVlc3RzIChhZGRlZCAyMDI1LTExLTE4KVxuICAgIGNvbnRhaW5lcnM6XG4gICAgLSBuYW1lOiBjb25maWctcmVsb2FkZXJcbiAgICAgIHJlc291cmNlczpcbiAgICAgICAgcmVxdWVzdHM6XG4gICAgICAgICAgY3B1OiAke2NvbmZpZy5yZXNvdXJjZXMuY29uZmlnUmVsb2FkZXIucmVxdWVzdHMuY3B1fVxuICAgICAgICAgIG1lbW9yeTogJHtjb25maWcucmVzb3VyY2VzLmNvbmZpZ1JlbG9hZGVyLnJlcXVlc3RzLm1lbW9yeX1cbiAgICAgICAgbGltaXRzOlxuICAgICAgICAgIGNwdTogJHtjb25maWcucmVzb3VyY2VzLmNvbmZpZ1JlbG9hZGVyLmxpbWl0cy5jcHV9XG4gICAgICAgICAgbWVtb3J5OiAke2NvbmZpZy5yZXNvdXJjZXMuY29uZmlnUmVsb2FkZXIubGltaXRzLm1lbW9yeX1cblxuXG5wcm9tZXRoZXVzOlxuICAjIEVuYWJsZSBUaGFub3Mgc2VydmljZSBmb3IgZ1JQQyBjb21tdW5pY2F0aW9uXG4gICMgUmVxdWlyZWQgZm9yIEhlbG0gY2hhcnQgdG8gcHJvcGVybHkgcmVuZGVyIFRoYW5vcyBzaWRlY2FyIGNvbmZpZ3VyYXRpb25cbiAgdGhhbm9zU2VydmljZTpcbiAgICBlbmFibGVkOiB0cnVlXG5cbiAgcHJvbWV0aGV1c1NwZWM6XG4gICAgcmV0ZW50aW9uOiAke2NvbmZpZy5yZXRlbnRpb24ucHJvbWV0aGV1c30gICMgUmVkdWNlZCBmcm9tIDdkIC0gVGhhbm9zIHByb3ZpZGVzIGxvbmctdGVybSBzdG9yYWdlIGluIFMzXG5cbiAgICAjIERpc2NvdmVyIEFMTCBTZXJ2aWNlTW9uaXRvcnMsIFBvZE1vbml0b3JzIGFuZCBQcm9tZXRoZXVzUnVsZXMgaW4gQUxMIG5hbWVzcGFjZXNcbiAgICAjIFNldHRpbmcgTmlsVXNlc0hlbG1WYWx1ZXM6IGZhbHNlIG1lYW5zIG5pbCBzZWxlY3RvcnMgPSBcInNlbGVjdCBhbGxcIlxuICAgICMgRW1wdHkgbmFtZXNwYWNlIHNlbGVjdG9ycyB7fSBtZWFuIFwic2VhcmNoIGFsbCBuYW1lc3BhY2VzXCJcbiAgICAjIFdpdGhvdXQgdGhlIHJ1bGUqIHNldHRpbmdzLCBydWxlU2VsZWN0b3Iga2VlcHMgdGhlIGNoYXJ0IGRlZmF1bHRcbiAgICAjIChtYXRjaExhYmVsczoge3JlbGVhc2U6IDxuYW1lPn0pIGFuZCBoYW5kLWF1dGhvcmVkIFByb21ldGhldXNSdWxlcyB0aGF0XG4gICAgIyBsYWNrIHRoZSByZWxlYXNlIGxhYmVsIGFyZSBzaWxlbnRseSBpZ25vcmVkLlxuICAgICMgTm90ZTogVGhpcyBkb2VzIE5PVCBhZmZlY3QgVGhhbm9zIHNpZGVjYXIgLSBjb250cm9sbGVkIGJ5IHRoYW5vcy5vYmplY3RTdG9yYWdlQ29uZmlnXG4gICAgc2VydmljZU1vbml0b3JTZWxlY3Rvck5pbFVzZXNIZWxtVmFsdWVzOiBmYWxzZVxuICAgIHBvZE1vbml0b3JTZWxlY3Rvck5pbFVzZXNIZWxtVmFsdWVzOiBmYWxzZVxuICAgIHJ1bGVTZWxlY3Rvck5pbFVzZXNIZWxtVmFsdWVzOiBmYWxzZVxuICAgIHNlcnZpY2VNb25pdG9yTmFtZXNwYWNlU2VsZWN0b3I6IHt9XG4gICAgcG9kTW9uaXRvck5hbWVzcGFjZVNlbGVjdG9yOiB7fVxuICAgIHJ1bGVOYW1lc3BhY2VTZWxlY3Rvcjoge31cblxuICAgIHJlcGxpY2FzOiAke2NvbmZpZy5yZXBsaWNhcy5wcm9tZXRoZXVzfVxuICAgIHBvZEFudGlBZmZpbml0eTogXCJoYXJkXCJcbiAgICBzdG9yYWdlU3BlYzpcbiAgICAgIHZvbHVtZUNsYWltVGVtcGxhdGU6XG4gICAgICAgIHNwZWM6XG4gICAgICAgICAgc3RvcmFnZUNsYXNzTmFtZTogbG9uZ2hvcm5cbiAgICAgICAgICBhY2Nlc3NNb2RlczogW1wiUmVhZFdyaXRlT25jZVwiXVxuICAgICAgICAgIHJlc291cmNlczpcbiAgICAgICAgICAgIHJlcXVlc3RzOlxuICAgICAgICAgICAgICBzdG9yYWdlOiAke2NvbmZpZy5zdG9yYWdlLnByb21ldGhldXN9ICAjIFJlZHVjZWQgZnJvbSA2R2kgKDNkIHJldGVudGlvbiBuZWVkcyBsZXNzIHNwYWNlKVxuXG4gICAgcmVzb3VyY2VzOlxuICAgICAgbGltaXRzOlxuICAgICAgICBjcHU6ICR7Y29uZmlnLnJlc291cmNlcy5wcm9tZXRoZXVzLmxpbWl0cy5jcHV9XG4gICAgICAgIG1lbW9yeTogJHtjb25maWcucmVzb3VyY2VzLnByb21ldGhldXMubGltaXRzLm1lbW9yeX1cbiAgICAgIHJlcXVlc3RzOlxuICAgICAgICBjcHU6ICR7Y29uZmlnLnJlc291cmNlcy5wcm9tZXRoZXVzLnJlcXVlc3RzLmNwdX1cbiAgICAgICAgbWVtb3J5OiAke2NvbmZpZy5yZXNvdXJjZXMucHJvbWV0aGV1cy5yZXF1ZXN0cy5tZW1vcnl9XG4gICAgcHJpb3JpdHlDbGFzc05hbWU6IGhpZ2gtcHJpb3JpdHlcblxuICAgICMgRXh0ZXJuYWwgbGFiZWxzIGZvciBtdWx0aS1jbHVzdGVyIGlkZW50aWZpY2F0aW9uIGFuZCBUaGFub3NcbiAgICBleHRlcm5hbExhYmVsczpcbiAgICAgIGNsdXN0ZXI6ICR7Y29uZmlnLmNsdXN0ZXJOYW1lfVxuICAgICAgcmVwbGljYTogXCIkKFBPRF9OQU1FKVwiXG5cbiAgICAjIFRoYW5vcyBzaWRlY2FyIGZvciBsb25nLXRlcm0gbWV0cmljcyBzdG9yYWdlIGluIFMzXG4gICAgIyBOT1RFOiBjaGFydCA+PTg1LnggcmVxdWlyZXMgdGhlIGV4aXN0aW5nU2VjcmV0IHNoYXBlLiBUaGUgbGVnYWN5IGZsYXRcbiAgICAjIHtuYW1lLCBrZXl9IGZvcm0gaXMgc2lsZW50bHkgZHJvcHBlZCBieSB0aGUgY2hhcnQsIHdoaWNoIHJlbW92ZXMgdGhlXG4gICAgIyBzaWRlY2FyIGFuZCBzdG9wcyBhbGwgUzMgYmxvY2sgdXBsb2FkcyAocmVncmVzc2lvbiBzZWVuIDIwMjYtMDMtMzEpLlxuICAgIHRoYW5vczpcbiAgICAgIG9iamVjdFN0b3JhZ2VDb25maWc6XG4gICAgICAgIGV4aXN0aW5nU2VjcmV0OlxuICAgICAgICAgIG5hbWU6IHRoYW5vcy1vYmpzdG9yZS1jb25maWcgICMgRVNPLW1hbmFnZWQgc2VjcmV0XG4gICAgICAgICAga2V5OiBvYmpzdG9yZS55bWxcblxuICAgICMgU2lkZWNhciBjb250YWluZXJzIHJlc291cmNlIHJlcXVlc3RzIChhZGRlZCAyMDI1LTExLTE4KVxuICAgICMgTk9URTogdGhhbm9zLXNpZGVjYXIgaXMgTk9UIGxpc3RlZCBoZXJlIC0gaXQncyBhdXRvbWF0aWNhbGx5IGluamVjdGVkIGJ5IFByb21ldGhldXMgT3BlcmF0b3JcbiAgICAjIHdoZW4gdGhhbm9zLm9iamVjdFN0b3JhZ2VDb25maWcgaXMgc2V0LiBTcGVjaWZ5aW5nIGl0IGluIGNvbnRhaW5lcnNbXSB3b3VsZCBvdmVycmlkZVxuICAgICMgdGhlIG9wZXJhdG9yJ3MgZGVmaW5pdGlvbiBhbmQgcmVxdWlyZSB1cyB0byBtYW51YWxseSBzcGVjaWZ5IHRoZSBpbWFnZSwgd2hpY2ggYnJlYWtzXG4gICAgIyB3aGVuIHRoZSBvcGVyYXRvciB1cGRhdGVzIHRoZSB0aGFub3MgdmVyc2lvbi5cbiAgICBjb250YWluZXJzOlxuICAgIC0gbmFtZTogY29uZmlnLXJlbG9hZGVyXG4gICAgICByZXNvdXJjZXM6XG4gICAgICAgIHJlcXVlc3RzOlxuICAgICAgICAgIGNwdTogJHtjb25maWcucmVzb3VyY2VzLmNvbmZpZ1JlbG9hZGVyLnJlcXVlc3RzLmNwdX1cbiAgICAgICAgICBtZW1vcnk6ICR7Y29uZmlnLnJlc291cmNlcy5jb25maWdSZWxvYWRlci5yZXF1ZXN0cy5tZW1vcnl9XG4gICAgICAgIGxpbWl0czpcbiAgICAgICAgICBjcHU6ICR7Y29uZmlnLnJlc291cmNlcy5jb25maWdSZWxvYWRlci5saW1pdHMuY3B1fVxuICAgICAgICAgIG1lbW9yeTogJHtjb25maWcucmVzb3VyY2VzLmNvbmZpZ1JlbG9hZGVyLmxpbWl0cy5tZW1vcnl9XG5cbiAgICBzZXJ2aWNlOlxuICAgICAgc2Vzc2lvbkFmZmluaXR5OiBcIkNsaWVudElQXCJcblxuXG5ncmFmYW5hOlxuICAjIFJlY3JlYXRlIHN0cmF0ZWd5IGlzIHJlcXVpcmVkIGJlY2F1c2UgdGhlIHN0b3JhZ2UgUFZDIGlzIFJXTzpcbiAgIyBhIFJvbGxpbmdVcGRhdGUgd291bGQgc3VyZ2UgYSBzZWNvbmQgcG9kIHRoYXQgY2Fubm90IG1vdW50IHRoZVxuICAjIHZvbHVtZSAoRmFpbGVkQXR0YWNoVm9sdW1lKSwgYmxvY2tpbmcgdGhlIHJvbGxvdXQgaW5kZWZpbml0ZWx5LlxuICBkZXBsb3ltZW50U3RyYXRlZ3k6XG4gICAgdHlwZTogUmVjcmVhdGVcblxuICAjIFVzZSBleGlzdGluZyBzZWNyZXQgZm9yIGFkbWluIGNyZWRlbnRpYWxzIChtYW5hZ2VkIGJ5IEVTTylcbiAgIyBUaGlzIHByZXZlbnRzIHBhc3N3b3JkIHJlZ2VuZXJhdGlvbiBvbiBIZWxtIHVwZ3JhZGVzXG4gIGFkbWluOlxuICAgIGV4aXN0aW5nU2VjcmV0OiBcImdyYWZhbmEtYWRtaW4tY3JlZGVudGlhbHNcIlxuICAgIHVzZXJLZXk6IFwiYWRtaW4tdXNlclwiXG4gICAgcGFzc3dvcmRLZXk6IFwiYWRtaW4tcGFzc3dvcmRcIlxuXG4gICMgRGlzYWJsZSBkZWZhdWx0IFByb21ldGhldXMgZGF0YXNvdXJjZSAod2UgcHJvdmlkZSBvdXIgb3duIHBvaW50aW5nIHRvIFRoYW5vcyBRdWVyeSlcbiAgZGVmYXVsdERhdGFzb3VyY2VFbmFibGVkOiBmYWxzZVxuXG4gICMgU2lkZWNhciBjb250YWluZXJzIGZvciBkYXNoYm9hcmQvZGF0YXNvdXJjZSBwcm92aXNpb25pbmdcbiAgc2lkZWNhcjpcbiAgICByZXNvdXJjZXM6XG4gICAgICByZXF1ZXN0czpcbiAgICAgICAgY3B1OiAxMG1cbiAgICAgICAgbWVtb3J5OiAyNTZNaVxuICAgICAgbGltaXRzOlxuICAgICAgICBjcHU6IDEwMG1cbiAgICAgICAgbWVtb3J5OiA1MTJNaVxuICAgIGRhc2hib2FyZHM6XG4gICAgICBlbmFibGVkOiB0cnVlXG4gICAgZGF0YXNvdXJjZXM6XG4gICAgICBlbmFibGVkOiBmYWxzZSAgIyBXZSBtYW51YWxseSBwcm92aXNpb24gZGF0YXNvdXJjZXMgKFByb21ldGhldXPihpJUaGFub3MsIExva2kpXG5cbiAgaW5ncmVzczpcbiAgICBlbmFibGVkOiB0cnVlXG4gICAgaG9zdHM6XG4gICAgICAtICR7Y29uZmlnLmRvbWFpbnMuZ3JhZmFuYX1cbiAgICBhbm5vdGF0aW9uczpcbiAgICAgIGNlcnQtbWFuYWdlci5pby9jbHVzdGVyLWlzc3VlcjogXCJsZXRzZW5jcnlwdC1jbHVzdGVyLWlzc3VlclwiXG4gICAgICB0cmFlZmlrLmluZ3Jlc3Mua3ViZXJuZXRlcy5pby9yb3V0ZXIuZW50cnlwb2ludHM6IHdlYnNlY3VyZVxuICAgIHRsczpcbiAgICAgIC0gc2VjcmV0TmFtZTogZ3JhZmFuYS1nZW5lcmFsLXRsc1xuICAgICAgICBob3N0czpcbiAgICAgICAgLSAke2NvbmZpZy5kb21haW5zLmdyYWZhbmF9XG5cbiAgcmVzb3VyY2VzOlxuICAgIGxpbWl0czpcbiAgICAgIGNwdTogJHtjb25maWcucmVzb3VyY2VzLmdyYWZhbmEubGltaXRzLmNwdX1cbiAgICAgIG1lbW9yeTogJHtjb25maWcucmVzb3VyY2VzLmdyYWZhbmEubGltaXRzLm1lbW9yeX1cbiAgICByZXF1ZXN0czpcbiAgICAgIGNwdTogJHtjb25maWcucmVzb3VyY2VzLmdyYWZhbmEucmVxdWVzdHMuY3B1fVxuICAgICAgbWVtb3J5OiAke2NvbmZpZy5yZXNvdXJjZXMuZ3JhZmFuYS5yZXF1ZXN0cy5tZW1vcnl9XG5cbiAgcmVhZGluZXNzUHJvYmU6XG4gICAgaHR0cEdldDpcbiAgICAgIHBhdGg6IC9hcGkvaGVhbHRoXG4gICAgICBwb3J0OiAzMDAwXG4gICAgaW5pdGlhbERlbGF5U2Vjb25kczogMzBcbiAgICBwZXJpb2RTZWNvbmRzOiAxMFxuICAgIHRpbWVvdXRTZWNvbmRzOiA1XG4gICAgZmFpbHVyZVRocmVzaG9sZDogM1xuXG4gIGxpdmVuZXNzUHJvYmU6XG4gICAgaHR0cEdldDpcbiAgICAgIHBhdGg6IC9hcGkvaGVhbHRoXG4gICAgICBwb3J0OiAzMDAwXG4gICAgaW5pdGlhbERlbGF5U2Vjb25kczogNjBcbiAgICBwZXJpb2RTZWNvbmRzOiAxMFxuICAgIHRpbWVvdXRTZWNvbmRzOiAzMFxuICAgIGZhaWx1cmVUaHJlc2hvbGQ6IDEwXG5cbiAgcGVyc2lzdGVuY2U6XG4gICAgZW5hYmxlZDogdHJ1ZVxuICAgIHN0b3JhZ2VDbGFzc05hbWU6IGxvbmdob3JuXG4gICAgYWNjZXNzTW9kZXM6XG4gICAgICAtIFJlYWRXcml0ZU9uY2VcbiAgICBzaXplOiAke2NvbmZpZy5zdG9yYWdlLmdyYWZhbmF9XG5cbiAgIyBNYW51YWwgZGF0YXNvdXJjZSBwcm92aXNpb25pbmcgKHNpZGVjYXIgZGlzYWJsZWQpXG4gICMgVGhhbm9zIFF1ZXJ5IOKGkiBsb25nLXRlcm0vaGlzdG9yaWNhbCBtZXRyaWNzIChTMyB2aWEgU3RvcmUgKyBsaXZlIHNpZGVjYXIpLCBkZWZhdWx0XG4gICMgUHJvbWV0aGV1cyDihpIgbG9jYWwsIHJlY2VudC9oaWdoLXJlcyBvbmx5IChrZXB0IGZvciBsb3ctbGF0ZW5jeSByZWNlbnQgcXVlcmllcylcbiAgIyBMb2tpIGZvciBsb2cgYWdncmVnYXRpb25cbiAgZGF0YXNvdXJjZXM6XG4gICAgZGF0YXNvdXJjZXMueWFtbDpcbiAgICAgIGFwaVZlcnNpb246IDFcbiAgICAgICMgRGVsZXRlIGFueSBwcmUtZXhpc3RpbmcgTG9raSBkYXRhc291cmNlIChlLmcuIG9uZSBjcmVhdGVkIHdpdGggYVxuICAgICAgIyByYW5kb21seSBnZW5lcmF0ZWQgVUlEIGJlZm9yZSB3ZSBwaW5uZWQgdWlkOiBsb2tpKS4gV2l0aG91dCB0aGlzLFxuICAgICAgIyBHcmFmYW5hIGZhaWxzIHByb3Zpc2lvbmluZyB3aXRoIFwiZGF0YSBzb3VyY2Ugbm90IGZvdW5kXCIgYmVjYXVzZVxuICAgICAgIyB0aGUgdXBzZXJ0IGNvbGxpZGVzIHdpdGggdGhlIGV4aXN0aW5nIGVudHJ5LlxuICAgICAgZGVsZXRlRGF0YXNvdXJjZXM6XG4gICAgICAtIG5hbWU6IExva2lcbiAgICAgICAgb3JnSWQ6IDFcbiAgICAgIGRhdGFzb3VyY2VzOlxuICAgICAgLSBuYW1lOiBUaGFub3NcbiAgICAgICAgdHlwZTogcHJvbWV0aGV1c1xuICAgICAgICB1aWQ6IHRoYW5vc1xuICAgICAgICBhY2Nlc3M6IHByb3h5XG4gICAgICAgICMgdGhhbm9zLXF1ZXJ5IFNlcnZpY2U6IGh0dHAgcG9ydCA5MDkwIC0+IGNvbnRhaW5lciBodHRwIDEwOTAyXG4gICAgICAgIHVybDogaHR0cDovL3RoYW5vcy1xdWVyeS4ke2NvbmZpZy5uYW1lc3BhY2V9LnN2Yy5jbHVzdGVyLmxvY2FsOjkwOTBcbiAgICAgICAgaXNEZWZhdWx0OiB0cnVlXG4gICAgICAgIGpzb25EYXRhOlxuICAgICAgICAgIHRpbWVJbnRlcnZhbDogMzBzXG4gICAgICAtIG5hbWU6IFByb21ldGhldXNcbiAgICAgICAgdHlwZTogcHJvbWV0aGV1c1xuICAgICAgICB1aWQ6IHByb21ldGhldXNcbiAgICAgICAgYWNjZXNzOiBwcm94eVxuICAgICAgICB1cmw6IGh0dHA6Ly9rdWJlLXByb21ldGhldXMtc3RhY2stcHJvbWV0aGV1cy4ke2NvbmZpZy5uYW1lc3BhY2V9LnN2Yy5jbHVzdGVyLmxvY2FsOjkwOTBcbiAgICAgICAgaXNEZWZhdWx0OiBmYWxzZVxuICAgICAgICBqc29uRGF0YTpcbiAgICAgICAgICB0aW1lSW50ZXJ2YWw6IDMwc1xuICAgICAgLSBuYW1lOiBMb2tpXG4gICAgICAgIHR5cGU6IGxva2lcbiAgICAgICAgdWlkOiBsb2tpXG4gICAgICAgIGFjY2VzczogcHJveHlcbiAgICAgICAgdXJsOiBodHRwOi8vbG9raS1nYXRld2F5LiR7Y29uZmlnLm5hbWVzcGFjZX0uc3ZjLmNsdXN0ZXIubG9jYWxcbiAgICAgICAganNvbkRhdGE6XG4gICAgICAgICAgbWF4TGluZXM6IDEwMDAke3RlbXBvRGF0YXNvdXJjZX1cblxucHJvbWV0aGV1c09wZXJhdG9yOlxuICByZXNvdXJjZXM6XG4gICAgbGltaXRzOlxuICAgICAgY3B1OiAxXG4gICAgICBtZW1vcnk6IDUxMk1pXG4gICAgcmVxdWVzdHM6XG4gICAgICBjcHU6IDUwbVxuICAgICAgbWVtb3J5OiAxMjhNaVxuICBwcmlvcml0eUNsYXNzTmFtZTogaGlnaC1wcmlvcml0eVxuXG5wcm9tZXRoZXVzLW5vZGUtZXhwb3J0ZXI6XG4gICMgQmluZCA6OTEwMCB0byB0aGUgbm9kZSBJbnRlcm5hbElQIG9ubHksIG5vdCAwLjAuMC4wLiBXaXRoIGt1YmVSQkFDUHJveHlcbiAgIyBkaXNhYmxlZCB0aGUgc3ViLWNoYXJ0IHNldHMgSE9TVF9JUCBmcm9tIGZpZWxkUmVmIHN0YXR1cy5ob3N0SVAsIHdoaWNoIGlzXG4gICMgdGhlIG5vZGUncyBJbnRlcm5hbElQIChFWDogdlN3aXRjaCAxMC42LjAueCB2aWEgLS1ub2RlLWlwOyBjbG91ZDogaGNsb3VkXG4gICMgcHJpdmF0ZSBJUCkuIG5vZGUtZXhwb3J0ZXIgaXMgaG9zdE5ldHdvcmssIHNvIFByb21ldGhldXMgYWxyZWFkeSBzY3JhcGVzXG4gICMgdGhhdCBJbnRlcm5hbElQIGVuZHBvaW50IC0+IHNjcmFwaW5nIGlzIHVuYWZmZWN0ZWQsIG9ubHkgdGhlIHB1YmxpYy1OSUNcbiAgIyBleHBvc3VyZSBvZiB0aGUgdW5hdXRoZW50aWNhdGVkIG1ldHJpY3Mgb24gdGhlIEVYIHB1YmxpYyBJUHMgZ29lcyBhd2F5LlxuICBzZXJ2aWNlOlxuICAgIGxpc3Rlbk9uQWxsSW50ZXJmYWNlczogZmFsc2VcbiAgcmVzb3VyY2VzOlxuICAgIGxpbWl0czpcbiAgICAgIGNwdTogNTBtXG4gICAgICBtZW1vcnk6IDUwTWlcbiAgICByZXF1ZXN0czpcbiAgICAgIGNwdTogNW1cbiAgICAgIG1lbW9yeTogMTZNaVxuICBwcmlvcml0eUNsYXNzTmFtZTogaGlnaC1wcmlvcml0eVxuXG5rdWJlLXN0YXRlLW1ldHJpY3M6XG4gIHJlc291cmNlczpcbiAgICBsaW1pdHM6XG4gICAgICBjcHU6IDFcbiAgICAgIG1lbW9yeTogNTEyTWlcbiAgICByZXF1ZXN0czpcbiAgICAgIGNwdTogNW1cbiAgICAgIG1lbW9yeTogMTI4TWlcbiAgcHJpb3JpdHlDbGFzc05hbWU6IGhpZ2gtcHJpb3JpdHlcbmA7XG4gIH1cbn1cbiJdfQ==
|
|
476
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWV0aGV1cy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzL3Byb21ldGhldXMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWtDO0FBQ2xDLDJDQUF1QztBQVF2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsc0JBQVM7SUFDckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXBDLDRCQUE0QjtRQUM1QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkQsa0RBQWtEO1FBQ2xELDJDQUEyQztRQUMzQyxJQUFJLGlCQUFTLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQzNDLFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsSUFBSSxFQUFFLFdBQVc7WUFDakIsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixNQUFNLEVBQUU7b0JBQ04sd0JBQXdCLEVBQUUsdUJBQXVCO29CQUNqRCw2QkFBNkIsRUFBRSxZQUFZO29CQUMzQyw4QkFBOEIsRUFBRSxPQUFPO29CQUN2QywyQkFBMkIsRUFBRSxZQUFZO2lCQUMxQztnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsOEJBQThCLEVBQUUsR0FBRztpQkFDcEM7YUFDRjtZQUNELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsb0RBQW9EO2dCQUMxRCxLQUFLLEVBQUUsdUJBQXVCO2dCQUM5QixPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxT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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQXNDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTs7VUFFNUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7Ozs7O1lBT3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTzs7OzthQUlyQixNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRztnQkFDaEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU07O2FBRXpDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO2dCQUNsQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXlCNUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DQXNCQyxNQUFNLENBQUMsU0FBUzs7Ozs7Ozs7dURBUUksTUFBTSxDQUFDLFNBQVM7Ozs7Ozs7O21DQVFwQyxNQUFNLENBQUMsU0FBUzs7MEJBRXpCLGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXVDeEMsQ0FBQztJQUNBLENBQUM7Q0FDRjtBQXBjRCw0REFvY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlPYmplY3QgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IE1vbml0b3JpbmdDb25maWcgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvbWV0aGV1c1N0YWNrUHJvcHMge1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgY29uZmlnOiBNb25pdG9yaW5nQ29uZmlnO1xufVxuXG4vKipcbiAqIENyZWF0ZXMga3ViZS1wcm9tZXRoZXVzLXN0YWNrIEhlbG1DaGFydCB3aXRoIFByb21ldGhldXMsIEdyYWZhbmEsIGFuZCBBbGVydG1hbmFnZXIuXG4gKlxuICogVGhpcyBpcyB0aGUgY29yZSBtb25pdG9yaW5nIHN0YWNrIHRoYXQgaW5jbHVkZXM6XG4gKiAtIFByb21ldGhldXMgKG1ldHJpY3MgY29sbGVjdGlvbiwgMiByZXBsaWNhcywgM2QgcmV0ZW50aW9uKVxuICogLSBHcmFmYW5hICh2aXN1YWxpemF0aW9uLCBpbmdyZXNzIHdpdGggTGV0J3MgRW5jcnlwdClcbiAqIC0gQWxlcnRtYW5hZ2VyIChhbGVydCByb3V0aW5nLCBTTVRQIG5vdGlmaWNhdGlvbnMpXG4gKiAtIFByb21ldGhldXMgT3BlcmF0b3IgKG1hbmFnZXMgUHJvbWV0aGV1cyBDUkRzKVxuICogLSBOb2RlIEV4cG9ydGVyIChzeXN0ZW0gbWV0cmljcyBEYWVtb25TZXQpXG4gKiAtIGt1YmUtc3RhdGUtbWV0cmljcyAoS3ViZXJuZXRlcyByZXNvdXJjZSBtZXRyaWNzKVxuICpcbiAqIFByZXJlcXVpc2l0ZXM6XG4gKiAtIE5hbWVzcGFjZSBleGlzdHNcbiAqIC0gUHJpb3JpdHlDbGFzcyAnaGlnaC1wcmlvcml0eScgZXhpc3RzXG4gKiAtIExvbmdob3JuIHN0b3JhZ2UgY2xhc3MgYXZhaWxhYmxlXG4gKiAtIGNlcnQtbWFuYWdlciBDbHVzdGVySXNzdWVyIGNvbmZpZ3VyZWRcbiAqIC0gVGhhbm9zIFMzIHNlY3JldCBleGlzdHMgKHRoYW5vcy1vYmpzdG9yZS1jb25maWcpXG4gKlxuICogU3luYyBXYXZlOiAyIChjb3JlIHNlcnZpY2VzIC0gYWZ0ZXIgUzMgYnVja2V0cyBhbmQgc2VjcmV0cylcbiAqL1xuZXhwb3J0IGNsYXNzIFByb21ldGhldXNTdGFja0NvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcm9tZXRoZXVzU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7IG5hbWVzcGFjZSwgY29uZmlnIH0gPSBwcm9wcztcblxuICAgIC8vIEdlbmVyYXRlIEhlbG0gdmFsdWVzIFlBTUxcbiAgICBjb25zdCBoZWxtVmFsdWVzID0gdGhpcy5nZW5lcmF0ZUhlbG1WYWx1ZXMoY29uZmlnKTtcblxuICAgIC8vIENyZWF0ZSBIZWxtQ2hhcnQgcmVzb3VyY2UgKEszUyBIZWxtIGNvbnRyb2xsZXIpXG4gICAgLy8gV2F2ZSAyOiBDb3JlIFNlcnZpY2VzIC0gbW9uaXRvcmluZyBzdGFja1xuICAgIG5ldyBBcGlPYmplY3QodGhpcywgJ2t1YmUtcHJvbWV0aGV1cy1zdGFjaycsIHtcbiAgICAgIGFwaVZlcnNpb246ICdoZWxtLmNhdHRsZS5pby92MScsXG4gICAgICBraW5kOiAnSGVsbUNoYXJ0JyxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIG5hbWU6ICdrdWJlLXByb21ldGhldXMtc3RhY2snLFxuICAgICAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZSxcbiAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiAna3ViZS1wcm9tZXRoZXVzLXN0YWNrJyxcbiAgICAgICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50JzogJ21vbml0b3JpbmcnLFxuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9tYW5hZ2VkLWJ5JzogJ2NkazhzJyxcbiAgICAgICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZic6ICdtb25pdG9yaW5nJyxcbiAgICAgICAgfSxcbiAgICAgICAgYW5ub3RhdGlvbnM6IHtcbiAgICAgICAgICAnYXJnb2NkLmFyZ29wcm9qLmlvL3N5bmMtd2F2ZSc6ICcyJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzcGVjOiB7XG4gICAgICAgIHJlcG86ICdodHRwczovL3Byb21ldGhldXMtY29tbXVuaXR5LmdpdGh1Yi5pby9oZWxtLWNoYXJ0cycsXG4gICAgICAgIGNoYXJ0OiAna3ViZS1wcm9tZXRoZXVzLXN0YWNrJyxcbiAgICAgICAgdmVyc2lvbjogY29uZmlnLnZlcnNpb25zLnByb21ldGhldXNTdGFjayA9PT0gJ2xhdGVzdCcgPyB1bmRlZmluZWQgOiBjb25maWcudmVyc2lvbnMucHJvbWV0aGV1c1N0YWNrLFxuICAgICAgICB0YXJnZXROYW1lc3BhY2U6IG5hbWVzcGFjZSxcbiAgICAgICAgdmFsdWVzQ29udGVudDogaGVsbVZhbHVlcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlSGVsbVZhbHVlcyhjb25maWc6IE1vbml0b3JpbmdDb25maWcpOiBzdHJpbmcge1xuICAgIC8vIFRlbXBvIGRhdGFzb3VyY2UgaXMgb25seSBwcm92aXNpb25lZCB3aGVuIHRyYWNpbmcgaXMgZW5hYmxlZC4gV2hlblxuICAgIC8vIGRpc2FibGVkIHRoaXMgaXMgZW1wdHksIHNvIHRoZSBHcmFmYW5hIGJsb2NrIGlzIGJ5dGUtaWRlbnRpY2FsIHRvIGJlZm9yZS5cbiAgICBjb25zdCB0ZW1wb0RhdGFzb3VyY2UgPSBjb25maWcudGVtcG8uZW5hYmxlZCA/IGBcbiAgICAgIC0gbmFtZTogVGVtcG9cbiAgICAgICAgdHlwZTogdGVtcG9cbiAgICAgICAgdWlkOiB0ZW1wb1xuICAgICAgICBhY2Nlc3M6IHByb3h5XG4gICAgICAgIHVybDogaHR0cDovL3RlbXBvLiR7Y29uZmlnLm5hbWVzcGFjZX0uc3ZjLmNsdXN0ZXIubG9jYWw6MzIwMFxuICAgICAgICBqc29uRGF0YTpcbiAgICAgICAgICB0aW1lb3V0OiA2MFxuICAgICAgICAgIHRyYWNlc1RvTG9nc1YyOlxuICAgICAgICAgICAgZGF0YXNvdXJjZVVpZDogbG9raVxuICAgICAgICAgICAgc3BhblN0YXJ0VGltZVNoaWZ0OiBcIi0xaFwiXG4gICAgICAgICAgICBzcGFuRW5kVGltZVNoaWZ0OiBcIjFoXCJcbiAgICAgICAgICAgIGZpbHRlckJ5VHJhY2VJRDogdHJ1ZVxuICAgICAgICAgIHRyYWNlc1RvTWV0cmljczpcbiAgICAgICAgICAgIGRhdGFzb3VyY2VVaWQ6IHRoYW5vc2AgOiAnJztcbiAgICByZXR1cm4gYGt1YmVFdGNkOlxuICBlbmFibGVkOiBmYWxzZVxuXG4jIERpc2FibGUga3ViZS1jb250cm9sbGVyLW1hbmFnZXIgYW5kIGt1YmUtc2NoZWR1bGVyIG1vbml0b3JpbmcuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY2FibGVzcGFnaGV0dGkvazNzLW1vbml0b3JpbmcvaXNzdWVzLzJcbmt1YmVDb250cm9sbGVyTWFuYWdlcjpcbiAgZW5hYmxlZDogZmFsc2Vcbmt1YmVTY2hlZHVsZXI6XG4gIGVuYWJsZWQ6IGZhbHNlXG5cbiMgRGV0ZWN0IFBvZERpc3J1cHRpb25CdWRnZXRzIHRoYXQgd291bGQgYmxvY2sgYSBub2RlIGRyYWluIGR1cmluZyBrM3MgdXBncmFkZXMuXG4jIE9wZXJhdG9yLW1hbmFnZWQgUERCcyBzaXQgYXQgZGlzcnVwdGlvbnNBbGxvd2VkPTAgYnkgZGVzaWduIChMb25naG9ybiBpbnN0YW5jZS1tYW5hZ2VycyxcbiMgQ05QRyAqLXByaW1hcnkpIGFuZCBhcmUgZXhjbHVkZWQgc28gdGhlIGFsZXJ0IG9ubHkgZmlyZXMgb24gYW5vbWFsb3VzIGFwcCBQREJzLlxuYWRkaXRpb25hbFByb21ldGhldXNSdWxlc01hcDpcbiAgcGRiLWRyYWluLXNhZmV0eTpcbiAgICBncm91cHM6XG4gICAgICAtIG5hbWU6IHBkYi5ydWxlc1xuICAgICAgICBpbnRlcnZhbDogMW1cbiAgICAgICAgcnVsZXM6XG4gICAgICAgICAgLSBhbGVydDogUG9kRGlzcnVwdGlvbkJ1ZGdldFVuZHJhaW5hYmxlXG4gICAgICAgICAgICBleHByOiBrdWJlX3BvZGRpc3J1cHRpb25idWRnZXRfc3RhdHVzX3BvZF9kaXNydXB0aW9uc19hbGxvd2Vke25hbWVzcGFjZSE9XCJsb25naG9ybi1zeXN0ZW1cIiwgcG9kZGlzcnVwdGlvbmJ1ZGdldCF+XCIuKi1wcmltYXJ5XCJ9ID09IDBcbiAgICAgICAgICAgIGZvcjogMTVtXG4gICAgICAgICAgICBsYWJlbHM6XG4gICAgICAgICAgICAgIHNldmVyaXR5OiB3YXJuaW5nXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogY2x1c3Rlci11cGdyYWRlXG4gICAgICAgICAgICBhbm5vdGF0aW9uczpcbiAgICAgICAgICAgICAgc3VtbWFyeTogXCJQREIge3sgJGxhYmVscy5uYW1lc3BhY2UgfX0ve3sgJGxhYmVscy5wb2RkaXNydXB0aW9uYnVkZ2V0IH19IGFsbG93cyAwIHZvbHVudGFyeSBkaXNydXB0aW9uc1wiXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB8XG4gICAgICAgICAgICAgICAgVGhlIFBvZERpc3J1cHRpb25CdWRnZXQge3sgJGxhYmVscy5uYW1lc3BhY2UgfX0ve3sgJGxhYmVscy5wb2RkaXNydXB0aW9uYnVkZ2V0IH19XG4gICAgICAgICAgICAgICAgaGFzIGFsbG93ZWQgMCB2b2x1bnRhcnkgZGlzcnVwdGlvbnMgZm9yIG92ZXIgMTUgbWludXRlcy4gVGhpcyB3aWxsIGJsb2NrIGEgbm9kZVxuICAgICAgICAgICAgICAgIGRyYWluIGR1cmluZyBrM3MgdXBncmFkZXMuIE9wZXJhdG9yLW1hbmFnZWQgUERCcyAoTG9uZ2hvcm4sIENOUEcgcHJpbWFyaWVzKSBhcmVcbiAgICAgICAgICAgICAgICBleGNsdWRlZCBmcm9tIHRoaXMgYWxlcnQuIExpa2VseSBhIGRlZ3JhZGVkIGRlcGxveW1lbnQgKDAgaGVhbHRoeSBwb2RzKSBvciBhXG4gICAgICAgICAgICAgICAgc2luZ2xlLXJlcGxpY2EgZGVwbG95bWVudCB3aXRoIG1pbkF2YWlsYWJsZT0xLlxuICAgICAgICAgICAgICAgIENoZWNrOiBrdWJlY3RsIGdldCBwZGIgLW4ge3sgJGxhYmVscy5uYW1lc3BhY2UgfX0ge3sgJGxhYmVscy5wb2RkaXNydXB0aW9uYnVkZ2V0IH19XG4gICAgICAgICAgLSBhbGVydDogUG9kRGlzcnVwdGlvbkJ1ZGdldFVuZHJhaW5hYmxlQ3JpdGljYWxcbiAgICAgICAgICAgIGV4cHI6IGt1YmVfcG9kZGlzcnVwdGlvbmJ1ZGdldF9zdGF0dXNfcG9kX2Rpc3J1cHRpb25zX2FsbG93ZWR7bmFtZXNwYWNlIT1cImxvbmdob3JuLXN5c3RlbVwiLCBwb2RkaXNydXB0aW9uYnVkZ2V0IX5cIi4qLXByaW1hcnlcIn0gPT0gMFxuICAgICAgICAgICAgZm9yOiAxaFxuICAgICAgICAgICAgbGFiZWxzOlxuICAgICAgICAgICAgICBzZXZlcml0eTogY3JpdGljYWxcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBjbHVzdGVyLXVwZ3JhZGVcbiAgICAgICAgICAgIGFubm90YXRpb25zOlxuICAgICAgICAgICAgICBzdW1tYXJ5OiBcIlBEQiB7eyAkbGFiZWxzLm5hbWVzcGFjZSB9fS97eyAkbGFiZWxzLnBvZGRpc3J1cHRpb25idWRnZXQgfX0gdW5kcmFpbmFibGUgPjFoXCJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHxcbiAgICAgICAgICAgICAgICBQREIge3sgJGxhYmVscy5uYW1lc3BhY2UgfX0ve3sgJGxhYmVscy5wb2RkaXNydXB0aW9uYnVkZ2V0IH19IGhhcyBibG9ja2VkXG4gICAgICAgICAgICAgICAgdm9sdW50YXJ5IGRpc3J1cHRpb25zIGZvciBvdmVyIGFuIGhvdXIuIEEgazNzIGFnZW50IHVwZ3JhZGUgd291bGQgc3RhbGwgb24gdGhpcyBub2RlLlxuIyBEcm9wIGhpZ2gtY2FyZGluYWxpdHkgQVBJIHNlcnZlciBhbmQgZXRjZCBoaXN0b2dyYW0gYnVja2V0cyB0byByZWR1Y2UgbWVtb3J5IHVzYWdlXG4jIFRoZXNlIG1ldHJpY3MgYWxvbmUgYWNjb3VudCBmb3IgfjIwMGsgc2VyaWVzICg0NyUgb2YgdG90YWwgY2FyZGluYWxpdHkpXG4jIFdlIGtlZXAgX3N1bSBhbmQgX2NvdW50IHN1ZmZpeGVzIHdoaWNoIGFyZSBzdWZmaWNpZW50IGZvciByYXRlIGNhbGN1bGF0aW9uc1xua3ViZUFwaVNlcnZlcjpcbiAgc2VydmljZU1vbml0b3I6XG4gICAgbWV0cmljUmVsYWJlbGluZ3M6XG4gICAgICAtIHNvdXJjZUxhYmVsczogW19fbmFtZV9fXVxuICAgICAgICByZWdleDogJ2FwaXNlcnZlcl9yZXF1ZXN0X2R1cmF0aW9uX3NlY29uZHNfYnVja2V0J1xuICAgICAgICBhY3Rpb246IGRyb3BcbiAgICAgIC0gc291cmNlTGFiZWxzOiBbX19uYW1lX19dXG4gICAgICAgIHJlZ2V4OiAnYXBpc2VydmVyX3JlcXVlc3Rfc2xpX2R1cmF0aW9uX3NlY29uZHNfYnVja2V0J1xuICAgICAgICBhY3Rpb246IGRyb3BcbiAgICAgIC0gc291cmNlTGFiZWxzOiBbX19uYW1lX19dXG4gICAgICAgIHJlZ2V4OiAnYXBpc2VydmVyX3JlcXVlc3RfYm9keV9zaXplX2J5dGVzX2J1Y2tldCdcbiAgICAgICAgYWN0aW9uOiBkcm9wXG4gICAgICAtIHNvdXJjZUxhYmVsczogW19fbmFtZV9fXVxuICAgICAgICByZWdleDogJ2FwaXNlcnZlcl9yZXNwb25zZV9zaXplc19idWNrZXQnXG4gICAgICAgIGFjdGlvbjogZHJvcFxuICAgICAgLSBzb3VyY2VMYWJlbHM6IFtfX25hbWVfX11cbiAgICAgICAgcmVnZXg6ICdldGNkX3JlcXVlc3RfZHVyYXRpb25fc2Vjb25kc19idWNrZXQnXG4gICAgICAgIGFjdGlvbjogZHJvcFxuXG4jIEt1YmVsZXQgYWxzbyBleHBvc2VzIGFwaXNlcnZlciBtZXRyaWNzIC0gYXBwbHkgc2FtZSBmaWx0ZXJzXG5rdWJlbGV0OlxuICBzZXJ2aWNlTW9uaXRvcjpcbiAgICBtZXRyaWNSZWxhYmVsaW5nczpcbiAgICAgIC0gc291cmNlTGFiZWxzOiBbX19uYW1lX19dXG4gICAgICAgIHJlZ2V4OiAnYXBpc2VydmVyX3JlcXVlc3RfZHVyYXRpb25fc2Vjb25kc19idWNrZXQnXG4gICAgICAgIGFjdGlvbjogZHJvcFxuICAgICAgLSBzb3VyY2VMYWJlbHM6IFtfX25hbWVfX11cbiAgICAgICAgcmVnZXg6ICdhcGlzZXJ2ZXJfcmVxdWVzdF9zbGlfZHVyYXRpb25fc2Vjb25kc19idWNrZXQnXG4gICAgICAgIGFjdGlvbjogZHJvcFxuICAgICAgLSBzb3VyY2VMYWJlbHM6IFtfX25hbWVfX11cbiAgICAgICAgcmVnZXg6ICdhcGlzZXJ2ZXJfcmVxdWVzdF9ib2R5X3NpemVfYnl0ZXNfYnVja2V0J1xuICAgICAgICBhY3Rpb246IGRyb3BcbiAgICAgIC0gc291cmNlTGFiZWxzOiBbX19uYW1lX19dXG4gICAgICAgIHJlZ2V4OiAnYXBpc2VydmVyX3Jlc3BvbnNlX3NpemVzX2J1Y2tldCdcbiAgICAgICAgYWN0aW9uOiBkcm9wXG4gICAgICAtIHNvdXJjZUxhYmVsczogW19fbmFtZV9fXVxuICAgICAgICByZWdleDogJ2V0Y2RfcmVxdWVzdF9kdXJhdGlvbl9zZWNvbmRzX2J1Y2tldCdcbiAgICAgICAgYWN0aW9uOiBkcm9wXG5cbmFsZXJ0bWFuYWdlcjpcbiAgY29uZmlnOlxuICAgIGdsb2JhbDpcbiAgICAgIHNtdHBfZnJvbTogJHtjb25maWcuc210cC5mcm9tfVxuICAgICAgc210cF9zbWFydGhvc3Q6ICR7Y29uZmlnLnNtdHAuaG9zdH06JHtjb25maWcuc210cC5wb3J0fVxuICAgICAgc210cF9yZXF1aXJlX3RsczogJHtjb25maWcuc210cC5yZXF1aXJlVGxzfVxuICAgICAgc210cF9hdXRoX3VzZXJuYW1lOiAke2NvbmZpZy5zbXRwLnVzZXJuYW1lIHx8IGNvbmZpZy5zbXRwLmZyb219XG4gICAgICBzbXRwX2F1dGhfcGFzc3dvcmQ6ICR7Y29uZmlnLnNtdHAucGFzc3dvcmQgfHwgJyd9XG4gICAgcm91dGU6XG4gICAgICBncm91cF9ieTogWydqb2InXVxuICAgICAgZ3JvdXBfd2FpdDogMzBzXG4gICAgICBncm91cF9pbnRlcnZhbDogNW1cbiAgICAgIHJlcGVhdF9pbnRlcnZhbDogMWhcbiAgICAgIHJlY2VpdmVyOiBlbWFpbFxuICAgICAgcm91dGVzOlxuICAgICAgLSBtYXRjaDpcbiAgICAgICAgICBhbGVydG5hbWU6IFdhdGNoZG9nXG4gICAgICAgIHJlY2VpdmVyOiAnbnVsbCdcbiAgICAgIC0gbWF0Y2g6XG4gICAgICAgICAgYWxlcnRuYW1lOiBDUFVUaHJvdHRsaW5nSGlnaFxuICAgICAgICByZWNlaXZlcjogJ251bGwnXG4gICAgICAtIG1hdGNoOlxuICAgICAgICAgIGFsZXJ0bmFtZTogS3ViZU1lbW9yeU92ZXJjb21taXRcbiAgICAgICAgcmVjZWl2ZXI6ICdudWxsJ1xuICAgICAgLSBtYXRjaDpcbiAgICAgICAgICBhbGVydG5hbWU6IEt1YmVDUFVPdmVyY29tbWl0XG4gICAgICAgIHJlY2VpdmVyOiAnbnVsbCdcbiAgICAgIC0gbWF0Y2g6XG4gICAgICAgICAgYWxlcnRuYW1lOiBLdWJlbGV0VG9vTWFueVBvZHNcbiAgICAgICAgcmVjZWl2ZXI6ICdudWxsJ1xuXG4gICAgcmVjZWl2ZXJzOlxuICAgIC0gbmFtZTogJ251bGwnXG4gICAgLSBuYW1lOiBlbWFpbFxuICAgICAgZW1haWxfY29uZmlnczpcbiAgICAgIC0gc2VuZF9yZXNvbHZlZDogdHJ1ZVxuICAgICAgICB0bzogJHtjb25maWcuc210cC5mcm9tfVxuXG4gICAgIyBJbmhpYml0aW9uIHJ1bGVzIGFsbG93IHRvIG11dGUgYSBzZXQgb2YgYWxlcnRzIGdpdmVuIHRoYXQgYW5vdGhlciBhbGVydCBpcyBmaXJpbmcuXG4gICAgIyBXZSB1c2UgdGhpcyB0byBtdXRlIGFueSB3YXJuaW5nLWxldmVsIG5vdGlmaWNhdGlvbnMgaWYgdGhlIHNhbWUgYWxlcnQgaXMgYWxyZWFkeSBjcml0aWNhbC5cbiAgICBpbmhpYml0X3J1bGVzOlxuICAgIC0gc291cmNlX21hdGNoOlxuICAgICAgICBzZXZlcml0eTogJ2NyaXRpY2FsJ1xuICAgICAgdGFyZ2V0X21hdGNoOlxuICAgICAgICBzZXZlcml0eTogJ3dhcm5pbmcnXG4gICAgICAjIEFwcGx5IGluaGliaXRpb24gaWYgdGhlIGFsZXJ0bmFtZSBpcyB0aGUgc2FtZS5cbiAgICAgIGVxdWFsOiBbJ2FsZXJ0bmFtZScsICduYW1lc3BhY2UnXVxuXG4gIGFsZXJ0bWFuYWdlclNwZWM6XG4gICAgcmVwbGljYXM6ICR7Y29uZmlnLnJlcGxpY2FzLmFsZXJ0bWFuYWdlcn1cbiAgICBwb2RBbnRpQWZmaW5pdHk6IFwic29mdFwiXG4gICAgc3RvcmFnZTpcbiAgICAgIHZvbHVtZUNsYWltVGVtcGxhdGU6XG4gICAgICAgIHNwZWM6XG4gICAgICAgICAgYWNjZXNzTW9kZXM6IFtcIlJlYWRXcml0ZU9uY2VcIl1cbiAgICAgICAgICByZXNvdXJjZXM6XG4gICAgICAgICAgICByZXF1ZXN0czpcbiAgICAgICAgICAgICAgc3RvcmFnZTogJHtjb25maWcuc3RvcmFnZS5hbGVydG1hbmFnZXJ9XG4gICAgcmVzb3VyY2VzOlxuICAgICAgbGltaXRzOlxuICAgICAgICBjcHU6ICR7Y29uZmlnLnJlc291cmNlcy5hbGVydG1hbmFnZXIubGltaXRzLmNwdX1cbiAgICAgICAgbWVtb3J5OiAke2NvbmZpZy5yZXNvdXJjZXMuYWxlcnRtYW5hZ2VyLmxpbWl0cy5tZW1vcnl9XG4gICAgICByZXF1ZXN0czpcbiAgICAgICAgY3B1OiAke2NvbmZpZy5yZXNvdXJjZXMuYWxlcnRtYW5hZ2VyLnJlcXVlc3RzLmNwdX1cbiAgICAgICAgbWVtb3J5OiAke2NvbmZpZy5yZXNvdXJjZXMuYWxlcnRtYW5hZ2VyLnJlcXVlc3RzLm1lbW9yeX1cbiAgICBwcmlvcml0eUNsYXNzTmFtZTogaGlnaC1wcmlvcml0eVxuXG4gICAgIyBTaWRlY2FyIGNvbnRhaW5lcnMgcmVzb3VyY2UgcmVxdWVzdHMgKGFkZGVkIDIwMjUtMTEtMTgpXG4gICAgY29udGFpbmVyczpcbiAgICAtIG5hbWU6IGNvbmZpZy1yZWxvYWRlclxuICAgICAgcmVzb3VyY2VzOlxuICAgICAgICByZXF1ZXN0czpcbiAgICAgICAgICBjcHU6ICR7Y29uZmlnLnJlc291cmNlcy5jb25maWdSZWxvYWRlci5yZXF1ZXN0cy5jcHV9XG4gICAgICAgICAgbWVtb3J5OiAke2NvbmZpZy5yZXNvdXJjZXMuY29uZmlnUmVsb2FkZXIucmVxdWVzdHMubWVtb3J5fVxuICAgICAgICBsaW1pdHM6XG4gICAgICAgICAgY3B1OiAke2NvbmZpZy5yZXNvdXJjZXMuY29uZmlnUmVsb2FkZXIubGltaXRzLmNwdX1cbiAgICAgICAgICBtZW1vcnk6ICR7Y29uZmlnLnJlc291cmNlcy5jb25maWdSZWxvYWRlci5saW1pdHMubWVtb3J5fVxuXG5cbnByb21ldGhldXM6XG4gICMgRW5hYmxlIFRoYW5vcyBzZXJ2aWNlIGZvciBnUlBDIGNvbW11bmljYXRpb25cbiAgIyBSZXF1aXJlZCBmb3IgSGVsbSBjaGFydCB0byBwcm9wZXJseSByZW5kZXIgVGhhbm9zIHNpZGVjYXIgY29uZmlndXJhdGlvblxuICB0aGFub3NTZXJ2aWNlOlxuICAgIGVuYWJsZWQ6IHRydWVcblxuICBwcm9tZXRoZXVzU3BlYzpcbiAgICByZXRlbnRpb246ICR7Y29uZmlnLnJldGVudGlvbi5wcm9tZXRoZXVzfSAgIyBSZWR1Y2VkIGZyb20gN2QgLSBUaGFub3MgcHJvdmlkZXMgbG9uZy10ZXJtIHN0b3JhZ2UgaW4gUzNcblxuICAgICMgRGlzY292ZXIgQUxMIFNlcnZpY2VNb25pdG9ycywgUG9kTW9uaXRvcnMgYW5kIFByb21ldGhldXNSdWxlcyBpbiBBTEwgbmFtZXNwYWNlc1xuICAgICMgU2V0dGluZyBOaWxVc2VzSGVsbVZhbHVlczogZmFsc2UgbWVhbnMgbmlsIHNlbGVjdG9ycyA9IFwic2VsZWN0IGFsbFwiXG4gICAgIyBFbXB0eSBuYW1lc3BhY2Ugc2VsZWN0b3JzIHt9IG1lYW4gXCJzZWFyY2ggYWxsIG5hbWVzcGFjZXNcIlxuICAgICMgV2l0aG91dCB0aGUgcnVsZSogc2V0dGluZ3MsIHJ1bGVTZWxlY3RvciBrZWVwcyB0aGUgY2hhcnQgZGVmYXVsdFxuICAgICMgKG1hdGNoTGFiZWxzOiB7cmVsZWFzZTogPG5hbWU+fSkgYW5kIGhhbmQtYXV0aG9yZWQgUHJvbWV0aGV1c1J1bGVzIHRoYXRcbiAgICAjIGxhY2sgdGhlIHJlbGVhc2UgbGFiZWwgYXJlIHNpbGVudGx5IGlnbm9yZWQuXG4gICAgIyBOb3RlOiBUaGlzIGRvZXMgTk9UIGFmZmVjdCBUaGFub3Mgc2lkZWNhciAtIGNvbnRyb2xsZWQgYnkgdGhhbm9zLm9iamVjdFN0b3JhZ2VDb25maWdcbiAgICBzZXJ2aWNlTW9uaXRvclNlbGVjdG9yTmlsVXNlc0hlbG1WYWx1ZXM6IGZhbHNlXG4gICAgcG9kTW9uaXRvclNlbGVjdG9yTmlsVXNlc0hlbG1WYWx1ZXM6IGZhbHNlXG4gICAgcnVsZVNlbGVjdG9yTmlsVXNlc0hlbG1WYWx1ZXM6IGZhbHNlXG4gICAgc2VydmljZU1vbml0b3JOYW1lc3BhY2VTZWxlY3Rvcjoge31cbiAgICBwb2RNb25pdG9yTmFtZXNwYWNlU2VsZWN0b3I6IHt9XG4gICAgcnVsZU5hbWVzcGFjZVNlbGVjdG9yOiB7fVxuXG4gICAgcmVwbGljYXM6ICR7Y29uZmlnLnJlcGxpY2FzLnByb21ldGhldXN9XG4gICAgcG9kQW50aUFmZmluaXR5OiBcImhhcmRcIlxuICAgIHN0b3JhZ2VTcGVjOlxuICAgICAgdm9sdW1lQ2xhaW1UZW1wbGF0ZTpcbiAgICAgICAgc3BlYzpcbiAgICAgICAgICBzdG9yYWdlQ2xhc3NOYW1lOiBsb25naG9yblxuICAgICAgICAgIGFjY2Vzc01vZGVzOiBbXCJSZWFkV3JpdGVPbmNlXCJdXG4gICAgICAgICAgcmVzb3VyY2VzOlxuICAgICAgICAgICAgcmVxdWVzdHM6XG4gICAgICAgICAgICAgIHN0b3JhZ2U6ICR7Y29uZmlnLnN0b3JhZ2UucHJvbWV0aGV1c30gICMgUmVkdWNlZCBmcm9tIDZHaSAoM2QgcmV0ZW50aW9uIG5lZWRzIGxlc3Mgc3BhY2UpXG5cbiAgICByZXNvdXJjZXM6XG4gICAgICBsaW1pdHM6XG4gICAgICAgIGNwdTogJHtjb25maWcucmVzb3VyY2VzLnByb21ldGhldXMubGltaXRzLmNwdX1cbiAgICAgICAgbWVtb3J5OiAke2NvbmZpZy5yZXNvdXJjZXMucHJvbWV0aGV1cy5saW1pdHMubWVtb3J5fVxuICAgICAgcmVxdWVzdHM6XG4gICAgICAgIGNwdTogJHtjb25maWcucmVzb3VyY2VzLnByb21ldGhldXMucmVxdWVzdHMuY3B1fVxuICAgICAgICBtZW1vcnk6ICR7Y29uZmlnLnJlc291cmNlcy5wcm9tZXRoZXVzLnJlcXVlc3RzLm1lbW9yeX1cbiAgICBwcmlvcml0eUNsYXNzTmFtZTogaGlnaC1wcmlvcml0eVxuXG4gICAgIyBFeHRlcm5hbCBsYWJlbHMgZm9yIG11bHRpLWNsdXN0ZXIgaWRlbnRpZmljYXRpb24gYW5kIFRoYW5vc1xuICAgIGV4dGVybmFsTGFiZWxzOlxuICAgICAgY2x1c3RlcjogJHtjb25maWcuY2x1c3Rlck5hbWV9XG4gICAgICByZXBsaWNhOiBcIiQoUE9EX05BTUUpXCJcblxuICAgICMgVGhhbm9zIHNpZGVjYXIgZm9yIGxvbmctdGVybSBtZXRyaWNzIHN0b3JhZ2UgaW4gUzNcbiAgICAjIE5PVEU6IGNoYXJ0ID49ODUueCByZXF1aXJlcyB0aGUgZXhpc3RpbmdTZWNyZXQgc2hhcGUuIFRoZSBsZWdhY3kgZmxhdFxuICAgICMge25hbWUsIGtleX0gZm9ybSBpcyBzaWxlbnRseSBkcm9wcGVkIGJ5IHRoZSBjaGFydCwgd2hpY2ggcmVtb3ZlcyB0aGVcbiAgICAjIHNpZGVjYXIgYW5kIHN0b3BzIGFsbCBTMyBibG9jayB1cGxvYWRzIChyZWdyZXNzaW9uIHNlZW4gMjAyNi0wMy0zMSkuXG4gICAgdGhhbm9zOlxuICAgICAgb2JqZWN0U3RvcmFnZUNvbmZpZzpcbiAgICAgICAgZXhpc3RpbmdTZWNyZXQ6XG4gICAgICAgICAgbmFtZTogdGhhbm9zLW9ianN0b3JlLWNvbmZpZyAgIyBFU08tbWFuYWdlZCBzZWNyZXRcbiAgICAgICAgICBrZXk6IG9ianN0b3JlLnltbFxuXG4gICAgIyBTaWRlY2FyIGNvbnRhaW5lcnMgcmVzb3VyY2UgcmVxdWVzdHMgKGFkZGVkIDIwMjUtMTEtMTgpXG4gICAgIyBOT1RFOiB0aGFub3Mtc2lkZWNhciBpcyBOT1QgbGlzdGVkIGhlcmUgLSBpdCdzIGF1dG9tYXRpY2FsbHkgaW5qZWN0ZWQgYnkgUHJvbWV0aGV1cyBPcGVyYXRvclxuICAgICMgd2hlbiB0aGFub3Mub2JqZWN0U3RvcmFnZUNvbmZpZyBpcyBzZXQuIFNwZWNpZnlpbmcgaXQgaW4gY29udGFpbmVyc1tdIHdvdWxkIG92ZXJyaWRlXG4gICAgIyB0aGUgb3BlcmF0b3IncyBkZWZpbml0aW9uIGFuZCByZXF1aXJlIHVzIHRvIG1hbnVhbGx5IHNwZWNpZnkgdGhlIGltYWdlLCB3aGljaCBicmVha3NcbiAgICAjIHdoZW4gdGhlIG9wZXJhdG9yIHVwZGF0ZXMgdGhlIHRoYW5vcyB2ZXJzaW9uLlxuICAgIGNvbnRhaW5lcnM6XG4gICAgLSBuYW1lOiBjb25maWctcmVsb2FkZXJcbiAgICAgIHJlc291cmNlczpcbiAgICAgICAgcmVxdWVzdHM6XG4gICAgICAgICAgY3B1OiAke2NvbmZpZy5yZXNvdXJjZXMuY29uZmlnUmVsb2FkZXIucmVxdWVzdHMuY3B1fVxuICAgICAgICAgIG1lbW9yeTogJHtjb25maWcucmVzb3VyY2VzLmNvbmZpZ1JlbG9hZGVyLnJlcXVlc3RzLm1lbW9yeX1cbiAgICAgICAgbGltaXRzOlxuICAgICAgICAgIGNwdTogJHtjb25maWcucmVzb3VyY2VzLmNvbmZpZ1JlbG9hZGVyLmxpbWl0cy5jcHV9XG4gICAgICAgICAgbWVtb3J5OiAke2NvbmZpZy5yZXNvdXJjZXMuY29uZmlnUmVsb2FkZXIubGltaXRzLm1lbW9yeX1cblxuICAgIHNlcnZpY2U6XG4gICAgICBzZXNzaW9uQWZmaW5pdHk6IFwiQ2xpZW50SVBcIlxuXG5cbmdyYWZhbmE6XG4gICMgUmVjcmVhdGUgc3RyYXRlZ3kgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGUgc3RvcmFnZSBQVkMgaXMgUldPOlxuICAjIGEgUm9sbGluZ1VwZGF0ZSB3b3VsZCBzdXJnZSBhIHNlY29uZCBwb2QgdGhhdCBjYW5ub3QgbW91bnQgdGhlXG4gICMgdm9sdW1lIChGYWlsZWRBdHRhY2hWb2x1bWUpLCBibG9ja2luZyB0aGUgcm9sbG91dCBpbmRlZmluaXRlbHkuXG4gIGRlcGxveW1lbnRTdHJhdGVneTpcbiAgICB0eXBlOiBSZWNyZWF0ZVxuXG4gICMgVXNlIGV4aXN0aW5nIHNlY3JldCBmb3IgYWRtaW4gY3JlZGVudGlhbHMgKG1hbmFnZWQgYnkgRVNPKVxuICAjIFRoaXMgcHJldmVudHMgcGFzc3dvcmQgcmVnZW5lcmF0aW9uIG9uIEhlbG0gdXBncmFkZXNcbiAgYWRtaW46XG4gICAgZXhpc3RpbmdTZWNyZXQ6IFwiZ3JhZmFuYS1hZG1pbi1jcmVkZW50aWFsc1wiXG4gICAgdXNlcktleTogXCJhZG1pbi11c2VyXCJcbiAgICBwYXNzd29yZEtleTogXCJhZG1pbi1wYXNzd29yZFwiXG5cbiAgIyBEaXNhYmxlIGRlZmF1bHQgUHJvbWV0aGV1cyBkYXRhc291cmNlICh3ZSBwcm92aWRlIG91ciBvd24gcG9pbnRpbmcgdG8gVGhhbm9zIFF1ZXJ5KVxuICBkZWZhdWx0RGF0YXNvdXJjZUVuYWJsZWQ6IGZhbHNlXG5cbiAgIyBTaWRlY2FyIGNvbnRhaW5lcnMgZm9yIGRhc2hib2FyZC9kYXRhc291cmNlIHByb3Zpc2lvbmluZ1xuICBzaWRlY2FyOlxuICAgIHJlc291cmNlczpcbiAgICAgIHJlcXVlc3RzOlxuICAgICAgICBjcHU6IDEwbVxuICAgICAgICBtZW1vcnk6IDI1Nk1pXG4gICAgICBsaW1pdHM6XG4gICAgICAgIGNwdTogMTAwbVxuICAgICAgICBtZW1vcnk6IDUxMk1pXG4gICAgZGFzaGJvYXJkczpcbiAgICAgIGVuYWJsZWQ6IHRydWVcbiAgICBkYXRhc291cmNlczpcbiAgICAgIGVuYWJsZWQ6IGZhbHNlICAjIFdlIG1hbnVhbGx5IHByb3Zpc2lvbiBkYXRhc291cmNlcyAoUHJvbWV0aGV1c+KGklRoYW5vcywgTG9raSlcblxuICBpbmdyZXNzOlxuICAgIGVuYWJsZWQ6IHRydWUke2NvbmZpZy5kb21haW5zLmluZ3Jlc3NDbGFzc05hbWUgPyBgXFxuICAgIGluZ3Jlc3NDbGFzc05hbWU6ICR7Y29uZmlnLmRvbWFpbnMuaW5ncmVzc0NsYXNzTmFtZX1gIDogJyd9XG4gICAgaG9zdHM6XG4gICAgICAtICR7Y29uZmlnLmRvbWFpbnMuZ3JhZmFuYX1cbiAgICBhbm5vdGF0aW9uczpcbiAgICAgIGNlcnQtbWFuYWdlci5pby9jbHVzdGVyLWlzc3VlcjogXCJsZXRzZW5jcnlwdC1jbHVzdGVyLWlzc3VlclwiXG4gICAgICB0cmFlZmlrLmluZ3Jlc3Mua3ViZXJuZXRlcy5pby9yb3V0ZXIuZW50cnlwb2ludHM6IHdlYnNlY3VyZVxuICAgIHRsczpcbiAgICAgIC0gc2VjcmV0TmFtZTogZ3JhZmFuYS1nZW5lcmFsLXRsc1xuICAgICAgICBob3N0czpcbiAgICAgICAgLSAke2NvbmZpZy5kb21haW5zLmdyYWZhbmF9XG5cbiAgcmVzb3VyY2VzOlxuICAgIGxpbWl0czpcbiAgICAgIGNwdTogJHtjb25maWcucmVzb3VyY2VzLmdyYWZhbmEubGltaXRzLmNwdX1cbiAgICAgIG1lbW9yeTogJHtjb25maWcucmVzb3VyY2VzLmdyYWZhbmEubGltaXRzLm1lbW9yeX1cbiAgICByZXF1ZXN0czpcbiAgICAgIGNwdTogJHtjb25maWcucmVzb3VyY2VzLmdyYWZhbmEucmVxdWVzdHMuY3B1fVxuICAgICAgbWVtb3J5OiAke2NvbmZpZy5yZXNvdXJjZXMuZ3JhZmFuYS5yZXF1ZXN0cy5tZW1vcnl9XG5cbiAgcmVhZGluZXNzUHJvYmU6XG4gICAgaHR0cEdldDpcbiAgICAgIHBhdGg6IC9hcGkvaGVhbHRoXG4gICAgICBwb3J0OiAzMDAwXG4gICAgaW5pdGlhbERlbGF5U2Vjb25kczogMzBcbiAgICBwZXJpb2RTZWNvbmRzOiAxMFxuICAgIHRpbWVvdXRTZWNvbmRzOiA1XG4gICAgZmFpbHVyZVRocmVzaG9sZDogM1xuXG4gIGxpdmVuZXNzUHJvYmU6XG4gICAgaHR0cEdldDpcbiAgICAgIHBhdGg6IC9hcGkvaGVhbHRoXG4gICAgICBwb3J0OiAzMDAwXG4gICAgaW5pdGlhbERlbGF5U2Vjb25kczogNjBcbiAgICBwZXJpb2RTZWNvbmRzOiAxMFxuICAgIHRpbWVvdXRTZWNvbmRzOiAzMFxuICAgIGZhaWx1cmVUaHJlc2hvbGQ6IDEwXG5cbiAgcGVyc2lzdGVuY2U6XG4gICAgZW5hYmxlZDogdHJ1ZVxuICAgIHN0b3JhZ2VDbGFzc05hbWU6IGxvbmdob3JuXG4gICAgYWNjZXNzTW9kZXM6XG4gICAgICAtIFJlYWRXcml0ZU9uY2VcbiAgICBzaXplOiAke2NvbmZpZy5zdG9yYWdlLmdyYWZhbmF9XG5cbiAgIyBNYW51YWwgZGF0YXNvdXJjZSBwcm92aXNpb25pbmcgKHNpZGVjYXIgZGlzYWJsZWQpXG4gICMgVGhhbm9zIFF1ZXJ5IOKGkiBsb25nLXRlcm0vaGlzdG9yaWNhbCBtZXRyaWNzIChTMyB2aWEgU3RvcmUgKyBsaXZlIHNpZGVjYXIpLCBkZWZhdWx0XG4gICMgUHJvbWV0aGV1cyDihpIgbG9jYWwsIHJlY2VudC9oaWdoLXJlcyBvbmx5IChrZXB0IGZvciBsb3ctbGF0ZW5jeSByZWNlbnQgcXVlcmllcylcbiAgIyBMb2tpIGZvciBsb2cgYWdncmVnYXRpb25cbiAgZGF0YXNvdXJjZXM6XG4gICAgZGF0YXNvdXJjZXMueWFtbDpcbiAgICAgIGFwaVZlcnNpb246IDFcbiAgICAgICMgRGVsZXRlIGFueSBwcmUtZXhpc3RpbmcgTG9raSBkYXRhc291cmNlIChlLmcuIG9uZSBjcmVhdGVkIHdpdGggYVxuICAgICAgIyByYW5kb21seSBnZW5lcmF0ZWQgVUlEIGJlZm9yZSB3ZSBwaW5uZWQgdWlkOiBsb2tpKS4gV2l0aG91dCB0aGlzLFxuICAgICAgIyBHcmFmYW5hIGZhaWxzIHByb3Zpc2lvbmluZyB3aXRoIFwiZGF0YSBzb3VyY2Ugbm90IGZvdW5kXCIgYmVjYXVzZVxuICAgICAgIyB0aGUgdXBzZXJ0IGNvbGxpZGVzIHdpdGggdGhlIGV4aXN0aW5nIGVudHJ5LlxuICAgICAgZGVsZXRlRGF0YXNvdXJjZXM6XG4gICAgICAtIG5hbWU6IExva2lcbiAgICAgICAgb3JnSWQ6IDFcbiAgICAgIGRhdGFzb3VyY2VzOlxuICAgICAgLSBuYW1lOiBUaGFub3NcbiAgICAgICAgdHlwZTogcHJvbWV0aGV1c1xuICAgICAgICB1aWQ6IHRoYW5vc1xuICAgICAgICBhY2Nlc3M6IHByb3h5XG4gICAgICAgICMgdGhhbm9zLXF1ZXJ5IFNlcnZpY2U6IGh0dHAgcG9ydCA5MDkwIC0+IGNvbnRhaW5lciBodHRwIDEwOTAyXG4gICAgICAgIHVybDogaHR0cDovL3RoYW5vcy1xdWVyeS4ke2NvbmZpZy5uYW1lc3BhY2V9LnN2Yy5jbHVzdGVyLmxvY2FsOjkwOTBcbiAgICAgICAgaXNEZWZhdWx0OiB0cnVlXG4gICAgICAgIGpzb25EYXRhOlxuICAgICAgICAgIHRpbWVJbnRlcnZhbDogMzBzXG4gICAgICAtIG5hbWU6IFByb21ldGhldXNcbiAgICAgICAgdHlwZTogcHJvbWV0aGV1c1xuICAgICAgICB1aWQ6IHByb21ldGhldXNcbiAgICAgICAgYWNjZXNzOiBwcm94eVxuICAgICAgICB1cmw6IGh0dHA6Ly9rdWJlLXByb21ldGhldXMtc3RhY2stcHJvbWV0aGV1cy4ke2NvbmZpZy5uYW1lc3BhY2V9LnN2Yy5jbHVzdGVyLmxvY2FsOjkwOTBcbiAgICAgICAgaXNEZWZhdWx0OiBmYWxzZVxuICAgICAgICBqc29uRGF0YTpcbiAgICAgICAgICB0aW1lSW50ZXJ2YWw6IDMwc1xuICAgICAgLSBuYW1lOiBMb2tpXG4gICAgICAgIHR5cGU6IGxva2lcbiAgICAgICAgdWlkOiBsb2tpXG4gICAgICAgIGFjY2VzczogcHJveHlcbiAgICAgICAgdXJsOiBodHRwOi8vbG9raS1nYXRld2F5LiR7Y29uZmlnLm5hbWVzcGFjZX0uc3ZjLmNsdXN0ZXIubG9jYWxcbiAgICAgICAganNvbkRhdGE6XG4gICAgICAgICAgbWF4TGluZXM6IDEwMDAke3RlbXBvRGF0YXNvdXJjZX1cblxucHJvbWV0aGV1c09wZXJhdG9yOlxuICByZXNvdXJjZXM6XG4gICAgbGltaXRzOlxuICAgICAgY3B1OiAxXG4gICAgICBtZW1vcnk6IDUxMk1pXG4gICAgcmVxdWVzdHM6XG4gICAgICBjcHU6IDUwbVxuICAgICAgbWVtb3J5OiAxMjhNaVxuICBwcmlvcml0eUNsYXNzTmFtZTogaGlnaC1wcmlvcml0eVxuXG5wcm9tZXRoZXVzLW5vZGUtZXhwb3J0ZXI6XG4gICMgQmluZCA6OTEwMCB0byB0aGUgbm9kZSBJbnRlcm5hbElQIG9ubHksIG5vdCAwLjAuMC4wLiBXaXRoIGt1YmVSQkFDUHJveHlcbiAgIyBkaXNhYmxlZCB0aGUgc3ViLWNoYXJ0IHNldHMgSE9TVF9JUCBmcm9tIGZpZWxkUmVmIHN0YXR1cy5ob3N0SVAsIHdoaWNoIGlzXG4gICMgdGhlIG5vZGUncyBJbnRlcm5hbElQIChFWDogdlN3aXRjaCAxMC42LjAueCB2aWEgLS1ub2RlLWlwOyBjbG91ZDogaGNsb3VkXG4gICMgcHJpdmF0ZSBJUCkuIG5vZGUtZXhwb3J0ZXIgaXMgaG9zdE5ldHdvcmssIHNvIFByb21ldGhldXMgYWxyZWFkeSBzY3JhcGVzXG4gICMgdGhhdCBJbnRlcm5hbElQIGVuZHBvaW50IC0+IHNjcmFwaW5nIGlzIHVuYWZmZWN0ZWQsIG9ubHkgdGhlIHB1YmxpYy1OSUNcbiAgIyBleHBvc3VyZSBvZiB0aGUgdW5hdXRoZW50aWNhdGVkIG1ldHJpY3Mgb24gdGhlIEVYIHB1YmxpYyBJUHMgZ29lcyBhd2F5LlxuICBzZXJ2aWNlOlxuICAgIGxpc3Rlbk9uQWxsSW50ZXJmYWNlczogZmFsc2VcbiAgcmVzb3VyY2VzOlxuICAgIGxpbWl0czpcbiAgICAgIGNwdTogNTBtXG4gICAgICBtZW1vcnk6IDUwTWlcbiAgICByZXF1ZXN0czpcbiAgICAgIGNwdTogNW1cbiAgICAgIG1lbW9yeTogMTZNaVxuICBwcmlvcml0eUNsYXNzTmFtZTogaGlnaC1wcmlvcml0eVxuXG5rdWJlLXN0YXRlLW1ldHJpY3M6XG4gIHJlc291cmNlczpcbiAgICBsaW1pdHM6XG4gICAgICBjcHU6IDFcbiAgICAgIG1lbW9yeTogNTEyTWlcbiAgICByZXF1ZXN0czpcbiAgICAgIGNwdTogNW1cbiAgICAgIG1lbW9yeTogMTI4TWlcbiAgcHJpb3JpdHlDbGFzc05hbWU6IGhpZ2gtcHJpb3JpdHlcbmA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Construct } from 'constructs';
|
|
2
|
+
import { TraefikConfig } from '../types';
|
|
3
|
+
export interface TraefikMonitorProps {
|
|
4
|
+
/** Namespace the monitoring stack lives in (where the PodMonitor/ConfigMap go). */
|
|
5
|
+
readonly monitoringNamespace: string;
|
|
6
|
+
/** Traefik config (namespace it runs in + dashboard toggle). */
|
|
7
|
+
readonly traefik: TraefikConfig;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Generic, opt-in monitor for a Traefik ingress controller.
|
|
11
|
+
*
|
|
12
|
+
* Uses a PodMonitor (not a ServiceMonitor): the k3s-bundled Traefik Service only
|
|
13
|
+
* exposes web/websecure; the `metrics` port is on the Pod, not the Service.
|
|
14
|
+
*
|
|
15
|
+
* Optionally ships the Traefik Grafana dashboard as a ConfigMap (grafana_dashboard
|
|
16
|
+
* label → sidecar auto-discovery). Enabled via config.traefik in MonitoringChart.
|
|
17
|
+
*/
|
|
18
|
+
export declare class TraefikMonitorConstruct extends Construct {
|
|
19
|
+
constructor(scope: Construct, id: string, props: TraefikMonitorProps);
|
|
20
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TraefikMonitorConstruct = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const traefik_dashboard_1 = require("../dashboards/traefik-dashboard");
|
|
6
|
+
const k8s_1 = require("../imports/k8s");
|
|
7
|
+
const monitoring_coreos_com_1 = require("../imports/monitoring.coreos.com");
|
|
8
|
+
/**
|
|
9
|
+
* Generic, opt-in monitor for a Traefik ingress controller.
|
|
10
|
+
*
|
|
11
|
+
* Uses a PodMonitor (not a ServiceMonitor): the k3s-bundled Traefik Service only
|
|
12
|
+
* exposes web/websecure; the `metrics` port is on the Pod, not the Service.
|
|
13
|
+
*
|
|
14
|
+
* Optionally ships the Traefik Grafana dashboard as a ConfigMap (grafana_dashboard
|
|
15
|
+
* label → sidecar auto-discovery). Enabled via config.traefik in MonitoringChart.
|
|
16
|
+
*/
|
|
17
|
+
class TraefikMonitorConstruct extends constructs_1.Construct {
|
|
18
|
+
constructor(scope, id, props) {
|
|
19
|
+
super(scope, id);
|
|
20
|
+
const { monitoringNamespace, traefik } = props;
|
|
21
|
+
new monitoring_coreos_com_1.PodMonitor(this, 'traefik-metrics', {
|
|
22
|
+
metadata: {
|
|
23
|
+
name: 'traefik-metrics',
|
|
24
|
+
namespace: monitoringNamespace,
|
|
25
|
+
labels: {
|
|
26
|
+
'app.kubernetes.io/name': 'traefik',
|
|
27
|
+
'app.kubernetes.io/component': 'ingress-controller',
|
|
28
|
+
'app.kubernetes.io/managed-by': 'cdk8s',
|
|
29
|
+
'app.kubernetes.io/part-of': 'monitoring',
|
|
30
|
+
'release': 'kube-prometheus-stack',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
spec: {
|
|
34
|
+
selector: { matchLabels: { 'app.kubernetes.io/name': 'traefik' } },
|
|
35
|
+
namespaceSelector: { matchNames: [traefik.namespace] },
|
|
36
|
+
podMetricsEndpoints: [
|
|
37
|
+
{ port: 'metrics', path: '/metrics', interval: '30s', scrapeTimeout: '10s' },
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
if (traefik.dashboard) {
|
|
42
|
+
new k8s_1.KubeConfigMap(this, 'traefik-dashboard', {
|
|
43
|
+
metadata: {
|
|
44
|
+
name: 'traefik-dashboard',
|
|
45
|
+
namespace: monitoringNamespace,
|
|
46
|
+
labels: {
|
|
47
|
+
'grafana_dashboard': '1',
|
|
48
|
+
'app.kubernetes.io/name': 'traefik',
|
|
49
|
+
'app.kubernetes.io/component': 'dashboard',
|
|
50
|
+
'app.kubernetes.io/managed-by': 'cdk8s',
|
|
51
|
+
'app.kubernetes.io/part-of': 'monitoring',
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
data: { 'traefik.json': JSON.stringify(traefik_dashboard_1.TRAEFIK_DASHBOARD) },
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.TraefikMonitorConstruct = TraefikMonitorConstruct;
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZWZpay1tb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvdHJhZWZpay1tb25pdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2Qyx1RUFBb0U7QUFDcEUsd0NBQStDO0FBQy9DLDRFQUE4RDtBQVU5RDs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFDcEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFL0MsSUFBSSxrQ0FBVSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN0QyxRQUFRLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsU0FBUyxFQUFFLG1CQUFtQjtnQkFDOUIsTUFBTSxFQUFFO29CQUNOLHdCQUF3QixFQUFFLFNBQVM7b0JBQ25DLDZCQUE2QixFQUFFLG9CQUFvQjtvQkFDbkQsOEJBQThCLEVBQUUsT0FBTztvQkFDdkMsMkJBQTJCLEVBQUUsWUFBWTtvQkFDekMsU0FBUyxFQUFFLHVCQUF1QjtpQkFDbkM7YUFDRjtZQUNELElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSx3QkFBd0IsRUFBRSxTQUFTLEVBQUUsRUFBRTtnQkFDbEUsaUJBQWlCLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3RELG1CQUFtQixFQUFFO29CQUNuQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUU7aUJBQzdFO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLG1CQUFhLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO2dCQUMzQyxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLG1CQUFtQjtvQkFDekIsU0FBUyxFQUFFLG1CQUFtQjtvQkFDOUIsTUFBTSxFQUFFO3dCQUNOLG1CQUFtQixFQUFFLEdBQUc7d0JBQ3hCLHdCQUF3QixFQUFFLFNBQVM7d0JBQ25DLDZCQUE2QixFQUFFLFdBQVc7d0JBQzFDLDhCQUE4QixFQUFFLE9BQU87d0JBQ3ZDLDJCQUEyQixFQUFFLFlBQVk7cUJBQzFDO2lCQUNGO2dCQUNELElBQUksRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLHFDQUFpQixDQUFDLEVBQUU7YUFDNUQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTNDRCwwREEyQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFRSQUVGSUtfREFTSEJPQVJEIH0gZnJvbSAnLi4vZGFzaGJvYXJkcy90cmFlZmlrLWRhc2hib2FyZCc7XG5pbXBvcnQgeyBLdWJlQ29uZmlnTWFwIH0gZnJvbSAnLi4vaW1wb3J0cy9rOHMnO1xuaW1wb3J0IHsgUG9kTW9uaXRvciB9IGZyb20gJy4uL2ltcG9ydHMvbW9uaXRvcmluZy5jb3Jlb3MuY29tJztcbmltcG9ydCB7IFRyYWVmaWtDb25maWcgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhZWZpa01vbml0b3JQcm9wcyB7XG4gIC8qKiBOYW1lc3BhY2UgdGhlIG1vbml0b3Jpbmcgc3RhY2sgbGl2ZXMgaW4gKHdoZXJlIHRoZSBQb2RNb25pdG9yL0NvbmZpZ01hcCBnbykuICovXG4gIHJlYWRvbmx5IG1vbml0b3JpbmdOYW1lc3BhY2U6IHN0cmluZztcbiAgLyoqIFRyYWVmaWsgY29uZmlnIChuYW1lc3BhY2UgaXQgcnVucyBpbiArIGRhc2hib2FyZCB0b2dnbGUpLiAqL1xuICByZWFkb25seSB0cmFlZmlrOiBUcmFlZmlrQ29uZmlnO1xufVxuXG4vKipcbiAqIEdlbmVyaWMsIG9wdC1pbiBtb25pdG9yIGZvciBhIFRyYWVmaWsgaW5ncmVzcyBjb250cm9sbGVyLlxuICpcbiAqIFVzZXMgYSBQb2RNb25pdG9yIChub3QgYSBTZXJ2aWNlTW9uaXRvcik6IHRoZSBrM3MtYnVuZGxlZCBUcmFlZmlrIFNlcnZpY2Ugb25seVxuICogZXhwb3NlcyB3ZWIvd2Vic2VjdXJlOyB0aGUgYG1ldHJpY3NgIHBvcnQgaXMgb24gdGhlIFBvZCwgbm90IHRoZSBTZXJ2aWNlLlxuICpcbiAqIE9wdGlvbmFsbHkgc2hpcHMgdGhlIFRyYWVmaWsgR3JhZmFuYSBkYXNoYm9hcmQgYXMgYSBDb25maWdNYXAgKGdyYWZhbmFfZGFzaGJvYXJkXG4gKiBsYWJlbCDihpIgc2lkZWNhciBhdXRvLWRpc2NvdmVyeSkuIEVuYWJsZWQgdmlhIGNvbmZpZy50cmFlZmlrIGluIE1vbml0b3JpbmdDaGFydC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYWVmaWtNb25pdG9yQ29uc3RydWN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFRyYWVmaWtNb25pdG9yUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IHsgbW9uaXRvcmluZ05hbWVzcGFjZSwgdHJhZWZpayB9ID0gcHJvcHM7XG5cbiAgICBuZXcgUG9kTW9uaXRvcih0aGlzLCAndHJhZWZpay1tZXRyaWNzJywge1xuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgbmFtZTogJ3RyYWVmaWstbWV0cmljcycsXG4gICAgICAgIG5hbWVzcGFjZTogbW9uaXRvcmluZ05hbWVzcGFjZSxcbiAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiAndHJhZWZpaycsXG4gICAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCc6ICdpbmdyZXNzLWNvbnRyb2xsZXInLFxuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9tYW5hZ2VkLWJ5JzogJ2NkazhzJyxcbiAgICAgICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZic6ICdtb25pdG9yaW5nJyxcbiAgICAgICAgICAncmVsZWFzZSc6ICdrdWJlLXByb21ldGhldXMtc3RhY2snLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNwZWM6IHtcbiAgICAgICAgc2VsZWN0b3I6IHsgbWF0Y2hMYWJlbHM6IHsgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiAndHJhZWZpaycgfSB9LFxuICAgICAgICBuYW1lc3BhY2VTZWxlY3RvcjogeyBtYXRjaE5hbWVzOiBbdHJhZWZpay5uYW1lc3BhY2VdIH0sXG4gICAgICAgIHBvZE1ldHJpY3NFbmRwb2ludHM6IFtcbiAgICAgICAgICB7IHBvcnQ6ICdtZXRyaWNzJywgcGF0aDogJy9tZXRyaWNzJywgaW50ZXJ2YWw6ICczMHMnLCBzY3JhcGVUaW1lb3V0OiAnMTBzJyB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmICh0cmFlZmlrLmRhc2hib2FyZCkge1xuICAgICAgbmV3IEt1YmVDb25maWdNYXAodGhpcywgJ3RyYWVmaWstZGFzaGJvYXJkJywge1xuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIG5hbWU6ICd0cmFlZmlrLWRhc2hib2FyZCcsXG4gICAgICAgICAgbmFtZXNwYWNlOiBtb25pdG9yaW5nTmFtZXNwYWNlLFxuICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgJ2dyYWZhbmFfZGFzaGJvYXJkJzogJzEnLFxuICAgICAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiAndHJhZWZpaycsXG4gICAgICAgICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50JzogJ2Rhc2hib2FyZCcsXG4gICAgICAgICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vbWFuYWdlZC1ieSc6ICdjZGs4cycsXG4gICAgICAgICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZic6ICdtb25pdG9yaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiB7ICd0cmFlZmlrLmpzb24nOiBKU09OLnN0cmluZ2lmeShUUkFFRklLX0RBU0hCT0FSRCkgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TRAEFIK_DASHBOARD: Record<string, unknown>;
|