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.
Files changed (134) hide show
  1. package/dist/cli/src/api-server.js +18 -0
  2. package/dist/cli/src/api-server.js.map +1 -0
  3. package/dist/cli/src/branches.js +61 -20
  4. package/dist/cli/src/branches.js.map +1 -1
  5. package/dist/cli/src/cluster/docker.js +25 -10
  6. package/dist/cli/src/cluster/docker.js.map +1 -1
  7. package/dist/cli/src/cluster/host.js +33 -7
  8. package/dist/cli/src/cluster/host.js.map +1 -1
  9. package/dist/cli/src/cluster/k3s.js +43 -11
  10. package/dist/cli/src/cluster/k3s.js.map +1 -1
  11. package/dist/cli/src/cluster/node.js +107 -32
  12. package/dist/cli/src/cluster/node.js.map +1 -1
  13. package/dist/cli/src/cluster/stargz.js +55 -0
  14. package/dist/cli/src/cluster/stargz.js.map +1 -0
  15. package/dist/cli/src/commands/branch.js +5 -4
  16. package/dist/cli/src/commands/branch.js.map +1 -1
  17. package/dist/cli/src/commands/common.js +9 -3
  18. package/dist/cli/src/commands/common.js.map +1 -1
  19. package/dist/cli/src/commands/folder.js +14 -0
  20. package/dist/cli/src/commands/folder.js.map +1 -0
  21. package/dist/cli/src/commands/status.js +64 -12
  22. package/dist/cli/src/commands/status.js.map +1 -1
  23. package/dist/cli/src/commands/uninstall.js +8 -9
  24. package/dist/cli/src/commands/uninstall.js.map +1 -1
  25. package/dist/cli/src/commands/up.js +11 -3
  26. package/dist/cli/src/commands/up.js.map +1 -1
  27. package/dist/cli/src/commands/upgrade.js +1 -1
  28. package/dist/cli/src/commands/upgrade.js.map +1 -1
  29. package/dist/cli/src/commands.js +2 -1
  30. package/dist/cli/src/commands.js.map +1 -1
  31. package/dist/cli/src/config.js +4 -1
  32. package/dist/cli/src/config.js.map +1 -1
  33. package/dist/cli/src/cpu-baseline.js +8 -4
  34. package/dist/cli/src/cpu-baseline.js.map +1 -1
  35. package/dist/cli/src/folders.js +67 -0
  36. package/dist/cli/src/folders.js.map +1 -0
  37. package/dist/cli/src/gateway-calls.js +58 -0
  38. package/dist/cli/src/gateway-calls.js.map +1 -0
  39. package/dist/cli/src/install.js +77 -29
  40. package/dist/cli/src/install.js.map +1 -1
  41. package/dist/cli/src/kept-releases.js +27 -20
  42. package/dist/cli/src/kept-releases.js.map +1 -1
  43. package/dist/cli/src/kube/api.js +2 -3
  44. package/dist/cli/src/kube/api.js.map +1 -1
  45. package/dist/cli/src/kube/apply.js +15 -72
  46. package/dist/cli/src/kube/apply.js.map +1 -1
  47. package/dist/cli/src/kube/rollout.js +28 -16
  48. package/dist/cli/src/kube/rollout.js.map +1 -1
  49. package/dist/cli/src/manifests/admission.js +342 -223
  50. package/dist/cli/src/manifests/admission.js.map +1 -1
  51. package/dist/cli/src/manifests/alasio.js +58 -394
  52. package/dist/cli/src/manifests/alasio.js.map +1 -1
  53. package/dist/cli/src/manifests/branch.js +10 -26
  54. package/dist/cli/src/manifests/branch.js.map +1 -1
  55. package/dist/cli/src/manifests/collector.js +60 -44
  56. package/dist/cli/src/manifests/collector.js.map +1 -1
  57. package/dist/cli/src/manifests/common.js +32 -2
  58. package/dist/cli/src/manifests/common.js.map +1 -1
  59. package/dist/cli/src/manifests/config.js +64 -81
  60. package/dist/cli/src/manifests/config.js.map +1 -1
  61. package/dist/cli/src/manifests/disruption.js +10 -0
  62. package/dist/cli/src/manifests/disruption.js.map +1 -1
  63. package/dist/cli/src/manifests/folders.js +128 -0
  64. package/dist/cli/src/manifests/folders.js.map +1 -0
  65. package/dist/cli/src/manifests/grafana.js +4 -2
  66. package/dist/cli/src/manifests/grafana.js.map +1 -1
  67. package/dist/cli/src/manifests/index.js +10 -7
  68. package/dist/cli/src/manifests/index.js.map +1 -1
  69. package/dist/cli/src/manifests/lake.js +18 -4
  70. package/dist/cli/src/manifests/lake.js.map +1 -1
  71. package/dist/cli/src/manifests/log.js +32 -14
  72. package/dist/cli/src/manifests/log.js.map +1 -1
  73. package/dist/cli/src/manifests/neon.js +3 -3
  74. package/dist/cli/src/manifests/neon.js.map +1 -1
  75. package/dist/cli/src/manifests/network-policies.js +140 -74
  76. package/dist/cli/src/manifests/network-policies.js.map +1 -1
  77. package/dist/cli/src/manifests/node-agent.js +11 -4
  78. package/dist/cli/src/manifests/node-agent.js.map +1 -1
  79. package/dist/cli/src/manifests/object-store.js +4 -2
  80. package/dist/cli/src/manifests/object-store.js.map +1 -1
  81. package/dist/cli/src/manifests/sandbox-gateway.js +663 -0
  82. package/dist/cli/src/manifests/sandbox-gateway.js.map +1 -0
  83. package/dist/cli/src/manifests/scalers.js +16 -5
  84. package/dist/cli/src/manifests/scalers.js.map +1 -1
  85. package/dist/cli/src/manifests/sizing.js +16 -8
  86. package/dist/cli/src/manifests/sizing.js.map +1 -1
  87. package/dist/cli/src/manifests/valkey.js +11 -5
  88. package/dist/cli/src/manifests/valkey.js.map +1 -1
  89. package/dist/cli/src/manifests/vpa.js +3 -1
  90. package/dist/cli/src/manifests/vpa.js.map +1 -1
  91. package/dist/cli/src/manifests/workspace-storage.js +174 -89
  92. package/dist/cli/src/manifests/workspace-storage.js.map +1 -1
  93. package/dist/cli/src/neon-storage.js +54 -14
  94. package/dist/cli/src/neon-storage.js.map +1 -1
  95. package/dist/cli/src/release.js +9 -9
  96. package/dist/cluster/node/pins.json +9 -4
  97. package/dist/neon/control/branches.js +6 -6
  98. package/dist/neon/control/branches.js.map +1 -1
  99. package/dist/neon/control/secrets.js +14 -3
  100. package/dist/neon/control/secrets.js.map +1 -1
  101. package/dist/src/binder/names.js +33 -0
  102. package/dist/src/binder/names.js.map +1 -0
  103. package/dist/src/binder/tokens.js +58 -0
  104. package/dist/src/binder/tokens.js.map +1 -0
  105. package/dist/src/branch/names.js +12 -2
  106. package/dist/src/branch/names.js.map +1 -1
  107. package/dist/src/events/names.js +7 -0
  108. package/dist/src/events/names.js.map +1 -0
  109. package/dist/src/gateway/names.js +201 -0
  110. package/dist/src/gateway/names.js.map +1 -0
  111. package/dist/src/harness/names.js +49 -0
  112. package/dist/src/harness/names.js.map +1 -0
  113. package/dist/src/kube/sandbox-shape.js +8 -68
  114. package/dist/src/kube/sandbox-shape.js.map +1 -1
  115. package/dist/src/node-agent/names.js +52 -2
  116. package/dist/src/node-agent/names.js.map +1 -1
  117. package/dist/src/sandbox/names.js +12 -20
  118. package/dist/src/sandbox/names.js.map +1 -1
  119. package/dist/src/sandbox/otlp-resource.js +173 -0
  120. package/dist/src/sandbox/otlp-resource.js.map +1 -0
  121. package/dist/src/sandbox/telemetry.js +43 -0
  122. package/dist/src/sandbox/telemetry.js.map +1 -0
  123. package/dist/src/telemetry/config.js +131 -0
  124. package/dist/src/telemetry/config.js.map +1 -0
  125. package/dist/src/telemetry/forward.js +154 -0
  126. package/dist/src/telemetry/forward.js.map +1 -0
  127. package/package.json +1 -1
  128. package/dist/cli/src/manifests/agent-sandbox.js +0 -92
  129. package/dist/cli/src/manifests/agent-sandbox.js.map +0 -1
  130. package/dist/cli/src/manifests/juicefs-csi.js +0 -320
  131. package/dist/cli/src/manifests/juicefs-csi.js.map +0 -1
  132. package/dist/cli/src/manifests/sandboxes.agents.x-k8s.io.json +0 -6295
  133. package/dist/src/kube/config.js +0 -145
  134. 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 gVisor a node is made of: those pinned, and how what they pin is downloaded. */
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 { firewall: firewall !== null && !opened ? firewall : null, configure, gvisor, k3s, kubeconfig: k3s !== null || kubeconfig !== "current", renew: kubeconfig === "expiring" && !startsAnew };
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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAsD,MAAM,yBAAyB,CAAC;AACzG,OAAO,EAAE,OAAO,EAAiB,MAAM,EAAE,UAAU,EAAE,KAAK,EAAsB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGvG,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAA8C,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EACL,UAAU,EACV,iBAAiB,EAEjB,oBAAoB,EAEpB,aAAa,EACb,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,KAAK,EACL,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAGL,OAAO,EACP,gBAAgB,EAChB,aAAa,EAEb,SAAS,EACT,WAAW,EAEX,cAAc,EACd,aAAa,EACb,UAAU,EACV,SAAS,EAET,SAAS,EAGT,YAAY,EACZ,cAAc,EACd,SAAS,EACT,YAAY,EACZ,UAAU,EACV,aAAa,EACb,OAAO,EACP,QAAQ,EACR,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,IAAI,EAAiC,MAAM,WAAW,CAAC;AAEhE,wDAAwD;AACxD,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAStC,oGAAoG;AACpG,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAAC,oBAAoB,EAAE;IACrG,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;IACA,IAAa,OAAO;QAClB,OAAO,yDAAyD,IAAI,CAAC,MAAM,6DAA6D;YACtI,8DAA8D,CAAC;IACnE,CAAC;CACF;AAED,kEAAkE;AAClE,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,OAAO,EAExC,CAAC,wBAAwB,CAAC;IAC5B,qCAAqC;IACrC,MAAM,CAAU,KAAK,GAAyB,KAAK,CAAC,OAAO,CACzD,OAAO,EACP,OAAO,CAAC,EAAE,CAAC;QACT,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CACb,MAAM,CAAC,QAAQ,CAAgC,CAAC,MAAM,EAAE,EAAE;YACxD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,gDAAgD,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1I,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC;YAC9D,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC;YAC9D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,4BAA4B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACnI,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC;oBAAE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,8BAA8B,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvI,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAU,CAAC,CAAC,CAAC;gBAC7I,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;oBACpB,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ;oBAChD,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE;oBAC3C,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,SAAS;iBACvD,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC;KACL,CAAC,CACH,CAAC;CACH;AAED,wCAAwC;AACxC,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CAAC,gBAAgB,EAAE;IACzF,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;IACA,IAAa,OAAO;QAClB,OAAO,GAAG,IAAI,CAAC,GAAG,6BAA6B,IAAI,CAAC,MAAM,EAAE,CAAC;IAC/D,CAAC;CACF;AAED,2GAA2G;AAC3G,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,OAAO,EAG7C,CAAC,6BAA6B,CAAC;IACjC,6FAA6F;IAC7F,MAAM,CAAU,KAAK,GAA8B,KAAK,CAAC,OAAO,CAC9D,YAAY,EACZ,YAAY,CAAC,EAAE,CAAC;QACd,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CACb,MAAM,CAAC,UAAU,CAAC;YAChB,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACpB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9C,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC3F,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;SAC9G,CAAC;KACL,CAAC,CACH,CAAC;CACH;AAED,+EAA+E;AAC/E,MAAM,OAAO,UAAW,SAAQ,MAAM,CAAC,WAAW,EAAc,CAAC,YAAY,EAAE,EAAE,CAAC;IAChF,IAAa,OAAO;QAClB,OAAO,uGAAuG;YAC5G,8FAA8F,CAAC;IACnG,CAAC;CACF;AAiBD,+FAA+F;AAC/F,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,kIAAkI;AAClI,MAAM,UAAU,eAAe,CAAC,IAAmB,EAAE,GAAS;IAC5D,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAChC,IAAI,IAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC;QACtD,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;QAAE,OAAO,SAAS,CAAC;IAC9E,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5H,CAAC;AAgBD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAOzF;IACC,MAAM,MAAM,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACtI,MAAM,SAAS,GAAG,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;IACrJ,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;QACzD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACpE,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;gBAC3C,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,UAAU,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,CAAC;IAC1D,OAAO,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,KAAK,EAAE,UAAU,KAAK,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;AACrM,CAAC;AAmBD,sEAAsE;AACtE,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAiB5C,CAAC,4BAA4B,CAAC;IAChC,MAAM,CAAU,KAAK,GAAG,CAAC,OAA2B,EAAoG,EAAE,CACxJ,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,EAClD,WAAW,EACX,WAAW,GAAG,EAAE,EAChB,UAAU,EACV,YAAY,GAAG,KAAK,CAAC,YAAY,EACjC,IAAI,GAAG,KAAK,CAAC,IAAI,GACE;IACnB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC;IACzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;IAC5C,MAAM,SAAS,GAAG,CAAO,MAA4D,EAAE,EAAE,CACvF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACzG,+FAA+F;IAC/F,MAAM,QAAQ,GAAG,CAAC,IAAuB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACtJ,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5D,kJAAkJ;IAClJ,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAc,CAAC;QAC5G,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,WAAqB,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,wDAAwD;IACxD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;QAClE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,mFAAmF;IACnF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,SAAiB,EAAE,IAAY,EAAE,QAAkB;QAC7F,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;QAClH,MAAM,IAAI,GAAG,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;QACpC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAClC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CACrE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC1G,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC;QAClG,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,qCAAqC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxJ,CAAC,CAAC,CACH,CAAC;IAEJ,gHAAgH;IAChH,MAAM,gBAAgB,GAAG,CAAC,KAAwB,EAAuD,EAAE,CACzG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;QAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAc,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAClH,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,CAAC;QAChG,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QACtG,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO;QAClC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CACf,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,EACnE,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAClG,QAAQ,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,wIAAwI;IACxI,MAAM,mBAAmB,GAAG,CAAC,IAAuB,EAA8C,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvH,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;QAC5B,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAiB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YACxG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,UAAkB;QACvD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC;QACzC,oFAAoF;QACpF,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,uFAAuF;QACvF,MAAM,iBAAiB,GAAG,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAC1C,CAAC,CAAC,IAAI,GAAG,EAA6B;YACtC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;gBAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7H,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,IAAI,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/J,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAClE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACvD,yEAAyE;YACzE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChJ,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CACpC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAC7E,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,OAAO,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CACvJ,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3G,MAAM,KAAK,GAAe;gBACxB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,GAAG,QAAQ;gBACX,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChK,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/G,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACzE,CAAC;YACF,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,8DAA8D;YAC9D,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC5I,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,2BAA2B,OAAO,OAAO,UAAU,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7D,KAAK,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,KAAK,CAAC,CAAC,OAAO,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,QAAQ,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC,EAAE,CAAC;QACpB,EAAE;QAEF,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACxB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAC5C,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CACtB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC;YACzC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YACnD,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5J,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;QACL,CAAC,CAAC;QAEJ,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;KACjF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
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, the gVisor releases kept as containerd's
5
- * runtimes and their RuntimeClasses, nodes ready since they started, the kubeconfig k3s
6
- * writes made the operator's, and waits for all that.
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 that make each of gVisor's `releases` a runtime of k3s's containerd, by their
40
- * paths: the containerd template, k3s's own configuration with a runtime for each
41
- * release, which runs that release's shim, and each runtime's runsc options, which run
42
- * that release's runsc, and, where `systemd` runs the machine, place its sandboxes'
43
- * cgroups through systemd, as kubelet does there. alasio writes them on the machine (the
44
- * host target), and puts them into each node's container (the cluster in Docker). Pure,
45
- * for tests.
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 gvisorRuntimeFiles(releases, { systemd }) {
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":"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"}
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 set in /etc/rancher/k3s/config.yaml. The node
6
- * image (cluster/node) is built from the same pins, its gVisor releases where the machine
7
- * has them, and its k3s reads the same containerd files, so a node in Docker and one on a
8
- * machine run the same k3s and gVisor alike.
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, gvisorRuntimeFiles, KUBELET_ARGS, NotYet, registriesYaml } from "./k3s.js";
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, and each gVisor release, by its name, from alasio's fork of it,
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
- /** The directories JuiceFS's CSI driver keeps on the node, its mounts in them, which nothing of k3s's removes. */
87
- const JUICEFS = ["/var/lib/juicefs", "/run/juicefs-csi"];
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, the registries, and the files
104
- * that make each gVisor release a runtime of containerd's, where systemd runs the
105
- * machine. Pure, for tests.
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
- ...gvisorRuntimeFiles(config.gvisor, { systemd: true }),
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, and the firewall it opened
128
- * the cluster's networks in, with those it added a rule for itself, which are all it
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}, and JuiceFS's mounts and directories, ` +
244
- JUICEFS.join(" and ");
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 JUICEFS, at once, as their FUSE clients are gone with the
273
- * cluster's pods, then removes them. A mount point's spaces and the like are octal
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 removeJuicefs = Effect.gen(function* () {
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) => JUICEFS.some((directory) => point === directory || point.startsWith(`${directory}/`))).toSorted().toReversed();
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 JUICEFS)
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
- yield* removeJuicefs;
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
- for (const path of [GVISOR_RELEASES, CONFIG_YAML, REGISTRIES_YAML, STAMP, CONTAINERD, NODE_PASSWORD]) {
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 gVisor");
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.