alasio 8.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 +61 -20
- 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 +43 -11
- package/dist/cli/src/cluster/k3s.js.map +1 -1
- package/dist/cli/src/cluster/node.js +107 -32
- 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/status.js +64 -12
- 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 +4 -1
- 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 +77 -29
- 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 +2 -3
- package/dist/cli/src/kube/api.js.map +1 -1
- package/dist/cli/src/kube/apply.js +15 -72
- package/dist/cli/src/kube/apply.js.map +1 -1
- package/dist/cli/src/kube/rollout.js +28 -16
- package/dist/cli/src/kube/rollout.js.map +1 -1
- package/dist/cli/src/manifests/admission.js +342 -223
- package/dist/cli/src/manifests/admission.js.map +1 -1
- package/dist/cli/src/manifests/alasio.js +58 -394
- 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 +60 -44
- 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 +64 -81
- 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 +10 -7
- package/dist/cli/src/manifests/index.js.map +1 -1
- package/dist/cli/src/manifests/lake.js +18 -4
- package/dist/cli/src/manifests/lake.js.map +1 -1
- package/dist/cli/src/manifests/log.js +32 -14
- package/dist/cli/src/manifests/log.js.map +1 -1
- package/dist/cli/src/manifests/neon.js +3 -3
- package/dist/cli/src/manifests/neon.js.map +1 -1
- package/dist/cli/src/manifests/network-policies.js +140 -74
- package/dist/cli/src/manifests/network-policies.js.map +1 -1
- package/dist/cli/src/manifests/node-agent.js +11 -4
- 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/workspace-storage.js +174 -89
- package/dist/cli/src/manifests/workspace-storage.js.map +1 -1
- package/dist/cli/src/neon-storage.js +54 -14
- package/dist/cli/src/neon-storage.js.map +1 -1
- package/dist/cli/src/release.js +9 -9
- package/dist/cluster/node/pins.json +9 -4
- package/dist/neon/control/branches.js +6 -6
- package/dist/neon/control/branches.js.map +1 -1
- package/dist/neon/control/secrets.js +14 -3
- 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 +8 -68
- package/dist/src/kube/sandbox-shape.js.map +1 -1
- package/dist/src/node-agent/names.js +52 -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/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 -320
- 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 -145
- package/dist/src/kube/config.js.map +0 -1
|
@@ -23,9 +23,9 @@ import { KubeConfig } from "@kubernetes/client-node";
|
|
|
23
23
|
import { Context, Effect, FileSystem, Layer, Schema } from "effect";
|
|
24
24
|
import { keptReleases, snapshotReleases } from "../kept-releases.js";
|
|
25
25
|
import { kind, KubeApi } from "../kube/api.js";
|
|
26
|
-
import { awaitReady, clusterKubeconfig, gvisorRuntimeClasses, nodeHostsWith, NotYet, readySince, staleRuntimeClasses, WAITS, writeKubeconfig, } from "./k3s.js";
|
|
26
|
+
import { awaitReady, clusterKubeconfig, gvisorRuntimeClasses, nodeHostsWith, NotYet, readySince, unservedPods, staleRuntimeClasses, WAITS, writeKubeconfig, } from "./k3s.js";
|
|
27
27
|
import { forgetInotifyStep, inotifyStep, Machine, under } from "./machine.js";
|
|
28
|
-
import { checked, CLUSTER_NETWORKS, ConfigureNode, downloads, filesDigest, gvisorReleases, InstallGvisor, InstallK3s, NODE_PINS, nodeFiles, OpenFirewall, ReadKubeconfig, readStamp, RemoveGvisor, RemoveNode, RemoveStorage, SERVICE, StartK3s, StopK3s, } from "./node.js";
|
|
28
|
+
import { checked, CLUSTER_NETWORKS, ConfigureNode, downloads, filesDigest, gvisorReleases, InstallGvisor, InstallStargz, InstallK3s, NODE_PINS, nodeFiles, OpenFirewall, ReadKubeconfig, readStamp, RemoveGvisor, RemoveNode, RemoveStorage, SERVICE, STARGZ_SERVICE, StartK3s, StopK3s, } from "./node.js";
|
|
29
29
|
import { Root } from "./root.js";
|
|
30
30
|
/** How the cluster names itself in what alasio says. */
|
|
31
31
|
const CLUSTER = "k3s on this machine";
|
|
@@ -72,7 +72,7 @@ export class DownloadFailed extends Schema.TaggedError()("DownloadFailed", {
|
|
|
72
72
|
return `${this.url} could not be downloaded: ${this.reason}`;
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
/** The releases of k3s and
|
|
75
|
+
/** The releases of k3s, gVisor and stargz-snapshotter a node is made of: those pinned, and how what they pin is downloaded. */
|
|
76
76
|
export class NodeReleases extends Context.Service()("alasio/cluster/NodeReleases") {
|
|
77
77
|
/** This version's pins, downloaded over HTTPS with Node's fetch, which follows redirects. */
|
|
78
78
|
static layer = Layer.succeed(NodeReleases, NodeReleases.of({
|
|
@@ -126,15 +126,24 @@ export function planNode(pins, { stamp, config, unit, kubeconfig, firewall, kept
|
|
|
126
126
|
const pinned = gvisorReleases(pins);
|
|
127
127
|
const installed = stamp?.gvisor ?? [];
|
|
128
128
|
const gvisor = { install: pinned.filter((release) => !installed.includes(release)), remove: installed.filter((release) => !kept.includes(release)) };
|
|
129
|
+
const stargz = stamp?.stargz !== pins.stargz.version;
|
|
129
130
|
const k3s = stamp?.k3s !== pins.k3s.version || !unit.loaded
|
|
130
131
|
? "install"
|
|
131
|
-
: configure || gvisor.install.length > 0 || gvisor.remove.length > 0
|
|
132
|
+
: configure || gvisor.install.length > 0 || gvisor.remove.length > 0 || stargz
|
|
132
133
|
? "restart"
|
|
133
134
|
: unit.active !== "active" || !unit.enabled
|
|
134
135
|
? "start"
|
|
135
136
|
: null;
|
|
136
137
|
const startsAnew = k3s === "install" || k3s === "restart";
|
|
137
|
-
return {
|
|
138
|
+
return {
|
|
139
|
+
firewall: firewall !== null && !opened ? firewall : null,
|
|
140
|
+
configure,
|
|
141
|
+
gvisor,
|
|
142
|
+
stargz,
|
|
143
|
+
k3s,
|
|
144
|
+
kubeconfig: k3s !== null || kubeconfig !== "current",
|
|
145
|
+
renew: kubeconfig === "expiring" && !startsAnew,
|
|
146
|
+
};
|
|
138
147
|
}
|
|
139
148
|
/** The cluster on this machine of the options its layer was given. */
|
|
140
149
|
export class HostCluster extends Context.Service()("alasio/cluster/HostCluster") {
|
|
@@ -180,6 +189,18 @@ const makeHostCluster = Effect.fnUntraced(function* ({ storagePath, hostAliases
|
|
|
180
189
|
return Effect.fail(new NotYet({ message: "no node has registered yet" }));
|
|
181
190
|
return waiting.length === 0 ? Effect.succeed(nodes) : Effect.fail(new NotYet({ message: `not reported ready since started: ${waiting.join(", ")}` }));
|
|
182
191
|
}));
|
|
192
|
+
/** Each of `nodes`' kubelet serving every pod bound to it that has not ended (unservedPods), as an exec of one is to reach it. */
|
|
193
|
+
const podsServed = (nodes) => Effect.gen(function* () {
|
|
194
|
+
const kube = yield* KubeApi;
|
|
195
|
+
const waiting = [];
|
|
196
|
+
for (const node of nodes) {
|
|
197
|
+
const name = node.metadata?.name ?? "";
|
|
198
|
+
const bound = yield* kube.list(kind("Pod"), { fieldSelector: `spec.nodeName=${name}` });
|
|
199
|
+
waiting.push(...unservedPods(bound, yield* kube.nodePods(name)));
|
|
200
|
+
}
|
|
201
|
+
if (waiting.length > 0)
|
|
202
|
+
return yield* new NotYet({ message: `its kubelet serves ${waiting.length} of its pods not yet: ${waiting.slice(0, 5).join(", ")}${waiting.length > 5 ? ", …" : ""}` });
|
|
203
|
+
});
|
|
183
204
|
/** CoreDNS's NodeHosts with the host aliases, patched only when they differ, and only over the version read. */
|
|
184
205
|
const applyHostAliases = (nodes) => Effect.gen(function* () {
|
|
185
206
|
const kube = yield* KubeApi;
|
|
@@ -222,9 +243,10 @@ const makeHostCluster = Effect.fnUntraced(function* ({ storagePath, hostAliases
|
|
|
222
243
|
const started = plan.k3s === null && !plan.renew ? 0 : Date.now();
|
|
223
244
|
const outcome = yield* Effect.scoped(Effect.gen(function* () {
|
|
224
245
|
// Downloaded as the operator, and read by root, which checks them again.
|
|
225
|
-
const directory = plan.gvisor.install.length > 0 || plan.k3s === "install" ? yield* fs.makeTempDirectoryScoped({ prefix: "alasio-node-" }) : "";
|
|
246
|
+
const directory = plan.gvisor.install.length > 0 || plan.stargz || plan.k3s === "install" ? yield* fs.makeTempDirectoryScoped({ prefix: "alasio-node-" }) : "";
|
|
226
247
|
const from = downloads(pins);
|
|
227
248
|
const installs = yield* Effect.forEach([...from.gvisor].filter(([release]) => plan.gvisor.install.includes(release)), ([release, download]) => Effect.map(fetched(directory, `gvisor-${release}.tar.zstd`, download), (archive) => InstallGvisor.make({ release, archive })));
|
|
249
|
+
const stargz = plan.stargz ? yield* fetched(directory, "stargz-snapshotter.tar.gz", from.stargz) : null;
|
|
228
250
|
const binary = plan.k3s === "install" ? yield* fetched(directory, "k3s", from.k3s) : null;
|
|
229
251
|
const script = plan.k3s === "install" ? yield* fetched(directory, "install.sh", from.installScript) : null;
|
|
230
252
|
const steps = [
|
|
@@ -233,6 +255,7 @@ const makeHostCluster = Effect.fnUntraced(function* ({ storagePath, hostAliases
|
|
|
233
255
|
...(plan.configure ? [ConfigureNode.make({ config })] : []),
|
|
234
256
|
...installs,
|
|
235
257
|
...plan.gvisor.remove.map((release) => RemoveGvisor.make({ release })),
|
|
258
|
+
...(stargz ? [InstallStargz.make({ version: pins.stargz.version, ...(stamp?.stargz ? { previous: stamp.stargz } : {}), archive: stargz })] : []),
|
|
236
259
|
...(binary && script ? [InstallK3s.make({ version: pins.k3s.version, ...(stamp?.k3s ? { previous: stamp.k3s } : {}), role: config.role, binary, script })] : []),
|
|
237
260
|
...(plan.k3s === "restart" || plan.k3s === "start" ? [StartK3s.make({ restart: plan.k3s === "restart" })] : []),
|
|
238
261
|
...(plan.kubeconfig ? [ReadKubeconfig.make({ renew: plan.renew })] : []),
|
|
@@ -246,6 +269,9 @@ const makeHostCluster = Effect.fnUntraced(function* ({ storagePath, hostAliases
|
|
|
246
269
|
}
|
|
247
270
|
yield* Effect.gen(function* () {
|
|
248
271
|
const nodes = yield* waitFor("its node", nodeReady(started));
|
|
272
|
+
// Started anew, its kubelet takes its pods back after it reports itself ready.
|
|
273
|
+
if (started > 0)
|
|
274
|
+
yield* waitFor("its node's pods", podsServed(nodes));
|
|
249
275
|
yield* waitFor("CoreDNS's NodeHosts", applyHostAliases(nodes));
|
|
250
276
|
yield* waitFor("gVisor's RuntimeClasses", applyRuntimeClasses(kept));
|
|
251
277
|
}).pipe(Effect.provide(KubeApi.layer({ path: kubeconfig })));
|
|
@@ -268,7 +294,7 @@ const makeHostCluster = Effect.fnUntraced(function* ({ storagePath, hostAliases
|
|
|
268
294
|
...(forget ? [forget] : []),
|
|
269
295
|
]);
|
|
270
296
|
}),
|
|
271
|
-
status: Effect.map(installed, ({ unit, stamp }) => ({ unit, installed: stamp })),
|
|
297
|
+
status: Effect.map(Effect.all([installed, systemd.unit(STARGZ_SERVICE)]), ([{ unit, stamp }, snapshotter]) => ({ unit, snapshotter, installed: stamp })),
|
|
272
298
|
});
|
|
273
299
|
});
|
|
274
300
|
//# sourceMappingURL=host.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../../src/cluster/host.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../../src/cluster/host.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* What the clusters alasio makes on this machine, in Docker (./docker.ts) and on the
|
|
3
3
|
* machine itself (./host.ts), share of k3s: how kubelet is set, the registries containerd
|
|
4
|
-
* pulls from, the host aliases CoreDNS resolves,
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* pulls from, the host aliases CoreDNS resolves, containerd's files, which pull images
|
|
5
|
+
* through stargz-snapshotter's daemon and keep the gVisor releases as runtimes, and their
|
|
6
|
+
* RuntimeClasses, nodes ready since they started, the kubeconfig k3s writes made the
|
|
7
|
+
* operator's, and waits for all that.
|
|
7
8
|
*/
|
|
8
9
|
import { randomUUID } from "node:crypto";
|
|
9
10
|
import { dirname } from "node:path";
|
|
10
11
|
import { KubeConfig } from "@kubernetes/client-node";
|
|
11
12
|
import { Duration, Effect, FileSystem, Schedule, Schema } from "effect";
|
|
12
13
|
import { CONTAINERD, gvisorDirectory, gvisorHandler, gvisorRuntimeClass } from "../../../src/node-agent/names.js";
|
|
14
|
+
import { SNAPSHOTTER, STARGZ_ROOT, STARGZ_SOCKET } from "./stargz.js";
|
|
13
15
|
/**
|
|
14
16
|
* kubelet's settings, as its arguments say them, for a machine the cluster shares with
|
|
15
17
|
* everything else on it:
|
|
@@ -36,15 +38,16 @@ export const KUBELET_ARGS = [
|
|
|
36
38
|
*/
|
|
37
39
|
const GVISOR_POD_ANNOTATIONS = ["dev.gvisor.internal.restore.*", "dev.gvisor.internal.cpufeatures", "dev.gvisor.spec.mount.*"];
|
|
38
40
|
/**
|
|
39
|
-
* The files
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
41
|
+
* The files of k3s's containerd on a node pulling images through stargz-snapshotter's
|
|
42
|
+
* daemon and running each of gVisor's `releases`, by their paths: the containerd template,
|
|
43
|
+
* k3s's own configuration with the CRI's images pulled through the daemon (./stargz.ts),
|
|
44
|
+
* and a runtime for each release, which runs that release's shim; and each runtime's runsc
|
|
45
|
+
* options, which run that release's runsc, and, where `systemd` runs the machine, place
|
|
46
|
+
* its sandboxes' cgroups through systemd, as kubelet does there. alasio writes them on the
|
|
47
|
+
* machine (the host target), and puts them into each node's container (the cluster in
|
|
48
|
+
* Docker). Pure, for tests.
|
|
46
49
|
*/
|
|
47
|
-
export function
|
|
50
|
+
export function containerdFiles(releases, { systemd }) {
|
|
48
51
|
const optionsPath = (release) => `${CONTAINERD}/${gvisorHandler(release)}.toml`;
|
|
49
52
|
const runtime = (release) => {
|
|
50
53
|
const table = `plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.${gvisorHandler(release)}`;
|
|
@@ -87,6 +90,21 @@ export function gvisorRuntimeFiles(releases, { systemd }) {
|
|
|
87
90
|
[`${CONTAINERD}/config-v3.toml.tmpl`, file([
|
|
88
91
|
`{{ template "base" . }}`,
|
|
89
92
|
"",
|
|
93
|
+
"# Images pulled through stargz-snapshotter's daemon (cli/src/cluster/stargz.ts), which mounts an eStargz layer",
|
|
94
|
+
"# lazily: k3s, its snapshotter set to none, says nothing of the CRI's images, and alasio says it here, the",
|
|
95
|
+
"# snapshot annotations the daemon reads passed.",
|
|
96
|
+
"[plugins.'io.containerd.cri.v1.images']",
|
|
97
|
+
` snapshotter = "${SNAPSHOTTER}"`,
|
|
98
|
+
" disable_snapshot_annotations = false",
|
|
99
|
+
" use_local_image_pull = true",
|
|
100
|
+
"",
|
|
101
|
+
`[proxy_plugins.${SNAPSHOTTER}]`,
|
|
102
|
+
` type = "snapshot"`,
|
|
103
|
+
` address = "${STARGZ_SOCKET}"`,
|
|
104
|
+
`[proxy_plugins.${SNAPSHOTTER}.exports]`,
|
|
105
|
+
` root = "${STARGZ_ROOT}/"`,
|
|
106
|
+
` enable_remote_snapshot_annotations = "true"`,
|
|
107
|
+
"",
|
|
90
108
|
"# Each gVisor release alasio keeps, a runtime of its own, runsc-RELEASE (its dots made dashes), which runs that",
|
|
91
109
|
"# release's shim, with the pod annotations gVisor reads, and the runsc options beside this file.",
|
|
92
110
|
...releases.flatMap(runtime),
|
|
@@ -155,6 +173,20 @@ export function nodeHostsWith(nodeHosts, nodes, aliases) {
|
|
|
155
173
|
* the second.
|
|
156
174
|
*/
|
|
157
175
|
export const readySince = (node, started) => node.status?.conditions?.some(({ type, status, lastHeartbeatTime }) => type === "Ready" && status === "True" && lastHeartbeatTime !== undefined && new Date(lastHeartbeatTime).getTime() >= Math.floor(started / 1000) * 1000) ?? false;
|
|
176
|
+
/**
|
|
177
|
+
* Of the pods the API server has bound to a node (`bound`), those its kubelet does not serve
|
|
178
|
+
* yet (`served`, the pods it lists as its own), by their namespace and name: each that has
|
|
179
|
+
* not ended, nor is being deleted. A node reports itself ready before its kubelet, started
|
|
180
|
+
* anew, has taken its pods back; until it has, what is asked of one through the API server, an
|
|
181
|
+
* exec or its logs, is answered 404, though the pod's own status, from before, says it runs.
|
|
182
|
+
*/
|
|
183
|
+
export function unservedPods(bound, served) {
|
|
184
|
+
const serving = new Set(served.map((pod) => pod.metadata?.uid));
|
|
185
|
+
return bound
|
|
186
|
+
.filter((pod) => pod.status?.phase !== "Succeeded" && pod.status?.phase !== "Failed" && pod.metadata?.deletionTimestamp === undefined)
|
|
187
|
+
.filter((pod) => !serving.has(pod.metadata?.uid))
|
|
188
|
+
.map((pod) => `${pod.metadata?.namespace}/${pod.metadata?.name}`);
|
|
189
|
+
}
|
|
158
190
|
/**
|
|
159
191
|
* The kubeconfig k3s wrote (`k3sYaml`), named `cluster`, and pointed at `server` when
|
|
160
192
|
* given; null when it is not a kubeconfig with a cluster and a user, as while k3s writes it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"k3s.js","sourceRoot":"","sources":["../../../../src/cluster/k3s.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"k3s.js","sourceRoot":"","sources":["../../../../src/cluster/k3s.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* This machine made a node of k3s, as the cluster alasio makes on it outside Docker is
|
|
3
3
|
* (./host.ts): k3s installed by its own install script, as the systemd service `k3s`, from
|
|
4
4
|
* the binary cluster/node/pins.json pins, with each gVisor release it pins beside it, each
|
|
5
|
-
* a runtime of containerd's (./k3s.ts), and
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* a runtime of containerd's (./k3s.ts), and stargz-snapshotter's daemon, the service
|
|
6
|
+
* `stargz-snapshotter`, its snapshotter (./stargz.ts), and set in
|
|
7
|
+
* /etc/rancher/k3s/config.yaml. The node image (cluster/node) is built from the same pins,
|
|
8
|
+
* its gVisor releases where the machine has them, and its k3s reads the same containerd
|
|
9
|
+
* files, so a node in Docker and one on a machine run the same k3s, gVisor and snapshotter
|
|
10
|
+
* alike.
|
|
9
11
|
*
|
|
10
12
|
* Every download is checked against its pin as the operator downloads it, and again as
|
|
11
13
|
* root before it is installed. What alasio installed, and the digest of the files that
|
|
@@ -19,13 +21,14 @@
|
|
|
19
21
|
*/
|
|
20
22
|
import { createHash, randomUUID } from "node:crypto";
|
|
21
23
|
import { dirname } from "node:path";
|
|
22
|
-
import { zstdDecompressSync } from "node:zlib";
|
|
24
|
+
import { gunzipSync, zstdDecompressSync } from "node:zlib";
|
|
23
25
|
import { Duration, Effect, FileSystem, Option, Schedule, Schema } from "effect";
|
|
24
26
|
import pins from "../../../cluster/node/pins.json" with { type: "json" };
|
|
25
27
|
import { CONTAINERD, GVISOR_RELEASES, gvisorDirectory, gvisorHandler } from "../../../src/node-agent/names.js";
|
|
26
28
|
import { Registries } from "../config.js";
|
|
27
|
-
import { clusterKubeconfig,
|
|
29
|
+
import { clusterKubeconfig, containerdFiles, KUBELET_ARGS, NotYet, registriesYaml } from "./k3s.js";
|
|
28
30
|
import { Machine, RootSystem, under } from "./machine.js";
|
|
31
|
+
import { STARGZ_CONFIG, STARGZ_EXECUTABLES, STARGZ_MEMORY_LIMIT, STARGZ_ROOT, STARGZ_SOCKET, stargzConfig } from "./stargz.js";
|
|
29
32
|
import { tarEntries } from "./tar.js";
|
|
30
33
|
/** This version's pins, cluster/node/pins.json's. */
|
|
31
34
|
export const NODE_PINS = pins;
|
|
@@ -40,16 +43,21 @@ export function currentGvisorRelease(pins = NODE_PINS) {
|
|
|
40
43
|
}
|
|
41
44
|
/**
|
|
42
45
|
* Where what `pins` pins is downloaded from: k3s's binary and install script from its
|
|
43
|
-
* repository,
|
|
44
|
-
* github.com/eaucoin/gvisor.
|
|
46
|
+
* repository, each gVisor release, by its name, from alasio's fork of it,
|
|
47
|
+
* github.com/eaucoin/gvisor, and stargz-snapshotter's from its repository.
|
|
45
48
|
*/
|
|
46
|
-
export const downloads = ({ k3s, gvisor }) => ({
|
|
49
|
+
export const downloads = ({ k3s, gvisor, stargz }) => ({
|
|
47
50
|
k3s: { url: `https://github.com/k3s-io/k3s/releases/download/${encodeURIComponent(k3s.version)}/k3s`, algorithm: "sha256", digest: k3s.sha256 },
|
|
48
51
|
installScript: { url: `https://raw.githubusercontent.com/k3s-io/k3s/${k3s.installScript.commit}/install.sh`, algorithm: "sha256", digest: k3s.installScript.sha256 },
|
|
49
52
|
gvisor: new Map(gvisor.releases.map(({ release, sha512 }) => [
|
|
50
53
|
release,
|
|
51
54
|
{ url: `https://github.com/eaucoin/gvisor/releases/download/release-${encodeURIComponent(release)}/gvisor-x86_64.tar.zstd`, algorithm: "sha512", digest: sha512 },
|
|
52
55
|
])),
|
|
56
|
+
stargz: {
|
|
57
|
+
url: `https://github.com/containerd/stargz-snapshotter/releases/download/${encodeURIComponent(stargz.version)}/stargz-snapshotter-${encodeURIComponent(stargz.version)}-linux-amd64.tar.gz`,
|
|
58
|
+
algorithm: "sha256",
|
|
59
|
+
digest: stargz.sha256,
|
|
60
|
+
},
|
|
53
61
|
});
|
|
54
62
|
const BIN = "/usr/local/bin";
|
|
55
63
|
const K3S_ETC = "/etc/rancher/k3s";
|
|
@@ -83,10 +91,19 @@ const SERVICE_CIDR = "10.43.0.0/16";
|
|
|
83
91
|
* (cli/src/manifests/network-policies.ts).
|
|
84
92
|
*/
|
|
85
93
|
export const CLUSTER_NETWORKS = [CLUSTER_CIDR, SERVICE_CIDR];
|
|
86
|
-
/**
|
|
87
|
-
|
|
94
|
+
/**
|
|
95
|
+
* The directory alasio's pods keep on the node, which nothing of k3s's removes: the workspaces'
|
|
96
|
+
* JuiceFS mount and its state and cache, its juicefs, and the attachments bound into sessions'
|
|
97
|
+
* pods, mounts all (cli/src/manifests/sandbox-gateway.ts, src/node-agent/names.ts).
|
|
98
|
+
*/
|
|
99
|
+
const NODE_DIRECTORY = "/var/lib/alasio";
|
|
88
100
|
/** What alasio installs of a gVisor release, in the release's directory: runsc and its shim, and the binaries runsc runs beside it. */
|
|
89
101
|
const GVISOR = ["runsc", "containerd-shim-runsc-v1", "gvisor-bin"];
|
|
102
|
+
/** stargz-snapshotter's daemon's systemd service, which k3s's wants, and with which it stops and restarts. */
|
|
103
|
+
export const STARGZ_SERVICE = "stargz-snapshotter";
|
|
104
|
+
const STARGZ_UNIT = `/etc/systemd/system/${STARGZ_SERVICE}.service`;
|
|
105
|
+
/** What k3s's service is given beside its install script's: the daemon, started before it. */
|
|
106
|
+
const K3S_DROP_IN = `/etc/systemd/system/${SERVICE}.service.d/alasio-stargz.conf`;
|
|
90
107
|
/**
|
|
91
108
|
* How a node is made: a server, its volumes in `storagePath`, pulling through
|
|
92
109
|
* `registries`, its containerd running each of the gVisor releases `gvisor`, the current
|
|
@@ -100,9 +117,11 @@ export const NodeConfig = Schema.Struct({
|
|
|
100
117
|
});
|
|
101
118
|
/**
|
|
102
119
|
* The files that make k3s and its containerd a node of `config`, by their paths: k3s's
|
|
103
|
-
* config.yaml, written as JSON, which YAML reads as it is,
|
|
104
|
-
*
|
|
105
|
-
*
|
|
120
|
+
* config.yaml, written as JSON, which YAML reads as it is, its snapshotter none, as
|
|
121
|
+
* containerd's files say the daemon's; the registries; the files that make containerd pull
|
|
122
|
+
* through stargz-snapshotter's daemon and run each gVisor release, where systemd runs the
|
|
123
|
+
* machine; and the daemon's configuration and service, which k3s's service wants, and
|
|
124
|
+
* with which it stops and restarts. Pure, for tests.
|
|
106
125
|
*/
|
|
107
126
|
export function nodeFiles(config) {
|
|
108
127
|
const k3s = {
|
|
@@ -111,11 +130,35 @@ export function nodeFiles(config) {
|
|
|
111
130
|
"service-cidr": SERVICE_CIDR,
|
|
112
131
|
"default-local-storage-path": config.storagePath,
|
|
113
132
|
"kubelet-arg": KUBELET_ARGS,
|
|
133
|
+
"snapshotter": "",
|
|
114
134
|
};
|
|
115
135
|
return new Map([
|
|
116
136
|
[CONFIG_YAML, `# k3s as alasio's cluster runs it: alasio up writes this file.\n${JSON.stringify(k3s)}\n`],
|
|
117
137
|
...(config.registries ? [[REGISTRIES_YAML, `${registriesYaml(config.registries)}\n`]] : []),
|
|
118
|
-
...
|
|
138
|
+
...containerdFiles(config.gvisor, { systemd: true }),
|
|
139
|
+
[STARGZ_CONFIG, stargzConfig(config.registries)],
|
|
140
|
+
[STARGZ_UNIT, [
|
|
141
|
+
"# stargz-snapshotter's daemon, the snapshotter of k3s's containerd: alasio up writes this file.",
|
|
142
|
+
"[Unit]",
|
|
143
|
+
"Description=stargz-snapshotter's daemon, which k3s's containerd pulls images through",
|
|
144
|
+
`PartOf=${SERVICE}.service`,
|
|
145
|
+
"",
|
|
146
|
+
"[Service]",
|
|
147
|
+
"# Go's soft limit on its heap and its FUSE manager's (./stargz.ts's STARGZ_MEMORY_LIMIT).",
|
|
148
|
+
`Environment=GOMEMLIMIT=${STARGZ_MEMORY_LIMIT}`,
|
|
149
|
+
`ExecStart=${BIN}/containerd-stargz-grpc --address=${STARGZ_SOCKET} --config=${STARGZ_CONFIG} --root=${STARGZ_ROOT}`,
|
|
150
|
+
"Restart=always",
|
|
151
|
+
"# Its FUSE manager keeps the mounts of the images running pods read, through the daemon's restarts.",
|
|
152
|
+
"KillMode=process",
|
|
153
|
+
"",
|
|
154
|
+
].join("\n")],
|
|
155
|
+
[K3S_DROP_IN, [
|
|
156
|
+
"# k3s's service, its images pulled through stargz-snapshotter's daemon: alasio up writes this file.",
|
|
157
|
+
"[Unit]",
|
|
158
|
+
`Wants=${STARGZ_SERVICE}.service`,
|
|
159
|
+
`After=${STARGZ_SERVICE}.service`,
|
|
160
|
+
"",
|
|
161
|
+
].join("\n")],
|
|
119
162
|
]);
|
|
120
163
|
}
|
|
121
164
|
/** A digest of `files` that two sets of files share only when they are the same. */
|
|
@@ -124,13 +167,14 @@ export const filesDigest = (files) => createHash("sha256").update(JSON.stringify
|
|
|
124
167
|
export const Firewall = Schema.Literals(["ufw", "firewalld"]);
|
|
125
168
|
/**
|
|
126
169
|
* What alasio installed on this machine, as STAMP records it: k3s's version, gVisor's
|
|
127
|
-
* releases, the digest of the files that configure the node,
|
|
128
|
-
* the cluster's networks in, with those it added a rule for
|
|
129
|
-
* removes.
|
|
170
|
+
* releases, stargz-snapshotter's version, the digest of the files that configure the node,
|
|
171
|
+
* and the firewall it opened the cluster's networks in, with those it added a rule for
|
|
172
|
+
* itself, which are all it removes.
|
|
130
173
|
*/
|
|
131
174
|
export const NodeStamp = Schema.Struct({
|
|
132
175
|
k3s: Schema.optionalKey(Schema.String),
|
|
133
176
|
gvisor: Schema.optionalKey(Schema.Array(Schema.String)),
|
|
177
|
+
stargz: Schema.optionalKey(Schema.String),
|
|
134
178
|
config: Schema.optionalKey(Schema.String),
|
|
135
179
|
firewall: Schema.optionalKey(Schema.Struct({ tool: Firewall, networks: Schema.Array(Schema.String), added: Schema.Array(Schema.String) })),
|
|
136
180
|
});
|
|
@@ -196,6 +240,8 @@ export const ConfigureNode = Schema.TaggedStruct("ConfigureNode", { config: Node
|
|
|
196
240
|
export const InstallGvisor = Schema.TaggedStruct("InstallGvisor", { release: Schema.String, archive: Artifact });
|
|
197
241
|
/** The step that stops a gVisor release's sandboxes, and removes it. */
|
|
198
242
|
export const RemoveGvisor = Schema.TaggedStruct("RemoveGvisor", { release: Schema.String });
|
|
243
|
+
/** The step that installs stargz-snapshotter's daemon and its FUSE manager, from its release's archive, in place of `previous`. */
|
|
244
|
+
export const InstallStargz = Schema.TaggedStruct("InstallStargz", { version: Schema.String, previous: Schema.optionalKey(Schema.String), archive: Artifact });
|
|
199
245
|
/** The step that installs k3s's binary, with its install script, which makes its service, enables it, and starts it anew. */
|
|
200
246
|
export const InstallK3s = Schema.TaggedStruct("InstallK3s", {
|
|
201
247
|
version: Schema.String,
|
|
@@ -214,7 +260,7 @@ export const RemoveNode = Schema.TaggedStruct("RemoveNode", { firewall: Schema.o
|
|
|
214
260
|
export const RemoveStorage = Schema.TaggedStruct("RemoveStorage", { path: Schema.String });
|
|
215
261
|
/** The step that reads k3s's kubeconfig, after restarting k3s, which renews its certificates, when `renew`. */
|
|
216
262
|
export const ReadKubeconfig = Schema.TaggedStruct("ReadKubeconfig", { renew: Schema.Boolean });
|
|
217
|
-
export const NodeStep = Schema.Union([OpenFirewall, ConfigureNode, InstallGvisor, RemoveGvisor, InstallK3s, StartK3s, StopK3s, RemoveNode, RemoveStorage, ReadKubeconfig]);
|
|
263
|
+
export const NodeStep = Schema.Union([OpenFirewall, ConfigureNode, InstallGvisor, RemoveGvisor, InstallStargz, InstallK3s, StartK3s, StopK3s, RemoveNode, RemoveStorage, ReadKubeconfig]);
|
|
218
264
|
/** What `step` does, as alasio says it will. */
|
|
219
265
|
export function describeNodeStep(step) {
|
|
220
266
|
const replacing = (previous) => (previous ? `, in place of ${previous},` : "");
|
|
@@ -224,12 +270,15 @@ export function describeNodeStep(step) {
|
|
|
224
270
|
"nothing else is opened, k3s's API server's port 6443 staying closed to the rest";
|
|
225
271
|
case "ConfigureNode": {
|
|
226
272
|
const runtimes = step.config.gvisor.map(gvisorHandler);
|
|
227
|
-
return `write k3s's configuration in ${K3S_ETC}, and its containerd's, with gVisor as the runtime${runtimes.length > 1 ? "s" : ""} ${runtimes.join(" and ")}, in ${CONTAINERD}
|
|
273
|
+
return `write k3s's configuration in ${K3S_ETC}, and its containerd's, with gVisor as the runtime${runtimes.length > 1 ? "s" : ""} ${runtimes.join(" and ")}, in ${CONTAINERD}, ` +
|
|
274
|
+
`and stargz-snapshotter's daemon's, as the service ${STARGZ_SERVICE}, which k3s's starts`;
|
|
228
275
|
}
|
|
229
276
|
case "InstallGvisor":
|
|
230
277
|
return `install gVisor ${step.release} in ${gvisorDirectory(step.release)}: ${GVISOR.join(", ")}`;
|
|
231
278
|
case "RemoveGvisor":
|
|
232
279
|
return `stop the sandboxes of gVisor ${step.release}, which alasio no longer keeps, and remove ${gvisorDirectory(step.release)}`;
|
|
280
|
+
case "InstallStargz":
|
|
281
|
+
return `install stargz-snapshotter ${step.version}${replacing(step.previous)} in ${BIN}: ${STARGZ_EXECUTABLES.join(", ")}`;
|
|
233
282
|
case "InstallK3s":
|
|
234
283
|
return `install k3s ${step.version}${replacing(step.previous)} in ${BIN}, with its own install script, as the systemd service ${SERVICE}, enabled and started anew`;
|
|
235
284
|
case "StartK3s":
|
|
@@ -240,8 +289,8 @@ export function describeNodeStep(step) {
|
|
|
240
289
|
return `stop the cluster's gVisor pods, ` +
|
|
241
290
|
(step.firewall && step.firewall.added.length > 0 ? `remove the rules alasio added to ${step.firewall.tool} for ${step.firewall.added.join(" and ")}, ` : "") +
|
|
242
291
|
`uninstall k3s with k3s-uninstall.sh, which removes its service, ${K3S_ETC} and its data, ` +
|
|
243
|
-
`and remove what it leaves, its node's password in ${NODE_PASSWORD}, gVisor's releases in ${GVISOR_RELEASES},
|
|
244
|
-
|
|
292
|
+
`and remove what it leaves, its node's password in ${NODE_PASSWORD}, gVisor's releases in ${GVISOR_RELEASES}, stargz-snapshotter from ${BIN}, ` +
|
|
293
|
+
`stargz-snapshotter's service, its mounts and its images in ${STARGZ_ROOT} and its sockets in ${dirname(STARGZ_SOCKET)}, and alasio's mounts and directory, ${NODE_DIRECTORY}`;
|
|
245
294
|
case "RemoveStorage":
|
|
246
295
|
return `remove ${step.path}, the cluster's volumes`;
|
|
247
296
|
case "ReadKubeconfig":
|
|
@@ -269,19 +318,19 @@ const killGvisor = Effect.fnUntraced(function* (releases) {
|
|
|
269
318
|
yield* Effect.logInfo(`stopped ${killed} of gVisor's processes`);
|
|
270
319
|
});
|
|
271
320
|
/**
|
|
272
|
-
* Unmounts what is mounted in
|
|
273
|
-
* cluster's pods, then removes them. A mount
|
|
274
|
-
* escapes in /proc/self/mounts.
|
|
321
|
+
* Unmounts what is mounted in `directories`, at once, as their FUSE servers are gone with
|
|
322
|
+
* the cluster's pods and stargz-snapshotter's FUSE manager, then removes them. A mount
|
|
323
|
+
* point's spaces and the like are octal escapes in /proc/self/mounts.
|
|
275
324
|
*/
|
|
276
|
-
const
|
|
325
|
+
const removeMounted = (directories) => Effect.gen(function* () {
|
|
277
326
|
const fs = yield* FileSystem.FileSystem;
|
|
278
327
|
const { root } = yield* Machine;
|
|
279
328
|
const table = under(root, "/proc/self/mounts");
|
|
280
329
|
const mounts = (yield* fs.exists(table)) ? (yield* fs.readFileString(table)).split("\n").map((line) => (line.split(" ")[1] ?? "").replace(/\\(\d{3})/gu, (_, code) => String.fromCharCode(Number.parseInt(code, 8)))) : [];
|
|
281
|
-
const inside = mounts.filter((point) =>
|
|
330
|
+
const inside = mounts.filter((point) => directories.some((directory) => point === directory || point.startsWith(`${directory}/`))).toSorted().toReversed();
|
|
282
331
|
for (const point of inside)
|
|
283
332
|
yield* (yield* RootSystem).run("umount", ["--lazy", point]);
|
|
284
|
-
for (const directory of
|
|
333
|
+
for (const directory of directories)
|
|
285
334
|
yield* fs.remove(under(root, directory), { recursive: true, force: true });
|
|
286
335
|
});
|
|
287
336
|
/** What a firewall alasio opens the cluster's networks in is asked, and told, as root. */
|
|
@@ -359,6 +408,8 @@ export const performNodeStep = (step) => Effect.gen(function* () {
|
|
|
359
408
|
if (name.startsWith("runsc") && name.endsWith(".toml") && !files.has(path))
|
|
360
409
|
yield* fs.remove(under(root, path));
|
|
361
410
|
}
|
|
411
|
+
// The daemon's service and k3s's drop-in, as systemd reads them anew.
|
|
412
|
+
yield* systemctl("daemon-reload");
|
|
362
413
|
yield* recordStamp({ config: filesDigest(files) });
|
|
363
414
|
return yield* Effect.logInfo(`wrote ${[...files.keys()].join(", ")}`);
|
|
364
415
|
}
|
|
@@ -380,6 +431,14 @@ export const performNodeStep = (step) => Effect.gen(function* () {
|
|
|
380
431
|
yield* recordStamp({ gvisor: ((yield* readStamp)?.gvisor ?? []).filter((release) => release !== step.release) });
|
|
381
432
|
return yield* Effect.logInfo(`removed gVisor ${step.release}`);
|
|
382
433
|
}
|
|
434
|
+
case "InstallStargz": {
|
|
435
|
+
const entries = tarEntries(gunzipSync(yield* verified(step.archive)));
|
|
436
|
+
for (const entry of entries.filter(({ name }) => STARGZ_EXECUTABLES.some((executable) => name === executable))) {
|
|
437
|
+
yield* writeFile(under(root, `${BIN}/${entry.name}`), entry.content, entry.mode);
|
|
438
|
+
}
|
|
439
|
+
yield* recordStamp({ stargz: step.version });
|
|
440
|
+
return yield* Effect.logInfo(`installed stargz-snapshotter ${step.version}`);
|
|
441
|
+
}
|
|
383
442
|
case "InstallK3s": {
|
|
384
443
|
yield* writeFile(under(root, `${BIN}/k3s`), yield* verified(step.binary), 0o755);
|
|
385
444
|
const script = yield* verified(step.script);
|
|
@@ -416,18 +475,34 @@ export const performNodeStep = (step) => Effect.gen(function* () {
|
|
|
416
475
|
yield* closeFirewall(step.firewall);
|
|
417
476
|
if (yield* fs.exists(under(root, UNINSTALL)))
|
|
418
477
|
yield* system.run(UNINSTALL, []);
|
|
419
|
-
|
|
478
|
+
// stargz-snapshotter's daemon stopped with k3s; its FUSE manager, which keeps its mounts, stops now.
|
|
479
|
+
yield* system.kill([`${BIN}/stargz-fuse-manager`]);
|
|
480
|
+
yield* removeMounted([NODE_DIRECTORY, STARGZ_ROOT]);
|
|
420
481
|
// alasio's own, and the node's password, which k3s keeps and its uninstall script leaves.
|
|
421
|
-
|
|
482
|
+
const owned = [
|
|
483
|
+
GVISOR_RELEASES,
|
|
484
|
+
...STARGZ_EXECUTABLES.map((name) => `${BIN}/${name}`),
|
|
485
|
+
CONFIG_YAML,
|
|
486
|
+
REGISTRIES_YAML,
|
|
487
|
+
STAMP,
|
|
488
|
+
CONTAINERD,
|
|
489
|
+
NODE_PASSWORD,
|
|
490
|
+
STARGZ_UNIT,
|
|
491
|
+
dirname(K3S_DROP_IN),
|
|
492
|
+
dirname(STARGZ_CONFIG),
|
|
493
|
+
// Its FUSE manager's socket among them: the daemon starts no manager where that is, and fails to reach one.
|
|
494
|
+
dirname(STARGZ_SOCKET),
|
|
495
|
+
];
|
|
496
|
+
for (const path of owned)
|
|
422
497
|
yield* fs.remove(under(root, path), { recursive: true, force: true });
|
|
423
|
-
|
|
498
|
+
yield* systemctl("daemon-reload");
|
|
424
499
|
// What k3s's uninstall script leaves of the directories it made, and of alasio's, when it is empty.
|
|
425
500
|
for (const path of [K3S_ETC, "/etc/rancher", "/var/lib/rancher/k3s", "/var/lib/rancher", dirname(GVISOR_RELEASES)]) {
|
|
426
501
|
const at = under(root, path);
|
|
427
502
|
if ((yield* fs.exists(at)) && (yield* fs.readDirectory(at)).length === 0)
|
|
428
503
|
yield* fs.remove(at, { recursive: true });
|
|
429
504
|
}
|
|
430
|
-
return yield* Effect.logInfo("removed k3s and
|
|
505
|
+
return yield* Effect.logInfo("removed k3s, gVisor and stargz-snapshotter");
|
|
431
506
|
}
|
|
432
507
|
case "RemoveStorage":
|
|
433
508
|
// A path of the operator's, which they made, as the rest of their own paths.
|