Enhancement: Change default k8s label selector to be from resource
This commit is contained in:
parent
f4fc30cd9f
commit
fa677c2ab2
@ -4,10 +4,11 @@ import getKubeConfig from "../../../../utils/config/kubernetes";
|
|||||||
import { parseCpu, parseMemory } from "../../../../utils/kubernetes/kubernetes-utils";
|
import { parseCpu, parseMemory } from "../../../../utils/kubernetes/kubernetes-utils";
|
||||||
import createLogger from "../../../../utils/logger";
|
import createLogger from "../../../../utils/logger";
|
||||||
|
|
||||||
|
import { parseIngressSelector } from "utils/kubernetes/kubernetes-utils";
|
||||||
|
|
||||||
const logger = createLogger("kubernetesStatsService");
|
const logger = createLogger("kubernetesStatsService");
|
||||||
|
|
||||||
export default async function handler(req, res) {
|
export default async function handler(req, res) {
|
||||||
const APP_LABEL = "app.kubernetes.io/name";
|
|
||||||
const { service, podSelector } = req.query;
|
const { service, podSelector } = req.query;
|
||||||
|
|
||||||
const [namespace, appName] = service;
|
const [namespace, appName] = service;
|
||||||
@ -17,7 +18,6 @@ export default async function handler(req, res) {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const labelSelector = podSelector !== undefined ? podSelector : `${APP_LABEL}=${appName}`;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const kc = getKubeConfig();
|
const kc = getKubeConfig();
|
||||||
@ -28,6 +28,7 @@ export default async function handler(req, res) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const coreApi = kc.makeApiClient(CoreV1Api);
|
const coreApi = kc.makeApiClient(CoreV1Api);
|
||||||
|
const labelSelector = podSelector !== undefined ? podSelector : await parseIngressSelector(appName, namespace, kc);
|
||||||
const metricsApi = new Metrics(kc);
|
const metricsApi = new Metrics(kc);
|
||||||
const podsResponse = await coreApi
|
const podsResponse = await coreApi
|
||||||
.listNamespacedPod(namespace, null, null, null, null, labelSelector)
|
.listNamespacedPod(namespace, null, null, null, null, labelSelector)
|
||||||
|
|||||||
@ -3,10 +3,11 @@ import { CoreV1Api } from "@kubernetes/client-node";
|
|||||||
import getKubeConfig from "../../../../utils/config/kubernetes";
|
import getKubeConfig from "../../../../utils/config/kubernetes";
|
||||||
import createLogger from "../../../../utils/logger";
|
import createLogger from "../../../../utils/logger";
|
||||||
|
|
||||||
|
import { parseIngressSelector } from "utils/kubernetes/kubernetes-utils";
|
||||||
|
|
||||||
const logger = createLogger("kubernetesStatusService");
|
const logger = createLogger("kubernetesStatusService");
|
||||||
|
|
||||||
export default async function handler(req, res) {
|
export default async function handler(req, res) {
|
||||||
const APP_LABEL = "app.kubernetes.io/name";
|
|
||||||
const { service, podSelector } = req.query;
|
const { service, podSelector } = req.query;
|
||||||
|
|
||||||
const [namespace, appName] = service;
|
const [namespace, appName] = service;
|
||||||
@ -16,7 +17,6 @@ export default async function handler(req, res) {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const labelSelector = podSelector !== undefined ? podSelector : `${APP_LABEL}=${appName}`;
|
|
||||||
try {
|
try {
|
||||||
const kc = getKubeConfig();
|
const kc = getKubeConfig();
|
||||||
if (!kc) {
|
if (!kc) {
|
||||||
@ -25,6 +25,7 @@ export default async function handler(req, res) {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const labelSelector = podSelector !== undefined ? podSelector : await parseIngressSelector(appName, namespace, kc);
|
||||||
const coreApi = kc.makeApiClient(CoreV1Api);
|
const coreApi = kc.makeApiClient(CoreV1Api);
|
||||||
const podsResponse = await coreApi
|
const podsResponse = await coreApi
|
||||||
.listNamespacedPod(namespace, null, null, null, null, labelSelector)
|
.listNamespacedPod(namespace, null, null, null, null, labelSelector)
|
||||||
|
|||||||
@ -1,3 +1,16 @@
|
|||||||
|
import { CoreV1Api, NetworkingV1Api } from "@kubernetes/client-node";
|
||||||
|
|
||||||
|
export async function parseIngressSelector(ingressName, namespace, kc) {
|
||||||
|
const coreApi = kc.makeApiClient(CoreV1Api);
|
||||||
|
const networkApi = kc.makeApiClient(NetworkingV1Api);
|
||||||
|
|
||||||
|
const ingress = await networkApi.readNamespacedIngress(ingressName, namespace);
|
||||||
|
const serviceName = ingress.body.spec.rules[0].http.paths[0].backend.service.name;
|
||||||
|
|
||||||
|
const svc = await coreApi.readNamespacedService(serviceName, namespace);
|
||||||
|
return svc.body.spec.selector;
|
||||||
|
}
|
||||||
|
|
||||||
export function parseCpu(cpuStr) {
|
export function parseCpu(cpuStr) {
|
||||||
const unitLength = 1;
|
const unitLength = 1;
|
||||||
const base = Number.parseInt(cpuStr, 10);
|
const base = Number.parseInt(cpuStr, 10);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user