Enhancement: Change default k8s label selector to be from resource

pull/3352/head
Grayton Ward 4 weeks ago
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…
Cancel
Save