[FEATURE] Adjust server control
This commit is contained in:
parent
7348b07352
commit
62c966a6bd
8 changed files with 109 additions and 57 deletions
|
@ -55,8 +55,10 @@ function createServerVolume(serverSpec) {
|
|||
return volumeYaml;
|
||||
}
|
||||
|
||||
function getFtpContainer() {
|
||||
function getFtpContainer(serverSpec) {
|
||||
const { name } = serverSpec;
|
||||
const ftpContainer = loadYaml("lib/k8s/configs/containers/ftp-server.yml");
|
||||
ftpContainer.name = `mcl-${name}-ftp`;
|
||||
const ftpPortList = [
|
||||
{ p: 20, n: "ftp-data" },
|
||||
{ p: 21, n: "ftp-commands" },
|
||||
|
@ -71,7 +73,7 @@ function getFtpContainer() {
|
|||
return ftpContainer;
|
||||
}
|
||||
|
||||
function createServerDeploy(serverSpec) {
|
||||
function getServerContainer(serverSpec) {
|
||||
const {
|
||||
name,
|
||||
version,
|
||||
|
@ -86,24 +88,16 @@ function createServerDeploy(serverSpec) {
|
|||
ops,
|
||||
whitelist,
|
||||
} = serverSpec;
|
||||
const deployYaml = loadYaml("lib/k8s/configs/server-deployment.yml");
|
||||
const serverContainer = loadYaml(
|
||||
"lib/k8s/configs/containers/minecraft-server.yml",
|
||||
);
|
||||
const backupContainer = loadYaml(
|
||||
"lib/k8s/configs/containers/minecraft-backup.yml",
|
||||
);
|
||||
const ftpContainer = getFtpContainer();
|
||||
deployYaml.metadata.name = `mcl-${name}`;
|
||||
const container = loadYaml("lib/k8s/configs/containers/minecraft-server.yml");
|
||||
|
||||
// Container Updates
|
||||
container.name = `mcl-${name}-server`;
|
||||
container.resources.requests.memory = `${memory}Mi`;
|
||||
// container.resources.limits.memory = `${memory}Mi`; // TODO Allow for limits beyond initial startup
|
||||
|
||||
const findEnv = (k) => container.env.find(({ name: n }) => n === k);
|
||||
const updateEnv = (k, v) => (findEnv(k).value = v);
|
||||
|
||||
deployYaml.metadata.namespace = namespace;
|
||||
deployYaml.metadata.annotations["minecluster.dunemask.net/server-name"] =
|
||||
name;
|
||||
deployYaml.spec.replicas = 0; // TODO: User control for autostart
|
||||
deployYaml.spec.selector.matchLabels.app = `mcl-${name}-app`;
|
||||
deployYaml.spec.template.metadata.labels.app = `mcl-${name}-app`;
|
||||
const findEnv = (k) => serverContainer.env.find(({ name: n }) => n === k);
|
||||
const updateEnv = (k, v) => (findEnv.value = v);
|
||||
// Enviornment variables
|
||||
updateEnv("TYPE", serverType);
|
||||
updateEnv("VERSION", version);
|
||||
|
@ -116,22 +110,49 @@ function createServerDeploy(serverSpec) {
|
|||
updateEnv("WHITELIST", whitelist);
|
||||
updateEnv("MEMORY", `${memory}M`);
|
||||
|
||||
if (version !== "VANILLA") delete findEnv("MODPACK").value;
|
||||
else updateEnv("MODPACK", modpack);
|
||||
findEnv("RCON_PASSWORD").valueFrom.secretKeyRef.name =
|
||||
`mcl-${name}-rcon-secret`;
|
||||
// RCON
|
||||
const rs = `mcl-${name}-rcon-secret`;
|
||||
findEnv("RCON_PASSWORD").valueFrom.secretKeyRef.name = rs;
|
||||
// Mods // TODO: remove these once files are managable
|
||||
/*if (version !== "VANILLA") delete findEnv("MODPACK").value;
|
||||
else updateEnv("MODPACK", modpack);*/
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
function getBackupContainer(serverSpec) {
|
||||
const container = loadYaml("lib/k8s/configs/containers/minecraft-backup.yml");
|
||||
return container;
|
||||
}
|
||||
|
||||
function createServerDeploy(serverSpec) {
|
||||
const { name } = serverSpec;
|
||||
const deployYaml = loadYaml("lib/k8s/configs/server-deployment.yml");
|
||||
const { metadata } = deployYaml;
|
||||
const serverContainer = getServerContainer(serverSpec);
|
||||
const backupContainer = getBackupContainer(serverSpec);
|
||||
const ftpContainer = getFtpContainer(serverSpec);
|
||||
|
||||
// Configure Metadata;
|
||||
metadata.name = `mcl-${name}`;
|
||||
metadata.namespace = namespace;
|
||||
metadata.annotations["minecluster.dunemask.net/server-name"] = name;
|
||||
deployYaml.metadata = metadata;
|
||||
|
||||
// Configure Lables & Selectors
|
||||
deployYaml.spec.selector.matchLabels.app = `mcl-${name}-app`;
|
||||
deployYaml.spec.template.metadata.labels.app = `mcl-${name}-app`;
|
||||
|
||||
// Server Container Name
|
||||
serverContainer.name = `mcl-${name}`;
|
||||
// Resources
|
||||
serverContainer.resources.requests.memory = `${memory}Mi`;
|
||||
// serverContainer.resources.limits.memory = `${memory}Mi`; // TODO Allow for limits beyond initial startup
|
||||
// Volumes
|
||||
deployYaml.spec.template.spec.volumes.find(
|
||||
({ name }) => name === "datadir",
|
||||
).persistentVolumeClaim.claimName = `mcl-${name}-volume`;
|
||||
|
||||
// Apply Containers
|
||||
deployYaml.spec.template.spec.containers.push(serverContainer);
|
||||
deployYaml.spec.template.spec.containers.push(ftpContainer);
|
||||
// TODO: User control for autostart
|
||||
deployYaml.spec.replicas = 0;
|
||||
return deployYaml;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue