[FIX] Changes made to database will now be reflected in the cluster

This commit is contained in:
Dunemask 2024-02-12 21:30:07 -07:00
parent 0a0f9c8463
commit 11f70087f1
6 changed files with 128 additions and 26 deletions

View file

@ -11,8 +11,6 @@ metadata:
namespace: changeme-namespace
spec:
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports: # Programatically add all FTP ports. Port range includes 20, 21, 40000-40001
- name: minecraft

View file

@ -18,7 +18,7 @@ const namespace = process.env.MCL_SERVER_NAMESPACE;
const loadYaml = (f) => yaml.load(fs.readFileSync(path.resolve(f), "utf8"));
function createExtraService(serverSpec) {
export function createExtraService(serverSpec) {
const { mclName, id, extraPorts } = serverSpec;
if (!extraPorts) return;
const serviceYaml = loadYaml("lib/k8s/configs/extra-svc.yml");
@ -49,7 +49,7 @@ function createExtraService(serverSpec) {
return serviceYaml;
}
function createBackupSecret(serverSpec) {
export function createBackupSecret(serverSpec) {
if (!serverSpec.backupEnabled) return; // If backup not defined, don't create RCLONE secret
const { mclName, id, backupId, backupKey, backupHost } = serverSpec;
const backupYaml = loadYaml("lib/k8s/configs/backup-secret.yml");
@ -153,7 +153,7 @@ function createServerDeploy(serverSpec) {
return deployYaml;
}
function createServerService(serverSpec) {
export function createServerService(serverSpec) {
const { mclName, host, id } = serverSpec;
const serviceYaml = loadYaml("lib/k8s/configs/server-svc.yml");
serviceYaml.metadata.annotations["ingress.qumine.io/hostname"] = host;

59
lib/k8s/server-modify.js Normal file
View file

@ -0,0 +1,59 @@
import k8s from "@kubernetes/client-node";
import {
createExtraService,
createBackupSecret,
createServerService,
} from "./server-create.js";
import kc from "./k8s-config.js";
import { getServerAssets } from "./k8s-server-control.js";
const k8sCore = kc.makeApiClient(k8s.CoreV1Api);
const namespace = process.env.MCL_SERVER_NAMESPACE;
export default async function modifyServerResources(modifySpec) {
const { id: serverId } = modifySpec;
const serverAssets = await getServerAssets(serverId);
const serverService = createServerService(modifySpec);
const extraService = createExtraService(modifySpec);
const backupSecret = createBackupSecret(modifySpec);
const serverResources = [];
if (!!serverService)
// Will Always Exist
serverResources.push(
k8sCore.replaceNamespacedService(
serverAssets.service.metadata.name,
namespace,
serverService,
),
);
if (!!extraService && !!serverAssets.extraService)
// Might not exist
serverResources.push(
k8sCore.replaceNamespacedService(
serverAssets.extraService.metadata.name,
namespace,
extraService,
),
);
else if (!!extraService)
serverResources.push(
k8sCore.createNamespacedService(namespace, extraService),
);
if (!!backupSecret && !!serverAssets.backupSecret)
// Might not exist
serverResources.push(
k8sCore.replaceNamespacedSecret(
serverAssets.backupSecret.metadata.name,
namespace,
backupSecret,
),
);
else if (!!backupSecret)
serverResources.push(
k8sCore.createNamespacedSecret(namespace, backupSecret),
);
return await Promise.all(serverResources);
}