Files
homarr/packages/definitions/src/kubernetes.ts
T
+12 fcd7c979df feat!: release v2 (#6545)
Co-authored-by: Artur <145776561+arturict@users.noreply.github.com>
Co-authored-by: arturict <arturict@users.noreply.github.com>
Co-authored-by: Thomas <thomas@ajnart.fr>
Co-authored-by: Afonso Jorge Ramos <afonsojorgeramos@gmail.com>
Co-authored-by: Danura30082 <danura30082+github@gmail.com>
Co-authored-by: Kushie <122986913+kushiemoon-dev@users.noreply.github.com>
Co-authored-by: ajnart <thomas@ajnart.fr>
Co-authored-by: ajnart <thomas@ajnart.dev>
Co-authored-by: chenjun <chenjun@foxmail.com>
Co-authored-by: Wikibear <wikibear@users.noreply.github.com>
Co-authored-by: Bergasha <bergasha@gmail.com>
Co-authored-by: leafyelin <43306196+leafyelin@users.noreply.github.com>
Co-authored-by: Lucas Araujo <lucas.lra@gmail.com>
Co-authored-by: GreenMonito <86085570+GreenMonito@users.noreply.github.com>
Co-authored-by: Nerdy-Technician <roffo@nerdy-technician.social>
Co-authored-by: Jun <34545896+jcstrong@users.noreply.github.com>
Co-authored-by: Edmond Abraham <54119952+gitedmond@users.noreply.github.com>
Co-authored-by: thrawnx <tight.bulb9384@fastmail.com>
Co-authored-by: Chris <58918656+nordada@users.noreply.github.com>
Co-authored-by: yi111 <153097222+Yi-111-a@users.noreply.github.com>
Co-authored-by: Yanis <naamaneyanis@gmail.com>
Co-authored-by: Wikibear <me@sej.de>
Co-authored-by: alessiottavo <93441886+alessiottavo@users.noreply.github.com>
2026-10-02 21:00:14 +02:00

113 lines
2.9 KiB
TypeScript

import { invariantTechnicalLabels } from "./invariant-technical-labels";
export const kubernetesNodeStates = ["Ready", "NotReady"] as const;
export const kubernetesNamespaceStates = ["Active", "Terminating"] as const;
export const kubernetesResourceTypes = ["Reserved", "Used"] as const;
export const kubernetesCapacityTypes = ["Pods", invariantTechnicalLabels.cpu, "Memory"] as const;
export const kubernetesLabelResourceTypes = [
"configmaps",
"pods",
"ingresses",
"namespaces",
"nodes",
"secrets",
"services",
"volumes",
] as const;
export type KubernetesNodeState = (typeof kubernetesNodeStates)[number];
export type KubernetesNamespaceState = (typeof kubernetesNamespaceStates)[number];
export type KubernetesResourceType = (typeof kubernetesResourceTypes)[number];
export type KubernetesCapacityType = (typeof kubernetesCapacityTypes)[number];
export type KubernetesLabelResourceType = (typeof kubernetesLabelResourceTypes)[number];
export interface KubernetesBaseResource {
name: string;
namespace?: string;
creationTimestamp?: Date;
}
export interface KubernetesVolume extends KubernetesBaseResource {
accessModes: string[];
storage: string;
storageClassName: string;
volumeMode: string;
volumeName: string;
status: string;
}
export interface KubernetesSecret extends KubernetesBaseResource {
type: string;
}
export interface KubernetesPod extends KubernetesBaseResource {
image?: string;
applicationType: string;
status: string;
}
export interface KubernetesService extends KubernetesBaseResource {
type: string;
ports?: string[];
targetPorts?: string[];
clusterIP: string;
}
export interface KubernetesIngressPath {
serviceName: string;
port: number;
}
export interface KubernetesIngressRuleAndPath {
host: string;
paths: KubernetesIngressPath[];
}
export interface KubernetesIngress extends KubernetesBaseResource {
className: string;
rulesAndPaths: KubernetesIngressRuleAndPath[];
}
export interface KubernetesNamespace extends KubernetesBaseResource {
status: KubernetesNamespaceState;
}
export interface KubernetesNode {
name: string;
status: KubernetesNodeState;
allocatableCpuPercentage: number | null;
allocatableRamPercentage: number | null;
podsCount: number;
operatingSystem?: string;
architecture?: string;
kubernetesVersion?: string;
creationTimestamp?: Date;
}
export interface KubernetesCluster {
name: string;
providers: string;
kubernetesVersion: string;
architecture: string;
nodeCount: number;
metricsAvailable: boolean;
capacity: KubernetesCapacity[];
}
export interface KubernetesCapacity {
type: KubernetesCapacityType;
resourcesStats: KubernetesResourceStat[];
}
export interface KubernetesResourceStat {
percentageValue: number;
type: KubernetesResourceType;
capacityUnit?: string;
usedValue: number;
maxUsedValue: number;
}
export interface ClusterResourceCount {
label: string;
count: number;
}