alasio 5.1.0 → 6.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 +6 -14
- 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/k3s.js +12 -4
- package/dist/cli/src/cluster/k3s.js.map +1 -1
- package/dist/cli/src/commands/branch.js +2 -1
- package/dist/cli/src/commands/branch.js.map +1 -1
- package/dist/cli/src/commands/restore-filer-store.js +236 -0
- package/dist/cli/src/commands/restore-filer-store.js.map +1 -0
- package/dist/cli/src/commands/status.js +110 -9
- 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 +2 -1
- package/dist/cli/src/commands/up.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/install.js +9 -3
- package/dist/cli/src/install.js.map +1 -1
- package/dist/cli/src/kube/api.js +11 -3
- 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 +2 -0
- package/dist/cli/src/kube/rollout.js.map +1 -1
- package/dist/cli/src/manifests/admission.js +296 -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 +34 -12
- package/dist/cli/src/manifests/alasio.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 +77 -38
- package/dist/cli/src/manifests/collector.js.map +1 -1
- package/dist/cli/src/manifests/common.js +11 -0
- package/dist/cli/src/manifests/common.js.map +1 -1
- package/dist/cli/src/manifests/config.js +217 -31
- 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 +49 -5
- 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 +12 -3
- 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 +7 -3
- package/dist/cli/src/manifests/lake.js.map +1 -1
- package/dist/cli/src/manifests/neon.js +33 -25
- package/dist/cli/src/manifests/neon.js.map +1 -1
- package/dist/cli/src/manifests/network-policies.js +90 -10
- package/dist/cli/src/manifests/network-policies.js.map +1 -1
- package/dist/cli/src/manifests/object-store.js +506 -77
- package/dist/cli/src/manifests/object-store.js.map +1 -1
- package/dist/cli/src/manifests/priorities.js +30 -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/neon/control/secrets.js +3 -0
- 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 +5 -1
- package/dist/src/kube/config.js.map +1 -1
- package/dist/src/kube/sandbox-shape.js +62 -0
- package/dist/src/kube/sandbox-shape.js.map +1 -0
- package/dist/src/sandbox/names.js +44 -0
- package/dist/src/sandbox/names.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { imageReference } from "../images.js";
|
|
2
|
-
import { claimSpec,
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export const VALKEY = componentName("valkey");
|
|
2
|
+
import { claimSpec, imagePullSecrets, labels, NAMESPACE, ONE, replicasOf, restrictedContainer, restrictedPod, selectorLabels, sha256 } from "./common.js";
|
|
3
|
+
import { priority } from "./priorities.js";
|
|
4
|
+
import { verticalPodAutoscaler } from "./sizing.js";
|
|
6
5
|
export const VALKEY_PORT = 6379;
|
|
7
6
|
/** The uid and gid of the image's `valkey` user. */
|
|
8
7
|
const VALKEY_UID = 999;
|
|
9
|
-
/**
|
|
10
|
-
export function valkeyConf(
|
|
8
|
+
/** The configuration file of a Valkey that may hold `maxmemory`. */
|
|
9
|
+
export function valkeyConf(maxmemory) {
|
|
11
10
|
return [
|
|
12
11
|
"bind * -::*",
|
|
13
12
|
`port ${VALKEY_PORT}`,
|
|
@@ -18,54 +17,83 @@ export function valkeyConf({ workspaceStorage }) {
|
|
|
18
17
|
"save 3600 1 300 100 60 10000",
|
|
19
18
|
// Writes stop, rather than go unsaved, when a snapshot cannot be written.
|
|
20
19
|
"stop-writes-on-bgsave-error yes",
|
|
21
|
-
`maxmemory ${
|
|
20
|
+
`maxmemory ${maxmemory}`,
|
|
22
21
|
"maxmemory-policy noeviction",
|
|
23
22
|
"",
|
|
24
23
|
].join("\n");
|
|
25
24
|
}
|
|
26
|
-
/**
|
|
27
|
-
export
|
|
25
|
+
/** What a pod that runs the Valkey image on a Valkey's volumes has in its spec: the image's pull Secrets, and its user. */
|
|
26
|
+
export function valkeyPod(config) {
|
|
27
|
+
return { ...imagePullSecrets(config), securityContext: restrictedPod(VALKEY_UID, VALKEY_UID) };
|
|
28
|
+
}
|
|
29
|
+
/** The password in the Secret `name`, a Valkey's or a Valkey user's, as a variable's source. */
|
|
30
|
+
export const valkeyPassword = (name) => ({ secretKeyRef: { name, key: "password" } });
|
|
31
|
+
/** The variable a Valkey's server is given the password of its user `name` in. */
|
|
32
|
+
const userVariable = (name) => `VALKEY_${name.toUpperCase().replaceAll("-", "_")}_PASSWORD`;
|
|
33
|
+
/**
|
|
34
|
+
* How the Valkey `instance` is started, and logged in to by its readiness probe: with its
|
|
35
|
+
* default user's password; or its users, each with its password and rules, the default
|
|
36
|
+
* user turned off, and the probe as the user that probes.
|
|
37
|
+
*/
|
|
38
|
+
function access({ name, users = [] }) {
|
|
39
|
+
if (users.length === 0) {
|
|
40
|
+
const password = valkeyPassword(name);
|
|
41
|
+
return { args: ["--requirepass", "$(VALKEY_PASSWORD)"], env: [{ name: "VALKEY_PASSWORD", valueFrom: password }, { name: "VALKEYCLI_AUTH", valueFrom: password }], cli: "valkey-cli" };
|
|
42
|
+
}
|
|
43
|
+
const probing = users.find(({ probes }) => probes) ?? users[0];
|
|
44
|
+
return {
|
|
45
|
+
cli: probing ? `valkey-cli --user ${probing.name}` : "valkey-cli",
|
|
46
|
+
args: [
|
|
47
|
+
"--user",
|
|
48
|
+
"default",
|
|
49
|
+
"off",
|
|
50
|
+
...users.flatMap(({ name: user, rules }) => ["--user", user, "on", `>$(${userVariable(user)})`, ...rules]),
|
|
51
|
+
],
|
|
52
|
+
env: [
|
|
53
|
+
...users.map(({ name: user, secret }) => ({ name: userVariable(user), valueFrom: valkeyPassword(secret) })),
|
|
54
|
+
...(probing ? [{ name: "VALKEYCLI_AUTH", valueFrom: valkeyPassword(probing.secret) }] : []),
|
|
55
|
+
],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
28
58
|
/**
|
|
29
|
-
* Valkey
|
|
30
|
-
* and `sidecars` beside the server in its pod, which is ready once each of
|
|
59
|
+
* The Valkey `instance`: its configuration, its Service, and its StatefulSet, with a volume
|
|
60
|
+
* of its own, and `sidecars` beside the server in its pod, which is ready once each of
|
|
61
|
+
* them is.
|
|
31
62
|
*/
|
|
32
|
-
export function valkeyObjects(config, sidecars) {
|
|
33
|
-
const {
|
|
34
|
-
const conf = valkeyConf(
|
|
35
|
-
|
|
36
|
-
const metadata = { name
|
|
63
|
+
export function valkeyObjects(config, instance, sidecars = []) {
|
|
64
|
+
const { name, component } = instance;
|
|
65
|
+
const conf = valkeyConf(instance.maxmemory);
|
|
66
|
+
const login = access(instance);
|
|
67
|
+
const metadata = { name, namespace: NAMESPACE, labels: { ...labels(component), ...instance.labels } };
|
|
37
68
|
const configMap = { apiVersion: "v1", kind: "ConfigMap", metadata, data: { "valkey.conf": conf } };
|
|
38
69
|
const service = {
|
|
39
70
|
apiVersion: "v1",
|
|
40
71
|
kind: "Service",
|
|
41
72
|
metadata,
|
|
42
|
-
spec: { selector: selectorLabels(
|
|
73
|
+
spec: { selector: selectorLabels(component), ports: [{ name: "valkey", port: VALKEY_PORT }] },
|
|
43
74
|
};
|
|
44
75
|
const statefulSet = {
|
|
45
76
|
apiVersion: "apps/v1",
|
|
46
77
|
kind: "StatefulSet",
|
|
47
78
|
metadata,
|
|
48
79
|
spec: {
|
|
49
|
-
serviceName:
|
|
50
|
-
|
|
51
|
-
selector: { matchLabels: selectorLabels(
|
|
80
|
+
serviceName: name,
|
|
81
|
+
...replicasOf(ONE),
|
|
82
|
+
selector: { matchLabels: selectorLabels(component) },
|
|
52
83
|
template: {
|
|
53
|
-
metadata: { labels: labels(
|
|
84
|
+
metadata: { labels: labels(component), annotations: { "checksum/config": sha256(conf) } },
|
|
54
85
|
spec: {
|
|
55
|
-
...
|
|
56
|
-
|
|
86
|
+
...priority("floor"),
|
|
87
|
+
...valkeyPod(config),
|
|
57
88
|
// Long enough for its last snapshot and fsync as it stops.
|
|
58
89
|
terminationGracePeriodSeconds: 60,
|
|
59
90
|
containers: [{
|
|
60
91
|
name: "valkey",
|
|
61
|
-
image: imageReference(
|
|
92
|
+
image: imageReference(instance.image),
|
|
62
93
|
imagePullPolicy: "IfNotPresent",
|
|
63
|
-
command: ["valkey-server", "/etc/valkey/valkey.conf",
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
// valkey-cli's, for the readiness probe.
|
|
67
|
-
{ name: "VALKEYCLI_AUTH", valueFrom: VALKEY_PASSWORD },
|
|
68
|
-
],
|
|
94
|
+
command: ["valkey-server", "/etc/valkey/valkey.conf", ...login.args],
|
|
95
|
+
// VALKEYCLI_AUTH is valkey-cli's password, for the readiness probe.
|
|
96
|
+
env: login.env,
|
|
69
97
|
ports: [{ name: "valkey", containerPort: VALKEY_PORT }],
|
|
70
98
|
// Ready once its append-only file is loaded, which it reads as off until then.
|
|
71
99
|
readinessProbe: {
|
|
@@ -73,7 +101,7 @@ export function valkeyObjects(config, sidecars) {
|
|
|
73
101
|
command: [
|
|
74
102
|
"/bin/sh",
|
|
75
103
|
"-c",
|
|
76
|
-
|
|
104
|
+
`persistence=$(${login.cli} info persistence) && echo "$persistence" | grep -q '^loading:0' && echo "$persistence" | grep -q '^aof_enabled:1'`,
|
|
77
105
|
],
|
|
78
106
|
},
|
|
79
107
|
periodSeconds: 5,
|
|
@@ -81,15 +109,15 @@ export function valkeyObjects(config, sidecars) {
|
|
|
81
109
|
},
|
|
82
110
|
livenessProbe: { tcpSocket: { port: "valkey" }, initialDelaySeconds: 30, periodSeconds: 10, failureThreshold: 6 },
|
|
83
111
|
securityContext: { ...restrictedContainer(), readOnlyRootFilesystem: true },
|
|
84
|
-
resources:
|
|
112
|
+
resources: instance.resources,
|
|
85
113
|
volumeMounts: [{ name: "data", mountPath: "/data" }, { name: "config", mountPath: "/etc/valkey", readOnly: true }],
|
|
86
114
|
}, ...sidecars],
|
|
87
|
-
volumes: [{ name: "config", configMap: { name
|
|
115
|
+
volumes: [{ name: "config", configMap: { name } }],
|
|
88
116
|
},
|
|
89
117
|
},
|
|
90
|
-
volumeClaimTemplates: [{ metadata: { name: "data" }, spec: claimSpec(
|
|
118
|
+
volumeClaimTemplates: [{ metadata: { name: "data" }, spec: claimSpec(instance.storage) }],
|
|
91
119
|
},
|
|
92
120
|
};
|
|
93
|
-
return [configMap, service, statefulSet];
|
|
121
|
+
return [configMap, service, statefulSet, verticalPodAutoscaler(statefulSet, "Recommended")];
|
|
94
122
|
}
|
|
95
123
|
//# sourceMappingURL=valkey.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valkey.js","sourceRoot":"","sources":["../../../../src/manifests/valkey.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"valkey.js","sourceRoot":"","sources":["../../../../src/manifests/valkey.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": "apiextensions.k8s.io/v1",
|
|
3
|
+
"kind": "CustomResourceDefinition",
|
|
4
|
+
"metadata": {
|
|
5
|
+
"annotations": {
|
|
6
|
+
"api-approved.kubernetes.io": "https://github.com/kubernetes/kubernetes/pull/63797",
|
|
7
|
+
"controller-gen.kubebuilder.io/version": "v0.21.0"
|
|
8
|
+
},
|
|
9
|
+
"name": "verticalpodautoscalercheckpoints.autoscaling.k8s.io"
|
|
10
|
+
},
|
|
11
|
+
"spec": {
|
|
12
|
+
"group": "autoscaling.k8s.io",
|
|
13
|
+
"names": {
|
|
14
|
+
"kind": "VerticalPodAutoscalerCheckpoint",
|
|
15
|
+
"listKind": "VerticalPodAutoscalerCheckpointList",
|
|
16
|
+
"plural": "verticalpodautoscalercheckpoints",
|
|
17
|
+
"shortNames": [
|
|
18
|
+
"vpacheckpoint"
|
|
19
|
+
],
|
|
20
|
+
"singular": "verticalpodautoscalercheckpoint"
|
|
21
|
+
},
|
|
22
|
+
"scope": "Namespaced",
|
|
23
|
+
"versions": [
|
|
24
|
+
{
|
|
25
|
+
"name": "v1",
|
|
26
|
+
"schema": {
|
|
27
|
+
"openAPIV3Schema": {
|
|
28
|
+
"description": "VerticalPodAutoscalerCheckpoint is the checkpoint of the internal state of VPA that\nis used for recovery after recommender's restart.",
|
|
29
|
+
"properties": {
|
|
30
|
+
"apiVersion": {
|
|
31
|
+
"description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
|
|
32
|
+
"type": "string"
|
|
33
|
+
},
|
|
34
|
+
"kind": {
|
|
35
|
+
"description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
|
36
|
+
"type": "string"
|
|
37
|
+
},
|
|
38
|
+
"metadata": {
|
|
39
|
+
"type": "object"
|
|
40
|
+
},
|
|
41
|
+
"spec": {
|
|
42
|
+
"description": "Specification of the checkpoint.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.",
|
|
43
|
+
"properties": {
|
|
44
|
+
"containerName": {
|
|
45
|
+
"description": "Name of the checkpointed container.",
|
|
46
|
+
"type": "string"
|
|
47
|
+
},
|
|
48
|
+
"vpaObjectName": {
|
|
49
|
+
"description": "Name of the VPA object that stored VerticalPodAutoscalerCheckpoint object.",
|
|
50
|
+
"type": "string"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"type": "object"
|
|
54
|
+
},
|
|
55
|
+
"status": {
|
|
56
|
+
"description": "Data of the checkpoint.",
|
|
57
|
+
"properties": {
|
|
58
|
+
"cpuHistogram": {
|
|
59
|
+
"description": "Checkpoint of histogram for consumption of CPU.",
|
|
60
|
+
"properties": {
|
|
61
|
+
"bucketWeights": {
|
|
62
|
+
"description": "Map from bucket index to bucket weight.",
|
|
63
|
+
"type": "object",
|
|
64
|
+
"x-kubernetes-preserve-unknown-fields": true
|
|
65
|
+
},
|
|
66
|
+
"referenceTimestamp": {
|
|
67
|
+
"description": "Reference timestamp for samples collected within this histogram.",
|
|
68
|
+
"format": "date-time",
|
|
69
|
+
"nullable": true,
|
|
70
|
+
"type": "string"
|
|
71
|
+
},
|
|
72
|
+
"totalWeight": {
|
|
73
|
+
"description": "Sum of samples to be used as denominator for weights from BucketWeights.",
|
|
74
|
+
"type": "number"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"type": "object"
|
|
78
|
+
},
|
|
79
|
+
"firstSampleStart": {
|
|
80
|
+
"description": "Timestamp of the first sample from the histograms.",
|
|
81
|
+
"format": "date-time",
|
|
82
|
+
"nullable": true,
|
|
83
|
+
"type": "string"
|
|
84
|
+
},
|
|
85
|
+
"lastSampleStart": {
|
|
86
|
+
"description": "Timestamp of the last sample from the histograms.",
|
|
87
|
+
"format": "date-time",
|
|
88
|
+
"nullable": true,
|
|
89
|
+
"type": "string"
|
|
90
|
+
},
|
|
91
|
+
"lastUpdateTime": {
|
|
92
|
+
"description": "The time when the status was last refreshed.",
|
|
93
|
+
"format": "date-time",
|
|
94
|
+
"nullable": true,
|
|
95
|
+
"type": "string"
|
|
96
|
+
},
|
|
97
|
+
"memoryHistogram": {
|
|
98
|
+
"description": "Checkpoint of histogram for consumption of memory.",
|
|
99
|
+
"properties": {
|
|
100
|
+
"bucketWeights": {
|
|
101
|
+
"description": "Map from bucket index to bucket weight.",
|
|
102
|
+
"type": "object",
|
|
103
|
+
"x-kubernetes-preserve-unknown-fields": true
|
|
104
|
+
},
|
|
105
|
+
"referenceTimestamp": {
|
|
106
|
+
"description": "Reference timestamp for samples collected within this histogram.",
|
|
107
|
+
"format": "date-time",
|
|
108
|
+
"nullable": true,
|
|
109
|
+
"type": "string"
|
|
110
|
+
},
|
|
111
|
+
"totalWeight": {
|
|
112
|
+
"description": "Sum of samples to be used as denominator for weights from BucketWeights.",
|
|
113
|
+
"type": "number"
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"type": "object"
|
|
117
|
+
},
|
|
118
|
+
"totalSamplesCount": {
|
|
119
|
+
"description": "Total number of samples in the histograms.",
|
|
120
|
+
"type": "integer"
|
|
121
|
+
},
|
|
122
|
+
"version": {
|
|
123
|
+
"description": "Version of the format of the stored data.",
|
|
124
|
+
"type": "string"
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"type": "object"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"type": "object"
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"served": true,
|
|
134
|
+
"storage": true
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"name": "v1beta2",
|
|
138
|
+
"schema": {
|
|
139
|
+
"openAPIV3Schema": {
|
|
140
|
+
"description": "VerticalPodAutoscalerCheckpoint is the checkpoint of the internal state of VPA that\nis used for recovery after recommender's restart.",
|
|
141
|
+
"properties": {
|
|
142
|
+
"apiVersion": {
|
|
143
|
+
"description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
|
|
144
|
+
"type": "string"
|
|
145
|
+
},
|
|
146
|
+
"kind": {
|
|
147
|
+
"description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
|
148
|
+
"type": "string"
|
|
149
|
+
},
|
|
150
|
+
"metadata": {
|
|
151
|
+
"type": "object"
|
|
152
|
+
},
|
|
153
|
+
"spec": {
|
|
154
|
+
"description": "Specification of the checkpoint.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.",
|
|
155
|
+
"properties": {
|
|
156
|
+
"containerName": {
|
|
157
|
+
"description": "Name of the checkpointed container.",
|
|
158
|
+
"type": "string"
|
|
159
|
+
},
|
|
160
|
+
"vpaObjectName": {
|
|
161
|
+
"description": "Name of the VPA object that stored VerticalPodAutoscalerCheckpoint object.",
|
|
162
|
+
"type": "string"
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"type": "object"
|
|
166
|
+
},
|
|
167
|
+
"status": {
|
|
168
|
+
"description": "Data of the checkpoint.",
|
|
169
|
+
"properties": {
|
|
170
|
+
"cpuHistogram": {
|
|
171
|
+
"description": "Checkpoint of histogram for consumption of CPU.",
|
|
172
|
+
"properties": {
|
|
173
|
+
"bucketWeights": {
|
|
174
|
+
"description": "Map from bucket index to bucket weight.",
|
|
175
|
+
"type": "object",
|
|
176
|
+
"x-kubernetes-preserve-unknown-fields": true
|
|
177
|
+
},
|
|
178
|
+
"referenceTimestamp": {
|
|
179
|
+
"description": "Reference timestamp for samples collected within this histogram.",
|
|
180
|
+
"format": "date-time",
|
|
181
|
+
"nullable": true,
|
|
182
|
+
"type": "string"
|
|
183
|
+
},
|
|
184
|
+
"totalWeight": {
|
|
185
|
+
"description": "Sum of samples to be used as denominator for weights from BucketWeights.",
|
|
186
|
+
"type": "number"
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"type": "object"
|
|
190
|
+
},
|
|
191
|
+
"firstSampleStart": {
|
|
192
|
+
"description": "Timestamp of the first sample from the histograms.",
|
|
193
|
+
"format": "date-time",
|
|
194
|
+
"nullable": true,
|
|
195
|
+
"type": "string"
|
|
196
|
+
},
|
|
197
|
+
"lastSampleStart": {
|
|
198
|
+
"description": "Timestamp of the last sample from the histograms.",
|
|
199
|
+
"format": "date-time",
|
|
200
|
+
"nullable": true,
|
|
201
|
+
"type": "string"
|
|
202
|
+
},
|
|
203
|
+
"lastUpdateTime": {
|
|
204
|
+
"description": "The time when the status was last refreshed.",
|
|
205
|
+
"format": "date-time",
|
|
206
|
+
"nullable": true,
|
|
207
|
+
"type": "string"
|
|
208
|
+
},
|
|
209
|
+
"memoryHistogram": {
|
|
210
|
+
"description": "Checkpoint of histogram for consumption of memory.",
|
|
211
|
+
"properties": {
|
|
212
|
+
"bucketWeights": {
|
|
213
|
+
"description": "Map from bucket index to bucket weight.",
|
|
214
|
+
"type": "object",
|
|
215
|
+
"x-kubernetes-preserve-unknown-fields": true
|
|
216
|
+
},
|
|
217
|
+
"referenceTimestamp": {
|
|
218
|
+
"description": "Reference timestamp for samples collected within this histogram.",
|
|
219
|
+
"format": "date-time",
|
|
220
|
+
"nullable": true,
|
|
221
|
+
"type": "string"
|
|
222
|
+
},
|
|
223
|
+
"totalWeight": {
|
|
224
|
+
"description": "Sum of samples to be used as denominator for weights from BucketWeights.",
|
|
225
|
+
"type": "number"
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
"type": "object"
|
|
229
|
+
},
|
|
230
|
+
"totalSamplesCount": {
|
|
231
|
+
"description": "Total number of samples in the histograms.",
|
|
232
|
+
"type": "integer"
|
|
233
|
+
},
|
|
234
|
+
"version": {
|
|
235
|
+
"description": "Version of the format of the stored data.",
|
|
236
|
+
"type": "string"
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
"type": "object"
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
"type": "object"
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
"served": false,
|
|
246
|
+
"storage": false
|
|
247
|
+
}
|
|
248
|
+
]
|
|
249
|
+
}
|
|
250
|
+
}
|