typekro 0.23.0 → 0.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/core/deployment/kro-factory.d.ts +19 -0
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +60 -6
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/proxy/create-resource.d.ts.map +1 -1
- package/dist/core/proxy/create-resource.js +37 -0
- package/dist/core/proxy/create-resource.js.map +1 -1
- package/dist/core/references/schema-proxy.d.ts.map +1 -1
- package/dist/core/references/schema-proxy.js +21 -5
- package/dist/core/references/schema-proxy.js.map +1 -1
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.d.ts.map +1 -1
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.js +47 -28
- package/dist/factories/clickhouse/compositions/clickhouse-cluster.js.map +1 -1
- package/dist/factories/clickhouse/types.d.ts +31 -0
- package/dist/factories/clickhouse/types.d.ts.map +1 -1
- package/dist/factories/clickhouse/types.js.map +1 -1
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts +248 -0
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.d.ts.map +1 -0
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.js +257 -0
- package/dist/factories/clickstack/compositions/clickstack-bootstrap.js.map +1 -0
- package/dist/factories/clickstack/compositions/clickstack-helm-repository.d.ts +23 -0
- package/dist/factories/clickstack/compositions/clickstack-helm-repository.d.ts.map +1 -0
- package/dist/factories/clickstack/compositions/clickstack-helm-repository.js +36 -0
- package/dist/factories/clickstack/compositions/clickstack-helm-repository.js.map +1 -0
- package/dist/factories/clickstack/compositions/index.d.ts +5 -0
- package/dist/factories/clickstack/compositions/index.d.ts.map +1 -0
- package/dist/factories/clickstack/compositions/index.js +5 -0
- package/dist/factories/clickstack/compositions/index.js.map +1 -0
- package/dist/factories/clickstack/compositions/k8s-telemetry.d.ts +83 -0
- package/dist/factories/clickstack/compositions/k8s-telemetry.d.ts.map +1 -0
- package/dist/factories/clickstack/compositions/k8s-telemetry.js +134 -0
- package/dist/factories/clickstack/compositions/k8s-telemetry.js.map +1 -0
- package/dist/factories/clickstack/compositions/otel-helm-repository.d.ts +18 -0
- package/dist/factories/clickstack/compositions/otel-helm-repository.d.ts.map +1 -0
- package/dist/factories/clickstack/compositions/otel-helm-repository.js +31 -0
- package/dist/factories/clickstack/compositions/otel-helm-repository.js.map +1 -0
- package/dist/factories/clickstack/index.d.ts +40 -0
- package/dist/factories/clickstack/index.d.ts.map +1 -0
- package/dist/factories/clickstack/index.js +40 -0
- package/dist/factories/clickstack/index.js.map +1 -0
- package/dist/factories/clickstack/resources/helm.d.ts +78 -0
- package/dist/factories/clickstack/resources/helm.d.ts.map +1 -0
- package/dist/factories/clickstack/resources/helm.js +139 -0
- package/dist/factories/clickstack/resources/helm.js.map +1 -0
- package/dist/factories/clickstack/resources/index.d.ts +3 -0
- package/dist/factories/clickstack/resources/index.d.ts.map +1 -0
- package/dist/factories/clickstack/resources/index.js +3 -0
- package/dist/factories/clickstack/resources/index.js.map +1 -0
- package/dist/factories/clickstack/resources/mongo.d.ts +40 -0
- package/dist/factories/clickstack/resources/mongo.d.ts.map +1 -0
- package/dist/factories/clickstack/resources/mongo.js +122 -0
- package/dist/factories/clickstack/resources/mongo.js.map +1 -0
- package/dist/factories/clickstack/types.d.ts +485 -0
- package/dist/factories/clickstack/types.d.ts.map +1 -0
- package/dist/factories/clickstack/types.js +302 -0
- package/dist/factories/clickstack/types.js.map +1 -0
- package/dist/factories/clickstack/utils/helm-values-mapper.d.ts +118 -0
- package/dist/factories/clickstack/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/clickstack/utils/helm-values-mapper.js +505 -0
- package/dist/factories/clickstack/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/clickstack/utils/index.d.ts +2 -0
- package/dist/factories/clickstack/utils/index.d.ts.map +1 -0
- package/dist/factories/clickstack/utils/index.js +2 -0
- package/dist/factories/clickstack/utils/index.js.map +1 -0
- package/dist/factories/index.d.ts +1 -0
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/factories/index.js +4 -0
- package/dist/factories/index.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClickStack (HyperDX) Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* ArkType schemas as the single source of truth for config shapes, with types
|
|
5
|
+
* inferred via `typeof Schema.infer` (mirrors the clickhouse/dagster families).
|
|
6
|
+
*
|
|
7
|
+
* Wraps the OFFICIAL ClickStack Helm chart (MIT):
|
|
8
|
+
* - Chart: `clickstack` 3.0.x from https://clickhouse.github.io/ClickStack-helm-charts
|
|
9
|
+
* (classic Helm repo, NOT OCI). The old hyperdxio/helm-charts repo is archived
|
|
10
|
+
* and its `hdx-oss-v2` chart is deprecated — do not use them.
|
|
11
|
+
* - Components: the HyperDX app (UI + API + OpAMP server on 4320 that remotely
|
|
12
|
+
* configures the collector), an OTel gateway collector (the chart's only Helm
|
|
13
|
+
* dependency: the official `opentelemetry-collector` subchart, alias
|
|
14
|
+
* `otel-collector`), and schema "goose" migrations run by the collector at
|
|
15
|
+
* startup that auto-create `otel_logs` / `otel_traces` / `otel_metrics_*` /
|
|
16
|
+
* `hyperdx_sessions`.
|
|
17
|
+
*
|
|
18
|
+
* EXTERNAL CLICKHOUSE ONLY: this family hard-codes `clickhouse.enabled: false`
|
|
19
|
+
* and `mongodb.enabled: false`. The chart's bundled ClickHouse/Keeper and
|
|
20
|
+
* MongoDB are CRDs owned by the separate `clickstack-operators` prerequisite
|
|
21
|
+
* chart (ClickHouse Inc.'s own operator + a MongoDB community operator), which
|
|
22
|
+
* we deliberately do NOT install — its ClickHouse CRDs would collide with the
|
|
23
|
+
* Altinity clickhouse-operator that manages our ClickHouseInstallation.
|
|
24
|
+
*
|
|
25
|
+
* BUILD-TIME vs RUNTIME SPLIT: choices that decide WHICH resources exist or
|
|
26
|
+
* how values trees are shaped (the Mongo mode, internal-Mongo storage, static
|
|
27
|
+
* raw chart values) are CONSTRUCTION-time options on
|
|
28
|
+
* `makeClickstackBootstrap(...)` / `makeClickstackK8sTelemetry(...)` — plain
|
|
29
|
+
* JS branches on them are safe because they are always concrete. The runtime
|
|
30
|
+
* spec (these schemas) carries only proxy-safe VALUES (names, namespaces,
|
|
31
|
+
* endpoints, versions, credentials) that serialize cleanly as CEL refs in KRO
|
|
32
|
+
* mode.
|
|
33
|
+
*
|
|
34
|
+
* SCHEMA / REPLICATION CAVEAT: the collector's auto-migrations create plain
|
|
35
|
+
* single-node MergeTree tables — fine for a 1-replica CHI (dev-first sizing);
|
|
36
|
+
* multi-replica / `ON CLUSTER` schemas are NOT supported by ClickStack's
|
|
37
|
+
* tooling. Revisit before scaling the external ClickHouse beyond one replica.
|
|
38
|
+
*
|
|
39
|
+
* @see https://github.com/ClickHouse/ClickStack-helm-charts
|
|
40
|
+
* @see https://clickhouse.com/docs/use-cases/observability/clickstack
|
|
41
|
+
*/
|
|
42
|
+
import type { ValuesMergeExpression } from '../../core/aspects/values-merge.js';
|
|
43
|
+
import type { TypeKroChartValues } from '../../core/types/common.js';
|
|
44
|
+
/**
|
|
45
|
+
* Loose ClickHouse version coupling facts for the external-ClickHouse mode,
|
|
46
|
+
* exported for downstream platform layers that own the CHI sizing/versioning.
|
|
47
|
+
*
|
|
48
|
+
* Sources (verified 2026-07-06 against ClickHouse/ClickStack-helm-charts main):
|
|
49
|
+
* - The chart vendors ClickHouse `25.7-alpine` for its (disabled here) bundled
|
|
50
|
+
* cluster (charts/clickstack/values.yaml `clickhouse.cluster.spec.containerTemplate`).
|
|
51
|
+
* - ClickStack's seed schemas ship a "<26.2 compatibility" variant, so recent
|
|
52
|
+
* 25.x/26.x servers are accepted — the coupling is loose, not pinned.
|
|
53
|
+
* - The optional JSON-typed schema is gated behind the
|
|
54
|
+
* `HYPERDX_OTEL_EXPORTER_CLICKHOUSE_JSON_ENABLE` env flag and wants
|
|
55
|
+
* ClickHouse 25.3+ (native JSON type maturity).
|
|
56
|
+
*/
|
|
57
|
+
export declare const CLICKSTACK_CLICKHOUSE_GUIDANCE: {
|
|
58
|
+
/** ClickHouse version the chart vendors/tests against for its bundled cluster. */
|
|
59
|
+
readonly chartVendoredClickHouseVersion: "25.7";
|
|
60
|
+
/** Minimum recommended ClickHouse version for an external cluster. */
|
|
61
|
+
readonly minRecommendedClickHouseVersion: "25.3";
|
|
62
|
+
/** Env flag (in `hyperdx.config`) enabling the JSON-typed OTel schema. */
|
|
63
|
+
readonly jsonSchemaFlag: "HYPERDX_OTEL_EXPORTER_CLICKHOUSE_JSON_ENABLE";
|
|
64
|
+
/** Minimum ClickHouse version for the JSON-typed schema. */
|
|
65
|
+
readonly jsonSchemaMinClickHouseVersion: "25.3";
|
|
66
|
+
/**
|
|
67
|
+
* The collector's goose migrations create single-node MergeTree tables only;
|
|
68
|
+
* multi-replica / ON CLUSTER schemas are not supported by ClickStack tooling.
|
|
69
|
+
*/
|
|
70
|
+
readonly singleNodeSchemaOnly: true;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Typed subset of the official `clickstack` chart values we map or pin
|
|
74
|
+
* (verified 2026-07-06 against ClickHouse/ClickStack-helm-charts
|
|
75
|
+
* charts/clickstack/values.yaml, chart 3.0.1). The index signature keeps the
|
|
76
|
+
* rest of the chart's surface reachable through the values passthrough.
|
|
77
|
+
*/
|
|
78
|
+
export interface ClickStackHelmValues {
|
|
79
|
+
/** HyperDX app (UI + API + OpAMP). */
|
|
80
|
+
hyperdx?: {
|
|
81
|
+
/** Shared non-sensitive env (rendered into the `clickstack-config` ConfigMap). */
|
|
82
|
+
config?: Record<string, unknown>;
|
|
83
|
+
/** Shared sensitive env (rendered into the `clickstack-secret` Secret). */
|
|
84
|
+
secrets?: Record<string, unknown>;
|
|
85
|
+
/** HyperDX Deployment knobs incl. `defaultConnections`/`defaultSources`. */
|
|
86
|
+
deployment?: Record<string, unknown>;
|
|
87
|
+
ports?: {
|
|
88
|
+
api?: number;
|
|
89
|
+
app?: number;
|
|
90
|
+
opamp?: number;
|
|
91
|
+
};
|
|
92
|
+
[key: string]: unknown;
|
|
93
|
+
};
|
|
94
|
+
/** Bundled ClickHouse (CRDs owned by clickstack-operators) — HARD-PINNED false. */
|
|
95
|
+
clickhouse?: {
|
|
96
|
+
enabled?: boolean;
|
|
97
|
+
[key: string]: unknown;
|
|
98
|
+
};
|
|
99
|
+
/** Bundled MongoDB (MongoDBCommunity CRD) — HARD-PINNED false. */
|
|
100
|
+
mongodb?: {
|
|
101
|
+
enabled?: boolean;
|
|
102
|
+
[key: string]: unknown;
|
|
103
|
+
};
|
|
104
|
+
/** OTel gateway collector subchart (alias `otel-collector`). */
|
|
105
|
+
'otel-collector'?: {
|
|
106
|
+
enabled?: boolean;
|
|
107
|
+
[key: string]: unknown;
|
|
108
|
+
};
|
|
109
|
+
/** Naming anchor for the status contract — HARD-PINNED to the release name. */
|
|
110
|
+
fullnameOverride?: string;
|
|
111
|
+
[key: string]: unknown;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Typed subset of the STOCK `opentelemetry-collector` chart values used by
|
|
115
|
+
* the k8s telemetry pair (preset names verified 2026-07-06 against
|
|
116
|
+
* open-telemetry/opentelemetry-helm-charts charts/opentelemetry-collector).
|
|
117
|
+
*/
|
|
118
|
+
export interface OtelCollectorHelmValues {
|
|
119
|
+
/** Instance identity — re-pinned per telemetry instance. */
|
|
120
|
+
mode?: 'daemonset' | 'deployment' | 'statefulset';
|
|
121
|
+
image?: {
|
|
122
|
+
repository?: string;
|
|
123
|
+
tag?: string;
|
|
124
|
+
[key: string]: unknown;
|
|
125
|
+
};
|
|
126
|
+
presets?: {
|
|
127
|
+
logsCollection?: {
|
|
128
|
+
enabled?: boolean;
|
|
129
|
+
[key: string]: unknown;
|
|
130
|
+
};
|
|
131
|
+
hostMetrics?: {
|
|
132
|
+
enabled?: boolean;
|
|
133
|
+
[key: string]: unknown;
|
|
134
|
+
};
|
|
135
|
+
kubeletMetrics?: {
|
|
136
|
+
enabled?: boolean;
|
|
137
|
+
[key: string]: unknown;
|
|
138
|
+
};
|
|
139
|
+
kubernetesAttributes?: {
|
|
140
|
+
enabled?: boolean;
|
|
141
|
+
[key: string]: unknown;
|
|
142
|
+
};
|
|
143
|
+
kubernetesEvents?: {
|
|
144
|
+
enabled?: boolean;
|
|
145
|
+
[key: string]: unknown;
|
|
146
|
+
};
|
|
147
|
+
clusterMetrics?: {
|
|
148
|
+
enabled?: boolean;
|
|
149
|
+
[key: string]: unknown;
|
|
150
|
+
};
|
|
151
|
+
[key: string]: unknown;
|
|
152
|
+
};
|
|
153
|
+
config?: Record<string, unknown>;
|
|
154
|
+
[key: string]: unknown;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Values tree accepted by the ClickStack/OTel HelmRelease wrappers: a typed
|
|
158
|
+
* (possibly graph-aware) chart values object, or the runtime values-merge
|
|
159
|
+
* expression produced when per-instance `customValues` arrives as a schema
|
|
160
|
+
* ref (the serializer compiles it to a KRO runtime map-merge).
|
|
161
|
+
*/
|
|
162
|
+
export type ClickStackMappedHelmValues = TypeKroChartValues<ClickStackHelmValues> | ValuesMergeExpression;
|
|
163
|
+
/** Same, for the stock opentelemetry-collector instances. */
|
|
164
|
+
export type OtelCollectorMappedHelmValues = TypeKroChartValues<OtelCollectorHelmValues> | ValuesMergeExpression;
|
|
165
|
+
/** Internal-Mongo PVC sizing — build-time (shapes the StatefulSet template). */
|
|
166
|
+
export interface ClickStackMongoStorageOptions {
|
|
167
|
+
/** PVC size (default: '5Gi'). */
|
|
168
|
+
size?: string;
|
|
169
|
+
/** Optional StorageClass for the PVC. */
|
|
170
|
+
storageClassName?: string;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Mongo mode — BUILD-TIME because it decides WHICH resources exist.
|
|
174
|
+
*
|
|
175
|
+
* HyperDX has a HARD MongoDB dependency for app state (dashboards, alerts,
|
|
176
|
+
* users; MongoDB is SSPL at runtime).
|
|
177
|
+
* - `internal` (default): a minimal single-replica typekro-native
|
|
178
|
+
* StatefulSet + Service running `mongo:7` — NO operator, NO CRDs, NO auth.
|
|
179
|
+
* APP METADATA ONLY, dev-first; not HA.
|
|
180
|
+
* - `external`: bring your own MongoDB; the variant's runtime spec gains a
|
|
181
|
+
* required `mongoUri` field wired into `hyperdx.config.MONGO_URI`.
|
|
182
|
+
*/
|
|
183
|
+
export type ClickStackMongoBuildOptions = {
|
|
184
|
+
mode: 'internal';
|
|
185
|
+
storage?: ClickStackMongoStorageOptions;
|
|
186
|
+
} | {
|
|
187
|
+
mode: 'external';
|
|
188
|
+
};
|
|
189
|
+
/** Shared build-time options for both bootstrap variants. */
|
|
190
|
+
interface ClickStackBuildOptionsBase {
|
|
191
|
+
/**
|
|
192
|
+
* Static raw official-chart values merged at construction time (they win
|
|
193
|
+
* over the typed mapping), EXCEPT the hard pins — `clickhouse.enabled: false`,
|
|
194
|
+
* `mongodb.enabled: false`, and `fullnameOverride` (the status contract's
|
|
195
|
+
* naming anchor) — which are re-applied after the merge. Build-time by
|
|
196
|
+
* design: a free-form values tree cannot be represented per-instance in a
|
|
197
|
+
* KRO schema without silently dropping it (the accepted-but-ignored config
|
|
198
|
+
* class this family refuses to ship). Per-instance, DIRECT-MODE-ONLY
|
|
199
|
+
* overrides can go through the runtime type's `customValues` instead (an
|
|
200
|
+
* internal escape hatch, not part of the KRO-mode schema — see
|
|
201
|
+
* `ClickStackBootstrapRuntimeConfig`'s doc comment below).
|
|
202
|
+
*/
|
|
203
|
+
values?: TypeKroChartValues<ClickStackHelmValues>;
|
|
204
|
+
/** RGD name override (needed when registering both variants in one cluster). */
|
|
205
|
+
name?: string;
|
|
206
|
+
/** KRO kind override. */
|
|
207
|
+
kind?: string;
|
|
208
|
+
}
|
|
209
|
+
/** Build-time options for the internal-Mongo bootstrap variant. */
|
|
210
|
+
export interface ClickStackInternalMongoBuildOptions extends ClickStackBuildOptionsBase {
|
|
211
|
+
mongo?: {
|
|
212
|
+
mode: 'internal';
|
|
213
|
+
storage?: ClickStackMongoStorageOptions;
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/** Build-time options for the external-Mongo bootstrap variant. */
|
|
217
|
+
export interface ClickStackExternalMongoBuildOptions extends ClickStackBuildOptionsBase {
|
|
218
|
+
mongo: {
|
|
219
|
+
mode: 'external';
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/** Union accepted by `makeClickstackBootstrap`. */
|
|
223
|
+
export type ClickStackBuildOptions = ClickStackInternalMongoBuildOptions | ClickStackExternalMongoBuildOptions;
|
|
224
|
+
/**
|
|
225
|
+
* Runtime spec for the internal-Mongo variant (the default
|
|
226
|
+
* `clickstackBootstrap`). Mongo needs no runtime config — mode and storage
|
|
227
|
+
* are build-time (`makeClickstackBootstrap`).
|
|
228
|
+
*/
|
|
229
|
+
export declare const ClickStackBootstrapConfigSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
230
|
+
name: string;
|
|
231
|
+
clickhouse: {
|
|
232
|
+
host: string;
|
|
233
|
+
nativePort?: number;
|
|
234
|
+
httpPort?: number;
|
|
235
|
+
database?: string;
|
|
236
|
+
username?: string;
|
|
237
|
+
password?: string;
|
|
238
|
+
appUsername?: string;
|
|
239
|
+
appPassword?: string;
|
|
240
|
+
};
|
|
241
|
+
namespace?: string;
|
|
242
|
+
version?: string;
|
|
243
|
+
apiKey?: string;
|
|
244
|
+
hyperdx?: {
|
|
245
|
+
replicas?: number;
|
|
246
|
+
resources?: {
|
|
247
|
+
requests?: {
|
|
248
|
+
cpu?: string;
|
|
249
|
+
memory?: string;
|
|
250
|
+
};
|
|
251
|
+
limits?: {
|
|
252
|
+
cpu?: string;
|
|
253
|
+
memory?: string;
|
|
254
|
+
};
|
|
255
|
+
};
|
|
256
|
+
image?: {
|
|
257
|
+
repository?: string;
|
|
258
|
+
tag?: string;
|
|
259
|
+
pullPolicy?: "Always" | "IfNotPresent" | "Never";
|
|
260
|
+
};
|
|
261
|
+
frontendUrl?: string;
|
|
262
|
+
};
|
|
263
|
+
}, {}>;
|
|
264
|
+
/** Runtime configuration for the internal-Mongo bootstrap variant. */
|
|
265
|
+
export type ClickStackBootstrapConfig = typeof ClickStackBootstrapConfigSchema.infer;
|
|
266
|
+
/**
|
|
267
|
+
* Runtime spec for the external-Mongo variant: base + a required `mongoUri`.
|
|
268
|
+
*/
|
|
269
|
+
export declare const ClickStackExternalMongoBootstrapConfigSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
270
|
+
mongoUri: string;
|
|
271
|
+
name: string;
|
|
272
|
+
clickhouse: {
|
|
273
|
+
host: string;
|
|
274
|
+
nativePort?: number;
|
|
275
|
+
httpPort?: number;
|
|
276
|
+
database?: string;
|
|
277
|
+
username?: string;
|
|
278
|
+
password?: string;
|
|
279
|
+
appUsername?: string;
|
|
280
|
+
appPassword?: string;
|
|
281
|
+
};
|
|
282
|
+
namespace?: string;
|
|
283
|
+
version?: string;
|
|
284
|
+
apiKey?: string;
|
|
285
|
+
hyperdx?: {
|
|
286
|
+
replicas?: number;
|
|
287
|
+
resources?: {
|
|
288
|
+
requests?: {
|
|
289
|
+
cpu?: string;
|
|
290
|
+
memory?: string;
|
|
291
|
+
};
|
|
292
|
+
limits?: {
|
|
293
|
+
cpu?: string;
|
|
294
|
+
memory?: string;
|
|
295
|
+
};
|
|
296
|
+
};
|
|
297
|
+
image?: {
|
|
298
|
+
repository?: string;
|
|
299
|
+
tag?: string;
|
|
300
|
+
pullPolicy?: "Always" | "IfNotPresent" | "Never";
|
|
301
|
+
};
|
|
302
|
+
frontendUrl?: string;
|
|
303
|
+
};
|
|
304
|
+
}, {}>;
|
|
305
|
+
/** Runtime configuration for the external-Mongo bootstrap variant. */
|
|
306
|
+
export type ClickStackExternalMongoBootstrapConfig = typeof ClickStackExternalMongoBootstrapConfigSchema.infer;
|
|
307
|
+
/** Widest runtime config the values mapper accepts (either variant). */
|
|
308
|
+
export type ClickStackBootstrapRuntimeConfig = ClickStackBootstrapConfig & {
|
|
309
|
+
mongoUri?: string;
|
|
310
|
+
/**
|
|
311
|
+
* INTERNAL, DIRECT-MODE-ONLY escape hatch — not part of the runtime
|
|
312
|
+
* schema (`bootstrapBaseShape`), so KRO-mode callers can never populate
|
|
313
|
+
* this field and it's absent from the generated CRD. Only a CONCRETE
|
|
314
|
+
* object merges (see helm-values-mapper.ts); no test coverage backs this
|
|
315
|
+
* as a supported feature. Prefer build-time `values` for anything beyond
|
|
316
|
+
* ad hoc direct-mode tweaks.
|
|
317
|
+
*/
|
|
318
|
+
customValues?: Record<string, unknown>;
|
|
319
|
+
};
|
|
320
|
+
/**
|
|
321
|
+
* Observed ClickStack status. Downstream compositions consume connection
|
|
322
|
+
* details from here instead of reconstructing chart service-naming rules —
|
|
323
|
+
* e.g. `clickstackK8sTelemetry` wiring:
|
|
324
|
+
* `{ endpoint: stack.status.gateway.otlpHttpEndpoint }`.
|
|
325
|
+
*
|
|
326
|
+
* Naming anchor: the values mapper pins `fullnameOverride` to the release
|
|
327
|
+
* name, so the HyperDX app Service is named exactly `<name>` (the chart's
|
|
328
|
+
* `clickstack.hyperdx.fullname` helper skips its `-app` suffix when
|
|
329
|
+
* `fullnameOverride` is set) and the gateway Service is
|
|
330
|
+
* `<name>-otel-collector` (subchart naming off `.Release.Name`).
|
|
331
|
+
*
|
|
332
|
+
* KRO STATUS vs CLIENT-HYDRATED SPLIT: fields anchored on the owned
|
|
333
|
+
* HelmRelease resource serialize as KRO status CEL and appear on the live
|
|
334
|
+
* KRO CR's status (GitOps/KRO consumers can read them): `ready`, `phase`,
|
|
335
|
+
* `ui.url`, `gateway.otlpHttpEndpoint`, `gateway.otlpGrpcEndpoint`,
|
|
336
|
+
* `app.host` — natural JS template literals over
|
|
337
|
+
* `clickstackHelmRelease.metadata.name`/`.namespace` (bimodal on typekro
|
|
338
|
+
* >= 0.24.0: status CEL in `factory('kro')`, concrete strings via direct-mode
|
|
339
|
+
* re-execution), never `schema.spec.*` (KRO status CEL cannot reference the
|
|
340
|
+
* instance spec). The BARE build-time constants `app.appPort` (3000) and
|
|
341
|
+
* `app.apiPort` (8000), plus the spec-derived `version`, have no resource
|
|
342
|
+
* anchor and are hydrated CLIENT-SIDE by TypeKro (absent from the KRO CR
|
|
343
|
+
* status); the ports remain KRO-visible inside the URL fields.
|
|
344
|
+
* Ports are the chart defaults (`hyperdx.ports`, `otel-collector.ports`);
|
|
345
|
+
* port overrides via build-time raw values are NOT reflected here.
|
|
346
|
+
*/
|
|
347
|
+
export declare const ClickStackBootstrapStatusSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
348
|
+
ready: boolean;
|
|
349
|
+
phase: "Ready" | "Failed" | "Installing";
|
|
350
|
+
ui: {
|
|
351
|
+
url: string;
|
|
352
|
+
};
|
|
353
|
+
gateway: {
|
|
354
|
+
otlpHttpEndpoint: string;
|
|
355
|
+
otlpGrpcEndpoint: string;
|
|
356
|
+
};
|
|
357
|
+
app: {
|
|
358
|
+
host: string;
|
|
359
|
+
appPort: number;
|
|
360
|
+
apiPort: number;
|
|
361
|
+
};
|
|
362
|
+
version?: string;
|
|
363
|
+
}, {}>;
|
|
364
|
+
/** Observed status type for ClickStack bootstrap. */
|
|
365
|
+
export type ClickStackBootstrapStatus = typeof ClickStackBootstrapStatusSchema.infer;
|
|
366
|
+
/**
|
|
367
|
+
* Build-time options for `makeClickstackK8sTelemetry`. Values passthrough is
|
|
368
|
+
* build-time for the same accepted-but-ignored-config reason as the bootstrap.
|
|
369
|
+
*/
|
|
370
|
+
export interface ClickStackK8sTelemetryBuildOptions {
|
|
371
|
+
/** Daemonset-instance raw chart values merged at construction (`mode` is re-pinned). */
|
|
372
|
+
daemonset?: {
|
|
373
|
+
values?: TypeKroChartValues<OtelCollectorHelmValues>;
|
|
374
|
+
};
|
|
375
|
+
/** Deployment-instance raw chart values merged at construction (`mode` is re-pinned). */
|
|
376
|
+
deployment?: {
|
|
377
|
+
values?: TypeKroChartValues<OtelCollectorHelmValues>;
|
|
378
|
+
};
|
|
379
|
+
/** RGD name override. */
|
|
380
|
+
name?: string;
|
|
381
|
+
/** KRO kind override. */
|
|
382
|
+
kind?: string;
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* ArkType schema for ClickStackK8sTelemetryConfig (runtime spec).
|
|
386
|
+
*
|
|
387
|
+
* The documented ClickStack Kubernetes ingestion pattern: TWO instances of the
|
|
388
|
+
* STOCK `opentelemetry-collector` chart —
|
|
389
|
+
* - a daemonset instance (presets: logsCollection, hostMetrics,
|
|
390
|
+
* kubernetesAttributes, kubeletMetrics), and
|
|
391
|
+
* - a deployment instance (presets: kubernetesAttributes, kubernetesEvents,
|
|
392
|
+
* clusterMetrics),
|
|
393
|
+
* both exporting `otlphttp` to the ClickStack gateway collector with
|
|
394
|
+
* `authorization: <HYPERDX_API_KEY>` header auth.
|
|
395
|
+
*
|
|
396
|
+
* @see https://clickhouse.com/docs/use-cases/observability/clickstack/ingesting-data/kubernetes
|
|
397
|
+
*/
|
|
398
|
+
export declare const ClickStackK8sTelemetryConfigSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
399
|
+
name: string;
|
|
400
|
+
apiKeySecret: {
|
|
401
|
+
name: string;
|
|
402
|
+
key?: string;
|
|
403
|
+
};
|
|
404
|
+
namespace?: string;
|
|
405
|
+
version?: string;
|
|
406
|
+
endpoint?: string;
|
|
407
|
+
}, {}>;
|
|
408
|
+
/** Runtime configuration for the ClickStack k8s telemetry composition. */
|
|
409
|
+
export type ClickStackK8sTelemetryConfig = typeof ClickStackK8sTelemetryConfigSchema.infer;
|
|
410
|
+
/** Observed status of the k8s telemetry collectors. */
|
|
411
|
+
export declare const ClickStackK8sTelemetryStatusSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
412
|
+
ready: boolean;
|
|
413
|
+
phase: "Ready" | "Installing";
|
|
414
|
+
}, {}>;
|
|
415
|
+
/** Spec accepted by the shared ClickStack HelmRepository singleton. */
|
|
416
|
+
export declare const ClickStackHelmRepositorySingletonSpecSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
417
|
+
name: string;
|
|
418
|
+
namespace: string;
|
|
419
|
+
url: string;
|
|
420
|
+
}, {}>;
|
|
421
|
+
/** Status surfaced by the shared ClickStack HelmRepository singleton. */
|
|
422
|
+
export declare const ClickStackHelmRepositorySingletonStatusSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
423
|
+
ready: boolean;
|
|
424
|
+
}, {}>;
|
|
425
|
+
/** Spec accepted by the shared OpenTelemetry HelmRepository singleton. */
|
|
426
|
+
export declare const OtelHelmRepositorySingletonSpecSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
427
|
+
name: string;
|
|
428
|
+
namespace: string;
|
|
429
|
+
url: string;
|
|
430
|
+
}, {}>;
|
|
431
|
+
/** Status surfaced by the shared OpenTelemetry HelmRepository singleton. */
|
|
432
|
+
export declare const OtelHelmRepositorySingletonStatusSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
433
|
+
ready: boolean;
|
|
434
|
+
}, {}>;
|
|
435
|
+
/** Configuration for the ClickStack/OTel HelmRepository wrappers. */
|
|
436
|
+
export declare const ClickStackHelmRepositoryConfigSchema: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
437
|
+
name?: string;
|
|
438
|
+
namespace?: string;
|
|
439
|
+
url?: string;
|
|
440
|
+
interval?: string;
|
|
441
|
+
id?: string;
|
|
442
|
+
}, {}>;
|
|
443
|
+
/** Configuration for the ClickStack HelmRepository wrapper. */
|
|
444
|
+
export type ClickStackHelmRepositoryConfig = typeof ClickStackHelmRepositoryConfigSchema.infer;
|
|
445
|
+
/** Configuration for the ClickStack HelmRelease wrapper. */
|
|
446
|
+
export interface ClickStackHelmReleaseConfig {
|
|
447
|
+
name: string;
|
|
448
|
+
namespace?: string;
|
|
449
|
+
version?: string;
|
|
450
|
+
repositoryName?: string;
|
|
451
|
+
repositoryNamespace?: string;
|
|
452
|
+
/** Official clickstack chart values (graph-aware trees / runtime merges allowed). */
|
|
453
|
+
values?: ClickStackMappedHelmValues;
|
|
454
|
+
id?: string;
|
|
455
|
+
}
|
|
456
|
+
/** Configuration for a stock opentelemetry-collector HelmRelease wrapper. */
|
|
457
|
+
export interface OtelCollectorHelmReleaseConfig {
|
|
458
|
+
name: string;
|
|
459
|
+
namespace?: string;
|
|
460
|
+
version?: string;
|
|
461
|
+
repositoryName?: string;
|
|
462
|
+
repositoryNamespace?: string;
|
|
463
|
+
/** Stock opentelemetry-collector chart values (graph-aware trees / runtime merges allowed). */
|
|
464
|
+
values?: OtelCollectorMappedHelmValues;
|
|
465
|
+
id?: string;
|
|
466
|
+
}
|
|
467
|
+
/** Configuration for the internal-mode MongoDB StatefulSet/Service pair. */
|
|
468
|
+
export interface ClickStackMongoConfig {
|
|
469
|
+
/** ClickStack instance name; resources are named `<name>-mongodb`. */
|
|
470
|
+
name: string;
|
|
471
|
+
/** Target namespace. */
|
|
472
|
+
namespace: string;
|
|
473
|
+
/** PVC size (default: '5Gi'). Build-time concrete value. */
|
|
474
|
+
storageSize?: string;
|
|
475
|
+
/** Optional StorageClass for the PVC. Build-time concrete value. */
|
|
476
|
+
storageClassName?: string;
|
|
477
|
+
/** Mongo image (default: 'mongo:7'). */
|
|
478
|
+
image?: string;
|
|
479
|
+
/** Resource id for the StatefulSet. */
|
|
480
|
+
statefulSetId?: string;
|
|
481
|
+
/** Resource id for the Service. */
|
|
482
|
+
serviceId?: string;
|
|
483
|
+
}
|
|
484
|
+
export {};
|
|
485
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/factories/clickstack/types.ts"],"names":[],"mappings":"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"}
|