alasio 5.1.0 → 7.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/branches.js +53 -22
- package/dist/cli/src/branches.js.map +1 -1
- package/dist/cli/src/capacity.js +46 -0
- package/dist/cli/src/capacity.js.map +1 -0
- package/dist/cli/src/cluster/docker-engine.js +6 -4
- package/dist/cli/src/cluster/docker-engine.js.map +1 -1
- package/dist/cli/src/cluster/docker.js +49 -10
- package/dist/cli/src/cluster/docker.js.map +1 -1
- package/dist/cli/src/cluster/host.js +45 -19
- package/dist/cli/src/cluster/host.js.map +1 -1
- package/dist/cli/src/cluster/k3s.js +109 -9
- package/dist/cli/src/cluster/k3s.js.map +1 -1
- package/dist/cli/src/cluster/node.js +94 -50
- package/dist/cli/src/cluster/node.js.map +1 -1
- package/dist/cli/src/cluster/tar.js +43 -1
- package/dist/cli/src/cluster/tar.js.map +1 -1
- package/dist/cli/src/commands/branch.js +9 -4
- package/dist/cli/src/commands/branch.js.map +1 -1
- package/dist/cli/src/commands/restore-filer-store.js +247 -0
- package/dist/cli/src/commands/restore-filer-store.js.map +1 -0
- package/dist/cli/src/commands/status.js +141 -12
- package/dist/cli/src/commands/status.js.map +1 -1
- package/dist/cli/src/commands/uninstall.js +1 -1
- package/dist/cli/src/commands/uninstall.js.map +1 -1
- package/dist/cli/src/commands/up.js +42 -4
- package/dist/cli/src/commands/up.js.map +1 -1
- package/dist/cli/src/commands/upgrade.js +22 -6
- 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 +13 -4
- package/dist/cli/src/config.js.map +1 -1
- package/dist/cli/src/cpu-baseline.js +97 -0
- package/dist/cli/src/cpu-baseline.js.map +1 -0
- package/dist/cli/src/install.js +44 -11
- package/dist/cli/src/install.js.map +1 -1
- package/dist/cli/src/kept-releases.js +59 -0
- package/dist/cli/src/kept-releases.js.map +1 -0
- package/dist/cli/src/kube/api.js +13 -5
- package/dist/cli/src/kube/api.js.map +1 -1
- package/dist/cli/src/kube/apply.js +116 -13
- package/dist/cli/src/kube/apply.js.map +1 -1
- package/dist/cli/src/kube/autoscalers.js +48 -0
- package/dist/cli/src/kube/autoscalers.js.map +1 -0
- package/dist/cli/src/kube/object-store-scale.js +116 -0
- package/dist/cli/src/kube/object-store-scale.js.map +1 -0
- package/dist/cli/src/kube/rollout.js +23 -0
- package/dist/cli/src/kube/rollout.js.map +1 -1
- package/dist/cli/src/manifests/admission.js +416 -0
- package/dist/cli/src/manifests/admission.js.map +1 -0
- package/dist/cli/src/manifests/agent-sandbox.js +6 -3
- package/dist/cli/src/manifests/agent-sandbox.js.map +1 -1
- package/dist/cli/src/manifests/alasio.js +165 -25
- package/dist/cli/src/manifests/alasio.js.map +1 -1
- package/dist/cli/src/manifests/branch.js +2 -1
- package/dist/cli/src/manifests/branch.js.map +1 -1
- package/dist/cli/src/manifests/cloudeventsources.eventing.keda.sh.json +219 -0
- package/dist/cli/src/manifests/clustercloudeventsources.eventing.keda.sh.json +218 -0
- package/dist/cli/src/manifests/clustertriggerauthentications.keda.sh.json +997 -0
- package/dist/cli/src/manifests/collector.js +92 -45
- package/dist/cli/src/manifests/collector.js.map +1 -1
- package/dist/cli/src/manifests/common.js +34 -8
- package/dist/cli/src/manifests/common.js.map +1 -1
- package/dist/cli/src/manifests/config.js +273 -35
- package/dist/cli/src/manifests/config.js.map +1 -1
- package/dist/cli/src/manifests/controllers.js +39 -0
- package/dist/cli/src/manifests/controllers.js.map +1 -0
- package/dist/cli/src/manifests/disruption.js +47 -0
- package/dist/cli/src/manifests/disruption.js.map +1 -0
- package/dist/cli/src/manifests/grafana.js +66 -10
- package/dist/cli/src/manifests/grafana.js.map +1 -1
- package/dist/cli/src/manifests/headroom.js +40 -0
- package/dist/cli/src/manifests/headroom.js.map +1 -0
- package/dist/cli/src/manifests/index.js +20 -6
- package/dist/cli/src/manifests/index.js.map +1 -1
- package/dist/cli/src/manifests/juicefs-csi.js +9 -6
- package/dist/cli/src/manifests/juicefs-csi.js.map +1 -1
- package/dist/cli/src/manifests/keda.js +271 -0
- package/dist/cli/src/manifests/keda.js.map +1 -0
- package/dist/cli/src/manifests/lake.js +13 -5
- package/dist/cli/src/manifests/lake.js.map +1 -1
- package/dist/cli/src/manifests/neon.js +196 -51
- package/dist/cli/src/manifests/neon.js.map +1 -1
- package/dist/cli/src/manifests/network-policies.js +177 -28
- package/dist/cli/src/manifests/network-policies.js.map +1 -1
- package/dist/cli/src/manifests/node-agent.js +107 -0
- package/dist/cli/src/manifests/node-agent.js.map +1 -0
- package/dist/cli/src/manifests/object-store.js +543 -82
- package/dist/cli/src/manifests/object-store.js.map +1 -1
- package/dist/cli/src/manifests/priorities.js +31 -0
- package/dist/cli/src/manifests/priorities.js.map +1 -0
- package/dist/cli/src/manifests/scaledjobs.keda.sh.json +7507 -0
- package/dist/cli/src/manifests/scaledobjects.keda.sh.json +564 -0
- package/dist/cli/src/manifests/scalers.js +24 -0
- package/dist/cli/src/manifests/scalers.js.map +1 -0
- package/dist/cli/src/manifests/sizing.js +40 -0
- package/dist/cli/src/manifests/sizing.js.map +1 -0
- package/dist/cli/src/manifests/triggerauthentications.keda.sh.json +992 -0
- package/dist/cli/src/manifests/valkey.js +63 -35
- package/dist/cli/src/manifests/valkey.js.map +1 -1
- package/dist/cli/src/manifests/verticalpodautoscalercheckpoints.autoscaling.k8s.io.json +250 -0
- package/dist/cli/src/manifests/verticalpodautoscalers.autoscaling.k8s.io.json +837 -0
- package/dist/cli/src/manifests/vpa.js +220 -0
- package/dist/cli/src/manifests/vpa.js.map +1 -0
- package/dist/cli/src/manifests/workspace-storage.js +12 -2
- package/dist/cli/src/manifests/workspace-storage.js.map +1 -1
- package/dist/cli/src/object-store.js +57 -0
- package/dist/cli/src/object-store.js.map +1 -0
- package/dist/cli/src/release.js +6 -6
- package/dist/cli/src/target.js +1 -1
- package/dist/cli/src/target.js.map +1 -1
- package/dist/cluster/node/pins.json +6 -2
- package/dist/neon/control/branches.js +31 -12
- package/dist/neon/control/branches.js.map +1 -1
- package/dist/neon/control/endpoints.js +108 -0
- package/dist/neon/control/endpoints.js.map +1 -0
- package/dist/neon/control/scram.js +13 -1
- package/dist/neon/control/scram.js.map +1 -1
- package/dist/neon/control/secrets.js +52 -8
- package/dist/neon/control/secrets.js.map +1 -1
- package/dist/src/kube/busy-label.js +13 -0
- package/dist/src/kube/busy-label.js.map +1 -0
- package/dist/src/kube/config.js +30 -4
- package/dist/src/kube/config.js.map +1 -1
- package/dist/src/kube/sandbox-shape.js +98 -0
- package/dist/src/kube/sandbox-shape.js.map +1 -0
- package/dist/src/node-agent/names.js +74 -0
- package/dist/src/node-agent/names.js.map +1 -0
- package/dist/src/sandbox/names.js +44 -0
- package/dist/src/sandbox/names.js.map +1 -0
- package/package.json +2 -2
- package/dist/cluster/node/config-v3.toml.tmpl +0 -12
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import { imageReference } from "../images.js";
|
|
2
|
+
import cloudEventSources from "./cloudeventsources.eventing.keda.sh.json" with { type: "json" };
|
|
3
|
+
import clusterCloudEventSources from "./clustercloudeventsources.eventing.keda.sh.json" with { type: "json" };
|
|
4
|
+
import clusterTriggerAuthentications from "./clustertriggerauthentications.keda.sh.json" with { type: "json" };
|
|
5
|
+
import { componentName, labels, NAMESPACE, selectorLabels } from "./common.js";
|
|
6
|
+
import { rule, sizedController } from "./controllers.js";
|
|
7
|
+
import scaledJobs from "./scaledjobs.keda.sh.json" with { type: "json" };
|
|
8
|
+
import scaledObjects from "./scaledobjects.keda.sh.json" with { type: "json" };
|
|
9
|
+
import triggerAuthentications from "./triggerauthentications.keda.sh.json" with { type: "json" };
|
|
10
|
+
/**
|
|
11
|
+
* KEDA's CRDs, as the API server takes them, whose schemas' keys are not client-node's
|
|
12
|
+
* model's. The operator watches every one of them, so all are installed, though alasio
|
|
13
|
+
* makes ScaledObjects alone.
|
|
14
|
+
*/
|
|
15
|
+
export const KEDA_CRDS = [scaledObjects, scaledJobs, triggerAuthentications, clusterTriggerAuthentications, cloudEventSources, clusterCloudEventSources];
|
|
16
|
+
/** The external metrics' APIService, which one provider serves for the whole cluster: KEDA's metrics API server, here. */
|
|
17
|
+
export const EXTERNAL_METRICS = "v1beta1.external.metrics.k8s.io";
|
|
18
|
+
const OPERATOR = componentName("keda-operator");
|
|
19
|
+
const METRICS_API_SERVER = componentName("keda-metrics-apiserver");
|
|
20
|
+
const WEBHOOKS = componentName("keda-admission-webhooks");
|
|
21
|
+
const WEBHOOK_CONFIGURATION = componentName("keda-admission");
|
|
22
|
+
/** The Secret of the certificate the operator makes for all three, and keeps renewed. */
|
|
23
|
+
const CERTIFICATES = componentName("keda-certs");
|
|
24
|
+
/** The identity all three run as, as upstream's do. */
|
|
25
|
+
const ACCOUNT = OPERATOR;
|
|
26
|
+
/** The volume of the certificates' Secret, mounted at /certs, as each of the three reads it; the operator starts before it exists. */
|
|
27
|
+
function certificates(optional) {
|
|
28
|
+
return {
|
|
29
|
+
volume: { name: "certificates", secret: { secretName: CERTIFICATES, ...(optional ? { optional: true } : {}) } },
|
|
30
|
+
mount: { name: "certificates", mountPath: "/certs", readOnly: true },
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** The variables each of the three is given, as upstream gives them: its namespace, every namespace watched. */
|
|
34
|
+
const KEDA_ENV = [
|
|
35
|
+
{ name: "POD_NAMESPACE", valueFrom: { fieldRef: { fieldPath: "metadata.namespace" } } },
|
|
36
|
+
{ name: "WATCH_NAMESPACE", value: "" },
|
|
37
|
+
];
|
|
38
|
+
/** The probes of the operator and the webhooks, on their health port. */
|
|
39
|
+
const HEALTH_PROBES = {
|
|
40
|
+
livenessProbe: { httpGet: { path: "/healthz", port: 8081 }, initialDelaySeconds: 25 },
|
|
41
|
+
readinessProbe: { httpGet: { path: "/readyz", port: 8081 }, initialDelaySeconds: 20 },
|
|
42
|
+
};
|
|
43
|
+
/** The operator, which scales what ScaledObjects name, and makes the three's certificate. */
|
|
44
|
+
function operator(config) {
|
|
45
|
+
const { operator } = config.autoscaling.keda;
|
|
46
|
+
const certs = certificates(true);
|
|
47
|
+
return sizedController(config, "keda-operator", ACCOUNT, {
|
|
48
|
+
name: "keda-operator",
|
|
49
|
+
image: imageReference(operator.image),
|
|
50
|
+
command: ["/keda"],
|
|
51
|
+
args: [
|
|
52
|
+
"--leader-elect",
|
|
53
|
+
"--zap-log-level=info",
|
|
54
|
+
"--zap-encoder=console",
|
|
55
|
+
"--zap-time-encoding=rfc3339",
|
|
56
|
+
"--enable-cert-rotation=true",
|
|
57
|
+
`--cert-secret-name=${CERTIFICATES}`,
|
|
58
|
+
`--operator-service-name=${OPERATOR}`,
|
|
59
|
+
`--metrics-server-service-name=${METRICS_API_SERVER}`,
|
|
60
|
+
`--webhooks-service-name=${WEBHOOKS}`,
|
|
61
|
+
`--validating-webhook-name=${WEBHOOK_CONFIGURATION}`,
|
|
62
|
+
],
|
|
63
|
+
env: [
|
|
64
|
+
...KEDA_ENV,
|
|
65
|
+
{ name: "WATCH_LABEL_SELECTOR", value: "" },
|
|
66
|
+
{ name: "WATCH_LABEL_SELECTOR_FOR_TRIGGERAUTH", value: "" },
|
|
67
|
+
// The Secrets it reads are of its own namespace alone: alasio's ScaledObjects
|
|
68
|
+
// authenticate to nothing, and another's that does reads its Secret from there,
|
|
69
|
+
// through a ClusterTriggerAuthentication.
|
|
70
|
+
{ name: "KEDA_RESTRICT_SECRET_ACCESS", value: "true" },
|
|
71
|
+
],
|
|
72
|
+
ports: [{ name: "http", containerPort: 8080 }, { name: "metricsservice", containerPort: 9666 }],
|
|
73
|
+
...HEALTH_PROBES,
|
|
74
|
+
resources: operator.resources,
|
|
75
|
+
volumeMounts: [certs.mount],
|
|
76
|
+
}, [certs.volume]);
|
|
77
|
+
}
|
|
78
|
+
/** The metrics API server, which serves the API server the metrics of ScaledObjects' triggers, from the operator. */
|
|
79
|
+
function metricsApiServer(config) {
|
|
80
|
+
const { metricsApiServer } = config.autoscaling.keda;
|
|
81
|
+
const certs = certificates(false);
|
|
82
|
+
return sizedController(config, "keda-metrics-apiserver", ACCOUNT, {
|
|
83
|
+
name: "keda-metrics-apiserver",
|
|
84
|
+
image: imageReference(metricsApiServer.image),
|
|
85
|
+
command: ["/keda-adapter"],
|
|
86
|
+
args: [
|
|
87
|
+
"--secure-port=6443",
|
|
88
|
+
"--zap-log-level=error",
|
|
89
|
+
"--client-ca-file=/certs/ca.crt",
|
|
90
|
+
"--tls-cert-file=/certs/tls.crt",
|
|
91
|
+
"--tls-private-key-file=/certs/tls.key",
|
|
92
|
+
"--cert-dir=/certs",
|
|
93
|
+
`--metrics-service-address=${OPERATOR}.${NAMESPACE}.svc.cluster.local:9666`,
|
|
94
|
+
],
|
|
95
|
+
env: KEDA_ENV,
|
|
96
|
+
ports: [{ name: "https", containerPort: 6443 }, { name: "http", containerPort: 8080 }],
|
|
97
|
+
livenessProbe: { httpGet: { path: "/healthz", port: 6443, scheme: "HTTPS" }, initialDelaySeconds: 5 },
|
|
98
|
+
readinessProbe: { httpGet: { path: "/readyz", port: 6443, scheme: "HTTPS" }, initialDelaySeconds: 5 },
|
|
99
|
+
resources: metricsApiServer.resources,
|
|
100
|
+
volumeMounts: [{ name: "tmp", mountPath: "/tmp" }, certs.mount],
|
|
101
|
+
}, [{ name: "tmp", emptyDir: {} }, certs.volume]);
|
|
102
|
+
}
|
|
103
|
+
/** The admission webhooks, which refuse a ScaledObject that cannot work, such as two on one workload. */
|
|
104
|
+
function admissionWebhooks(config) {
|
|
105
|
+
const { admissionWebhooks } = config.autoscaling.keda;
|
|
106
|
+
const certs = certificates(false);
|
|
107
|
+
return sizedController(config, "keda-admission-webhooks", ACCOUNT, {
|
|
108
|
+
name: "keda-admission-webhooks",
|
|
109
|
+
image: imageReference(admissionWebhooks.image),
|
|
110
|
+
command: ["/keda-admission-webhooks"],
|
|
111
|
+
args: ["--zap-log-level=info", "--zap-encoder=console", "--zap-time-encoding=rfc3339", "--cert-dir=/certs"],
|
|
112
|
+
env: KEDA_ENV,
|
|
113
|
+
ports: [{ name: "https", containerPort: 9443 }, { name: "metrics", containerPort: 8080 }],
|
|
114
|
+
...HEALTH_PROBES,
|
|
115
|
+
resources: admissionWebhooks.resources,
|
|
116
|
+
volumeMounts: [certs.mount],
|
|
117
|
+
}, [certs.volume]);
|
|
118
|
+
}
|
|
119
|
+
/** A Service of KEDA's, `name`, to `component`'s pods on `ports`. */
|
|
120
|
+
function service(name, component, ports) {
|
|
121
|
+
return { apiVersion: "v1", kind: "Service", metadata: { name, namespace: NAMESPACE, labels: labels(component) }, spec: { selector: selectorLabels(component), ports } };
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Who the three are and what they may do: upstream's grants, but that in alasio's
|
|
125
|
+
* namespace the operator writes its certificate's Secret and its leader's lease alone,
|
|
126
|
+
* of the Secrets and leases there, and of the cluster's webhooks and APIServices its
|
|
127
|
+
* own; that it writes no Job, as alasio makes no ScaledJob; and that of the objects
|
|
128
|
+
* ScaledObjects scale it reads Deployments and StatefulSets alone, rather than any object
|
|
129
|
+
* of the cluster's, Secrets among them: a cluster whose ScaledObjects scale another kind
|
|
130
|
+
* (a custom resource), or whose ScaledJobs run, needs a KEDA of its own
|
|
131
|
+
* (autoscaling.keda.enabled false).
|
|
132
|
+
*/
|
|
133
|
+
function identity() {
|
|
134
|
+
const metadata = { name: OPERATOR, labels: labels("keda-operator") };
|
|
135
|
+
const subjects = [{ kind: "ServiceAccount", name: ACCOUNT, namespace: NAMESPACE }];
|
|
136
|
+
const serviceAccount = { apiVersion: "v1", kind: "ServiceAccount", metadata: { ...metadata, namespace: NAMESPACE } };
|
|
137
|
+
const role = {
|
|
138
|
+
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
139
|
+
kind: "Role",
|
|
140
|
+
metadata: { ...metadata, namespace: NAMESPACE },
|
|
141
|
+
rules: [
|
|
142
|
+
rule([""], ["secrets"], ["create", "list", "watch"]),
|
|
143
|
+
rule([""], ["secrets"], ["get", "patch", "update", "delete"], [CERTIFICATES]),
|
|
144
|
+
rule(["coordination.k8s.io"], ["leases"], ["create", "list", "watch"]),
|
|
145
|
+
rule(["coordination.k8s.io"], ["leases"], ["get", "patch", "update", "delete"], ["operator.keda.sh"]),
|
|
146
|
+
],
|
|
147
|
+
};
|
|
148
|
+
const clusterRole = {
|
|
149
|
+
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
150
|
+
kind: "ClusterRole",
|
|
151
|
+
metadata,
|
|
152
|
+
rules: [
|
|
153
|
+
rule([""], ["configmaps", "configmaps/status", "external", "pods", "services"], ["get", "list", "watch"]),
|
|
154
|
+
rule([""], ["limitranges", "serviceaccounts"], ["list", "watch"]),
|
|
155
|
+
rule(["", "events.k8s.io"], ["events"], ["create", "patch"]),
|
|
156
|
+
rule(["*"], ["*/scale"], ["get", "list", "patch", "update", "watch"]),
|
|
157
|
+
// Of the webhooks and APIServices it reads, it writes its own alone, the CA they trust.
|
|
158
|
+
rule(["admissionregistration.k8s.io"], ["validatingwebhookconfigurations"], ["get", "list", "watch"]),
|
|
159
|
+
rule(["admissionregistration.k8s.io"], ["validatingwebhookconfigurations"], ["patch", "update"], [WEBHOOK_CONFIGURATION]),
|
|
160
|
+
rule(["apiregistration.k8s.io"], ["apiservices"], ["get", "list", "watch"]),
|
|
161
|
+
rule(["apiregistration.k8s.io"], ["apiservices"], ["patch", "update"], [EXTERNAL_METRICS]),
|
|
162
|
+
rule(["apps"], ["deployments", "statefulsets"], ["get", "list", "watch"]),
|
|
163
|
+
rule(["apps"], ["replicasets"], ["list", "watch"]),
|
|
164
|
+
rule(["autoscaling"], ["horizontalpodautoscalers"], ["create", "delete", "get", "list", "patch", "update", "watch"]),
|
|
165
|
+
// ScaledJobs' Jobs, which alasio makes none of: read, as the operator watches them, never written.
|
|
166
|
+
rule(["batch"], ["jobs"], ["get", "list", "watch"]),
|
|
167
|
+
rule(["discovery.k8s.io"], ["endpointslices"], ["get", "list", "watch"]),
|
|
168
|
+
rule(["eventing.keda.sh"], ["cloudeventsources", "cloudeventsources/status", "clustercloudeventsources", "clustercloudeventsources/status"], ["get", "list", "patch", "update", "watch"]),
|
|
169
|
+
rule(["keda.sh"], [
|
|
170
|
+
"clustertriggerauthentications",
|
|
171
|
+
"clustertriggerauthentications/status",
|
|
172
|
+
"scaledjobs",
|
|
173
|
+
"scaledjobs/finalizers",
|
|
174
|
+
"scaledjobs/status",
|
|
175
|
+
"scaledobjects",
|
|
176
|
+
"scaledobjects/finalizers",
|
|
177
|
+
"scaledobjects/status",
|
|
178
|
+
"triggerauthentications",
|
|
179
|
+
"triggerauthentications/status",
|
|
180
|
+
], ["get", "list", "patch", "update", "watch"]),
|
|
181
|
+
],
|
|
182
|
+
};
|
|
183
|
+
const externalMetricsReader = {
|
|
184
|
+
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
185
|
+
kind: "ClusterRole",
|
|
186
|
+
metadata: { name: componentName("keda-external-metrics-reader"), labels: labels("keda-operator") },
|
|
187
|
+
rules: [rule(["external.metrics.k8s.io"], ["*"], ["*"])],
|
|
188
|
+
};
|
|
189
|
+
const clusterBinding = (name, roleName, bound = subjects) => ({
|
|
190
|
+
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
191
|
+
kind: "ClusterRoleBinding",
|
|
192
|
+
metadata: { name, labels: labels("keda-operator") },
|
|
193
|
+
subjects: bound,
|
|
194
|
+
roleRef: { apiGroup: "rbac.authorization.k8s.io", kind: "ClusterRole", name: roleName },
|
|
195
|
+
});
|
|
196
|
+
const roleBinding = (name, namespace, roleName) => ({
|
|
197
|
+
apiVersion: "rbac.authorization.k8s.io/v1",
|
|
198
|
+
kind: "RoleBinding",
|
|
199
|
+
metadata: { name, namespace, labels: labels("keda-operator") },
|
|
200
|
+
subjects,
|
|
201
|
+
roleRef: { apiGroup: "rbac.authorization.k8s.io", kind: "Role", name: roleName },
|
|
202
|
+
});
|
|
203
|
+
return [
|
|
204
|
+
serviceAccount,
|
|
205
|
+
role,
|
|
206
|
+
roleBinding(OPERATOR, NAMESPACE, OPERATOR),
|
|
207
|
+
clusterRole,
|
|
208
|
+
clusterBinding(OPERATOR, OPERATOR),
|
|
209
|
+
externalMetricsReader,
|
|
210
|
+
// The cluster's HPAs, which KEDA's are, read external metrics.
|
|
211
|
+
clusterBinding(componentName("keda-hpa-controller-external-metrics"), externalMetricsReader.metadata?.name ?? "", [
|
|
212
|
+
{ kind: "ServiceAccount", name: "horizontal-pod-autoscaler", namespace: "kube-system" },
|
|
213
|
+
]),
|
|
214
|
+
// The metrics API server authenticates the API server's calls as an extension API server does.
|
|
215
|
+
clusterBinding(componentName("keda-system-auth-delegator"), "system:auth-delegator"),
|
|
216
|
+
roleBinding(componentName("keda-auth-reader"), "kube-system", "extension-apiserver-authentication-reader"),
|
|
217
|
+
];
|
|
218
|
+
}
|
|
219
|
+
/** Where the API server reaches the metrics API server and the webhooks, which the operator gives the CA of. */
|
|
220
|
+
function registrations() {
|
|
221
|
+
const apiService = {
|
|
222
|
+
apiVersion: "apiregistration.k8s.io/v1",
|
|
223
|
+
kind: "APIService",
|
|
224
|
+
metadata: { name: EXTERNAL_METRICS, labels: labels("keda-metrics-apiserver") },
|
|
225
|
+
spec: { group: "external.metrics.k8s.io", version: "v1beta1", groupPriorityMinimum: 100, versionPriority: 100, service: { name: METRICS_API_SERVER, namespace: NAMESPACE } },
|
|
226
|
+
};
|
|
227
|
+
// Its webhook of each kind as upstream's, which KEDA answers at its path; ignored while it does not answer.
|
|
228
|
+
const webhook = (name, group, resource, path) => ({
|
|
229
|
+
name,
|
|
230
|
+
admissionReviewVersions: ["v1"],
|
|
231
|
+
clientConfig: { service: { name: WEBHOOKS, namespace: NAMESPACE, path } },
|
|
232
|
+
failurePolicy: "Ignore",
|
|
233
|
+
matchPolicy: "Equivalent",
|
|
234
|
+
namespaceSelector: {},
|
|
235
|
+
objectSelector: {},
|
|
236
|
+
rules: [{ apiGroups: [group], apiVersions: ["v1alpha1"], operations: ["CREATE", "UPDATE"], resources: [resource] }],
|
|
237
|
+
sideEffects: "None",
|
|
238
|
+
timeoutSeconds: 10,
|
|
239
|
+
});
|
|
240
|
+
const webhooks = {
|
|
241
|
+
apiVersion: "admissionregistration.k8s.io/v1",
|
|
242
|
+
kind: "ValidatingWebhookConfiguration",
|
|
243
|
+
metadata: { name: WEBHOOK_CONFIGURATION, labels: labels("keda-admission-webhooks") },
|
|
244
|
+
webhooks: [
|
|
245
|
+
webhook("vscaledobject.kb.io", "keda.sh", "scaledobjects", "/validate-keda-sh-v1alpha1-scaledobject"),
|
|
246
|
+
webhook("vscaledjob.kb.io", "keda.sh", "scaledjobs", "/validate-keda-sh-v1alpha1-scaledjob"),
|
|
247
|
+
webhook("vstriggerauthentication.kb.io", "keda.sh", "triggerauthentications", "/validate-keda-sh-v1alpha1-triggerauthentication"),
|
|
248
|
+
webhook("vsclustertriggerauthentication.kb.io", "keda.sh", "clustertriggerauthentications", "/validate-keda-sh-v1alpha1-clustertriggerauthentication"),
|
|
249
|
+
webhook("vcloudeventsource.kb.io", "eventing.keda.sh", "cloudeventsources", "/validate-eventing-keda-sh-v1alpha1-cloudeventsource"),
|
|
250
|
+
webhook("vclustercloudeventsource.kb.io", "eventing.keda.sh", "clustercloudeventsources", "/validate-eventing-keda-sh-v1alpha1-clustercloudeventsource"),
|
|
251
|
+
],
|
|
252
|
+
};
|
|
253
|
+
return [apiService, webhooks];
|
|
254
|
+
}
|
|
255
|
+
/** KEDA's objects, unless the cluster has it already. */
|
|
256
|
+
export function kedaObjects(config) {
|
|
257
|
+
if (!config.autoscaling.keda.enabled)
|
|
258
|
+
return [];
|
|
259
|
+
return [
|
|
260
|
+
...KEDA_CRDS,
|
|
261
|
+
...identity(),
|
|
262
|
+
service(OPERATOR, "keda-operator", [{ name: "metricsservice", port: 9666, targetPort: 9666 }, { name: "metrics", port: 8080, targetPort: 8080 }]),
|
|
263
|
+
service(METRICS_API_SERVER, "keda-metrics-apiserver", [{ name: "https", port: 443, targetPort: 6443 }, { name: "metrics", port: 8080, targetPort: 8080 }]),
|
|
264
|
+
service(WEBHOOKS, "keda-admission-webhooks", [{ name: "https", port: 443, targetPort: 9443 }, { name: "metrics", port: 8080, targetPort: 8080 }]),
|
|
265
|
+
...registrations(),
|
|
266
|
+
...operator(config),
|
|
267
|
+
...metricsApiServer(config),
|
|
268
|
+
...admissionWebhooks(config),
|
|
269
|
+
];
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=keda.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keda.js","sourceRoot":"","sources":["../../../../src/manifests/keda.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { computeId, MAIN } from "../../../neon/control/branches.js";
|
|
1
2
|
import { imageReference } from "../images.js";
|
|
2
|
-
import { componentName, lakeRuns, MAIN_ENVIRONMENT, neonName, otelEnv, restrictedContainer, s3Endpoint, selectorLabels, stackLabels, stackPodSpec, } from "./common.js";
|
|
3
|
+
import { componentName, lakeRuns, MAIN_ENVIRONMENT, neonName, ONE, otelEnv, replicasOf, restrictedContainer, s3Endpoint, selectorLabels, stackLabels, stackPodSpec, } from "./common.js";
|
|
4
|
+
import { PROXY_HOST, PROXY_PORT } from "./neon.js";
|
|
5
|
+
import { priority } from "./priorities.js";
|
|
6
|
+
import { verticalPodAutoscaler } from "./sizing.js";
|
|
3
7
|
/** The port its telemetry intake takes OTLP over HTTP on. */
|
|
4
8
|
export const LAKE_INTAKE_PORT = 4318;
|
|
5
9
|
/** The port its query endpoint takes queries on. */
|
|
@@ -27,8 +31,10 @@ export function lakeObjects(config, environment = MAIN_ENVIRONMENT) {
|
|
|
27
31
|
};
|
|
28
32
|
// Where the lake is, which both containers open it at.
|
|
29
33
|
const lakeEnv = [
|
|
30
|
-
|
|
31
|
-
{ name: "
|
|
34
|
+
// Its environment's compute, through Neon's proxy, which wakes it if it sleeps.
|
|
35
|
+
{ name: "LAKE_DATABASE_HOST", value: PROXY_HOST },
|
|
36
|
+
{ name: "LAKE_DATABASE_PORT", value: String(PROXY_PORT) },
|
|
37
|
+
{ name: "LAKE_DATABASE_ENDPOINT", value: computeId(environment.branch ?? MAIN) },
|
|
32
38
|
{ name: "LAKE_DATA_PATH", value: `s3://${config.objectStore.buckets.lake}/` },
|
|
33
39
|
{ name: "LAKE_S3_ENDPOINT", value: s3Endpoint(config) },
|
|
34
40
|
{ name: "HOME", value: "/tmp" },
|
|
@@ -63,13 +69,15 @@ export function lakeObjects(config, environment = MAIN_ENVIRONMENT) {
|
|
|
63
69
|
kind: "Deployment",
|
|
64
70
|
metadata: { name, namespace: environment.namespace, labels: stackLabels("lake") },
|
|
65
71
|
spec: {
|
|
66
|
-
|
|
72
|
+
...replicasOf(ONE),
|
|
67
73
|
// One loader: two would race each other's loads.
|
|
68
74
|
strategy: { type: "Recreate" },
|
|
69
75
|
selector: { matchLabels: selectorLabels("lake") },
|
|
70
76
|
template: {
|
|
71
77
|
metadata: { labels: stackLabels("lake") },
|
|
72
78
|
spec: {
|
|
79
|
+
// Main's serves Grafana's alerts, which never sleep; a branch's nothing.
|
|
80
|
+
...priority(main ? "floor" : "component"),
|
|
73
81
|
...stackPodSpec(config),
|
|
74
82
|
terminationGracePeriodSeconds: 60,
|
|
75
83
|
containers: [
|
|
@@ -99,6 +107,6 @@ export function lakeObjects(config, environment = MAIN_ENVIRONMENT) {
|
|
|
99
107
|
},
|
|
100
108
|
},
|
|
101
109
|
};
|
|
102
|
-
return [service, deployment];
|
|
110
|
+
return [service, deployment, verticalPodAutoscaler(deployment, "InPlace")];
|
|
103
111
|
}
|
|
104
112
|
//# sourceMappingURL=lake.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lake.js","sourceRoot":"","sources":["../../../../src/manifests/lake.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,aAAa,EAEb,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"lake.js","sourceRoot":"","sources":["../../../../src/manifests/lake.ts"],"names":[],"mappings":"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"}
|