alasio 7.0.0 → 8.0.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.
Files changed (84) hide show
  1. package/dist/cli/src/branches.js +65 -29
  2. package/dist/cli/src/branches.js.map +1 -1
  3. package/dist/cli/src/cluster/k3s.js +8 -1
  4. package/dist/cli/src/cluster/k3s.js.map +1 -1
  5. package/dist/cli/src/cluster/node.js +8 -1
  6. package/dist/cli/src/cluster/node.js.map +1 -1
  7. package/dist/cli/src/commands/init.js +54 -4
  8. package/dist/cli/src/commands/init.js.map +1 -1
  9. package/dist/cli/src/commands/lake.js +40 -6
  10. package/dist/cli/src/commands/lake.js.map +1 -1
  11. package/dist/cli/src/commands/restore-filer-store.js +40 -8
  12. package/dist/cli/src/commands/restore-filer-store.js.map +1 -1
  13. package/dist/cli/src/commands/status.js +156 -12
  14. package/dist/cli/src/commands/status.js.map +1 -1
  15. package/dist/cli/src/config.js +20 -8
  16. package/dist/cli/src/config.js.map +1 -1
  17. package/dist/cli/src/install.js +69 -15
  18. package/dist/cli/src/install.js.map +1 -1
  19. package/dist/cli/src/kept-releases.js.map +1 -1
  20. package/dist/cli/src/kube/api.js +9 -2
  21. package/dist/cli/src/kube/api.js.map +1 -1
  22. package/dist/cli/src/kube/apply.js +1 -1
  23. package/dist/cli/src/kube/apply.js.map +1 -1
  24. package/dist/cli/src/kube/rollout.js +58 -12
  25. package/dist/cli/src/kube/rollout.js.map +1 -1
  26. package/dist/cli/src/lake.js +124 -0
  27. package/dist/cli/src/lake.js.map +1 -0
  28. package/dist/cli/src/manifests/admission.js +43 -4
  29. package/dist/cli/src/manifests/admission.js.map +1 -1
  30. package/dist/cli/src/manifests/alasio.js +68 -15
  31. package/dist/cli/src/manifests/alasio.js.map +1 -1
  32. package/dist/cli/src/manifests/collector.js +227 -128
  33. package/dist/cli/src/manifests/collector.js.map +1 -1
  34. package/dist/cli/src/manifests/config.js +196 -15
  35. package/dist/cli/src/manifests/config.js.map +1 -1
  36. package/dist/cli/src/manifests/index.js +8 -4
  37. package/dist/cli/src/manifests/index.js.map +1 -1
  38. package/dist/cli/src/manifests/juicefs-csi.js +7 -6
  39. package/dist/cli/src/manifests/juicefs-csi.js.map +1 -1
  40. package/dist/cli/src/manifests/keda.js +2 -1
  41. package/dist/cli/src/manifests/keda.js.map +1 -1
  42. package/dist/cli/src/manifests/lake.js +336 -73
  43. package/dist/cli/src/manifests/lake.js.map +1 -1
  44. package/dist/cli/src/manifests/log.js +298 -0
  45. package/dist/cli/src/manifests/log.js.map +1 -0
  46. package/dist/cli/src/manifests/neon.js +125 -46
  47. package/dist/cli/src/manifests/neon.js.map +1 -1
  48. package/dist/cli/src/manifests/network-policies.js +130 -33
  49. package/dist/cli/src/manifests/network-policies.js.map +1 -1
  50. package/dist/cli/src/manifests/node-agent.js +14 -5
  51. package/dist/cli/src/manifests/node-agent.js.map +1 -1
  52. package/dist/cli/src/manifests/scalers.js.map +1 -1
  53. package/dist/cli/src/manifests/webhook.js +102 -0
  54. package/dist/cli/src/manifests/webhook.js.map +1 -0
  55. package/dist/cli/src/neon-storage.js +115 -0
  56. package/dist/cli/src/neon-storage.js.map +1 -0
  57. package/dist/cli/src/release.js +9 -6
  58. package/dist/cli/src/release.js.map +1 -1
  59. package/dist/cli/src/secrets.js +45 -4
  60. package/dist/cli/src/secrets.js.map +1 -1
  61. package/dist/cli/src/target.js +1 -1
  62. package/dist/cli/src/target.js.map +1 -1
  63. package/dist/cli/src/telegram.js +56 -10
  64. package/dist/cli/src/telegram.js.map +1 -1
  65. package/dist/cli/src/webhook.js +182 -0
  66. package/dist/cli/src/webhook.js.map +1 -0
  67. package/dist/cluster/node/pins.json +5 -0
  68. package/dist/neon/control/branches.js +120 -15
  69. package/dist/neon/control/branches.js.map +1 -1
  70. package/dist/neon/control/endpoints.js +9 -0
  71. package/dist/neon/control/endpoints.js.map +1 -1
  72. package/dist/neon/control/jwt.js +16 -3
  73. package/dist/neon/control/jwt.js.map +1 -1
  74. package/dist/neon/control/secrets.js +39 -6
  75. package/dist/neon/control/secrets.js.map +1 -1
  76. package/dist/src/kube/config.js +3 -1
  77. package/dist/src/kube/config.js.map +1 -1
  78. package/dist/src/kube/sandbox-shape.js +12 -2
  79. package/dist/src/kube/sandbox-shape.js.map +1 -1
  80. package/dist/src/node-agent/names.js +67 -1
  81. package/dist/src/node-agent/names.js.map +1 -1
  82. package/dist/src/telegram/deliveries.js +40 -0
  83. package/dist/src/telegram/deliveries.js.map +1 -0
  84. package/package.json +1 -1
@@ -1,31 +1,32 @@
1
+ import { COMPUTE_CTL_PORT } from "../../../neon/control/branches.js";
1
2
  import { imageReference } from "../images.js";
2
- import { COLLECTOR_PORT, collectorRuns, componentName, given, goJson, lakeRuns, NAMESPACE, neonName, ONE, replicasOf, restrictedContainer, selectorLabels, sha256, stackLabels, stackPodSpec, } from "./common.js";
3
- import { priority } from "./priorities.js";
4
- import { verticalPodAutoscaler } from "./sizing.js";
3
+ import { COLLECTOR_PORT, collectorRuns, componentName, given, goJson, lakeRuns, NAMESPACE, ONE, replicasOf, restrictedContainer, scaled, selectorLabels, sha256, stackLabels, stackPodSpec } from "./common.js";
4
+ import { LOG_BROKERS, LOG_METRICS_PORT, LOG_RECORD_BYTES, logPrincipalSecret, TELEMETRY_TOPICS } from "./log.js";
5
+ import { replicaBudget, spread } from "./disruption.js";
5
6
  import { DRIVER_METRICS_PORT, DRIVER_POD_NAME, JUICEFS_METRICS_PORT, MOUNT_POD_NAME } from "./juicefs-csi.js";
6
- import { LAKE_INTAKE_PORT } from "./lake.js";
7
+ import { INTAKE_COMPONENT, LAKE_METRICS_PORT, LAKE_QUERY_PORT, LOADER_COMPONENT, QUERY_COMPONENT } from "./lake.js";
7
8
  import { COMPONENTS, FILER_STORE, FILER_STORE_USERS, METRICS_PORT as SEAWEEDFS_METRICS_PORT } from "./object-store.js";
9
+ import { priority } from "./priorities.js";
10
+ import { cpuUtilization, scaledObject } from "./scalers.js";
11
+ import { verticalPodAutoscaler } from "./sizing.js";
8
12
  import { VALKEY_PORT, valkeyPassword } from "./valkey.js";
13
+ import { WEBHOOK_HEALTH_PORT } from "./webhook.js";
9
14
  import { VALKEY } from "./workspace-storage.js";
10
- /** The collector's name, its pods' component, and its Service's. */
15
+ /** The gateway's name, its pods' component, and its Service's, which every producer exports to. */
11
16
  export const COLLECTOR = componentName("collector");
12
- const COMPONENT = "collector";
17
+ export const GATEWAY_COMPONENT = "collector";
18
+ /** The scraper's name and its pods' component. */
19
+ export const SCRAPER = componentName("collector-scraper");
20
+ export const SCRAPER_COMPONENT = "collector-scraper";
13
21
  /**
14
22
  * How often it scrapes the stack. The stack's metrics are most of all the telemetry
15
23
  * there is (the pageserver's alone half of it), some 30 points a second at this interval.
16
24
  */
17
25
  const SCRAPE_INTERVAL = "60s";
18
26
  /**
19
- * How it batches spans and log records: a request of at most as many as one insert of
20
- * the lake inlines (neon/lake/src/otel.ts's INLINED_ROWS), within 5 seconds of the first,
21
- * so those few, which a query wants at once, are inlined in the catalog and make no file.
22
- */
23
- const BATCH = { send_batch_size: 1000, send_batch_max_size: 1000, timeout: "5s" };
24
- /**
25
- * How it batches metric points: a minute's at a time, a request of thousands, which the
26
- * lake writes as a file of each kind's rather than inline in its catalog. Measured on the
27
- * stack, inlining them all cost Neon some 45 KB of WAL a second and the catalog 130 MB an
28
- * hour until flushed; a request every 5 seconds not inlined, 50 files a minute.
27
+ * How the scraper batches what it scrapes: a minute's at a time, an export of up to
28
+ * 10,000 points, some megabytes at most, which the log takes as one record of up to
29
+ * 8 MiB (./log.ts) and the intake writes in one commit, a file of each kind's.
29
30
  */
30
31
  const METRICS_BATCH = { send_batch_size: 10_000, send_batch_max_size: 10_000, timeout: "60s" };
31
32
  /** Whether the bundled object store runs, whose parts it scrapes and whose filer store it reads. */
@@ -42,63 +43,76 @@ function valkeys(config) {
42
43
  : []),
43
44
  ];
44
45
  }
45
- /** What it scrapes: each job's targets, by job, each of neon-control's replicas, the object store's parts, and with workspace storage JuiceFS's pods. */
46
- function scrapes(config) {
47
- const { neon, workspaceStorage } = config;
48
- if (!neon.enabled)
49
- return [];
50
- const safekeeper = neonName("safekeeper");
51
- const targets = {
52
- pageserver: [`${neonName("pageserver")}:9898`],
53
- "storage-controller": [`${neonName("storage-controller")}:1234`],
54
- "storage-broker": [`${neonName("storage-broker")}:50051`],
55
- compute: [`${neonName("compute")}:3080`],
56
- proxy: [`${neonName("proxy")}:7001`],
57
- safekeeper: Array.from({ length: neon.safekeepers.scaling.min }, (_, index) => `${safekeeper}-${index}.${safekeeper}:7676`),
58
- ...(lakeRuns(config) ? { lake: [`${componentName("lake")}:9464`] } : {}),
59
- };
60
- // The pods of `namespace` the label `label` selects: each running one at its address, on
61
- // the port `port` they serve their metrics on, named by its pod. The collector reads `$`
62
- // as the start of a variable, and `$$` as a `$`.
63
- const podsJob = (job, namespace, label, port) => ({
46
+ /**
47
+ * The scrape job `job` of the pods of `namespace` whose component matches `components`:
48
+ * each running one at its address, on `port`, named by its pod, and labelled with its
49
+ * component where `labelled`. The collector reads `$` as the start of a variable, and
50
+ * `$$` as a `$`.
51
+ */
52
+ function podJob(job, namespace, components, port, labelled = false) {
53
+ return {
64
54
  job_name: job,
65
55
  scrape_interval: SCRAPE_INTERVAL,
66
- kubernetes_sd_configs: [{
67
- role: "pod",
68
- namespaces: { names: [namespace] },
69
- selectors: [{ role: "pod", label }],
70
- }],
56
+ kubernetes_sd_configs: [{ role: "pod", namespaces: { names: [namespace] } }],
71
57
  relabel_configs: [
58
+ { source_labels: ["__meta_kubernetes_pod_label_app_kubernetes_io_component"], regex: components.join("|"), action: "keep" },
72
59
  { source_labels: ["__meta_kubernetes_pod_phase"], regex: "Running", action: "keep" },
73
60
  { source_labels: ["__meta_kubernetes_pod_ip"], target_label: "__address__", replacement: `$$1:${port}` },
74
61
  { source_labels: ["__meta_kubernetes_pod_name"], target_label: "pod" },
62
+ ...(labelled ? [{ source_labels: ["__meta_kubernetes_pod_label_app_kubernetes_io_component"], target_label: "component" }] : []),
75
63
  ],
76
- });
77
- // The object store's parts, each pod of each, which the collector may list in its own
78
- // namespace, as their gateways' count moves; each labelled with its part.
79
- const seaweedfsJob = {
80
- job_name: "seaweedfs",
64
+ };
65
+ }
66
+ /** JuiceFS's pods of the name `name` in the driver's namespace, on the port `port` they serve their metrics on. */
67
+ function juicefsJob(config, job, name, port) {
68
+ return {
69
+ job_name: job,
81
70
  scrape_interval: SCRAPE_INTERVAL,
82
- kubernetes_sd_configs: [{ role: "pod", namespaces: { names: [NAMESPACE] } }],
71
+ kubernetes_sd_configs: [{
72
+ role: "pod",
73
+ namespaces: { names: [config.workspaceStorage.csi.namespace] },
74
+ selectors: [{ role: "pod", label: `app.kubernetes.io/name=${name}` }],
75
+ }],
83
76
  relabel_configs: [
84
- { source_labels: ["__meta_kubernetes_pod_label_app_kubernetes_io_component"], regex: SEAWEEDFS_SCRAPED.join("|"), action: "keep" },
85
77
  { source_labels: ["__meta_kubernetes_pod_phase"], regex: "Running", action: "keep" },
86
- { source_labels: ["__meta_kubernetes_pod_ip"], target_label: "__address__", replacement: `$$1:${SEAWEEDFS_METRICS_PORT}` },
78
+ { source_labels: ["__meta_kubernetes_pod_ip"], target_label: "__address__", replacement: `$$1:${port}` },
87
79
  { source_labels: ["__meta_kubernetes_pod_name"], target_label: "pod" },
88
- { source_labels: ["__meta_kubernetes_pod_label_app_kubernetes_io_component"], target_label: "component" },
89
80
  ],
90
81
  };
82
+ }
83
+ /** What it scrapes, a job of each component's pods, by the job's name, which its metrics' service is named. */
84
+ function scrapes(config) {
85
+ const { neon, workspaceStorage } = config;
86
+ const stack = {
87
+ ...(neon.enabled
88
+ ? {
89
+ pageserver: [["neon-pageserver"], 9898],
90
+ "storage-controller": [["neon-storage-controller"], 1234],
91
+ "storage-broker": [["neon-storage-broker"], 50051],
92
+ // The primary and, where the lake runs, its read replica.
93
+ compute: [["neon-compute", "neon-compute-ro"], COMPUTE_CTL_PORT],
94
+ // Each replica's own wakes and sleeps, as any of them wakes a compute.
95
+ "neon-control": [["neon-control"], 8080],
96
+ proxy: [["neon-proxy"], 7001],
97
+ safekeeper: [["neon-safekeeper"], 7676],
98
+ }
99
+ : {}),
100
+ ...(lakeRuns(config)
101
+ ? { "lake-loader": [[LOADER_COMPONENT], LAKE_METRICS_PORT], "lake-query": [[QUERY_COMPONENT], LAKE_QUERY_PORT], "lake-intake": [[INTAKE_COMPONENT], LAKE_METRICS_PORT] }
102
+ : {}),
103
+ log: [["log"], LOG_METRICS_PORT],
104
+ webhook: [["webhook"], WEBHOOK_HEALTH_PORT],
105
+ };
91
106
  return [
92
- ...Object.keys(targets).sort().map((job) => ({ job_name: job, scrape_interval: SCRAPE_INTERVAL, static_configs: [{ targets: targets[job] }] })),
93
- ...(seaweedfsRuns(config) ? [seaweedfsJob] : []),
94
- // Each replica's own wakes and sleeps, as any of them wakes a compute.
95
- podsJob("neon-control", NAMESPACE, "app.kubernetes.io/component=neon-control", 8080),
107
+ ...Object.keys(stack).sort().map((job) => {
108
+ const [components, port] = stack[job] ?? [[], 0];
109
+ return podJob(job, NAMESPACE, components, port);
110
+ }),
111
+ // The object store's parts, each labelled with its part.
112
+ ...(seaweedfsRuns(config) ? [podJob("seaweedfs", NAMESPACE, SEAWEEDFS_SCRAPED, SEAWEEDFS_METRICS_PORT, true)] : []),
96
113
  // The mount pods, the clients, and the controller's and node service's, the driver.
97
114
  ...(workspaceStorage.enabled
98
- ? [
99
- podsJob("juicefs", workspaceStorage.csi.namespace, `app.kubernetes.io/name=${MOUNT_POD_NAME}`, JUICEFS_METRICS_PORT),
100
- podsJob("juicefs-csi", workspaceStorage.csi.namespace, `app.kubernetes.io/name=${DRIVER_POD_NAME}`, DRIVER_METRICS_PORT),
101
- ]
115
+ ? [juicefsJob(config, "juicefs", MOUNT_POD_NAME, JUICEFS_METRICS_PORT), juicefsJob(config, "juicefs-csi", DRIVER_POD_NAME, DRIVER_METRICS_PORT)]
102
116
  : []),
103
117
  ];
104
118
  }
@@ -110,20 +124,47 @@ function externalExporter({ telemetry }) {
110
124
  return { "otlp/external": { endpoint, tls: { insecure: endpoint.startsWith("http://") }, ...headers } };
111
125
  return { "otlphttp/external": { endpoint, encoding: otlpProtocol === "http/json" ? "json" : "proto", ...headers } };
112
126
  }
113
- /** The collector's configuration. */
114
- function collectorConfig(config) {
115
- const { telemetry } = config;
116
- const scraped = scrapes(config);
117
- const read = valkeys(config);
127
+ /** What the gateway is given, and the scraper: its health, its OTLP receiver, and none of its own metrics. */
128
+ const BASE = {
129
+ extensions: { health_check: { endpoint: "0.0.0.0:13133" } },
130
+ receivers: { otlp: { protocols: { http: { endpoint: `0.0.0.0:${COLLECTOR_PORT}` } } } },
131
+ };
132
+ const SERVICE = { extensions: ["health_check"], telemetry: { metrics: { level: "none" } } };
133
+ /**
134
+ * The gateway's configuration: every signal from its OTLP receiver straight to the log,
135
+ * each to its topic, acked by every replica the log keeps of it, unbatched and unqueued,
136
+ * so its producer's export is answered by the log's; and to the external endpoint.
137
+ */
138
+ function gatewayConfig(config) {
118
139
  const exporters = {
119
- ...(lakeRuns(config) ? { "otlphttp/lake": { endpoint: `http://${componentName("lake")}:${LAKE_INTAKE_PORT}` } } : {}),
120
- ...(telemetry.otlpEndpoint ? externalExporter(config) : {}),
140
+ ...(lakeRuns(config)
141
+ ? {
142
+ kafka: {
143
+ brokers: [LOG_BROKERS],
144
+ protocol_version: "4.2.0",
145
+ auth: { sasl: { username: "gateway", password: "${env:LOG_PASSWORD}", mechanism: "SCRAM-SHA-512" } },
146
+ traces: { topic: TELEMETRY_TOPICS.traces, encoding: "otlp_proto" },
147
+ logs: { topic: TELEMETRY_TOPICS.logs, encoding: "otlp_proto" },
148
+ metrics: { topic: TELEMETRY_TOPICS.metrics, encoding: "otlp_proto" },
149
+ producer: { required_acks: -1, max_message_bytes: LOG_RECORD_BYTES },
150
+ timeout: "10s",
151
+ sending_queue: { enabled: false },
152
+ retry_on_failure: { enabled: false },
153
+ },
154
+ }
155
+ : {}),
156
+ ...(config.telemetry.otlpEndpoint ? externalExporter(config) : {}),
121
157
  };
122
- const sent = (processor) => ({ receivers: ["otlp"], processors: [processor], exporters: Object.keys(exporters) });
158
+ // Nothing between: a log record without an id of its own the lake's intake knows by what it
159
+ // is (neon/lake/src/otel.ts logRecordId), so the same record sent twice is one.
160
+ const sent = { receivers: ["otlp"], exporters: Object.keys(exporters) };
161
+ return { ...BASE, exporters, service: { ...SERVICE, pipelines: { traces: sent, logs: sent, metrics: sent } } };
162
+ }
163
+ /** The scraper's configuration: what it scrapes and reads, of the stack's, batched a minute's at a time, to the gateway. */
164
+ function scraperConfig(scraped, read) {
123
165
  return {
124
- extensions: { health_check: { endpoint: "0.0.0.0:13133" } },
166
+ extensions: BASE.extensions,
125
167
  receivers: {
126
- otlp: { protocols: { http: { endpoint: `0.0.0.0:${COLLECTOR_PORT}` } } },
127
168
  ...(scraped.length > 0 ? { prometheus: { config: { scrape_configs: scraped } } } : {}),
128
169
  ...Object.fromEntries(read.map(({ receiver, name, username, variable }) => [receiver, {
129
170
  endpoint: `${name}:${VALKEY_PORT}`,
@@ -137,92 +178,144 @@ function collectorConfig(config) {
137
178
  }])),
138
179
  },
139
180
  processors: {
140
- batch: BATCH,
141
- "batch/metrics": METRICS_BATCH,
142
- // What the collector scrapes is the stack's.
143
- ...(scraped.length > 0 ? { "resource/stack": { attributes: [{ key: "service.namespace", value: "alasio-neon", action: "upsert" }] } } : {}),
181
+ batch: METRICS_BATCH,
182
+ // What the scraper scrapes is the stack's.
183
+ "resource/stack": { attributes: [{ key: "service.namespace", value: "alasio-neon", action: "upsert" }] },
144
184
  },
145
- exporters,
185
+ exporters: { "otlphttp/gateway": { endpoint: `http://${COLLECTOR}:${COLLECTOR_PORT}` } },
146
186
  service: {
147
- extensions: ["health_check"],
148
- telemetry: { metrics: { level: "none" } },
187
+ ...SERVICE,
149
188
  pipelines: {
150
- traces: sent("batch"),
151
- logs: sent("batch"),
152
- metrics: sent("batch/metrics"),
153
- ...(scraped.length > 0
154
- ? {
155
- "metrics/stack": {
156
- receivers: ["prometheus", ...read.map(({ receiver }) => receiver)],
157
- processors: ["resource/stack", "batch/metrics"],
158
- exporters: Object.keys(exporters),
159
- },
160
- }
161
- : {}),
189
+ metrics: {
190
+ receivers: [...(scraped.length > 0 ? ["prometheus"] : []), ...read.map(({ receiver }) => receiver)],
191
+ processors: ["resource/stack", "batch"],
192
+ exporters: ["otlphttp/gateway"],
193
+ },
162
194
  },
163
195
  },
164
196
  };
165
197
  }
166
- /** The collector's objects, when it runs. */
167
- export function collectorObjects(config) {
168
- if (!collectorRuns(config))
169
- return [];
170
- const { telemetry, workspaceStorage } = config;
171
- const configuration = collectorConfig(config);
172
- // The namespaces it finds pods to scrape in: the driver's, JuiceFS's, and its own, neon-control's and the object store's parts'.
173
- const listed = [...(workspaceStorage.enabled ? [workspaceStorage.csi.namespace] : []), ...(config.neon.enabled ? [NAMESPACE] : [])];
174
- const metadata = { name: COLLECTOR, namespace: NAMESPACE, labels: stackLabels(COMPONENT) };
198
+ /** A collector's container, `name`, run on the configuration its ConfigMap mounts at /etc/otelcol. */
199
+ function collectorContainer(config, name, { env, resources, ports, headers }) {
200
+ return {
201
+ name,
202
+ image: imageReference(config.images.collector),
203
+ imagePullPolicy: config.images.pullPolicy,
204
+ args: ["--config=/etc/otelcol/config.yaml"],
205
+ ...given("env", env),
206
+ ports: [...ports, { name: "health", containerPort: 13133 }],
207
+ readinessProbe: { httpGet: { path: "/", port: "health" }, periodSeconds: 5 },
208
+ securityContext: { ...restrictedContainer(), readOnlyRootFilesystem: true },
209
+ ...(resources ? { resources } : {}),
210
+ volumeMounts: [
211
+ { name: "config", mountPath: "/etc/otelcol", readOnly: true },
212
+ ...(headers ? [{ name: "headers", mountPath: "/etc/otelcol/headers", readOnly: true }] : []),
213
+ ],
214
+ };
215
+ }
216
+ /**
217
+ * The gateway's objects: who it is, its configuration, its Service, its Deployment, and what
218
+ * scales and sizes it. Its ServiceAccount, of no rights and no token in its pods, is named in
219
+ * its pods as it is: where a pod template names none, Kubernetes keeps the one it was named
220
+ * before in serviceAccount, deprecated, which a template applied over an older one keeps, so
221
+ * its pods would name a ServiceAccount the installation no longer has.
222
+ */
223
+ function gatewayObjects(config) {
224
+ const { telemetry } = config;
225
+ const { scaling, resources } = telemetry.collector.gateway;
226
+ const configuration = gatewayConfig(config);
227
+ const metadata = { name: COLLECTOR, namespace: NAMESPACE, labels: stackLabels(GATEWAY_COMPONENT) };
175
228
  const configMap = { apiVersion: "v1", kind: "ConfigMap", metadata, data: { "config.yaml": goJson(configuration, " ") } };
176
229
  const service = {
177
230
  apiVersion: "v1",
178
231
  kind: "Service",
179
232
  metadata,
180
- spec: { selector: selectorLabels(COMPONENT), ports: [{ name: "otlp-http", port: COLLECTOR_PORT, targetPort: "otlp-http" }] },
233
+ spec: { selector: selectorLabels(GATEWAY_COMPONENT), ports: [{ name: "otlp-http", port: COLLECTOR_PORT, targetPort: "otlp-http" }] },
234
+ };
235
+ const env = lakeRuns(config) ? [{ name: "LOG_PASSWORD", valueFrom: { secretKeyRef: { name: logPrincipalSecret("gateway"), key: "password" } } }] : [];
236
+ const volumes = [
237
+ { name: "config", configMap: { name: COLLECTOR } },
238
+ // The external exporter's headers: a YAML map, under the key headersKey + ".yaml"
239
+ // in the headers Secret, since the collector takes headers as a map.
240
+ ...(telemetry.headersSecret
241
+ ? [{ name: "headers", secret: { secretName: telemetry.headersSecret, items: [{ key: `${telemetry.headersKey}.yaml`, path: "headers.yaml" }] } }]
242
+ : []),
243
+ ];
244
+ const deployment = {
245
+ apiVersion: "apps/v1",
246
+ kind: "Deployment",
247
+ metadata,
248
+ spec: {
249
+ ...replicasOf(scaling),
250
+ selector: { matchLabels: selectorLabels(GATEWAY_COMPONENT) },
251
+ template: {
252
+ metadata: { labels: stackLabels(GATEWAY_COMPONENT), annotations: { "checksum/config": sha256(goJson(configuration)) } },
253
+ spec: {
254
+ serviceAccountName: COLLECTOR,
255
+ automountServiceAccountToken: false,
256
+ ...priority("floor"),
257
+ ...stackPodSpec(config),
258
+ ...spread(GATEWAY_COMPONENT, scaling),
259
+ containers: [
260
+ collectorContainer(config, "collector", { env, resources, ports: [{ name: "otlp-http", containerPort: COLLECTOR_PORT }], headers: Boolean(telemetry.headersSecret) }),
261
+ ],
262
+ volumes,
263
+ },
264
+ },
265
+ },
181
266
  };
267
+ const serviceAccount = { apiVersion: "v1", kind: "ServiceAccount", metadata, automountServiceAccountToken: false };
268
+ return [
269
+ serviceAccount,
270
+ configMap,
271
+ service,
272
+ deployment,
273
+ ...scaledObject(deployment, scaling, [cpuUtilization(80)]),
274
+ ...replicaBudget(GATEWAY_COMPONENT, NAMESPACE, scaling),
275
+ verticalPodAutoscaler(deployment, "InPlace", scaled(scaling) ? ["memory"] : undefined),
276
+ ];
277
+ }
278
+ /** The scraper's objects, when it scrapes or reads anything: who it is, that it may list the pods it scrapes, its configuration and its Deployment. */
279
+ function scraperObjects(config) {
280
+ const { workspaceStorage } = config;
281
+ const scraped = scrapes(config);
282
+ const read = valkeys(config);
283
+ if (scraped.length === 0 && read.length === 0)
284
+ return [];
285
+ const configuration = scraperConfig(scraped, read);
286
+ const metadata = { name: SCRAPER, namespace: NAMESPACE, labels: stackLabels(SCRAPER_COMPONENT) };
287
+ const configMap = { apiVersion: "v1", kind: "ConfigMap", metadata, data: { "config.yaml": goJson(configuration, " ") } };
182
288
  const deployment = {
183
289
  apiVersion: "apps/v1",
184
290
  kind: "Deployment",
185
291
  metadata,
186
292
  spec: {
187
293
  ...replicasOf(ONE),
188
- selector: { matchLabels: selectorLabels(COMPONENT) },
294
+ selector: { matchLabels: selectorLabels(SCRAPER_COMPONENT) },
189
295
  template: {
190
- metadata: { labels: stackLabels(COMPONENT), annotations: { "checksum/config": sha256(goJson(configuration)) } },
296
+ metadata: { labels: stackLabels(SCRAPER_COMPONENT), annotations: { "checksum/config": sha256(goJson(configuration)) } },
191
297
  spec: {
192
- ...(listed.length > 0 ? { serviceAccountName: COLLECTOR } : {}),
298
+ ...(scraped.length > 0 ? { serviceAccountName: SCRAPER } : {}),
193
299
  ...priority("floor"),
194
300
  ...stackPodSpec(config),
195
- containers: [{
196
- name: "collector",
197
- image: imageReference(telemetry.collector.image),
198
- imagePullPolicy: "IfNotPresent",
199
- args: ["--config=/etc/otelcol/config.yaml"],
200
- ...given("env", valkeys(config).map(({ secret, variable }) => ({ name: variable, valueFrom: valkeyPassword(secret) }))),
201
- ports: [{ name: "otlp-http", containerPort: COLLECTOR_PORT }, { name: "health", containerPort: 13133 }],
202
- readinessProbe: { httpGet: { path: "/", port: "health" }, periodSeconds: 5 },
203
- securityContext: { ...restrictedContainer(), readOnlyRootFilesystem: true },
204
- resources: telemetry.collector.resources,
205
- volumeMounts: [
206
- { name: "config", mountPath: "/etc/otelcol", readOnly: true },
207
- ...(telemetry.headersSecret ? [{ name: "headers", mountPath: "/etc/otelcol/headers", readOnly: true }] : []),
208
- ],
209
- }],
210
- volumes: [
211
- { name: "config", configMap: { name: COLLECTOR } },
212
- // The external exporter's headers: a YAML map, under the key headersKey + ".yaml"
213
- // in the headers Secret, since the collector takes headers as a map.
214
- ...(telemetry.headersSecret
215
- ? [{ name: "headers", secret: { secretName: telemetry.headersSecret, items: [{ key: `${telemetry.headersKey}.yaml`, path: "headers.yaml" }] } }]
216
- : []),
301
+ containers: [
302
+ collectorContainer(config, "scraper", {
303
+ env: read.map(({ secret, variable }) => ({ name: variable, valueFrom: valkeyPassword(secret) })),
304
+ resources: config.telemetry.collector.scraper.resources,
305
+ ports: [],
306
+ headers: false,
307
+ }),
217
308
  ],
309
+ volumes: [{ name: "config", configMap: { name: SCRAPER } }],
218
310
  },
219
311
  },
220
312
  },
221
313
  };
222
- const sized = [deployment, verticalPodAutoscaler(deployment, "InPlace")];
223
- if (listed.length === 0)
224
- return [configMap, service, ...sized];
225
- // Who the collector is, and that it may find the pods it scrapes in the namespaces they are in.
314
+ const sized = [configMap, deployment, verticalPodAutoscaler(deployment, "InPlace")];
315
+ if (scraped.length === 0)
316
+ return sized;
317
+ // Who the scraper is, and that it may find the pods it scrapes in the namespaces they are in: its own, and JuiceFS's driver's.
318
+ const listed = [NAMESPACE, ...(workspaceStorage.enabled ? [workspaceStorage.csi.namespace] : [])];
226
319
  const serviceAccount = { apiVersion: "v1", kind: "ServiceAccount", metadata };
227
320
  const podLister = (namespace) => {
228
321
  const inNamespace = { ...metadata, namespace };
@@ -236,11 +329,17 @@ export function collectorObjects(config) {
236
329
  apiVersion: "rbac.authorization.k8s.io/v1",
237
330
  kind: "RoleBinding",
238
331
  metadata: inNamespace,
239
- subjects: [{ kind: "ServiceAccount", name: COLLECTOR, namespace: NAMESPACE }],
240
- roleRef: { apiGroup: "rbac.authorization.k8s.io", kind: "Role", name: COLLECTOR },
332
+ subjects: [{ kind: "ServiceAccount", name: SCRAPER, namespace: NAMESPACE }],
333
+ roleRef: { apiGroup: "rbac.authorization.k8s.io", kind: "Role", name: SCRAPER },
241
334
  };
242
335
  return [role, binding];
243
336
  };
244
- return [serviceAccount, ...listed.flatMap(podLister), configMap, service, ...sized];
337
+ return [serviceAccount, ...listed.flatMap(podLister), ...sized];
338
+ }
339
+ /** The collector's objects, when it runs: its gateway's, and its scraper's. */
340
+ export function collectorObjects(config) {
341
+ if (!collectorRuns(config))
342
+ return [];
343
+ return [...gatewayObjects(config), ...scraperObjects(config)];
245
344
  }
246
345
  //# sourceMappingURL=collector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../../src/manifests/collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../../src/manifests/collector.ts"],"names":[],"mappings":"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"}