Skip to content

Commit 14d6840

Browse files
authored
feat(api): add workingDir to BYO agent deployment spec (#1970)
Closes #1932 Add `workingDir` as an optional string field on `ByoDeploymentSpec`. Maps directly to `container.workingDir` in the generated Deployment. ```yaml spec: type: BYO byo: deployment: image: oven/bun:1.2-alpine workingDir: /app ``` Changes: - `ByoDeploymentSpec.WorkingDir *string` in `agent_types.go` - `resolvedDeployment.WorkingDir` populated in `resolveByoDeployment` - `container.WorkingDir` set in `manifest_builder.go` - CRD and Helm chart updated via `make generate && make manifests` Signed-off-by: mesutoezdil <mesudozdil@gmail.com>
1 parent e6287be commit 14d6840

8 files changed

Lines changed: 32 additions & 0 deletions

File tree

go/api/config/crd/bases/kagent.dev_agents.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7701,6 +7701,10 @@ spec:
77017701
- name
77027702
type: object
77037703
type: array
7704+
workingDir:
7705+
description: workingDir sets the container working directory.
7706+
Defaults to the image WORKDIR when omitted.
7707+
type: string
77047708
type: object
77057709
x-kubernetes-validations:
77067710
- message: serviceAccountName and serviceAccountConfig are mutually

go/api/config/crd/bases/kagent.dev_sandboxagents.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5359,6 +5359,10 @@ spec:
53595359
- name
53605360
type: object
53615361
type: array
5362+
workingDir:
5363+
description: workingDir sets the container working directory.
5364+
Defaults to the image WORKDIR when omitted.
5365+
type: string
53625366
type: object
53635367
x-kubernetes-validations:
53645368
- message: serviceAccountName and serviceAccountConfig are mutually

go/api/v1alpha2/agent_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,9 @@ type ByoDeploymentSpec struct {
358358
// Args are the arguments passed to the container entrypoint.
359359
// +optional
360360
Args []string `json:"args,omitempty"`
361+
// workingDir sets the container working directory. Defaults to the image WORKDIR when omitted.
362+
// +optional
363+
WorkingDir *string `json:"workingDir,omitempty"`
361364

362365
SharedDeploymentSpec `json:",inline"`
363366
}

go/api/v1alpha2/zz_generated.deepcopy.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go/core/internal/controller/translator/agent/deployments.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type resolvedDeployment struct {
2727
Image string
2828
Cmd string // empty → no explicit command
2929
Args []string
30+
WorkingDir *string
3031
Port int32 // container port and Service port
3132
ImagePullPolicy corev1.PullPolicy
3233

@@ -268,6 +269,7 @@ func resolveByoDeployment(agent v1alpha2.AgentObject) (*resolvedDeployment, erro
268269
Image: image,
269270
Cmd: cmd,
270271
Args: args,
272+
WorkingDir: spec.WorkingDir,
271273
Port: port,
272274
ImagePullPolicy: imagePullPolicy,
273275
Replicas: replicas,

go/core/internal/controller/translator/agent/manifest_builder.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,11 @@ func buildPodTemplate(
492492
cmd = []string{dep.Cmd}
493493
}
494494

495+
var workingDir string
496+
if dep.WorkingDir != nil {
497+
workingDir = *dep.WorkingDir
498+
}
499+
495500
return corev1.PodTemplateSpec{
496501
ObjectMeta: metav1.ObjectMeta{
497502
Labels: manifestCtx.podLabels(),
@@ -508,6 +513,7 @@ func buildPodTemplate(
508513
ImagePullPolicy: dep.ImagePullPolicy,
509514
Command: cmd,
510515
Args: dep.Args,
516+
WorkingDir: workingDir,
511517
Ports: []corev1.ContainerPort{{Name: "http", ContainerPort: dep.Port}},
512518
Resources: dep.Resources,
513519
Env: runtimeInputs.envVars,

helm/kagent-crds/templates/kagent.dev_agents.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7701,6 +7701,10 @@ spec:
77017701
- name
77027702
type: object
77037703
type: array
7704+
workingDir:
7705+
description: workingDir sets the container working directory.
7706+
Defaults to the image WORKDIR when omitted.
7707+
type: string
77047708
type: object
77057709
x-kubernetes-validations:
77067710
- message: serviceAccountName and serviceAccountConfig are mutually

helm/kagent-crds/templates/kagent.dev_sandboxagents.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5359,6 +5359,10 @@ spec:
53595359
- name
53605360
type: object
53615361
type: array
5362+
workingDir:
5363+
description: workingDir sets the container working directory.
5364+
Defaults to the image WORKDIR when omitted.
5365+
type: string
53625366
type: object
53635367
x-kubernetes-validations:
53645368
- message: serviceAccountName and serviceAccountConfig are mutually

0 commit comments

Comments
 (0)