diff --git a/lib/controllers/sub-controllers/console-controller.js b/lib/controllers/sub-controllers/console-controller.js index 264146a..6713960 100644 --- a/lib/controllers/sub-controllers/console-controller.js +++ b/lib/controllers/sub-controllers/console-controller.js @@ -4,10 +4,9 @@ import { Rcon as RconClient } from "rcon-client"; import stream from "stream"; import { ERR, WARN } from "../../util/logging.js"; import { getServerEntry } from "../../database/queries/server-queries.js"; - +import kc from "../../k8s/k8s-config.js"; // Kubernetes Configuration -const kc = new k8s.KubeConfig(); -kc.loadFromDefault(); + const k8sCore = kc.makeApiClient(k8s.CoreV1Api); const namespace = process.env.MCL_SERVER_NAMESPACE; diff --git a/lib/k8s/k8s-config.js b/lib/k8s/k8s-config.js new file mode 100644 index 0000000..4167552 --- /dev/null +++ b/lib/k8s/k8s-config.js @@ -0,0 +1,12 @@ +import k8s from "@kubernetes/client-node"; +const MCL_KUBECONFIG = process.env.MCL_KUBECONFIG; +const envConfig = MCL_KUBECONFIG ? MCL_KUBECONFIG : null; +const kc = new k8s.KubeConfig(); +try { + if (!!envConfig) + kc.loadFromString(Buffer.from(envConfig, "base64").toString("utf8")); + else kc.loadFromDefault(); +} catch (e) { + kc.loadFromDefault(); +} +export default kc; diff --git a/lib/k8s/k8s-server-control.js b/lib/k8s/k8s-server-control.js index ea4641e..c708328 100644 --- a/lib/k8s/k8s-server-control.js +++ b/lib/k8s/k8s-server-control.js @@ -8,8 +8,7 @@ import { getBackupContainer, } from "./server-containers.js"; import { checkAuthorization } from "../database/queries/server-queries.js"; -const kc = new k8s.KubeConfig(); -kc.loadFromDefault(); +import kc from "./k8s-config.js"; const k8sDeps = kc.makeApiClient(k8s.AppsV1Api); const k8sCore = kc.makeApiClient(k8s.CoreV1Api); diff --git a/lib/k8s/server-create.js b/lib/k8s/server-create.js index 421a244..3d4618a 100644 --- a/lib/k8s/server-create.js +++ b/lib/k8s/server-create.js @@ -11,8 +11,7 @@ import { getBackupContainer, } from "./server-containers.js"; -const kc = new k8s.KubeConfig(); -kc.loadFromDefault(); +import kc from "./k8s-config.js"; const k8sDeps = kc.makeApiClient(k8s.AppsV1Api); const k8sCore = kc.makeApiClient(k8s.CoreV1Api); const namespace = process.env.MCL_SERVER_NAMESPACE; diff --git a/lib/k8s/server-delete.js b/lib/k8s/server-delete.js index 4ced830..c0364a8 100644 --- a/lib/k8s/server-delete.js +++ b/lib/k8s/server-delete.js @@ -2,8 +2,7 @@ import k8s from "@kubernetes/client-node"; import { ERR } from "../util/logging.js"; import { getServerAssets } from "./k8s-server-control.js"; import ExpressClientError from "../util/ExpressClientError.js"; -const kc = new k8s.KubeConfig(); -kc.loadFromDefault(); +import kc from "./k8s-config.js"; const k8sDeps = kc.makeApiClient(k8s.AppsV1Api); const k8sCore = kc.makeApiClient(k8s.CoreV1Api); diff --git a/lib/k8s/server-status.js b/lib/k8s/server-status.js index b1df472..0c421c1 100644 --- a/lib/k8s/server-status.js +++ b/lib/k8s/server-status.js @@ -1,8 +1,7 @@ import k8s from "@kubernetes/client-node"; import { getUserDeployments } from "./k8s-server-control.js"; import { getServerEntries } from "../database/queries/server-queries.js"; -const kc = new k8s.KubeConfig(); -kc.loadFromDefault(); +import kc from "./k8s-config.js"; const k8sMetrics = new k8s.Metrics(kc); const namespace = process.env.MCL_SERVER_NAMESPACE; diff --git a/lib/routes/system-route.js b/lib/routes/system-route.js index 27291a9..ef913ed 100644 --- a/lib/routes/system-route.js +++ b/lib/routes/system-route.js @@ -1,13 +1,12 @@ import { Router } from "express"; import k8s from "@kubernetes/client-node"; import { WARN } from "../util/logging.js"; +import kc from "../k8s/k8s-config.js"; const router = Router(); import cairoAuthMiddleware from "./middlewares/auth-middleware.js"; router.use(cairoAuthMiddleware); -const kc = new k8s.KubeConfig(); -kc.loadFromDefault(); const k8sApi = kc.makeApiClient(k8s.CoreV1Api); // Get Routes router.get("/available", (req, res) => {