[FEATURE] Server service containerization
This commit is contained in:
parent
22bf905415
commit
12d198456c
9 changed files with 165 additions and 91 deletions
|
@ -1,5 +1,12 @@
|
|||
import k8s from "@kubernetes/client-node";
|
||||
import yaml from "js-yaml";
|
||||
import { VERB, ERR } from "../util/logging.js";
|
||||
import { getServerEntry } from "../database/queries/server-queries.js";
|
||||
import {
|
||||
getFtpContainer,
|
||||
getCoreServerContainer,
|
||||
getBackupContainer,
|
||||
} from "./server-containers.js";
|
||||
const kc = new k8s.KubeConfig();
|
||||
kc.loadFromDefault();
|
||||
|
||||
|
@ -8,6 +15,8 @@ const k8sCore = kc.makeApiClient(k8s.CoreV1Api);
|
|||
|
||||
const namespace = process.env.MCL_SERVER_NAMESPACE;
|
||||
|
||||
const loadYaml = (f) => yaml.load(fs.readFileSync(path.resolve(f), "utf8"));
|
||||
|
||||
const mineclusterManaged = (o) =>
|
||||
o.metadata &&
|
||||
o.metadata.annotations &&
|
||||
|
@ -93,13 +102,26 @@ export async function getContainers(serverName) {
|
|||
return deployment.spec.template.spec.containers;
|
||||
}
|
||||
|
||||
async function containerControl(serverName, deployment, scaleUp) {
|
||||
const { containers } = deployment.spec.template.spec;
|
||||
const depFtp = containers.find((c) => c.name.endsWith("-ftp"));
|
||||
const depServer = containers.find((c) => c.name.endsWith("-server"));
|
||||
const depBackup = containers.find((c) => c.name.endsWith("-backup"));
|
||||
const serverSpec = await getServerEntry(serverName);
|
||||
const ftpContainer = depFtp ?? getFtpContainer(serverSpec);
|
||||
const serverContainer = depServer ?? getCoreServerContainer(serverSpec);
|
||||
const backupContainer = depBackup ?? getBackupContainer(serverSpec);
|
||||
if (scaleUp) return [ftpContainer, serverContainer];
|
||||
return [ftpContainer];
|
||||
}
|
||||
|
||||
export async function toggleServer(serverName, scaleUp = false) {
|
||||
const deployment = await getDeployment(serverName);
|
||||
const { containers } = deployment.spec.template.spec;
|
||||
const ftpContainer = containers.find((c) => c.name.endsWith("-ftp"));
|
||||
|
||||
res.sendStatus(200);
|
||||
deployment.spec.template.spec.containers = containers;
|
||||
deployment.spec.template.spec.containers = await containerControl(
|
||||
serverName,
|
||||
deployment,
|
||||
scaleUp,
|
||||
);
|
||||
return k8sDeps.replaceNamespacedDeployment(
|
||||
deployment.metadata.name,
|
||||
namespace,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue