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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { kind, KubeApi } from "./kube/api.js";
|
|
3
|
+
/**
|
|
4
|
+
* Where `slices`, the `kubernetes` Service's, say the API server is: the addresses of their
|
|
5
|
+
* IPv4 endpoints not said to be unready, and their TCP ports; null where they say no address
|
|
6
|
+
* or no port.
|
|
7
|
+
*/
|
|
8
|
+
export function apiServerOf(slices) {
|
|
9
|
+
const ipv4 = slices.filter(({ addressType }) => addressType === "IPv4");
|
|
10
|
+
const addresses = ipv4.flatMap(({ endpoints }) => (endpoints ?? []).filter(({ conditions }) => conditions?.ready !== false).flatMap(({ addresses }) => addresses));
|
|
11
|
+
const ports = ipv4.flatMap(({ ports }) => (ports ?? []).flatMap(({ port, protocol }) => (port !== undefined && (protocol ?? "TCP") === "TCP" ? [port] : [])));
|
|
12
|
+
if (addresses.length === 0 || ports.length === 0)
|
|
13
|
+
return null;
|
|
14
|
+
return { addresses: [...new Set(addresses)].sort(), ports: [...new Set(ports)].sort((a, b) => a - b) };
|
|
15
|
+
}
|
|
16
|
+
/** Where the cluster's API server is, as the module says; null where its EndpointSlices cannot be read, or say nowhere. */
|
|
17
|
+
export const readApiServer = Effect.flatMap(KubeApi, (kube) => kube.list(kind("EndpointSlice"), { namespace: "default", labelSelector: "kubernetes.io/service-name=kubernetes" }).pipe(Effect.map(apiServerOf), Effect.catch(() => Effect.succeed(null))));
|
|
18
|
+
//# sourceMappingURL=api-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-server.js","sourceRoot":"","sources":["../../../src/api-server.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQ9C;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAkC;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACnK,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9J,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACzG,CAAC;AAED,2HAA2H;AAC3H,MAAM,CAAC,MAAM,aAAa,GAAoD,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAC7G,IAAI,CAAC,IAAI,CAAkB,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,uCAAuC,EAAE,CAAC,CAAC,IAAI,CACtI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EACvB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACzC,CAAC,CAAC"}
|
package/dist/cli/src/branches.js
CHANGED
|
@@ -6,38 +6,53 @@
|
|
|
6
6
|
* main has made: a branch of Neon's at that position, by neon-control, and the branch's
|
|
7
7
|
* objects on it, with Secrets of its own: credentials of its own for what it runs (the
|
|
8
8
|
* password of alasio's role on its compute, which neon-control gives the role there, the
|
|
9
|
-
* lake's role's, which its alasio gives
|
|
9
|
+
* lake's role's and the harness host's, which its alasio gives them, and its compute's token, which fetches its
|
|
10
10
|
* spec alone), none of which reaches main's compute or another branch's; its bot's;
|
|
11
|
-
* Claude Code's token when main has one; the pull Secrets of its images;
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
11
|
+
* Claude Code's token when main has one; the pull Secrets of its images; its token to ask
|
|
12
|
+
* main to fork with; and its principals on the log, its alasio's, which reads its own
|
|
13
|
+
* Telegram topic and writes its own wake topic alone, and its lake loader's, which reads
|
|
14
|
+
* that alone, made beside the log's node by its access applier. Its bot's updates are
|
|
15
|
+
* delivered to the webhook intake at a route of its own (./webhook.ts), which its bot is
|
|
16
|
+
* registered with once its alasio runs. Its lake has main's object store identity, as it
|
|
17
|
+
* reads main's files where they are (one data path: DuckLake keeps every file's path
|
|
18
|
+
* relative to it), and SeaweedFS's Write, which writing needs, deletes too; and KEDA's
|
|
19
|
+
* principal on the log, which describes how far its loader is behind and reads nothing.
|
|
20
|
+
* Its clients reach its compute as main's do theirs, through Neon's proxy, by its
|
|
21
|
+
* compute's id. neon-control is called in its own pod, as the API server's service proxy
|
|
22
|
+
* drops the Authorization header it authenticates its callers by, which neon-control
|
|
23
|
+
* would read a token from; and a compute this works in, which may sleep, it wakes first.
|
|
19
24
|
*
|
|
20
25
|
* A branch is deleted in the order nothing of it outlives what it runs on: its alasio and
|
|
21
|
-
* lake stopped, its
|
|
22
|
-
*
|
|
23
|
-
* all that is left in them
|
|
26
|
+
* lake stopped, its sessions' workspaces deleted through the sandbox gateway, their bound
|
|
27
|
+
* pods first (JuiceFS keeps every chunk a fork shares with main's), its computes stopped, its branch of Neon's deleted, and its namespaces
|
|
28
|
+
* with all that is left in them; its bot told to deliver nowhere first, its route, its
|
|
29
|
+
* topics and its principals gone last.
|
|
24
30
|
*/
|
|
25
31
|
import { randomBytes } from "node:crypto";
|
|
26
32
|
import { Console, Effect, Predicate, Redacted, Result, Schedule, Schema } from "effect";
|
|
27
33
|
import { COMPUTE_PORT, computeId, MAIN, nameProblem, tokenSha256 } from "../../neon/control/branches.js";
|
|
28
34
|
import { scramVerifier } from "../../neon/control/scram.js";
|
|
29
|
-
import { LAKE_ROLE, ROLE } from "../../neon/control/secrets.js";
|
|
35
|
+
import { HARNESS_ROLE, LAKE_ROLE, ROLE } from "../../neon/control/secrets.js";
|
|
36
|
+
import { BINDING_LABEL, environmentKey, KEY_ANNOTATION } from "../../src/binder/names.js";
|
|
37
|
+
import { sessionKey, volumeIdOfKey } from "../../src/sandbox/names.js";
|
|
30
38
|
import { branchNamespace, branchSessionsNamespace, forkToken } from "../../src/branch/names.js";
|
|
31
39
|
import { memoryBytes, memoryText } from "./capacity.js";
|
|
32
|
-
import { installConfigOf, OperatorConfigError,
|
|
40
|
+
import { installConfigOf, OperatorConfigError, targetKind } from "./config.js";
|
|
41
|
+
import { recordedBaseline } from "./cpu-baseline.js";
|
|
33
42
|
import { runIn, runningPod, runningPodIn } from "./commands/common.js";
|
|
34
|
-
import {
|
|
43
|
+
import { gatewayCalls } from "./gateway-calls.js";
|
|
44
|
+
import { kind, KubeApi, refOf } from "./kube/api.js";
|
|
35
45
|
import { applyObjects } from "./kube/apply.js";
|
|
36
|
-
import { awaitGone, awaitReady,
|
|
37
|
-
import {
|
|
46
|
+
import { awaitGone, awaitReady, readiness, selectorOf } from "./kube/rollout.js";
|
|
47
|
+
import { alasioPrincipal, environmentAccess, environmentLogSecret, LOG, loaderLogSecret, loaderPrincipal, logPrincipalSecret } from "./manifests/log.js";
|
|
38
48
|
import { branchObjects } from "./manifests/branch.js";
|
|
39
|
-
import {
|
|
49
|
+
import { REPLICA_NAME } from "./manifests/neon.js";
|
|
50
|
+
import { BRANCH_FORK_SECRET, BRANCH_LABEL, componentName, NAMESPACE, neonName, RELEASE, selectorLabels, SESSIONS_CALLER_SECRET } from "./manifests/common.js";
|
|
51
|
+
import { GATEWAY, sandboxServiceRuns } from "./manifests/sandbox-gateway.js";
|
|
52
|
+
import { LOADER_COMPONENT } from "./manifests/lake.js";
|
|
40
53
|
import { CLAUDE_SECRET, readClaudeToken, readTelegramBot, TELEGRAM_SECRET } from "./secrets.js";
|
|
54
|
+
import { TelegramBotApi } from "./telegram.js";
|
|
55
|
+
import { ensureRoute, registerBot, removeRoute } from "./webhook.js";
|
|
41
56
|
/** A branch environment alasio will not make or delete now, and why, as the operator is told. */
|
|
42
57
|
export class BranchRefused extends Schema.TaggedError()("BranchRefused", {
|
|
43
58
|
message: Schema.String,
|
|
@@ -60,14 +75,16 @@ const requiredSecret = (name, key) => Effect.flatMap(mainSecret(name, key), (val
|
|
|
60
75
|
const succeeded = (what) => (ran) => ran.exitCode === 0 ? Effect.succeed(ran.stdout) : Effect.fail(new BranchRefused({ message: `${what} failed (exit ${ran.exitCode}): ${ran.stderr.trim() || ran.stdout.trim()}` }));
|
|
61
76
|
/**
|
|
62
77
|
* Calls neon-control's API (neon/control/service.ts) in its pod, with the stack's admin
|
|
63
|
-
* token (the `alasio-branches` Secret's), which goes on stdin, never on a command line.
|
|
78
|
+
* token (the `alasio-branches` Secret's), which goes on stdin, never on a command line. A
|
|
79
|
+
* neon-control that does not answer holds a command 4 minutes at most, longer than it
|
|
80
|
+
* waits for a compute to wake (3 minutes).
|
|
64
81
|
*/
|
|
65
82
|
function neonControl(method, path, body) {
|
|
66
83
|
return Effect.gen(function* () {
|
|
67
84
|
const token = yield* requiredSecret(componentName("branches"), "control-token");
|
|
68
85
|
const pod = yield* runningPod("neon-control");
|
|
69
86
|
const command = [
|
|
70
|
-
"curl", "-sS", "-X", method, "-H", "@-",
|
|
87
|
+
"curl", "-sS", "--max-time", "240", "-X", method, "-H", "@-",
|
|
71
88
|
...(body === undefined ? [] : ["-H", "content-type: application/json", "--data-binary", JSON.stringify(body)]),
|
|
72
89
|
"-w", "\n%{http_code}", `http://127.0.0.1:8080${path}`,
|
|
73
90
|
];
|
|
@@ -79,8 +96,10 @@ function neonControl(method, path, body) {
|
|
|
79
96
|
return { status, body: parsed };
|
|
80
97
|
});
|
|
81
98
|
}
|
|
82
|
-
/** Each compute neon-control knows of, by its namespace
|
|
83
|
-
export const computeTimes = neonControl("GET", "/computes").pipe(Effect.map((answer) => new Map(answer.status === 200 && answer.body ? answer.body.computes.map((compute) => [compute.namespace
|
|
99
|
+
/** Each compute neon-control knows of, by its Deployment, `<namespace>/<name>`; none where neon-control does not answer. */
|
|
100
|
+
export const computeTimes = neonControl("GET", "/computes").pipe(Effect.map((answer) => new Map(answer.status === 200 && answer.body ? answer.body.computes.map((compute) => [`${compute.namespace}/${compute.name}`, compute]) : [])), Effect.orElseSucceed(() => new Map()));
|
|
101
|
+
/** Neon's tenant, as neon-control has it; null where neon-control does not answer, as before alasio runs. */
|
|
102
|
+
export const tenantView = neonControl("GET", "/tenant").pipe(Effect.map((answer) => (answer.status === 200 ? answer.body : null)), Effect.orElseSucceed(() => null));
|
|
84
103
|
/** What neon-control says of a refusal: its error, or its status. */
|
|
85
104
|
const refusalOf = (answer) => Predicate.hasProperty(answer.body, "error") ? String(answer.body.error) : `it answered ${answer.status}`;
|
|
86
105
|
/** Neon's branches but main, as neon-control lists them. */
|
|
@@ -97,14 +116,10 @@ const neonBranches = Effect.gen(function* () {
|
|
|
97
116
|
const awake = (name, namespace, options) => neonControl("POST", `/computes/${computeId(name)}/wake`).pipe(Effect.flatMap((answer) => answer.status === 200 ? Effect.void : Effect.fail(new BranchRefused({ message: `neon-control did not wake ${name}'s compute: ${refusalOf(answer)}` }))), Effect.andThen(awaitReady([{ ...DEPLOYMENT, namespace, name: neonName("compute") }], options)));
|
|
98
117
|
/** Runs `sql` as the compute's own superuser, in its pod: what psql printed of its one value. */
|
|
99
118
|
const onCompute = (namespace, pod, sql) => runIn({ namespace, pod, container: "compute" }, ["psql", "-h", "127.0.0.1", "-p", String(COMPUTE_PORT), "-U", "cloud_admin", "-d", "alasio", "-Atc", sql]).pipe(Effect.flatMap(succeeded(`asking the compute in ${namespace}`)), Effect.map((printed) => printed.trim()));
|
|
100
|
-
/** The
|
|
101
|
-
const
|
|
102
|
-
/** The
|
|
103
|
-
const
|
|
104
|
-
? of.containers.filter(({ name }) => !UNBRANCHED_CONTAINERS.includes(name ?? "")).reduce((sum, container) => sum + memoryBytes(container.usage?.memory ?? "0"), 0)
|
|
105
|
-
: memoryBytes(of.usage?.memory ?? "0");
|
|
106
|
-
/** The components a branch environment runs its own of. */
|
|
107
|
-
const BRANCHED_COMPONENTS = ["alasio", "neon-compute", "lake"];
|
|
119
|
+
/** The memory `of` uses now: a pod's containers', or a node's. */
|
|
120
|
+
const used = (of) => of.containers ? of.containers.reduce((sum, container) => sum + memoryBytes(container.usage?.memory ?? "0"), 0) : memoryBytes(of.usage?.memory ?? "0");
|
|
121
|
+
/** The components a branch environment runs its own of; its lake's loader only while it loads, as main's. */
|
|
122
|
+
const BRANCHED_COMPONENTS = ["alasio", "neon-compute", "neon-compute-ro", LOADER_COMPONENT];
|
|
108
123
|
/** What `measure` lists, or null where the cluster has no metrics server to answer. */
|
|
109
124
|
const measured = (measure) => measure.pipe(Effect.catchIf((error) => error.status === 404 || error.status === 503, () => Effect.succeed(null)));
|
|
110
125
|
/** What a branch takes, as main's alasio, compute and lake use memory now, and the most a node has free. */
|
|
@@ -137,7 +152,7 @@ function merged(base, overrides) {
|
|
|
137
152
|
export const branchConfig = Effect.fnUntraced(function* (config, overrides) {
|
|
138
153
|
const claude = (yield* readClaudeToken) !== null;
|
|
139
154
|
const install = merged(config.install, merged(overrides, { host: { enabled: false } }));
|
|
140
|
-
const decoded = installConfigOf(install, { claude,
|
|
155
|
+
const decoded = installConfigOf(install, { claude, target: targetKind(config.target) });
|
|
141
156
|
if (Result.isFailure(decoded))
|
|
142
157
|
return yield* new OperatorConfigError({ path: config.path, reason: `with the branch's overrides, ${decoded.failure}` });
|
|
143
158
|
return decoded.success;
|
|
@@ -181,7 +196,7 @@ export const createBranch = Effect.fnUntraced(function* (config, { name, bot, ov
|
|
|
181
196
|
return yield* new BranchRefused({ message: `there is a branch ${name} already` });
|
|
182
197
|
const main = yield* readTelegramBot;
|
|
183
198
|
if (main && Redacted.value(main.token) === Redacted.value(bot.token)) {
|
|
184
|
-
return yield* new BranchRefused({ message: "a branch's bot is its own: Telegram
|
|
199
|
+
return yield* new BranchRefused({ message: "a branch's bot is its own: Telegram delivers a bot's updates to one webhook, and main's bot's to main" });
|
|
185
200
|
}
|
|
186
201
|
const memory = yield* measureMemory;
|
|
187
202
|
if (memory === null)
|
|
@@ -191,16 +206,25 @@ export const createBranch = Effect.fnUntraced(function* (config, { name, bot, ov
|
|
|
191
206
|
}
|
|
192
207
|
// The branch's own, as the module says: none of main's passwords or tokens of its Neon.
|
|
193
208
|
const own = () => randomBytes(24).toString("base64url");
|
|
194
|
-
const credentials = { alasio: own(), lake: own(), compute: own() };
|
|
209
|
+
const credentials = { alasio: own(), lake: own(), harness: own(), compute: own(), log: own(), loader: own() };
|
|
195
210
|
// Their verifiers, each made once and given to whatever sets the role or answers for it.
|
|
196
|
-
const verifiers = { [ROLE]: scramVerifier(credentials.alasio), [LAKE_ROLE]: scramVerifier(credentials.lake) };
|
|
211
|
+
const verifiers = { [ROLE]: scramVerifier(credentials.alasio), [LAKE_ROLE]: scramVerifier(credentials.lake), [HARNESS_ROLE]: scramVerifier(credentials.harness) };
|
|
212
|
+
// Each of its principals on the log a password of its own, its alasio's the one in its Secret.
|
|
213
|
+
const access = environmentAccess(name);
|
|
214
|
+
const passwords = { [alasioPrincipal(name)]: credentials.log, [loaderPrincipal(name)]: credentials.loader };
|
|
215
|
+
const log = { ...access, principals: access.principals.map((principal) => ({ ...principal, password: passwords[principal.name] ?? own() })) };
|
|
197
216
|
// Main's URL, through the proxy, with the branch's password, on the branch's compute.
|
|
198
217
|
const url = new URL(yield* requiredSecret(componentName("database"), "url"));
|
|
199
218
|
url.password = credentials.alasio;
|
|
200
219
|
url.searchParams.set("options", `endpoint=${computeId(name)}`);
|
|
220
|
+
// The harness host's, the same as its own role.
|
|
221
|
+
const harnessUrl = new URL(url);
|
|
222
|
+
harnessUrl.username = HARNESS_ROLE;
|
|
223
|
+
harnessUrl.password = credentials.harness;
|
|
201
224
|
const lake = settings.lake.enabled ? yield* copiedSecret(name, componentName("lake"), ["LAKE_S3_KEY", "LAKE_S3_SECRET"]) : null;
|
|
202
225
|
const secrets = [
|
|
203
|
-
branchSecret(name, componentName("database"), { url: url.toString(), "lake-verifier": verifiers[LAKE_ROLE] }),
|
|
226
|
+
branchSecret(name, componentName("database"), { url: url.toString(), "lake-verifier": verifiers[LAKE_ROLE], "harness-verifier": verifiers[HARNESS_ROLE] }),
|
|
227
|
+
branchSecret(name, componentName("harness-database"), { url: harnessUrl.toString() }),
|
|
204
228
|
branchSecret(name, neonName("compute"), { NEON_CONTROL_PLANE_TOKEN: credentials.compute }),
|
|
205
229
|
// The lake service's: main's object store identity, the one thing of main's a branch is given (see the module), and its role's password.
|
|
206
230
|
...(lake ? [{ ...lake, data: { ...lake.data, LAKE_DATABASE_PASSWORD: Buffer.from(credentials.lake, "utf8").toString("base64") } }] : []),
|
|
@@ -208,6 +232,19 @@ export const createBranch = Effect.fnUntraced(function* (config, { name, bot, ov
|
|
|
208
232
|
...(yield* Effect.forEach(settings.imagePullSecrets, (secret) => copiedSecret(name, secret))),
|
|
209
233
|
branchSecret(name, TELEGRAM_SECRET, { token: Redacted.value(bot.token), allowedUserIds: bot.allowedUserIds.join(",") }),
|
|
210
234
|
branchSecret(name, BRANCH_FORK_SECRET, { token: forkToken(yield* requiredSecret(componentName("branches"), "fork-key"), name) }),
|
|
235
|
+
// Its callers' key to the sandbox gateway, its own of the gateway's, which signs its own sessions' tokens alone.
|
|
236
|
+
...(sandboxServiceRuns(settings)
|
|
237
|
+
? [branchSecret(name, SESSIONS_CALLER_SECRET, { "caller-key": environmentKey(Buffer.from(yield* requiredSecret(GATEWAY, "caller-key")), name).toString() })]
|
|
238
|
+
: []),
|
|
239
|
+
branchSecret(name, environmentLogSecret({ namespace: branchNamespace(name), branch: name }), { username: alasioPrincipal(name), password: credentials.log }),
|
|
240
|
+
// Its lake loader's, which reads its wake topic alone; and KEDA's, which may describe
|
|
241
|
+
// how far behind that is and read nothing, which its loader's scaler reads as.
|
|
242
|
+
...(lake
|
|
243
|
+
? [
|
|
244
|
+
branchSecret(name, loaderLogSecret({ namespace: branchNamespace(name), branch: name }), { username: loaderPrincipal(name), password: credentials.loader }),
|
|
245
|
+
yield* copiedSecret(name, logPrincipalSecret("scaler")),
|
|
246
|
+
]
|
|
247
|
+
: []),
|
|
211
248
|
];
|
|
212
249
|
// At main's current WAL position, so the branch holds every commit main has made.
|
|
213
250
|
yield* awake(MAIN, NAMESPACE, options);
|
|
@@ -220,11 +257,19 @@ export const createBranch = Effect.fnUntraced(function* (config, { name, bot, ov
|
|
|
220
257
|
});
|
|
221
258
|
if (made.status !== 201 && made.status !== 200)
|
|
222
259
|
return yield* new BranchRefused({ message: `neon-control did not make the branch ${name}: ${refusalOf(made)}` });
|
|
223
|
-
|
|
260
|
+
// Its principals on the log, their ACLs and its topics, made by the log's access applier.
|
|
261
|
+
yield* changeEnvironment("environment", log);
|
|
262
|
+
const route = yield* ensureRoute(name, bot.allowedUserIds);
|
|
263
|
+
// Its sandbox pools main's, held to the CPU baseline main's are.
|
|
264
|
+
const { baseline } = yield* recordedBaseline;
|
|
265
|
+
const objects = branchObjects(settings, name, baseline);
|
|
224
266
|
yield* Effect.forEach(objects.filter((object) => object.kind === "Namespace"), (namespace) => kube.apply(namespace), { discard: true });
|
|
225
267
|
yield* Effect.forEach(secrets, (secret) => kube.apply(secret), { discard: true });
|
|
226
268
|
yield* applyObjects(objects, options);
|
|
269
|
+
yield* registerBot(settings, name, bot, route, options);
|
|
227
270
|
});
|
|
271
|
+
/** Makes, or forgets, an environment's access on the log, by the access applier beside its first node (src/log/access.ts). */
|
|
272
|
+
const changeEnvironment = (change, access) => runIn({ namespace: NAMESPACE, pod: `${LOG}-0`, container: "access" }, ["node", "/opt/alasio/src/log/access.ts", change], JSON.stringify(access)).pipe(Effect.flatMap(succeeded(change === "environment" ? "making the branch's principal on the log" : "forgetting the branch's principal on the log")));
|
|
228
273
|
/** The memory the workloads of `namespace` request. */
|
|
229
274
|
const requestedIn = (namespace) => Effect.flatMap(KubeApi, (kube) => kube.list(DEPLOYMENT, { namespace })).pipe(Effect.map((deployments) => deployments.flatMap(({ spec }) => spec?.template.spec?.containers ?? []).reduce((sum, container) => sum + memoryBytes(container.resources?.requests?.["memory"] ?? "0"), 0)));
|
|
230
275
|
/** The namespaces of branch environments, each its own. */
|
|
@@ -286,10 +331,37 @@ const stopped = Effect.fnUntraced(function* (namespace, names, options) {
|
|
|
286
331
|
const pods = (yield* Effect.forEach(workloads, ({ spec }) => kube.list(POD, { namespace, labelSelector: selectorOf(spec?.selector.matchLabels ?? {}) }))).flat();
|
|
287
332
|
yield* removed([...workloads, ...pods].map(refOf), options);
|
|
288
333
|
});
|
|
334
|
+
/** The workspaces of the sessions of `sessions`, a branch's sessions' namespace, bound now, by their pods: their names. */
|
|
335
|
+
const boundWorkspaces = (sessions) => Effect.flatMap(KubeApi, (kube) => kube.list(POD, { namespace: sessions, labelSelector: BINDING_LABEL })).pipe(Effect.map((pods) => pods.flatMap(({ metadata }) => volumeIdOfKey(metadata?.annotations?.[KEY_ANNOTATION] ?? "") ?? [])));
|
|
336
|
+
/** What the sandbox gateway answers of an environment's workspaces. */
|
|
337
|
+
const WorkspacesAnswer = Schema.fromJsonString(Schema.Struct({ workspaces: Schema.Array(Schema.String) }));
|
|
338
|
+
/**
|
|
339
|
+
* Deletes the workspaces of the branch `name`'s sessions through the sandbox gateway, as the
|
|
340
|
+
* branch's own key signs its calls, of the gateway's caller key: their directories in
|
|
341
|
+
* workspace storage, and their snapshots, in the bucket and every node's cache
|
|
342
|
+
* (src/gateway/sessions.ts). The pods bound to them now are deleted first, which the gateway
|
|
343
|
+
* releases them on; one the gateway still holds, bound or being released, is asked again
|
|
344
|
+
* until it is deleted, within the timeout. Nothing where there is no sandbox service, as
|
|
345
|
+
* there is then no caller key of its.
|
|
346
|
+
*/
|
|
347
|
+
const deleteWorkspaces = Effect.fnUntraced(function* (name, options) {
|
|
348
|
+
const master = yield* mainSecret(GATEWAY, "caller-key");
|
|
349
|
+
if (master === null)
|
|
350
|
+
return;
|
|
351
|
+
const kube = yield* KubeApi;
|
|
352
|
+
yield* removed((yield* kube.list(POD, { namespace: branchSessionsNamespace(name), labelSelector: BINDING_LABEL })).map(refOf), options);
|
|
353
|
+
const call = yield* gatewayCalls;
|
|
354
|
+
const callerKey = environmentKey(Buffer.from(master), name);
|
|
355
|
+
const listed = yield* call({ callerKey, environment: name, key: "workspaces", method: "GET", path: "/workspace/all" });
|
|
356
|
+
if (listed.status !== 200)
|
|
357
|
+
return yield* new BranchRefused({ message: `the sandbox gateway did not list its workspaces: it answered ${listed.status}: ${listed.text}` });
|
|
358
|
+
const { workspaces } = yield* Schema.decodeUnknownEffect(WorkspacesAnswer)(listed.text).pipe(Effect.mapError((error) => new BranchRefused({ message: `the sandbox gateway's list of its workspaces is not one: ${error.message}` })));
|
|
359
|
+
yield* Effect.forEach(workspaces, (workspace) => call({ callerKey, environment: name, key: sessionKey(workspace), method: "DELETE", path: "/workspace" }).pipe(Effect.flatMap(({ status, text }) => status === 204 ? Effect.void : Effect.fail(new BranchRefused({ message: `the sandbox gateway did not delete its workspace ${workspace}: it answered ${status}: ${text}` }))), Effect.retry({ while: (error) => error.message.includes("answered 409"), schedule: Schedule.max([Schedule.spaced(options.poll), Schedule.during(options.timeout)]) })), { discard: true });
|
|
360
|
+
}, Effect.scoped, Effect.catchTag("GatewayUnreached", (error) => Effect.fail(new BranchRefused({ message: `its workspaces could not be deleted through the sandbox gateway: ${error.message}` }))));
|
|
289
361
|
/**
|
|
290
362
|
* Deletes the branch environment `name`, as the module says. Unless `force`, refuses
|
|
291
363
|
* while its alasio has a turn running, as its database says, or when that cannot be
|
|
292
|
-
* read.
|
|
364
|
+
* read, and while a workspace of its sessions is bound.
|
|
293
365
|
*/
|
|
294
366
|
export const deleteBranch = Effect.fnUntraced(function* (name, { force }, options) {
|
|
295
367
|
const kube = yield* KubeApi;
|
|
@@ -303,15 +375,19 @@ export const deleteBranch = Effect.fnUntraced(function* (name, { force }, option
|
|
|
303
375
|
const turns = yield* awake(name, namespace, options).pipe(Effect.andThen(runningPodIn(namespace, "neon-compute")), Effect.flatMap((pod) => onCompute(namespace, pod, "select count(*) from state.turns where state = 'active'")), Effect.catch((error) => Effect.fail(new BranchRefused({ message: `whether its alasio has a turn running cannot be read: ${error.message}; --force deletes it all the same` }))));
|
|
304
376
|
if (Number(turns) > 0)
|
|
305
377
|
return yield* new BranchRefused({ message: `its alasio has ${turns} turn${turns === "1" ? "" : "s"} running; --force deletes it all the same` });
|
|
378
|
+
const bound = yield* boundWorkspaces(sessions);
|
|
379
|
+
if (bound.length > 0) {
|
|
380
|
+
return yield* new BranchRefused({ message: `its session${bound.length === 1 ? "'s workspace" : "s' workspaces"} ${bound.join(", ")} ${bound.length === 1 ? "is" : "are"} bound; --force deletes it all the same` });
|
|
381
|
+
}
|
|
306
382
|
}
|
|
307
383
|
if (made) {
|
|
308
|
-
|
|
309
|
-
const
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
yield*
|
|
313
|
-
yield*
|
|
314
|
-
yield* stopped(namespace, [neonName("compute")], options);
|
|
384
|
+
// Its bot's updates delivered nowhere: what Telegram holds of them it keeps, for no one.
|
|
385
|
+
const token = (yield* kube.get({ ...SECRET, namespace, name: TELEGRAM_SECRET }))?.data?.["token"];
|
|
386
|
+
if (token)
|
|
387
|
+
yield* Effect.flatMap(TelegramBotApi, (telegram) => telegram.deleteWebhook(Redacted.make(Buffer.from(token, "base64").toString("utf8"))));
|
|
388
|
+
yield* stopped(namespace, [RELEASE, componentName(LOADER_COMPONENT)], options);
|
|
389
|
+
yield* deleteWorkspaces(name, options);
|
|
390
|
+
yield* stopped(namespace, [neonName("compute"), REPLICA_NAME], options);
|
|
315
391
|
}
|
|
316
392
|
if (branch) {
|
|
317
393
|
// neon-control answers 409 while the storage controller is still deleting it.
|
|
@@ -320,7 +396,8 @@ export const deleteBranch = Effect.fnUntraced(function* (name, { force }, option
|
|
|
320
396
|
: Effect.fail(new BranchRefused({ message: `neon-control did not delete the branch ${name}: ${refusalOf(answer)}` }))), Effect.retry({ while: (error) => error._tag === "BranchRefused" && error.message.includes("still deleting"), schedule: Schedule.max([Schedule.spaced(options.poll), Schedule.during(options.timeout)]) }));
|
|
321
397
|
}
|
|
322
398
|
yield* removed([namespace, sessions].map((each) => ({ ...NAMESPACE_KIND, name: each })), options);
|
|
323
|
-
// What of its is the cluster's: its
|
|
324
|
-
yield*
|
|
399
|
+
// What of its is the cluster's: its route, its topic and its principal.
|
|
400
|
+
yield* removeRoute(name);
|
|
401
|
+
yield* changeEnvironment("forget", environmentAccess(name));
|
|
325
402
|
});
|
|
326
403
|
//# sourceMappingURL=branches.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branches.js","sourceRoot":"","sources":["../../../src/branches.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"branches.js","sourceRoot":"","sources":["../../../src/branches.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,8 +29,9 @@ import { SNAPSHOT_CACHE_DIR } from "../../../src/node-agent/names.js";
|
|
|
29
29
|
import { imageReference } from "../images.js";
|
|
30
30
|
import { NODE_IMAGE } from "../release.js";
|
|
31
31
|
import { DockerEngine } from "./docker-engine.js";
|
|
32
|
-
import { awaitReady as waitFor, clusterKubeconfig,
|
|
32
|
+
import { awaitReady as waitFor, clusterKubeconfig, containerdFiles, gvisorRuntimeClasses, KUBELET_ARGS, nodeHostsWith, NotYet, readySince, registriesYaml, staleRuntimeClasses, WAITS, writeKubeconfig, } from "./k3s.js";
|
|
33
33
|
import { gvisorReleases, NODE_PINS } from "./node.js";
|
|
34
|
+
import { STARGZ_MEMORY_LIMIT, STARGZ_ROOT, stargzConfig } from "./stargz.js";
|
|
34
35
|
import { tarArchive } from "./tar.js";
|
|
35
36
|
/** The cluster cannot be made as asked: something of its name is not its own, or its settings cannot hold. */
|
|
36
37
|
export class ClusterUnusable extends Schema.TaggedError()("ClusterUnusable", {
|
|
@@ -68,6 +69,7 @@ const NODE_VOLUMES = [
|
|
|
68
69
|
["log", "/var/log"],
|
|
69
70
|
// The snapshots of sandboxes gVisor saves whole, which the node restores them from.
|
|
70
71
|
["snapshots", SNAPSHOT_CACHE_DIR],
|
|
72
|
+
["stargz", STARGZ_ROOT],
|
|
71
73
|
];
|
|
72
74
|
/** The API server's port in the server node. */
|
|
73
75
|
const K3S_PORT = 6443;
|
|
@@ -77,6 +79,12 @@ const K3S_KUBECONFIG = "/etc/rancher/k3s/k3s.yaml";
|
|
|
77
79
|
const K3S_TOKEN = "/var/lib/rancher/k3s/server/token";
|
|
78
80
|
/** The variable the node image's entrypoint writes k3s's registries.yaml from, before k3s starts. */
|
|
79
81
|
const REGISTRIES_ENV = "ALASIO_REGISTRIES";
|
|
82
|
+
/** The variable the node image's entrypoint writes stargz-snapshotter's daemon's configuration from, before it starts it. */
|
|
83
|
+
const STARGZ_CONFIG_ENV = "ALASIO_STARGZ_CONFIG";
|
|
84
|
+
/** The variable the node image's entrypoint gives the daemon, and its FUSE manager, as Go's soft limit on their heaps (./stargz.ts's STARGZ_MEMORY_LIMIT). */
|
|
85
|
+
const STARGZ_MEMORY_ENV = "ALASIO_STARGZ_MEMORY_LIMIT";
|
|
86
|
+
/** Where the node image's entrypoint writes the pid of stargz-snapshotter's daemon, at each of the daemon's starts. */
|
|
87
|
+
const STARGZ_PID = "/run/containerd-stargz-grpc/daemon.pid";
|
|
80
88
|
/** The `index`th address of the IPv4 subnet `cidr` (a.b.c.d/n), its network address the 0th; null when it has no such host address. */
|
|
81
89
|
export function subnetAddress(cidr, index) {
|
|
82
90
|
const match = /^(\d+)\.(\d+)\.(\d+)\.(\d+)\/(\d+)$/u.exec(cidr);
|
|
@@ -135,8 +143,11 @@ const ABORT_FUSE = [
|
|
|
135
143
|
' if [ -e "$abort" ]; then echo 1 >"$abort"; fi',
|
|
136
144
|
"done",
|
|
137
145
|
].join("\n");
|
|
138
|
-
/**
|
|
139
|
-
|
|
146
|
+
/**
|
|
147
|
+
* What every node's k3s is given: kubelet's settings, and no snapshotter, as containerd's
|
|
148
|
+
* files in its container say stargz-snapshotter's daemon's (./stargz.ts).
|
|
149
|
+
*/
|
|
150
|
+
const nodeArgs = [...KUBELET_ARGS.map((arg) => `--kubelet-arg=${arg}`), "--snapshotter="];
|
|
140
151
|
/** A digest of `spec` and the `files` put into its container that two share only when they are the same. */
|
|
141
152
|
const specHash = (spec, files) => createHash("sha256").update(JSON.stringify([spec, [...files]])).digest("hex");
|
|
142
153
|
/** The tar archive of `files`, by their paths, which Docker extracts at a container's root: each file with the directories it is in. */
|
|
@@ -160,17 +171,18 @@ const makeDockerCluster = Effect.fnUntraced(function* ({ name: cluster, apiPort,
|
|
|
160
171
|
const server = `${cluster}-server-0`;
|
|
161
172
|
const nodes = [server, ...Array.from({ length: agents }, (_, index) => `${cluster}-agent-${index}`)];
|
|
162
173
|
const unusable = (reason) => new ClusterUnusable({ cluster, reason });
|
|
163
|
-
/**
|
|
164
|
-
const files =
|
|
174
|
+
/** containerd's files, which pull through stargz-snapshotter's daemon and make each gVisor release the node image holds a runtime, in every node. */
|
|
175
|
+
const files = containerdFiles(gvisor, { systemd: false });
|
|
165
176
|
/**
|
|
166
177
|
* The container of `node`, with what every node has: privileged, as k3s in Docker needs,
|
|
167
|
-
* its volumes, the storage directory and the host mounts,
|
|
178
|
+
* its volumes, the storage directory and the host mounts, the registries, and
|
|
179
|
+
* stargz-snapshotter's daemon's configuration.
|
|
168
180
|
*/
|
|
169
181
|
const nodeContainer = (node, role, address, command, env) => ({
|
|
170
182
|
Image: image,
|
|
171
183
|
Hostname: node,
|
|
172
184
|
Cmd: command,
|
|
173
|
-
Env: [...env, ...(registries ? [`${REGISTRIES_ENV}=${registriesYaml(registries)}`] : [])],
|
|
185
|
+
Env: [...env, ...(registries ? [`${REGISTRIES_ENV}=${registriesYaml(registries)}`] : []), `${STARGZ_CONFIG_ENV}=${stargzConfig(registries)}`, `${STARGZ_MEMORY_ENV}=${STARGZ_MEMORY_LIMIT}`],
|
|
174
186
|
Labels: { ...labels, [ROLE_LABEL]: role },
|
|
175
187
|
...(role === "server" ? { ExposedPorts: { [API_PORT]: {} } } : {}),
|
|
176
188
|
HostConfig: {
|
|
@@ -299,13 +311,13 @@ const makeDockerCluster = Effect.fnUntraced(function* ({ name: cluster, apiPort,
|
|
|
299
311
|
// Where the kubeconfig reaches it.
|
|
300
312
|
"--tls-san=127.0.0.1",
|
|
301
313
|
`--default-local-storage-path=${storagePath}`,
|
|
302
|
-
...
|
|
314
|
+
...nodeArgs,
|
|
303
315
|
], []));
|
|
304
316
|
yield* awaitReady("its API server", kubectl(["get", "--raw=/readyz"]));
|
|
305
317
|
if (agents > 0) {
|
|
306
318
|
const token = (yield* awaitReady("its token", docker.readFile(server, K3S_TOKEN))).toString("utf8").trim();
|
|
307
319
|
for (const [index, agent] of nodes.slice(1).entries()) {
|
|
308
|
-
yield* ensureNode(agent, nodeContainer(agent, "agent", yield* nodeAddress(networkSubnet, 1 + index), ["agent", ...
|
|
320
|
+
yield* ensureNode(agent, nodeContainer(agent, "agent", yield* nodeAddress(networkSubnet, 1 + index), ["agent", ...nodeArgs], [
|
|
309
321
|
`K3S_URL=https://${server}:${K3S_PORT}`,
|
|
310
322
|
`K3S_TOKEN=${token}`,
|
|
311
323
|
]));
|
|
@@ -355,7 +367,10 @@ const makeDockerCluster = Effect.fnUntraced(function* ({ name: cluster, apiPort,
|
|
|
355
367
|
}),
|
|
356
368
|
status: Effect.all({
|
|
357
369
|
docker: Effect.map(docker.version, ({ Version }) => Version),
|
|
358
|
-
|
|
370
|
+
// The daemon's pid, as the node's entrypoint writes it at each of its starts.
|
|
371
|
+
nodes: Effect.flatMap(existingNodes, (found) => Effect.forEach(found, (node) => node.state !== "running"
|
|
372
|
+
? Effect.succeed({ ...node, snapshotter: null })
|
|
373
|
+
: inNode(node.name, ["sh", "-c", `kill -0 "$(cat ${STARGZ_PID})"`]).pipe(Effect.as(true), Effect.catchTag("NodeCommandFailed", () => Effect.succeed(false)), Effect.map((snapshotter) => ({ ...node, snapshotter }))))),
|
|
359
374
|
}),
|
|
360
375
|
});
|
|
361
376
|
});
|