[FEATURE] Initial FTP data

This commit is contained in:
Dunemask 2023-12-16 09:28:06 -07:00
parent 8ef46ac02f
commit 7348b07352
13 changed files with 330 additions and 204 deletions

View file

@ -55,6 +55,22 @@ function createServerVolume(serverSpec) {
return volumeYaml;
}
function getFtpContainer() {
const ftpContainer = loadYaml("lib/k8s/configs/containers/ftp-server.yml");
const ftpPortList = [
{ p: 20, n: "ftp-data" },
{ p: 21, n: "ftp-commands" },
];
for (var p = 40000; p <= 40009; p++)
ftpPortList.push({ p, n: `ftp-passive-${p - 40000}` });
ftpContainer.ports = ftpPortList.map(({ p: containerPort, n: name }) => ({
containerPort,
name,
protocol: "TCP",
}));
return ftpContainer;
}
function createServerDeploy(serverSpec) {
const {
name,
@ -71,16 +87,21 @@ function createServerDeploy(serverSpec) {
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}`;
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`;
deployYaml.spec.template.spec.containers.splice(0, 1); //TODO: Currently removing backup container
const serverContainer = deployYaml.spec.template.spec.containers[0];
const findEnv = (k) => serverContainer.env.find(({ name: n }) => n === k);
const updateEnv = (k, v) => (findEnv.value = v);
// Enviornment variables
@ -109,7 +130,8 @@ function createServerDeploy(serverSpec) {
deployYaml.spec.template.spec.volumes.find(
({ name }) => name === "datadir",
).persistentVolumeClaim.claimName = `mcl-${name}-volume`;
deployYaml.spec.template.spec.containers[0] = serverContainer;
deployYaml.spec.template.spec.containers.push(serverContainer);
deployYaml.spec.template.spec.containers.push(ftpContainer);
return deployYaml;
}
@ -123,6 +145,20 @@ function createServerService(serverSpec) {
serviceYaml.metadata.annotations["minecluster.dunemask.net/server-name"] =
name;
serviceYaml.spec.selector.app = `mcl-${name}-app`;
// Apply FTP Port List
const ftpPortList = [
{ p: 20, n: "ftp-data" },
{ p: 21, n: "ftp-commands" },
];
for (var p = 40000; p <= 40009; p++)
ftpPortList.push({ p, n: `ftp-passive-${p - 40000}` });
serviceYaml.spec.ports = ftpPortList.map(({ p: port, n: name }) => ({
port,
name,
protocol: "TCP",
targetPort: port,
}));
return serviceYaml;
}