alasio 4.2.0 → 5.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 (63) hide show
  1. package/dist/cli/src/branches.js +295 -0
  2. package/dist/cli/src/branches.js.map +1 -0
  3. package/dist/cli/src/commands/branch.js +112 -0
  4. package/dist/cli/src/commands/branch.js.map +1 -0
  5. package/dist/cli/src/commands/common.js +27 -8
  6. package/dist/cli/src/commands/common.js.map +1 -1
  7. package/dist/cli/src/commands/grafana.js +72 -0
  8. package/dist/cli/src/commands/grafana.js.map +1 -0
  9. package/dist/cli/src/commands/init.js +6 -5
  10. package/dist/cli/src/commands/init.js.map +1 -1
  11. package/dist/cli/src/commands/lake.js +18 -4
  12. package/dist/cli/src/commands/lake.js.map +1 -1
  13. package/dist/cli/src/commands/login.js +12 -7
  14. package/dist/cli/src/commands/login.js.map +1 -1
  15. package/dist/cli/src/commands/logs.js +12 -6
  16. package/dist/cli/src/commands/logs.js.map +1 -1
  17. package/dist/cli/src/commands/uninstall.js +16 -1
  18. package/dist/cli/src/commands/uninstall.js.map +1 -1
  19. package/dist/cli/src/commands.js +3 -1
  20. package/dist/cli/src/commands.js.map +1 -1
  21. package/dist/cli/src/kube/api.js +35 -2
  22. package/dist/cli/src/kube/api.js.map +1 -1
  23. package/dist/cli/src/kube/apply.js +21 -8
  24. package/dist/cli/src/kube/apply.js.map +1 -1
  25. package/dist/cli/src/manifests/alasio.js +143 -74
  26. package/dist/cli/src/manifests/alasio.js.map +1 -1
  27. package/dist/cli/src/manifests/branch.js +45 -0
  28. package/dist/cli/src/manifests/branch.js.map +1 -0
  29. package/dist/cli/src/manifests/collector.js +199 -0
  30. package/dist/cli/src/manifests/collector.js.map +1 -0
  31. package/dist/cli/src/manifests/common.js +44 -11
  32. package/dist/cli/src/manifests/common.js.map +1 -1
  33. package/dist/cli/src/manifests/config.js +33 -19
  34. package/dist/cli/src/manifests/config.js.map +1 -1
  35. package/dist/cli/src/manifests/grafana.js +81 -0
  36. package/dist/cli/src/manifests/grafana.js.map +1 -0
  37. package/dist/cli/src/manifests/index.js +6 -1
  38. package/dist/cli/src/manifests/index.js.map +1 -1
  39. package/dist/cli/src/manifests/juicefs-csi.js +11 -5
  40. package/dist/cli/src/manifests/juicefs-csi.js.map +1 -1
  41. package/dist/cli/src/manifests/lake.js +66 -18
  42. package/dist/cli/src/manifests/lake.js.map +1 -1
  43. package/dist/cli/src/manifests/neon.js +24 -154
  44. package/dist/cli/src/manifests/neon.js.map +1 -1
  45. package/dist/cli/src/manifests/network-policies.js +141 -38
  46. package/dist/cli/src/manifests/network-policies.js.map +1 -1
  47. package/dist/cli/src/manifests/workspace-storage.js +98 -29
  48. package/dist/cli/src/manifests/workspace-storage.js.map +1 -1
  49. package/dist/cli/src/release.js +6 -5
  50. package/dist/cli/src/release.js.map +1 -1
  51. package/dist/neon/control/branches.js +292 -0
  52. package/dist/neon/control/branches.js.map +1 -0
  53. package/dist/neon/control/jwt.js +58 -0
  54. package/dist/neon/control/jwt.js.map +1 -0
  55. package/dist/neon/control/scram.js +15 -0
  56. package/dist/neon/control/scram.js.map +1 -0
  57. package/dist/neon/control/secrets.js +111 -0
  58. package/dist/neon/control/secrets.js.map +1 -0
  59. package/dist/src/branch/names.js +18 -0
  60. package/dist/src/branch/names.js.map +1 -0
  61. package/dist/src/kube/config.js +14 -1
  62. package/dist/src/kube/config.js.map +1 -1
  63. package/package.json +1 -1
@@ -1,14 +1,14 @@
1
+ import { computeId, MAIN } from "../../../neon/control/branches.js";
1
2
  import { imageReference } from "../images.js";
2
- import { claimSpec, componentName, databaseSecret, given, goJson, helperResources, imagePullSecrets, NAMESPACE, neonName, otelEnv, RELEASE, restrictedContainer, s3Endpoint, script, selectorLabels, sha256, stackLabels, stackPodSpec, waitFor, waitForObjectStore, } from "./common.js";
3
- import { JUICEFS_METRICS_PORT, JUICEFS_PODS_SELECTOR, VOLUME_DRIVER } from "./juicefs-csi.js";
4
- import { VALKEY, VALKEY_PORT } from "./valkey.js";
3
+ import { claimSpec, collectorRuns, databaseSecret, given, helperResources, imagePullSecrets, MAIN_ENVIRONMENT, NAMESPACE, neonName, otelEnv, RELEASE, restrictedContainer, s3Endpoint, script, selectorLabels, stackLabels, stackPodSpec, waitFor, waitForObjectStore, } from "./common.js";
4
+ import { VOLUME_DRIVER } from "./juicefs-csi.js";
5
5
  import { VALKEY_ADDRESS, workspacesBucketUrl } from "./workspace-storage.js";
6
- /** A Service of the stack's: its name and component, selecting the component's pods, on `ports`. */
7
- function service(name, component, ports) {
6
+ /** A Service of the stack's: its name and component, selecting the component's pods, on `ports`, main's unless of `environment`. */
7
+ function service(name, component, ports, environment = MAIN_ENVIRONMENT) {
8
8
  return {
9
9
  apiVersion: "v1",
10
10
  kind: "Service",
11
- metadata: { name, namespace: NAMESPACE, labels: stackLabels(component) },
11
+ metadata: { name, namespace: environment.namespace, labels: stackLabels(component) },
12
12
  spec: { selector: selectorLabels(component), ports },
13
13
  };
14
14
  }
@@ -369,9 +369,10 @@ function pageserver(config) {
369
369
  return [service(name, component, [{ name: "pg", port: 6400 }, { name: "http", port: 9898 }]), statefulSet];
370
370
  }
371
371
  /**
372
- * neon-control: it bootstraps the tenant and timeline, serves the compute its spec,
373
- * answers the storage controller's hooks, and repairs a safekeeper that lost its disk.
374
- * Its record of what it bootstrapped is on a volume of its own.
372
+ * neon-control: it bootstraps the tenant and main's timeline, makes and deletes branches,
373
+ * serves each branch's compute its spec, answers the storage controller's hooks, and
374
+ * repairs a safekeeper that lost its disk. Its record of the branches is on a volume of
375
+ * its own.
375
376
  */
376
377
  function control(config) {
377
378
  const name = neonName("control");
@@ -404,7 +405,8 @@ function control(config) {
404
405
  env: [
405
406
  { name: "CONTROLLER_URL", value: `http://${neonName("storage-controller")}:1234` },
406
407
  { name: "NEON_SAFEKEEPER_HOSTS", value: safekeeperHosts.join(",") },
407
- { name: "NEON_PAGESERVER_HOST", value: neonName("pageserver") },
408
+ // As every compute reaches it, a branch environment's in its own namespace too.
409
+ { name: "NEON_PAGESERVER_HOST", value: `${neonName("pageserver")}.${NAMESPACE}.svc` },
408
410
  ],
409
411
  ports: [{ name: "http", containerPort: 8080 }],
410
412
  readinessProbe: { httpGet: { path: "/healthz", port: "http" }, periodSeconds: 3 },
@@ -438,16 +440,18 @@ function control(config) {
438
440
  * The compute: Postgres on alasio's timeline, one primary (never two on one timeline),
439
441
  * its own disk rebuilt from the safekeepers and pageserver on every start, its spec
440
442
  * fetched from neon-control. It serves compute_ctl's metrics too, which the collector
441
- * scrapes, and traces where alasio's telemetry goes, or nowhere.
443
+ * scrapes, and exports compute_ctl's traces to the collector, when it runs. A branch
444
+ * environment's is on the branch's timeline, in its namespace, reaching the stack's
445
+ * storage and neon-control in main's.
442
446
  */
443
- function compute(config) {
447
+ export function compute(config, environment = MAIN_ENVIRONMENT) {
444
448
  const name = neonName("compute");
445
449
  const component = "neon-compute";
446
- const control = neonName("control");
450
+ const control = `http://${neonName("control")}.${NAMESPACE}.svc:8080`;
447
451
  const deployment = {
448
452
  apiVersion: "apps/v1",
449
453
  kind: "Deployment",
450
- metadata: { name, namespace: NAMESPACE, labels: stackLabels(component) },
454
+ metadata: { name, namespace: environment.namespace, labels: stackLabels(component) },
451
455
  spec: {
452
456
  replicas: 1,
453
457
  strategy: { type: "Recreate" },
@@ -461,7 +465,7 @@ function compute(config) {
461
465
  ...given("nodeSelector", { ...config.neon.nodeSelector }),
462
466
  ...given("tolerations", [...config.neon.tolerations]),
463
467
  terminationGracePeriodSeconds: 30,
464
- initContainers: [waitFor(config, "neon-control", `http://${control}:8080/healthz`)],
468
+ initContainers: [waitFor(config, "neon-control", `${control}/healthz`)],
465
469
  containers: [{
466
470
  name: "compute",
467
471
  image: imageReference(config.neon.computeImage),
@@ -474,14 +478,14 @@ function compute(config) {
474
478
  "--pgbin",
475
479
  "/usr/local/bin/postgres",
476
480
  "--compute-id",
477
- "alasio",
481
+ computeId(environment.branch ?? MAIN),
478
482
  "--control-plane-uri",
479
- `http://${control}:8080`,
483
+ control,
480
484
  ],
481
485
  env: [
482
486
  secretVariable(name, "NEON_CONTROL_PLANE_TOKEN"),
483
- ...(config.telemetry.otlpEndpoint
484
- ? [{ name: "OTEL_SERVICE_NAME", value: "compute_ctl" }, ...otelEnv(config)]
487
+ ...(collectorRuns(config)
488
+ ? [{ name: "OTEL_SERVICE_NAME", value: "compute_ctl" }, ...otelEnv(config, environment)]
485
489
  : [{ name: "OTEL_SDK_DISABLED", value: "true" }]),
486
490
  ],
487
491
  ports: [{ name: "postgres", containerPort: 55433 }, { name: "http", containerPort: 3080 }],
@@ -495,7 +499,7 @@ function compute(config) {
495
499
  },
496
500
  },
497
501
  };
498
- return [service(name, component, [{ name: "postgres", port: 55433 }, { name: "http", port: 3080 }]), deployment];
502
+ return [service(name, component, [{ name: "postgres", port: 55433 }, { name: "http", port: 3080 }], environment), deployment];
499
503
  }
500
504
  /**
501
505
  * A logical dump of alasio's database, restorable into any Postgres whatever becomes of
@@ -585,144 +589,11 @@ function backup(config) {
585
589
  },
586
590
  };
587
591
  }
588
- /**
589
- * The stack's telemetry: every Neon service's, SeaweedFS's and the lake's Prometheus
590
- * metrics, and with workspace storage JuiceFS's and Valkey's, scraped and sent on as OTLP
591
- * where alasio's telemetry goes, when it goes anywhere. JuiceFS's are its driver's and
592
- * mount pods', found among the pods of the driver's namespace, which the collector may
593
- * list; Valkey's are read with its password. Its pod carries its configuration's
594
- * checksum, so it is replaced when that changes.
595
- */
596
- function collector(config, endpoint) {
597
- const name = neonName("collector");
598
- const component = "neon-collector";
599
- const { telemetry, workspaceStorage } = config;
600
- const safekeeper = neonName("safekeeper");
601
- const targets = {
602
- pageserver: [`${neonName("pageserver")}:9898`],
603
- "storage-controller": [`${neonName("storage-controller")}:1234`],
604
- "storage-broker": [`${neonName("storage-broker")}:50051`],
605
- compute: [`${neonName("compute")}:3080`],
606
- safekeeper: Array.from({ length: config.neon.safekeepers.replicas }, (_, index) => `${safekeeper}-${index}.${safekeeper}:7676`),
607
- ...(config.objectStore.bundled.enabled ? { seaweedfs: [`${componentName("seaweedfs")}:9327`] } : {}),
608
- ...(config.lake.enabled ? { lake: [`${componentName("lake")}:9464`] } : {}),
609
- };
610
- // Each running pod at its address, on the metrics port, named by its pod. The
611
- // collector reads `$` as the start of a variable, and `$$` as a `$`.
612
- const juicefs = {
613
- job_name: "juicefs",
614
- scrape_interval: "30s",
615
- kubernetes_sd_configs: [{
616
- role: "pod",
617
- namespaces: { names: [workspaceStorage.csi.namespace] },
618
- selectors: [{ role: "pod", label: JUICEFS_PODS_SELECTOR }],
619
- }],
620
- relabel_configs: [
621
- { source_labels: ["__meta_kubernetes_pod_phase"], regex: "Running", action: "keep" },
622
- { source_labels: ["__meta_kubernetes_pod_ip"], target_label: "__address__", replacement: `$$1:${JUICEFS_METRICS_PORT}` },
623
- { source_labels: ["__meta_kubernetes_pod_name"], target_label: "pod" },
624
- ],
625
- };
626
- const collectorConfig = {
627
- receivers: {
628
- prometheus: {
629
- config: {
630
- scrape_configs: [
631
- ...Object.keys(targets).sort().map((job) => ({ job_name: job, scrape_interval: "30s", static_configs: [{ targets: targets[job] }] })),
632
- ...(workspaceStorage.enabled ? [juicefs] : []),
633
- ],
634
- },
635
- },
636
- ...(workspaceStorage.enabled
637
- ? {
638
- redis: {
639
- endpoint: `${VALKEY}:${VALKEY_PORT}`,
640
- password: "${env:VALKEY_PASSWORD}",
641
- collection_interval: "30s",
642
- // How near it is to refusing writes: used memory against this.
643
- metrics: { "redis.maxmemory": { enabled: true } },
644
- },
645
- }
646
- : {}),
647
- },
648
- processors: { resource: { attributes: [{ key: "service.namespace", value: "alasio-neon", action: "upsert" }] }, batch: {} },
649
- exporters: { otlphttp: { endpoint, ...(telemetry.headersSecret ? { headers: "${file:/etc/otelcol/headers/headers.yaml}" } : {}) } },
650
- service: {
651
- telemetry: { metrics: { level: "none" } },
652
- pipelines: {
653
- metrics: { receivers: ["prometheus", ...(workspaceStorage.enabled ? ["redis"] : [])], processors: ["resource", "batch"], exporters: ["otlphttp"] },
654
- },
655
- },
656
- };
657
- const configMap = {
658
- apiVersion: "v1",
659
- kind: "ConfigMap",
660
- metadata: { name, namespace: NAMESPACE, labels: stackLabels(component) },
661
- data: { "config.yaml": goJson(collectorConfig, " ") },
662
- };
663
- const deployment = {
664
- apiVersion: "apps/v1",
665
- kind: "Deployment",
666
- metadata: { name, namespace: NAMESPACE, labels: stackLabels(component) },
667
- spec: {
668
- replicas: 1,
669
- selector: { matchLabels: selectorLabels(component) },
670
- template: {
671
- metadata: { labels: stackLabels(component), annotations: { "checksum/config": sha256(goJson(collectorConfig)) } },
672
- spec: {
673
- ...(workspaceStorage.enabled ? { serviceAccountName: name } : {}),
674
- ...stackPodSpec(config),
675
- containers: [{
676
- name: "collector",
677
- image: imageReference(config.neon.collector.image),
678
- imagePullPolicy: "IfNotPresent",
679
- args: ["--config=/etc/otelcol/config.yaml"],
680
- ...(workspaceStorage.enabled ? { env: [{ name: "VALKEY_PASSWORD", valueFrom: { secretKeyRef: { name: VALKEY, key: "password" } } }] } : {}),
681
- securityContext: { ...restrictedContainer(), readOnlyRootFilesystem: true },
682
- resources: config.neon.collector.resources,
683
- volumeMounts: [
684
- { name: "config", mountPath: "/etc/otelcol", readOnly: true },
685
- ...(telemetry.headersSecret ? [{ name: "headers", mountPath: "/etc/otelcol/headers", readOnly: true }] : []),
686
- ],
687
- }],
688
- volumes: [
689
- { name: "config", configMap: { name } },
690
- // The exporter's headers: a YAML map, under the key headersKey + ".yaml" in the
691
- // headers Secret, since the collector takes headers as a map.
692
- ...(telemetry.headersSecret
693
- ? [{ name: "headers", secret: { secretName: telemetry.headersSecret, items: [{ key: `${telemetry.headersKey}.yaml`, path: "headers.yaml" }] } }]
694
- : []),
695
- ],
696
- },
697
- },
698
- },
699
- };
700
- if (!workspaceStorage.enabled)
701
- return [configMap, deployment];
702
- // Who the collector is, and that it may find JuiceFS's pods in the driver's namespace.
703
- const serviceAccount = { apiVersion: "v1", kind: "ServiceAccount", metadata: { name, namespace: NAMESPACE, labels: stackLabels(component) } };
704
- const metadata = { name, namespace: workspaceStorage.csi.namespace, labels: stackLabels(component) };
705
- const role = {
706
- apiVersion: "rbac.authorization.k8s.io/v1",
707
- kind: "Role",
708
- metadata,
709
- rules: [{ apiGroups: [""], resources: ["pods"], verbs: ["get", "list", "watch"] }],
710
- };
711
- const binding = {
712
- apiVersion: "rbac.authorization.k8s.io/v1",
713
- kind: "RoleBinding",
714
- metadata,
715
- subjects: [{ kind: "ServiceAccount", name, namespace: NAMESPACE }],
716
- roleRef: { apiGroup: "rbac.authorization.k8s.io", kind: "Role", name },
717
- };
718
- return [serviceAccount, role, binding, configMap, deployment];
719
- }
720
592
  /** Neon's objects, when it runs. */
721
593
  export function neonObjects(config) {
722
594
  const { neon } = config;
723
595
  if (!neon.enabled)
724
596
  return [];
725
- const collectorEndpoint = neon.collector.otlpEndpoint || config.telemetry.otlpEndpoint;
726
597
  return [
727
598
  ...setup(config),
728
599
  ...controllerDb(config),
@@ -733,7 +604,6 @@ export function neonObjects(config) {
733
604
  ...control(config),
734
605
  ...compute(config),
735
606
  ...(neon.backup.enabled ? [backup(config)] : []),
736
- ...(neon.collector.enabled && collectorEndpoint ? collector(config, collectorEndpoint) : []),
737
607
  ];
738
608
  }
739
609
  //# sourceMappingURL=neon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"neon.js","sourceRoot":"","sources":["../../../../src/manifests/neon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"neon.js","sourceRoot":"","sources":["../../../../src/manifests/neon.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,45 @@
1
- import { componentName, labels, NAMESPACE, RELEASE, selectorLabels } from "./common.js";
1
+ import { BRANCH_FORK_PORT } from "../../../src/branch/names.js";
2
+ import { forksForBranches, sessionsNamespace } from "./alasio.js";
3
+ import { BRANCH_LABEL, COLLECTOR_PORT, collectorRuns, componentName, given, grafanaRuns, labels, MAIN_ENVIRONMENT, NAMESPACE, RELEASE, selectorLabels, } from "./common.js";
4
+ import { LAKE_QUERY_PORT } from "./lake.js";
2
5
  import { CONTROLLER_POD_LABELS, JOB_POD_SELECTOR, MOUNT_POD_LABELS, NODE_POD_LABELS } from "./juicefs-csi.js";
3
6
  import { VALKEY_PORT } from "./valkey.js";
4
7
  import { JUICEFS_ADMIN } from "./workspace-storage.js";
5
8
  /** The label of every session's pod, which alasio gives it. */
6
9
  const SESSION = { "alasio.dev/workload": "session" };
7
- /** alasio's pod, as a peer. */
8
- const FROM_ALASIO = {
9
- namespaceSelector: { matchLabels: { "kubernetes.io/metadata.name": NAMESPACE } },
10
- podSelector: { matchLabels: selectorLabels("alasio") },
11
- };
10
+ /** The namespace `name`, as a peer's selector. */
11
+ const namespaceNamed = (name) => ({ matchLabels: { "kubernetes.io/metadata.name": name } });
12
+ /** The alasio pod of `environment`, as a peer. */
13
+ const alasioOf = ({ namespace }) => ({ namespaceSelector: namespaceNamed(namespace), podSelector: { matchLabels: selectorLabels("alasio") } });
14
+ /** Every branch environment's namespace, as a peer's selector, by the label each has. */
15
+ const BRANCH_NAMESPACES = { matchExpressions: [{ key: BRANCH_LABEL, operator: "Exists" }] };
16
+ /** The labels of the data stack's pods, which its policy admits each other by. */
17
+ const STACK = { "app.kubernetes.io/instance": RELEASE, "alasio.dev/stack": "neon" };
12
18
  /** A NetworkPolicy of `name` in `namespace`, labelled as `component`'s. */
13
19
  function policy(name, namespace, component, spec) {
14
20
  return { apiVersion: "networking.k8s.io/v1", kind: "NetworkPolicy", metadata: { name, namespace, labels: labels(component) }, spec };
15
21
  }
16
22
  /**
17
- * Sessions: nothing in or out but bayma from alasio, alasio's telemetry receiver (the
23
+ * Sessions: nothing in or out but bayma from their alasio, its telemetry receiver (the
18
24
  * one egress of a session without internet), and, for a session with internet, the
19
- * public internet, none of the cluster's or its network's private addresses.
25
+ * public internet, none of the cluster's or its network's private addresses. A branch
26
+ * environment's sessions are its alasio's alone, as main's are main's.
20
27
  */
21
- function sessionPolicies(config) {
22
- const { namespace, blockedCidrs } = config.sessions;
28
+ function sessionPolicies(config, environment) {
29
+ const { blockedCidrs } = config.sessions;
30
+ const namespace = sessionsNamespace(config, environment);
31
+ const alasio = alasioOf(environment);
23
32
  return [
24
33
  policy("default-deny", namespace, "session", { podSelector: {}, policyTypes: ["Ingress", "Egress"] }),
25
34
  policy("bayma-from-alasio", namespace, "session", {
26
35
  podSelector: { matchLabels: SESSION },
27
36
  policyTypes: ["Ingress"],
28
- ingress: [{ from: [FROM_ALASIO], ports: [{ protocol: "TCP", port: 7290 }] }],
37
+ ingress: [{ from: [alasio], ports: [{ protocol: "TCP", port: 7290 }] }],
29
38
  }),
30
39
  policy("telemetry-to-alasio", namespace, "session", {
31
40
  podSelector: { matchLabels: SESSION },
32
41
  policyTypes: ["Egress"],
33
- egress: [{ to: [FROM_ALASIO], ports: [{ protocol: "TCP", port: config.telemetry.receiverPort }] }],
42
+ egress: [{ to: [alasio], ports: [{ protocol: "TCP", port: config.telemetry.receiverPort }] }],
34
43
  }),
35
44
  policy("full-internet", namespace, "session", {
36
45
  podSelector: { matchLabels: { ...SESSION, "alasio.dev/net-mode": "full" } },
@@ -39,22 +48,42 @@ function sessionPolicies(config) {
39
48
  }),
40
49
  ];
41
50
  }
42
- /** Neon's services, the object store, the lake and their jobs reach each other; alasio reaches the compute, its database. */
43
- function neonPolicies() {
44
- const stack = { "app.kubernetes.io/instance": RELEASE, "alasio.dev/stack": "neon" };
51
+ /**
52
+ * Neon's services, the object store, the lake and their jobs reach each other; alasio
53
+ * reaches the compute, its database. In a branch environment, its compute and its lake
54
+ * reach each other, and its alasio its compute, as main's do.
55
+ */
56
+ function neonPolicies({ namespace }) {
45
57
  return [
46
- policy(componentName("neon"), NAMESPACE, "neon", {
47
- podSelector: { matchLabels: stack },
58
+ policy(componentName("neon"), namespace, "neon", {
59
+ podSelector: { matchLabels: STACK },
48
60
  policyTypes: ["Ingress"],
49
- ingress: [{ from: [{ podSelector: { matchLabels: stack } }] }],
61
+ ingress: [{ from: [{ podSelector: { matchLabels: STACK } }] }],
50
62
  }),
51
- policy(componentName("neon-compute"), NAMESPACE, "neon", {
63
+ policy(componentName("neon-compute"), namespace, "neon", {
52
64
  podSelector: { matchLabels: selectorLabels("neon-compute") },
53
65
  policyTypes: ["Ingress"],
54
66
  ingress: [{ from: [{ podSelector: { matchLabels: selectorLabels("alasio") } }], ports: [{ protocol: "TCP", port: 55433 }] }],
55
67
  }),
56
68
  ];
57
69
  }
70
+ /**
71
+ * Branch environments' computes and lakes reach main's storage, which they share: the
72
+ * pageserver and safekeepers their timelines are on, neon-control their specs are
73
+ * served by, and the object store the lake's files are in; nothing else of main's, nor
74
+ * its compute, which is main's database.
75
+ */
76
+ function branchStoragePolicy(config) {
77
+ const shared = ["neon-pageserver", "neon-safekeeper", "neon-control", ...(config.objectStore.bundled.enabled ? ["seaweedfs"] : [])];
78
+ return policy(componentName("neon-branches"), NAMESPACE, "neon", {
79
+ podSelector: { matchLabels: { "app.kubernetes.io/instance": RELEASE }, matchExpressions: [{ key: "app.kubernetes.io/component", operator: "In", values: shared }] },
80
+ policyTypes: ["Ingress"],
81
+ ingress: [{
82
+ from: [{ namespaceSelector: BRANCH_NAMESPACES, podSelector: { matchLabels: STACK } }],
83
+ ports: [6400, 5454, 8080, 8333].map((port) => ({ protocol: "TCP", port })),
84
+ }],
85
+ });
86
+ }
58
87
  /**
59
88
  * Workspace storage's metadata and data are reached by JuiceFS's own pods alone (its
60
89
  * controller, its node service, the mount pods it runs and the Jobs that delete volumes'
@@ -79,7 +108,7 @@ function workspaceStoragePolicies(config) {
79
108
  policyTypes: ["Ingress"],
80
109
  ingress: [
81
110
  { from: juicefs, ports: [{ protocol: "TCP", port: VALKEY_PORT }] },
82
- { from: [{ podSelector: { matchLabels: selectorLabels("neon-collector") } }], ports: [{ protocol: "TCP", port: VALKEY_PORT }] },
111
+ { from: [{ podSelector: { matchLabels: selectorLabels("collector") } }], ports: [{ protocol: "TCP", port: VALKEY_PORT }] },
83
112
  ],
84
113
  }),
85
114
  ...(config.objectStore.bundled.enabled
@@ -91,35 +120,109 @@ function workspaceStoragePolicies(config) {
91
120
  : []),
92
121
  ];
93
122
  }
94
- /** The NetworkPolicies, unless they are turned off. */
95
- export function networkPolicyObjects(config) {
123
+ /**
124
+ * The telemetry collector takes OTLP from alasio and folder workspaces' bayma, beside the
125
+ * stack's own pods (neonPolicies), and from branch environments' alasio, compute and
126
+ * lake, and from nothing else: sessions' telemetry reaches it through their alasio's
127
+ * receiver alone.
128
+ */
129
+ function collectorPolicy({ host }) {
130
+ return policy(componentName("collector"), NAMESPACE, "collector", {
131
+ podSelector: { matchLabels: selectorLabels("collector") },
132
+ policyTypes: ["Ingress"],
133
+ ingress: [{
134
+ from: [
135
+ { podSelector: { matchLabels: selectorLabels("alasio") } },
136
+ ...(host.enabled ? [{ namespaceSelector: namespaceNamed(host.namespace) }] : []),
137
+ { namespaceSelector: BRANCH_NAMESPACES, podSelector: { matchLabels: selectorLabels("alasio") } },
138
+ { namespaceSelector: BRANCH_NAMESPACES, podSelector: { matchLabels: STACK } },
139
+ ],
140
+ ports: [{ protocol: "TCP", port: COLLECTOR_PORT }],
141
+ }],
142
+ });
143
+ }
144
+ /**
145
+ * Grafana takes no connection: `alasio grafana` reaches it through the API server's
146
+ * port-forward, which no NetworkPolicy sees. It reaches the cluster's DNS, its database
147
+ * on the compute and the lake's query endpoint, each of which admits it, and Telegram's
148
+ * Bot API, as alasio does, on the internet's HTTPS port; nothing else, and no other
149
+ * address of the cluster or its network.
150
+ */
151
+ function grafanaPolicies({ sessions }) {
152
+ const grafana = { podSelector: { matchLabels: selectorLabels("grafana") } };
153
+ const admitted = (component, port) => policy(componentName(`${component}-from-grafana`), NAMESPACE, component, {
154
+ podSelector: { matchLabels: selectorLabels(component) },
155
+ policyTypes: ["Ingress"],
156
+ ingress: [{ from: [grafana], ports: [{ protocol: "TCP", port }] }],
157
+ });
158
+ return [
159
+ policy(componentName("grafana"), NAMESPACE, "grafana", {
160
+ ...grafana,
161
+ policyTypes: ["Ingress", "Egress"],
162
+ egress: [
163
+ {
164
+ to: [{ namespaceSelector: { matchLabels: { "kubernetes.io/metadata.name": "kube-system" } }, podSelector: { matchLabels: { "k8s-app": "kube-dns" } } }],
165
+ ports: [{ protocol: "UDP", port: 53 }, { protocol: "TCP", port: 53 }],
166
+ },
167
+ { to: [{ podSelector: { matchLabels: selectorLabels("neon-compute") } }], ports: [{ protocol: "TCP", port: 55433 }] },
168
+ { to: [{ podSelector: { matchLabels: selectorLabels("lake") } }], ports: [{ protocol: "TCP", port: LAKE_QUERY_PORT }] },
169
+ // The addresses sessions with internet may not reach, the cluster's and its network's, are Grafana's too.
170
+ { to: [{ ipBlock: { cidr: "0.0.0.0/0", except: [...sessions.blockedCidrs] } }], ports: [{ protocol: "TCP", port: 443 }] },
171
+ ],
172
+ }),
173
+ admitted("neon-compute", 55433),
174
+ admitted("lake", LAKE_QUERY_PORT),
175
+ ];
176
+ }
177
+ /**
178
+ * alasio takes no connections but its sessions' telemetry, and, main, where it forks
179
+ * sessions for branch environments, their alasio's asking it to (src/branch/fork.ts).
180
+ */
181
+ function alasioPolicy(config, environment) {
182
+ const forks = environment.branch === null && forksForBranches(config);
183
+ const ingress = [
184
+ ...(config.sessions.enabled
185
+ ? [{
186
+ from: [{ namespaceSelector: namespaceNamed(sessionsNamespace(config, environment)), podSelector: { matchLabels: SESSION } }],
187
+ ports: [{ protocol: "TCP", port: config.telemetry.receiverPort }],
188
+ }]
189
+ : []),
190
+ ...(forks
191
+ ? [{ from: [{ namespaceSelector: BRANCH_NAMESPACES, podSelector: { matchLabels: selectorLabels("alasio") } }], ports: [{ protocol: "TCP", port: BRANCH_FORK_PORT }] }]
192
+ : []),
193
+ ];
194
+ return policy(componentName("alasio"), environment.namespace, "alasio", {
195
+ podSelector: { matchLabels: selectorLabels("alasio") },
196
+ policyTypes: ["Ingress"],
197
+ ...given("ingress", ingress),
198
+ });
199
+ }
200
+ /**
201
+ * The NetworkPolicies of the alasio of `environment`, unless they are turned off: main's,
202
+ * and those that admit branch environments to what of main's they share; or a branch
203
+ * environment's own.
204
+ */
205
+ export function networkPolicyObjects(config, environment = MAIN_ENVIRONMENT) {
96
206
  if (!config.networkPolicies.enabled)
97
207
  return [];
98
208
  const { sessions, host } = config;
209
+ if (environment.branch !== null) {
210
+ return [...(sessions.enabled ? sessionPolicies(config, environment) : []), alasioPolicy(config, environment), ...neonPolicies(environment)];
211
+ }
99
212
  return [
100
- ...(sessions.enabled ? sessionPolicies(config) : []),
213
+ ...(sessions.enabled ? sessionPolicies(config, environment) : []),
101
214
  // Folder workspaces' bayma is reached by alasio alone; what it reaches is the machine's.
102
215
  ...(host.enabled
103
216
  ? [policy("bayma-from-alasio", host.namespace, "folder-bayma", {
104
217
  podSelector: {},
105
218
  policyTypes: ["Ingress"],
106
- ingress: [{ from: [FROM_ALASIO], ports: [{ protocol: "TCP", port: 7290 }] }],
219
+ ingress: [{ from: [alasioOf(environment)], ports: [{ protocol: "TCP", port: 7290 }] }],
107
220
  })]
108
221
  : []),
109
- // alasio takes no connections but sessions' telemetry.
110
- policy(componentName("alasio"), NAMESPACE, "alasio", {
111
- podSelector: { matchLabels: selectorLabels("alasio") },
112
- policyTypes: ["Ingress"],
113
- ...(sessions.enabled
114
- ? {
115
- ingress: [{
116
- from: [{ namespaceSelector: { matchLabels: { "kubernetes.io/metadata.name": sessions.namespace } }, podSelector: { matchLabels: SESSION } }],
117
- ports: [{ protocol: "TCP", port: config.telemetry.receiverPort }],
118
- }],
119
- }
120
- : {}),
121
- }),
122
- ...(config.neon.enabled ? neonPolicies() : []),
222
+ alasioPolicy(config, environment),
223
+ ...(config.neon.enabled ? [...neonPolicies(environment), branchStoragePolicy(config)] : []),
224
+ ...(collectorRuns(config) ? [collectorPolicy(config)] : []),
225
+ ...(grafanaRuns(config) ? grafanaPolicies(config) : []),
123
226
  ...(config.workspaceStorage.enabled ? workspaceStoragePolicies(config) : []),
124
227
  ];
125
228
  }