alasio 7.0.0 → 9.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.
- package/dist/cli/src/api-server.js +18 -0
- package/dist/cli/src/api-server.js.map +1 -0
- package/dist/cli/src/branches.js +123 -46
- package/dist/cli/src/branches.js.map +1 -1
- package/dist/cli/src/cluster/docker.js +25 -10
- package/dist/cli/src/cluster/docker.js.map +1 -1
- package/dist/cli/src/cluster/host.js +33 -7
- package/dist/cli/src/cluster/host.js.map +1 -1
- package/dist/cli/src/cluster/k3s.js +51 -12
- package/dist/cli/src/cluster/k3s.js.map +1 -1
- package/dist/cli/src/cluster/node.js +115 -33
- package/dist/cli/src/cluster/node.js.map +1 -1
- package/dist/cli/src/cluster/stargz.js +55 -0
- package/dist/cli/src/cluster/stargz.js.map +1 -0
- package/dist/cli/src/commands/branch.js +5 -4
- package/dist/cli/src/commands/branch.js.map +1 -1
- package/dist/cli/src/commands/common.js +9 -3
- package/dist/cli/src/commands/common.js.map +1 -1
- package/dist/cli/src/commands/folder.js +14 -0
- package/dist/cli/src/commands/folder.js.map +1 -0
- package/dist/cli/src/commands/init.js +54 -4
- package/dist/cli/src/commands/init.js.map +1 -1
- package/dist/cli/src/commands/lake.js +40 -6
- package/dist/cli/src/commands/lake.js.map +1 -1
- package/dist/cli/src/commands/restore-filer-store.js +40 -8
- package/dist/cli/src/commands/restore-filer-store.js.map +1 -1
- package/dist/cli/src/commands/status.js +216 -20
- package/dist/cli/src/commands/status.js.map +1 -1
- package/dist/cli/src/commands/uninstall.js +8 -9
- package/dist/cli/src/commands/uninstall.js.map +1 -1
- package/dist/cli/src/commands/up.js +11 -3
- package/dist/cli/src/commands/up.js.map +1 -1
- package/dist/cli/src/commands/upgrade.js +1 -1
- package/dist/cli/src/commands/upgrade.js.map +1 -1
- package/dist/cli/src/commands.js +2 -1
- package/dist/cli/src/commands.js.map +1 -1
- package/dist/cli/src/config.js +24 -9
- package/dist/cli/src/config.js.map +1 -1
- package/dist/cli/src/cpu-baseline.js +8 -4
- package/dist/cli/src/cpu-baseline.js.map +1 -1
- package/dist/cli/src/folders.js +67 -0
- package/dist/cli/src/folders.js.map +1 -0
- package/dist/cli/src/gateway-calls.js +58 -0
- package/dist/cli/src/gateway-calls.js.map +1 -0
- package/dist/cli/src/install.js +119 -17
- package/dist/cli/src/install.js.map +1 -1
- package/dist/cli/src/kept-releases.js +27 -20
- package/dist/cli/src/kept-releases.js.map +1 -1
- package/dist/cli/src/kube/api.js +11 -5
- package/dist/cli/src/kube/api.js.map +1 -1
- package/dist/cli/src/kube/apply.js +16 -73
- package/dist/cli/src/kube/apply.js.map +1 -1
- package/dist/cli/src/kube/rollout.js +84 -26
- package/dist/cli/src/kube/rollout.js.map +1 -1
- package/dist/cli/src/lake.js +124 -0
- package/dist/cli/src/lake.js.map +1 -0
- package/dist/cli/src/manifests/admission.js +381 -223
- package/dist/cli/src/manifests/admission.js.map +1 -1
- package/dist/cli/src/manifests/alasio.js +79 -362
- package/dist/cli/src/manifests/alasio.js.map +1 -1
- package/dist/cli/src/manifests/branch.js +10 -26
- package/dist/cli/src/manifests/branch.js.map +1 -1
- package/dist/cli/src/manifests/collector.js +250 -135
- package/dist/cli/src/manifests/collector.js.map +1 -1
- package/dist/cli/src/manifests/common.js +32 -2
- package/dist/cli/src/manifests/common.js.map +1 -1
- package/dist/cli/src/manifests/config.js +256 -92
- package/dist/cli/src/manifests/config.js.map +1 -1
- package/dist/cli/src/manifests/disruption.js +10 -0
- package/dist/cli/src/manifests/disruption.js.map +1 -1
- package/dist/cli/src/manifests/folders.js +128 -0
- package/dist/cli/src/manifests/folders.js.map +1 -0
- package/dist/cli/src/manifests/grafana.js +4 -2
- package/dist/cli/src/manifests/grafana.js.map +1 -1
- package/dist/cli/src/manifests/index.js +15 -8
- package/dist/cli/src/manifests/index.js.map +1 -1
- package/dist/cli/src/manifests/keda.js +2 -1
- package/dist/cli/src/manifests/keda.js.map +1 -1
- package/dist/cli/src/manifests/lake.js +350 -73
- package/dist/cli/src/manifests/lake.js.map +1 -1
- package/dist/cli/src/manifests/log.js +316 -0
- package/dist/cli/src/manifests/log.js.map +1 -0
- package/dist/cli/src/manifests/neon.js +128 -49
- package/dist/cli/src/manifests/neon.js.map +1 -1
- package/dist/cli/src/manifests/network-policies.js +263 -100
- package/dist/cli/src/manifests/network-policies.js.map +1 -1
- package/dist/cli/src/manifests/node-agent.js +24 -8
- package/dist/cli/src/manifests/node-agent.js.map +1 -1
- package/dist/cli/src/manifests/object-store.js +4 -2
- package/dist/cli/src/manifests/object-store.js.map +1 -1
- package/dist/cli/src/manifests/sandbox-gateway.js +663 -0
- package/dist/cli/src/manifests/sandbox-gateway.js.map +1 -0
- package/dist/cli/src/manifests/scalers.js +16 -5
- package/dist/cli/src/manifests/scalers.js.map +1 -1
- package/dist/cli/src/manifests/sizing.js +16 -8
- package/dist/cli/src/manifests/sizing.js.map +1 -1
- package/dist/cli/src/manifests/valkey.js +11 -5
- package/dist/cli/src/manifests/valkey.js.map +1 -1
- package/dist/cli/src/manifests/vpa.js +3 -1
- package/dist/cli/src/manifests/vpa.js.map +1 -1
- package/dist/cli/src/manifests/webhook.js +102 -0
- package/dist/cli/src/manifests/webhook.js.map +1 -0
- package/dist/cli/src/manifests/workspace-storage.js +174 -89
- package/dist/cli/src/manifests/workspace-storage.js.map +1 -1
- package/dist/cli/src/neon-storage.js +155 -0
- package/dist/cli/src/neon-storage.js.map +1 -0
- package/dist/cli/src/release.js +9 -6
- package/dist/cli/src/release.js.map +1 -1
- package/dist/cli/src/secrets.js +45 -4
- package/dist/cli/src/secrets.js.map +1 -1
- package/dist/cli/src/target.js +1 -1
- package/dist/cli/src/target.js.map +1 -1
- package/dist/cli/src/telegram.js +56 -10
- package/dist/cli/src/telegram.js.map +1 -1
- package/dist/cli/src/webhook.js +182 -0
- package/dist/cli/src/webhook.js.map +1 -0
- package/dist/cluster/node/pins.json +12 -2
- package/dist/neon/control/branches.js +126 -21
- package/dist/neon/control/branches.js.map +1 -1
- package/dist/neon/control/endpoints.js +9 -0
- package/dist/neon/control/endpoints.js.map +1 -1
- package/dist/neon/control/jwt.js +16 -3
- package/dist/neon/control/jwt.js.map +1 -1
- package/dist/neon/control/secrets.js +51 -7
- package/dist/neon/control/secrets.js.map +1 -1
- package/dist/src/binder/names.js +33 -0
- package/dist/src/binder/names.js.map +1 -0
- package/dist/src/binder/tokens.js +58 -0
- package/dist/src/binder/tokens.js.map +1 -0
- package/dist/src/branch/names.js +12 -2
- package/dist/src/branch/names.js.map +1 -1
- package/dist/src/events/names.js +7 -0
- package/dist/src/events/names.js.map +1 -0
- package/dist/src/gateway/names.js +201 -0
- package/dist/src/gateway/names.js.map +1 -0
- package/dist/src/harness/names.js +49 -0
- package/dist/src/harness/names.js.map +1 -0
- package/dist/src/kube/sandbox-shape.js +19 -69
- package/dist/src/kube/sandbox-shape.js.map +1 -1
- package/dist/src/node-agent/names.js +118 -2
- package/dist/src/node-agent/names.js.map +1 -1
- package/dist/src/sandbox/names.js +12 -20
- package/dist/src/sandbox/names.js.map +1 -1
- package/dist/src/sandbox/otlp-resource.js +173 -0
- package/dist/src/sandbox/otlp-resource.js.map +1 -0
- package/dist/src/sandbox/telemetry.js +43 -0
- package/dist/src/sandbox/telemetry.js.map +1 -0
- package/dist/src/telegram/deliveries.js +40 -0
- package/dist/src/telegram/deliveries.js.map +1 -0
- package/dist/src/telemetry/config.js +131 -0
- package/dist/src/telemetry/config.js.map +1 -0
- package/dist/src/telemetry/forward.js +154 -0
- package/dist/src/telemetry/forward.js.map +1 -0
- package/package.json +1 -1
- package/dist/cli/src/manifests/agent-sandbox.js +0 -92
- package/dist/cli/src/manifests/agent-sandbox.js.map +0 -1
- package/dist/cli/src/manifests/juicefs-csi.js +0 -319
- package/dist/cli/src/manifests/juicefs-csi.js.map +0 -1
- package/dist/cli/src/manifests/sandboxes.agents.x-k8s.io.json +0 -6295
- package/dist/src/kube/config.js +0 -143
- package/dist/src/kube/config.js.map +0 -1
|
@@ -1,33 +1,54 @@
|
|
|
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,
|
|
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";
|
|
6
|
+
import { JUICEFS_METRICS_PORT, sandboxServiceRuns, WORKSPACE_MOUNT_COMPONENT } from "./sandbox-gateway.js";
|
|
7
|
+
import { INTAKE_COMPONENT, LAKE_METRICS_PORT, LAKE_QUERY_PORT, LOADER_COMPONENT, QUERY_COMPONENT } from "./lake.js";
|
|
8
|
+
import { COMPONENTS, FILER_STORE, FILER_STORE_USERS, METRICS_PORT as SEAWEEDFS_METRICS_PORT } from "./object-store.js";
|
|
3
9
|
import { priority } from "./priorities.js";
|
|
10
|
+
import { cpuScaledObject } from "./scalers.js";
|
|
4
11
|
import { verticalPodAutoscaler } from "./sizing.js";
|
|
5
|
-
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 { COMPONENTS, FILER_STORE, FILER_STORE_USERS, METRICS_PORT as SEAWEEDFS_METRICS_PORT } from "./object-store.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
|
|
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
|
|
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
|
|
20
|
-
*
|
|
21
|
-
*
|
|
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.
|
|
22
30
|
*/
|
|
23
|
-
const
|
|
31
|
+
const METRICS_BATCH = { send_batch_size: 10_000, send_batch_max_size: 10_000, timeout: "60s" };
|
|
24
32
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* hour until flushed; a request every 5 seconds not inlined, 50 files a minute.
|
|
33
|
+
* Each node's filesystem, read from its kubelet's stats (k8s.node.filesystem.available and
|
|
34
|
+
* .capacity): a kubeletstats receiver of each node the Kubernetes observer lists, with the
|
|
35
|
+
* scraper's ServiceAccount, whose serving certificate is the node's own.
|
|
29
36
|
*/
|
|
30
|
-
const
|
|
37
|
+
const NODE_STATS = {
|
|
38
|
+
watch_observers: ["k8s_observer"],
|
|
39
|
+
receivers: {
|
|
40
|
+
kubeletstats: {
|
|
41
|
+
rule: 'type == "k8s.node"',
|
|
42
|
+
config: {
|
|
43
|
+
auth_type: "serviceAccount",
|
|
44
|
+
endpoint: "`endpoint`:`kubelet_endpoint_port`",
|
|
45
|
+
insecure_skip_verify: true,
|
|
46
|
+
collection_interval: SCRAPE_INTERVAL,
|
|
47
|
+
metric_groups: ["node"],
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
};
|
|
31
52
|
/** Whether the bundled object store runs, whose parts it scrapes and whose filer store it reads. */
|
|
32
53
|
const seaweedfsRuns = ({ neon, objectStore }) => neon.enabled && objectStore.bundled.enabled;
|
|
33
54
|
/** The object store's parts it scrapes, by their pods' component: all but the filer store, which it reads as a Valkey. */
|
|
@@ -42,64 +63,58 @@ function valkeys(config) {
|
|
|
42
63
|
: []),
|
|
43
64
|
];
|
|
44
65
|
}
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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) => ({
|
|
66
|
+
/**
|
|
67
|
+
* The scrape job `job` of the pods of `namespace` whose component matches `components`:
|
|
68
|
+
* each running one at its address, on `port`, named by its pod, and labelled with its
|
|
69
|
+
* component where `labelled`. The collector reads `$` as the start of a variable, and
|
|
70
|
+
* `$$` as a `$`.
|
|
71
|
+
*/
|
|
72
|
+
function podJob(job, namespace, components, port, labelled = false) {
|
|
73
|
+
return {
|
|
64
74
|
job_name: job,
|
|
65
75
|
scrape_interval: SCRAPE_INTERVAL,
|
|
66
|
-
kubernetes_sd_configs: [{
|
|
67
|
-
role: "pod",
|
|
68
|
-
namespaces: { names: [namespace] },
|
|
69
|
-
selectors: [{ role: "pod", label }],
|
|
70
|
-
}],
|
|
76
|
+
kubernetes_sd_configs: [{ role: "pod", namespaces: { names: [namespace] } }],
|
|
71
77
|
relabel_configs: [
|
|
78
|
+
{ source_labels: ["__meta_kubernetes_pod_label_app_kubernetes_io_component"], regex: components.join("|"), action: "keep" },
|
|
72
79
|
{ source_labels: ["__meta_kubernetes_pod_phase"], regex: "Running", action: "keep" },
|
|
73
80
|
{ source_labels: ["__meta_kubernetes_pod_ip"], target_label: "__address__", replacement: `$$1:${port}` },
|
|
74
81
|
{ source_labels: ["__meta_kubernetes_pod_name"], target_label: "pod" },
|
|
75
|
-
|
|
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",
|
|
81
|
-
scrape_interval: SCRAPE_INTERVAL,
|
|
82
|
-
kubernetes_sd_configs: [{ role: "pod", namespaces: { names: [NAMESPACE] } }],
|
|
83
|
-
relabel_configs: [
|
|
84
|
-
{ source_labels: ["__meta_kubernetes_pod_label_app_kubernetes_io_component"], regex: SEAWEEDFS_SCRAPED.join("|"), action: "keep" },
|
|
85
|
-
{ 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}` },
|
|
87
|
-
{ source_labels: ["__meta_kubernetes_pod_name"], target_label: "pod" },
|
|
88
|
-
{ source_labels: ["__meta_kubernetes_pod_label_app_kubernetes_io_component"], target_label: "component" },
|
|
82
|
+
...(labelled ? [{ source_labels: ["__meta_kubernetes_pod_label_app_kubernetes_io_component"], target_label: "component" }] : []),
|
|
89
83
|
],
|
|
90
84
|
};
|
|
85
|
+
}
|
|
86
|
+
/** What it scrapes, a job of each component's pods, by the job's name, which its metrics' service is named. */
|
|
87
|
+
function scrapes(config) {
|
|
88
|
+
const { neon } = config;
|
|
89
|
+
const stack = {
|
|
90
|
+
...(neon.enabled
|
|
91
|
+
? {
|
|
92
|
+
pageserver: [["neon-pageserver"], 9898],
|
|
93
|
+
"storage-controller": [["neon-storage-controller"], 1234],
|
|
94
|
+
"storage-broker": [["neon-storage-broker"], 50051],
|
|
95
|
+
// The primary and, where the lake runs, its read replica.
|
|
96
|
+
compute: [["neon-compute", "neon-compute-ro"], COMPUTE_CTL_PORT],
|
|
97
|
+
// Each replica's own wakes and sleeps, as any of them wakes a compute.
|
|
98
|
+
"neon-control": [["neon-control"], 8080],
|
|
99
|
+
proxy: [["neon-proxy"], 7001],
|
|
100
|
+
safekeeper: [["neon-safekeeper"], 7676],
|
|
101
|
+
}
|
|
102
|
+
: {}),
|
|
103
|
+
...(lakeRuns(config)
|
|
104
|
+
? { "lake-loader": [[LOADER_COMPONENT], LAKE_METRICS_PORT], "lake-query": [[QUERY_COMPONENT], LAKE_QUERY_PORT], "lake-intake": [[INTAKE_COMPONENT], LAKE_METRICS_PORT] }
|
|
105
|
+
: {}),
|
|
106
|
+
log: [["log"], LOG_METRICS_PORT],
|
|
107
|
+
webhook: [["webhook"], WEBHOOK_HEALTH_PORT],
|
|
108
|
+
};
|
|
91
109
|
return [
|
|
92
|
-
...Object.keys(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
// The
|
|
97
|
-
...(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
podsJob("juicefs-csi", workspaceStorage.csi.namespace, `app.kubernetes.io/name=${DRIVER_POD_NAME}`, DRIVER_METRICS_PORT),
|
|
101
|
-
]
|
|
102
|
-
: []),
|
|
110
|
+
...Object.keys(stack).sort().map((job) => {
|
|
111
|
+
const [components, port] = stack[job] ?? [[], 0];
|
|
112
|
+
return podJob(job, NAMESPACE, components, port);
|
|
113
|
+
}),
|
|
114
|
+
// The object store's parts, each labelled with its part.
|
|
115
|
+
...(seaweedfsRuns(config) ? [podJob("seaweedfs", NAMESPACE, SEAWEEDFS_SCRAPED, SEAWEEDFS_METRICS_PORT, true)] : []),
|
|
116
|
+
// Each node's mount of workspace storage, JuiceFS's client.
|
|
117
|
+
...(sandboxServiceRuns(config) ? [podJob("juicefs", NAMESPACE, [WORKSPACE_MOUNT_COMPONENT], JUICEFS_METRICS_PORT)] : []),
|
|
103
118
|
];
|
|
104
119
|
}
|
|
105
120
|
/** The exporter to telemetry.otlpEndpoint, by its name in the collector's configuration, in the protocol it is set to, with its headers. */
|
|
@@ -110,20 +125,50 @@ function externalExporter({ telemetry }) {
|
|
|
110
125
|
return { "otlp/external": { endpoint, tls: { insecure: endpoint.startsWith("http://") }, ...headers } };
|
|
111
126
|
return { "otlphttp/external": { endpoint, encoding: otlpProtocol === "http/json" ? "json" : "proto", ...headers } };
|
|
112
127
|
}
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
128
|
+
/** What the gateway is given, and the scraper: its health, its OTLP receiver, and none of its own metrics. */
|
|
129
|
+
const BASE = {
|
|
130
|
+
extensions: { health_check: { endpoint: "0.0.0.0:13133" } },
|
|
131
|
+
receivers: { otlp: { protocols: { http: { endpoint: `0.0.0.0:${COLLECTOR_PORT}` } } } },
|
|
132
|
+
};
|
|
133
|
+
const SERVICE = { extensions: ["health_check"], telemetry: { metrics: { level: "none" } } };
|
|
134
|
+
/**
|
|
135
|
+
* The gateway's configuration: every signal from its OTLP receiver straight to the log,
|
|
136
|
+
* each to its topic, acked by every replica the log keeps of it, unbatched and unqueued,
|
|
137
|
+
* so its producer's export is answered by the log's, compressed with zstd, as the log keeps
|
|
138
|
+
* it (./log.ts logAccess); and to the external endpoint.
|
|
139
|
+
*/
|
|
140
|
+
function gatewayConfig(config) {
|
|
118
141
|
const exporters = {
|
|
119
|
-
...(lakeRuns(config)
|
|
120
|
-
|
|
142
|
+
...(lakeRuns(config)
|
|
143
|
+
? {
|
|
144
|
+
kafka: {
|
|
145
|
+
brokers: [LOG_BROKERS],
|
|
146
|
+
protocol_version: "4.2.0",
|
|
147
|
+
auth: { sasl: { username: "gateway", password: "${env:LOG_PASSWORD}", mechanism: "SCRAM-SHA-512" } },
|
|
148
|
+
traces: { topic: TELEMETRY_TOPICS.traces, encoding: "otlp_proto" },
|
|
149
|
+
logs: { topic: TELEMETRY_TOPICS.logs, encoding: "otlp_proto" },
|
|
150
|
+
metrics: { topic: TELEMETRY_TOPICS.metrics, encoding: "otlp_proto" },
|
|
151
|
+
producer: { required_acks: -1, max_message_bytes: LOG_RECORD_BYTES, compression: "zstd" },
|
|
152
|
+
timeout: "10s",
|
|
153
|
+
sending_queue: { enabled: false },
|
|
154
|
+
retry_on_failure: { enabled: false },
|
|
155
|
+
},
|
|
156
|
+
}
|
|
157
|
+
: {}),
|
|
158
|
+
...(config.telemetry.otlpEndpoint ? externalExporter(config) : {}),
|
|
121
159
|
};
|
|
122
|
-
|
|
160
|
+
// Nothing between: a log record without an id of its own the lake's intake knows by what it
|
|
161
|
+
// is (neon/lake/src/otel.ts logRecordId), so the same record sent twice is one.
|
|
162
|
+
const sent = { receivers: ["otlp"], exporters: Object.keys(exporters) };
|
|
163
|
+
return { ...BASE, exporters, service: { ...SERVICE, pipelines: { traces: sent, logs: sent, metrics: sent } } };
|
|
164
|
+
}
|
|
165
|
+
/** The scraper's configuration: what it scrapes and reads, of the stack's, and of each node's filesystem, batched a minute's at a time, to the gateway. */
|
|
166
|
+
function scraperConfig(scraped, read) {
|
|
167
|
+
const stack = [...(scraped.length > 0 ? ["prometheus"] : []), ...read.map(({ receiver }) => receiver)];
|
|
123
168
|
return {
|
|
124
|
-
extensions: {
|
|
169
|
+
extensions: { ...BASE.extensions, k8s_observer: { auth_type: "serviceAccount", observe_nodes: true, observe_pods: false } },
|
|
125
170
|
receivers: {
|
|
126
|
-
|
|
171
|
+
"receiver_creator/nodes": NODE_STATS,
|
|
127
172
|
...(scraped.length > 0 ? { prometheus: { config: { scrape_configs: scraped } } } : {}),
|
|
128
173
|
...Object.fromEntries(read.map(({ receiver, name, username, variable }) => [receiver, {
|
|
129
174
|
endpoint: `${name}:${VALKEY_PORT}`,
|
|
@@ -137,93 +182,157 @@ function collectorConfig(config) {
|
|
|
137
182
|
}])),
|
|
138
183
|
},
|
|
139
184
|
processors: {
|
|
140
|
-
batch:
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
...(scraped.length > 0 ? { "resource/stack": { attributes: [{ key: "service.namespace", value: "alasio-neon", action: "upsert" }] } } : {}),
|
|
185
|
+
batch: METRICS_BATCH,
|
|
186
|
+
// What the scraper scrapes is the stack's.
|
|
187
|
+
"resource/stack": { attributes: [{ key: "service.namespace", value: "alasio-neon", action: "upsert" }] },
|
|
144
188
|
},
|
|
145
|
-
exporters,
|
|
189
|
+
exporters: { "otlphttp/gateway": { endpoint: `http://${COLLECTOR}:${COLLECTOR_PORT}` } },
|
|
146
190
|
service: {
|
|
147
|
-
|
|
148
|
-
|
|
191
|
+
...SERVICE,
|
|
192
|
+
extensions: [...SERVICE.extensions, "k8s_observer"],
|
|
149
193
|
pipelines: {
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
: {}),
|
|
194
|
+
"metrics/nodes": { receivers: ["receiver_creator/nodes"], processors: ["batch"], exporters: ["otlphttp/gateway"] },
|
|
195
|
+
...(stack.length > 0 ? { metrics: { receivers: stack, processors: ["resource/stack", "batch"], exporters: ["otlphttp/gateway"] } } : {}),
|
|
162
196
|
},
|
|
163
197
|
},
|
|
164
198
|
};
|
|
165
199
|
}
|
|
166
|
-
/**
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
200
|
+
/** A collector's container, `name`, run on the configuration its ConfigMap mounts at /etc/otelcol. */
|
|
201
|
+
function collectorContainer(config, name, { env, resources, ports, headers }) {
|
|
202
|
+
return {
|
|
203
|
+
name,
|
|
204
|
+
image: imageReference(config.images.collector),
|
|
205
|
+
imagePullPolicy: config.images.pullPolicy,
|
|
206
|
+
args: ["--config=/etc/otelcol/config.yaml"],
|
|
207
|
+
...given("env", env),
|
|
208
|
+
ports: [...ports, { name: "health", containerPort: 13133 }],
|
|
209
|
+
readinessProbe: { httpGet: { path: "/", port: "health" }, periodSeconds: 5 },
|
|
210
|
+
securityContext: { ...restrictedContainer(), readOnlyRootFilesystem: true },
|
|
211
|
+
...(resources ? { resources } : {}),
|
|
212
|
+
volumeMounts: [
|
|
213
|
+
{ name: "config", mountPath: "/etc/otelcol", readOnly: true },
|
|
214
|
+
...(headers ? [{ name: "headers", mountPath: "/etc/otelcol/headers", readOnly: true }] : []),
|
|
215
|
+
],
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* The gateway's objects: who it is, its configuration, its Service, its Deployment, and what
|
|
220
|
+
* scales and sizes it. Its ServiceAccount, of no rights and no token in its pods, is named in
|
|
221
|
+
* its pods as it is: where a pod template names none, Kubernetes keeps the one it was named
|
|
222
|
+
* before in serviceAccount, deprecated, which a template applied over an older one keeps, so
|
|
223
|
+
* its pods would name a ServiceAccount the installation no longer has.
|
|
224
|
+
*/
|
|
225
|
+
function gatewayObjects(config) {
|
|
226
|
+
const { telemetry } = config;
|
|
227
|
+
const { scaling, resources } = telemetry.collector.gateway;
|
|
228
|
+
const configuration = gatewayConfig(config);
|
|
229
|
+
const metadata = { name: COLLECTOR, namespace: NAMESPACE, labels: stackLabels(GATEWAY_COMPONENT) };
|
|
175
230
|
const configMap = { apiVersion: "v1", kind: "ConfigMap", metadata, data: { "config.yaml": goJson(configuration, " ") } };
|
|
176
231
|
const service = {
|
|
177
232
|
apiVersion: "v1",
|
|
178
233
|
kind: "Service",
|
|
179
234
|
metadata,
|
|
180
|
-
spec: { selector: selectorLabels(
|
|
235
|
+
spec: { selector: selectorLabels(GATEWAY_COMPONENT), ports: [{ name: "otlp-http", port: COLLECTOR_PORT, targetPort: "otlp-http" }] },
|
|
181
236
|
};
|
|
237
|
+
const env = lakeRuns(config) ? [{ name: "LOG_PASSWORD", valueFrom: { secretKeyRef: { name: logPrincipalSecret("gateway"), key: "password" } } }] : [];
|
|
238
|
+
const volumes = [
|
|
239
|
+
{ name: "config", configMap: { name: COLLECTOR } },
|
|
240
|
+
// The external exporter's headers: a YAML map, under the key headersKey + ".yaml"
|
|
241
|
+
// in the headers Secret, since the collector takes headers as a map.
|
|
242
|
+
...(telemetry.headersSecret
|
|
243
|
+
? [{ name: "headers", secret: { secretName: telemetry.headersSecret, items: [{ key: `${telemetry.headersKey}.yaml`, path: "headers.yaml" }] } }]
|
|
244
|
+
: []),
|
|
245
|
+
];
|
|
246
|
+
const deployment = {
|
|
247
|
+
apiVersion: "apps/v1",
|
|
248
|
+
kind: "Deployment",
|
|
249
|
+
metadata,
|
|
250
|
+
spec: {
|
|
251
|
+
...replicasOf(scaling),
|
|
252
|
+
selector: { matchLabels: selectorLabels(GATEWAY_COMPONENT) },
|
|
253
|
+
template: {
|
|
254
|
+
metadata: { labels: stackLabels(GATEWAY_COMPONENT), annotations: { "checksum/config": sha256(goJson(configuration)) } },
|
|
255
|
+
spec: {
|
|
256
|
+
serviceAccountName: COLLECTOR,
|
|
257
|
+
automountServiceAccountToken: false,
|
|
258
|
+
...priority("floor"),
|
|
259
|
+
...stackPodSpec(config),
|
|
260
|
+
...spread(GATEWAY_COMPONENT, scaling),
|
|
261
|
+
containers: [
|
|
262
|
+
collectorContainer(config, "collector", { env, resources, ports: [{ name: "otlp-http", containerPort: COLLECTOR_PORT }], headers: Boolean(telemetry.headersSecret) }),
|
|
263
|
+
],
|
|
264
|
+
volumes,
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
const serviceAccount = { apiVersion: "v1", kind: "ServiceAccount", metadata, automountServiceAccountToken: false };
|
|
270
|
+
return [
|
|
271
|
+
serviceAccount,
|
|
272
|
+
configMap,
|
|
273
|
+
service,
|
|
274
|
+
deployment,
|
|
275
|
+
// Its start is its configuration read and its exporters connected, in seconds; then the
|
|
276
|
+
// batches its clients held while it was not ready, a minute's at most.
|
|
277
|
+
...cpuScaledObject(deployment, scaling, { percent: 80, startUpSeconds: 60 }),
|
|
278
|
+
...replicaBudget(GATEWAY_COMPONENT, NAMESPACE, scaling),
|
|
279
|
+
verticalPodAutoscaler(deployment, "InPlace", scaled(scaling) ? ["memory"] : undefined),
|
|
280
|
+
];
|
|
281
|
+
}
|
|
282
|
+
/** The scraper's objects: who it is, that it may list the nodes and read their kubelets' stats, and the pods it scrapes, its configuration and its Deployment. */
|
|
283
|
+
function scraperObjects(config) {
|
|
284
|
+
const scraped = scrapes(config);
|
|
285
|
+
const read = valkeys(config);
|
|
286
|
+
const configuration = scraperConfig(scraped, read);
|
|
287
|
+
const metadata = { name: SCRAPER, namespace: NAMESPACE, labels: stackLabels(SCRAPER_COMPONENT) };
|
|
288
|
+
const configMap = { apiVersion: "v1", kind: "ConfigMap", metadata, data: { "config.yaml": goJson(configuration, " ") } };
|
|
182
289
|
const deployment = {
|
|
183
290
|
apiVersion: "apps/v1",
|
|
184
291
|
kind: "Deployment",
|
|
185
292
|
metadata,
|
|
186
293
|
spec: {
|
|
187
294
|
...replicasOf(ONE),
|
|
188
|
-
selector: { matchLabels: selectorLabels(
|
|
295
|
+
selector: { matchLabels: selectorLabels(SCRAPER_COMPONENT) },
|
|
189
296
|
template: {
|
|
190
|
-
metadata: { labels: stackLabels(
|
|
297
|
+
metadata: { labels: stackLabels(SCRAPER_COMPONENT), annotations: { "checksum/config": sha256(goJson(configuration)) } },
|
|
191
298
|
spec: {
|
|
192
|
-
|
|
299
|
+
serviceAccountName: SCRAPER,
|
|
193
300
|
...priority("floor"),
|
|
194
301
|
...stackPodSpec(config),
|
|
195
|
-
containers: [
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
-
: []),
|
|
302
|
+
containers: [
|
|
303
|
+
collectorContainer(config, "scraper", {
|
|
304
|
+
env: read.map(({ secret, variable }) => ({ name: variable, valueFrom: valkeyPassword(secret) })),
|
|
305
|
+
resources: config.telemetry.collector.scraper.resources,
|
|
306
|
+
ports: [],
|
|
307
|
+
headers: false,
|
|
308
|
+
}),
|
|
217
309
|
],
|
|
310
|
+
volumes: [{ name: "config", configMap: { name: SCRAPER } }],
|
|
218
311
|
},
|
|
219
312
|
},
|
|
220
313
|
},
|
|
221
314
|
};
|
|
222
|
-
const sized = [deployment, verticalPodAutoscaler(deployment, "InPlace")];
|
|
223
|
-
|
|
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.
|
|
315
|
+
const sized = [configMap, deployment, verticalPodAutoscaler(deployment, "InPlace")];
|
|
316
|
+
// Who the scraper is, and that it may list the nodes and read their kubelets' stats.
|
|
226
317
|
const serviceAccount = { apiVersion: "v1", kind: "ServiceAccount", metadata };
|
|
318
|
+
const clusterMetadata = { name: SCRAPER, labels: metadata.labels };
|
|
319
|
+
const nodeReader = {
|
|
320
|
+
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
321
|
+
kind: "ClusterRole",
|
|
322
|
+
metadata: clusterMetadata,
|
|
323
|
+
rules: [{ apiGroups: [""], resources: ["nodes"], verbs: ["get", "list", "watch"] }, { apiGroups: [""], resources: ["nodes/stats"], verbs: ["get"] }],
|
|
324
|
+
};
|
|
325
|
+
const nodeReading = {
|
|
326
|
+
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
327
|
+
kind: "ClusterRoleBinding",
|
|
328
|
+
metadata: clusterMetadata,
|
|
329
|
+
subjects: [{ kind: "ServiceAccount", name: SCRAPER, namespace: NAMESPACE }],
|
|
330
|
+
roleRef: { apiGroup: "rbac.authorization.k8s.io", kind: "ClusterRole", name: SCRAPER },
|
|
331
|
+
};
|
|
332
|
+
if (scraped.length === 0)
|
|
333
|
+
return [serviceAccount, nodeReader, nodeReading, ...sized];
|
|
334
|
+
// And that it may find the pods it scrapes in its own namespace, where they are.
|
|
335
|
+
const listed = [NAMESPACE];
|
|
227
336
|
const podLister = (namespace) => {
|
|
228
337
|
const inNamespace = { ...metadata, namespace };
|
|
229
338
|
const role = {
|
|
@@ -236,11 +345,17 @@ export function collectorObjects(config) {
|
|
|
236
345
|
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
237
346
|
kind: "RoleBinding",
|
|
238
347
|
metadata: inNamespace,
|
|
239
|
-
subjects: [{ kind: "ServiceAccount", name:
|
|
240
|
-
roleRef: { apiGroup: "rbac.authorization.k8s.io", kind: "Role", name:
|
|
348
|
+
subjects: [{ kind: "ServiceAccount", name: SCRAPER, namespace: NAMESPACE }],
|
|
349
|
+
roleRef: { apiGroup: "rbac.authorization.k8s.io", kind: "Role", name: SCRAPER },
|
|
241
350
|
};
|
|
242
351
|
return [role, binding];
|
|
243
352
|
};
|
|
244
|
-
return [serviceAccount, ...listed.flatMap(podLister),
|
|
353
|
+
return [serviceAccount, nodeReader, nodeReading, ...listed.flatMap(podLister), ...sized];
|
|
354
|
+
}
|
|
355
|
+
/** The collector's objects, when it runs: its gateway's, and its scraper's. */
|
|
356
|
+
export function collectorObjects(config) {
|
|
357
|
+
if (!collectorRuns(config))
|
|
358
|
+
return [];
|
|
359
|
+
return [...gatewayObjects(config), ...scraperObjects(config)];
|
|
245
360
|
}
|
|
246
361
|
//# 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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"}
|
|
@@ -19,14 +19,19 @@ export const NAMESPACE = "alasio";
|
|
|
19
19
|
export const RELEASE = "alasio";
|
|
20
20
|
/** main: alasio's own environment. */
|
|
21
21
|
export const MAIN_ENVIRONMENT = { namespace: NAMESPACE, branch: null };
|
|
22
|
-
|
|
23
|
-
export const BRANCH_LABEL = "alasio.dev/branch";
|
|
22
|
+
export { BRANCH_LABEL } from "../../../src/branch/names.js";
|
|
24
23
|
/** A component's name: `alasio-<component>`. */
|
|
25
24
|
export function componentName(component) {
|
|
26
25
|
return `${RELEASE}-${component}`;
|
|
27
26
|
}
|
|
28
27
|
/** The Secret of a branch environment's token, which its parent forks the sessions it inherited for (src/branch/fork.ts). */
|
|
29
28
|
export const BRANCH_FORK_SECRET = componentName("branch-fork");
|
|
29
|
+
/**
|
|
30
|
+
* The Secret of an environment's callers' key to the sandbox gateway, of the gateway's
|
|
31
|
+
* (src/binder/names.ts environmentKey), in its alasio's namespace: main's, as Neon's setup
|
|
32
|
+
* renders it, and a branch environment's, as `alasio branch create` writes it.
|
|
33
|
+
*/
|
|
34
|
+
export const SESSIONS_CALLER_SECRET = componentName("sessions-caller");
|
|
30
35
|
/** A Neon service's name: `alasio-neon-<component>`. */
|
|
31
36
|
export function neonName(component) {
|
|
32
37
|
return componentName(`neon-${component}`);
|
|
@@ -46,6 +51,15 @@ export function labels(component) {
|
|
|
46
51
|
export function stackLabels(component) {
|
|
47
52
|
return { ...labels(component), "alasio.dev/stack": "neon" };
|
|
48
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Labels as a StatefulSet's claim template carries them: `of`, but the release's version,
|
|
56
|
+
* as Kubernetes changes no StatefulSet's claim templates, which the version would change at
|
|
57
|
+
* each release, every upgrade refused.
|
|
58
|
+
*/
|
|
59
|
+
export function claimLabels(of) {
|
|
60
|
+
const { "app.kubernetes.io/version": _version, ...kept } = of;
|
|
61
|
+
return kept;
|
|
62
|
+
}
|
|
49
63
|
/** The labels that select a component's pods. */
|
|
50
64
|
export function selectorLabels(component) {
|
|
51
65
|
return { "app.kubernetes.io/name": "alasio", "app.kubernetes.io/instance": RELEASE, "app.kubernetes.io/component": component };
|
|
@@ -54,6 +68,8 @@ export function selectorLabels(component) {
|
|
|
54
68
|
export const ONE = { min: 1, max: 1 };
|
|
55
69
|
/** Whether a scaler moves a component of `scale` between its min and max. */
|
|
56
70
|
export const scaled = ({ min, max }) => min !== max;
|
|
71
|
+
/** Whether a component of `scale` sleeps, none of its pods running, until its scaler wakes it. */
|
|
72
|
+
export const sleeps = ({ min }) => min === 0;
|
|
57
73
|
/**
|
|
58
74
|
* The replicas of a workload of `scale`: the count it fixes; or none where its scaler
|
|
59
75
|
* moves it, which then owns the field, as applying alasio would take it back otherwise.
|
|
@@ -213,4 +229,18 @@ export function goJson(value, indent) {
|
|
|
213
229
|
export function sha256(text) {
|
|
214
230
|
return createHash("sha256").update(text).digest("hex");
|
|
215
231
|
}
|
|
232
|
+
/** A Role in `namespace` of `rules`, named for the ServiceAccount `account` of alasio's namespace, and its binding to it. */
|
|
233
|
+
export function accountRole(account, component, namespace, rules) {
|
|
234
|
+
const metadata = { name: account, namespace, labels: labels(component) };
|
|
235
|
+
return [
|
|
236
|
+
{ apiVersion: "rbac.authorization.k8s.io/v1", kind: "Role", metadata, rules },
|
|
237
|
+
{
|
|
238
|
+
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
239
|
+
kind: "RoleBinding",
|
|
240
|
+
metadata,
|
|
241
|
+
roleRef: { apiGroup: "rbac.authorization.k8s.io", kind: "Role", name: account },
|
|
242
|
+
subjects: [{ kind: "ServiceAccount", name: account, namespace: NAMESPACE }],
|
|
243
|
+
},
|
|
244
|
+
];
|
|
245
|
+
}
|
|
216
246
|
//# sourceMappingURL=common.js.map
|