fix: created TraefikMeDomainStandaloneService for job scheduling of updateTraefikMeCertificate

This commit is contained in:
biersoeckli
2025-01-24 16:29:58 +00:00
parent 40362e727b
commit e85f302e31
6 changed files with 32 additions and 24 deletions

View File

@@ -15,7 +15,7 @@ import { KubeSizeConverter } from "@/shared/utils/kubernetes-size-converter.util
import buildService from "@/server/services/build.service";
import { PathUtils } from "@/server/utils/path.utils";
import { FsUtils } from "@/server/utils/fs.utils";
import traefikMeDomainService from "@/server/services/standalone-services/traefik-me-domain.service";
import traefikMeDomainStandaloneService from "@/server/services/standalone-services/traefik-me-domain-standalone.service";
export const updateIngressSettings = async (prevState: any, inputData: QsIngressSettingsModel) =>
saveFormAction(inputData, qsIngressSettingsZodModel, async (validatedData) => {
@@ -115,7 +115,7 @@ export const updateRegistry = async () =>
export const updateTraefikMeCertificates = async () =>
simpleAction(async () => {
await getAuthUserSession();
await traefikMeDomainService.updateTraefikMeCertificate();
await traefikMeDomainStandaloneService.updateTraefikMeCertificate();
return new SuccessActionResult(undefined, 'Certificates will be updated, this might take a few seconds.');
});

View File

@@ -8,7 +8,7 @@ import dataAccess from './server/adapter/db.client'
import { FancyConsoleUtils } from './shared/utils/fancy-console.utils'
import { Constants } from './shared/utils/constants'
import backupService from './server/services/standalone-services/backup.service'
import traefikMeDomainService from './server/services/standalone-services/traefik-me-domain.service'
import traefikMeDomainStandaloneService from './server/services/standalone-services/traefik-me-domain-standalone.service'
// Source: https://nextjs.org/docs/app/building-your-application/configuring/custom-server
@@ -53,7 +53,7 @@ async function initializeNextJs() {
}
await backupService.registerAllBackups();
traefikMeDomainService.configureSchedulingForTraefikMeCertificateUpdate();
traefikMeDomainStandaloneService.configureSchedulingForTraefikMeCertificateUpdate();
const app = next({ dev });
const handle = app.getRequestHandler();

View File

@@ -1,6 +1,6 @@
import { V1Deployment, V1Ingress } from "@kubernetes/client-node";
import dataAccess from "../adapter/db.client";
import traefikMeDomainService from "./standalone-services/traefik-me-domain.service";
import traefikMeDomainStandaloneService from "./standalone-services/traefik-me-domain-standalone.service";
import { Constants } from "@/shared/utils/constants";
import { KubeObjectNameUtils } from "../utils/kube-object-name.utils";
import deploymentService from "./deployment.service";
@@ -10,6 +10,7 @@ import svcService from "./svc.service";
import { randomBytes } from "crypto";
import podService from "./pod.service";
import bcrypt from "bcrypt";
import traefikMeDomainService from "./traefik-me-domain.service";
class FileBrowserService {

View File

@@ -6,7 +6,7 @@ import { KubeObjectNameUtils } from "../utils/kube-object-name.utils";
import deploymentService from "./deployment.service";
import namespaceService from "./namespace.service";
import buildService from "./build.service";
import traefikMeDomainService from "./standalone-services/traefik-me-domain.service";
import traefikMeDomainStandaloneService from "./standalone-services/traefik-me-domain-standalone.service";
class ProjectService {
@@ -70,7 +70,7 @@ class ProjectService {
} finally {
revalidateTag(Tags.projects());
}
await traefikMeDomainService.updateTraefikMeCertificate();
await traefikMeDomainStandaloneService.updateTraefikMeCertificate();
return savedItem;
}
}

View File

@@ -1,5 +1,3 @@
import { ServiceException } from "../../../shared/model/service.exception.model";
import paramService, { ParamService } from "../param.service";
import traefikMeAdapter from "../../adapter/traefik-me.adapter";
import { V1Secret } from "@kubernetes/client-node";
import secretService from "../secret.service";
@@ -7,19 +5,7 @@ import { Constants } from "../../../shared/utils/constants";
import dataAccess from "../../adapter/db.client";
import scheduleService from "./schedule.service";
class TraefikMeDomainService {
async getDomainForApp(appId: string, prefix?: string) {
const publicIpv4 = await paramService.getString(ParamService.PUBLIC_IPV4_ADDRESS);
if (!publicIpv4) {
throw new ServiceException('Please set the main public IPv4 address in the QuickStack settings first.');
}
const traefikFriendlyIpv4 = publicIpv4.split('.').join('-');
if (prefix) {
return `${prefix}-${appId}-${traefikFriendlyIpv4}.traefik.me`;
}
return `${appId}-${traefikFriendlyIpv4}.traefik.me`;
}
class TraefikMeDomainStandaloneService {
async updateTraefikMeCertificate() {
const fullChainCert = await traefikMeAdapter.getFullChainCertificate();
@@ -50,5 +36,5 @@ class TraefikMeDomainService {
}
}
const traefikMeDomainService = new TraefikMeDomainService();
export default traefikMeDomainService;
const traefikMeDomainStandaloneService = new TraefikMeDomainStandaloneService();
export default traefikMeDomainStandaloneService;

View File

@@ -0,0 +1,21 @@
import { ServiceException } from "@/shared/model/service.exception.model";
import paramService, { ParamService } from "./param.service";
class TraefikMeDomainService {
async getDomainForApp(appId: string, prefix?: string) {
const publicIpv4 = await paramService.getString(ParamService.PUBLIC_IPV4_ADDRESS);
if (!publicIpv4) {
throw new ServiceException('Please set the main public IPv4 address in the QuickStack settings first.');
}
const traefikFriendlyIpv4 = publicIpv4.split('.').join('-');
if (prefix) {
return `${prefix}-${appId}-${traefikFriendlyIpv4}.traefik.me`;
}
return `${appId}-${traefikFriendlyIpv4}.traefik.me`;
}
}
const traefikMeDomainService = new TraefikMeDomainService();
export default traefikMeDomainService;