mirror of
https://github.com/gethomepage/homepage.git
synced 2025-12-07 09:35:54 -08:00
75 lines
1.7 KiB
JavaScript
75 lines
1.7 KiB
JavaScript
import path from "path";
|
|
import { readFileSync } from "fs";
|
|
|
|
import yaml from "js-yaml";
|
|
import { KubeConfig,ApiextensionsV1Api } from "@kubernetes/client-node";
|
|
|
|
import checkAndCopyConfig, { CONF_DIR, substituteEnvironmentVars } from "utils/config/config";
|
|
|
|
const extractKubeData = (config) => {
|
|
// kubeconfig
|
|
const kc = new KubeConfig();
|
|
|
|
switch (config?.mode) {
|
|
case "cluster":
|
|
kc.loadFromCluster();
|
|
break;
|
|
case "default":
|
|
kc.loadFromDefault();
|
|
break;
|
|
case "disabled":
|
|
default:
|
|
return null;
|
|
}
|
|
|
|
// route
|
|
const route = config?.route ?? "ingress";
|
|
|
|
// traefik
|
|
const traefik = config?.traefik !== "disable";
|
|
|
|
return {
|
|
config: kc,
|
|
route,
|
|
traefik,
|
|
};
|
|
};
|
|
|
|
export default function getKubeArguments() {
|
|
checkAndCopyConfig("kubernetes.yaml");
|
|
|
|
const configFile = path.join(CONF_DIR, "kubernetes.yaml");
|
|
const rawConfigData = readFileSync(configFile, "utf8");
|
|
const configData = substituteEnvironmentVars(rawConfigData);
|
|
const config = yaml.load(configData);
|
|
let kubeData;
|
|
|
|
if (config?.mode === "disabled") {
|
|
kubeData = { config: null };
|
|
} else {
|
|
kubeData = extractKubeData(config);
|
|
}
|
|
|
|
return kubeData;
|
|
}
|
|
|
|
|
|
export async function checkCRD(name,kc,logger) {
|
|
const apiExtensions = kc.makeApiClient(ApiextensionsV1Api);
|
|
const exist = await apiExtensions
|
|
.readCustomResourceDefinitionStatus(name)
|
|
.then(() => true)
|
|
.catch(async (error) => {
|
|
if (error.statusCode === 403) {
|
|
logger.error(
|
|
"Error checking if CRD %s exists. Make sure to add the following permission to your RBAC: %d %s %s",
|
|
name,
|
|
error.statusCode,
|
|
error.body.message,
|
|
);
|
|
}
|
|
return false;
|
|
});
|
|
|
|
return exist;
|
|
} |