From 29abcca57e6945ab1f04dbd1cf819285c46b97aa Mon Sep 17 00:00:00 2001 From: chyoo Date: Mon, 13 Jul 2026 17:02:51 +0900 Subject: [PATCH] launcher deploy modify.. --- src/launcher/dto.ts | 28 ++++++++++++++++++++++++ src/launcher/launcher.service.ts | 37 ++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/src/launcher/dto.ts b/src/launcher/dto.ts index 44fb2ec..9a86baa 100644 --- a/src/launcher/dto.ts +++ b/src/launcher/dto.ts @@ -71,9 +71,37 @@ export class LinkLauncherVersionSourceDto { } +export class DeploymentResourceLimitsDto { + @IsOptional() + @Type(() => Number) + @IsInt() + replicas?: number; + + @IsOptional() + @IsString() + cpuRequest?: string; + + @IsOptional() + @IsString() + cpuLimit?: string; + + @IsOptional() + @IsString() + memoryRequest?: string; + + @IsOptional() + @IsString() + memoryLimit?: string; +} + export class DeployLauncherBackendDto { @IsString() image!: string; + + @IsOptional() + @ValidateNested() + @Type(() => DeploymentResourceLimitsDto) + resources?: DeploymentResourceLimitsDto; } export class CreateLauncherBuildJobDto { diff --git a/src/launcher/launcher.service.ts b/src/launcher/launcher.service.ts index 5e5a065..6ec9997 100644 --- a/src/launcher/launcher.service.ts +++ b/src/launcher/launcher.service.ts @@ -362,6 +362,43 @@ export class LauncherService { '-n', namespace, ])); + + const resources = body.resources; + if (resources?.replicas && resources.replicas > 0) { + logs.push(`[scale] deployment/${deployment} replicas=${resources.replicas}`); + appendOutput(logs, await this.kubectl([ + 'scale', + `deployment/${deployment}`, + `--replicas=${resources.replicas}`, + '-n', + namespace, + ])); + } + + const requests = [ + resources?.cpuRequest ? `cpu=${resources.cpuRequest}` : null, + resources?.memoryRequest ? `memory=${resources.memoryRequest}` : null, + ].filter(Boolean); + const limits = [ + resources?.cpuLimit ? `cpu=${resources.cpuLimit}` : null, + resources?.memoryLimit ? `memory=${resources.memoryLimit}` : null, + ].filter(Boolean); + + if (requests.length || limits.length) { + const args = [ + 'set', + 'resources', + `deployment/${deployment}`, + `--containers=${container}`, + ...(requests.length ? [`--requests=${requests.join(',')}`] : []), + ...(limits.length ? [`--limits=${limits.join(',')}`] : []), + '-n', + namespace, + ]; + logs.push(`[resources] ${args.slice(3, -2).join(' ')}`); + appendOutput(logs, await this.kubectl(args)); + } + logs.push(`[rollout] deployment/${deployment}`); appendOutput(logs, await this.kubectl([ 'rollout',