mirror of
https://github.com/gethomepage/homepage.git
synced 2026-01-02 21:22:11 +08:00
62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
import { readFileSync } from "fs";
|
|
import path from "path";
|
|
|
|
import { ApiextensionsV1Api, KubeConfig } from "@kubernetes/client-node";
|
|
import yaml from "js-yaml";
|
|
|
|
import checkAndCopyConfig, { CONF_DIR, substituteEnvironmentVars } from "utils/config/config";
|
|
|
|
export function getKubernetes() {
|
|
checkAndCopyConfig("kubernetes.yaml");
|
|
const configFile = path.join(CONF_DIR, "kubernetes.yaml");
|
|
const rawConfigData = readFileSync(configFile, "utf8");
|
|
const configData = substituteEnvironmentVars(rawConfigData);
|
|
return yaml.load(configData);
|
|
}
|
|
|
|
export const getKubeConfig = () => {
|
|
const kc = new KubeConfig();
|
|
const config = getKubernetes();
|
|
|
|
switch (config?.mode) {
|
|
case "cluster":
|
|
kc.loadFromCluster();
|
|
break;
|
|
case "default":
|
|
kc.loadFromDefault();
|
|
break;
|
|
case "disabled":
|
|
default:
|
|
return null;
|
|
}
|
|
|
|
return kc;
|
|
};
|
|
|
|
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;
|
|
}
|
|
|
|
export const ANNOTATION_BASE = "gethomepage.dev";
|
|
export const ANNOTATION_WIDGET_BASE = `${ANNOTATION_BASE}/widget.`;
|
|
export const HTTPROUTE_API_GROUP = "gateway.networking.k8s.io";
|
|
export const HTTPROUTE_API_VERSION = "v1";
|