k8s: add app.kubernetes.io/stack label to pods and jobs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feature/k8s-jobs
Prathamesh Musale 2026-03-09 09:22:28 +00:00
parent d7a742032e
commit b8702f0bfc
2 changed files with 11 additions and 3 deletions

View File

@ -75,13 +75,14 @@ class ClusterInfo:
parsed_job_yaml_map: Any
image_set: Set[str] = set()
app_name: str
stack_name: str
environment_variables: DeployEnvVars
spec: Spec
def __init__(self) -> None:
self.parsed_job_yaml_map = {}
def int(self, pod_files: List[str], compose_env_file, deployment_name, spec: Spec):
def int(self, pod_files: List[str], compose_env_file, deployment_name, spec: Spec, stack_name=""):
self.parsed_pod_yaml_map = parsed_pod_files_map_from_file_names(pod_files)
# Find the set of images in the pods
self.image_set = images_for_deployment(pod_files)
@ -91,6 +92,7 @@ class ClusterInfo:
}
self.environment_variables = DeployEnvVars(env_vars)
self.app_name = deployment_name
self.stack_name = stack_name
self.spec = spec
if opts.o.debug:
print(f"Env vars: {self.environment_variables.map}")
@ -589,6 +591,8 @@ class ClusterInfo:
annotations = None
labels = {"app": self.app_name}
if self.stack_name:
labels["app.kubernetes.io/stack"] = self.stack_name
affinity = None
tolerations = None
@ -706,9 +710,10 @@ class ClusterInfo:
elif job_name.endswith(".yaml"):
job_name = job_name[: -len(".yaml")]
pod_labels = {"app": self.app_name, **({"app.kubernetes.io/stack": self.stack_name} if self.stack_name else {})}
template = client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(
labels={"app": self.app_name}
labels=pod_labels
),
spec=client.V1PodSpec(
containers=containers,
@ -721,12 +726,13 @@ class ClusterInfo:
template=template,
backoff_limit=0,
)
job_labels = {"app": self.app_name, **({"app.kubernetes.io/stack": self.stack_name} if self.stack_name else {})}
job = client.V1Job(
api_version="batch/v1",
kind="Job",
metadata=client.V1ObjectMeta(
name=f"{self.app_name}-job-{job_name}",
labels={"app": self.app_name},
labels=job_labels,
),
spec=job_spec,
)

View File

@ -126,11 +126,13 @@ class K8sDeployer(Deployer):
# Use deployment-specific namespace for resource isolation and easy cleanup
self.k8s_namespace = f"laconic-{compose_project_name}"
self.cluster_info = ClusterInfo()
stack_name = deployment_context.stack.name if deployment_context else ""
self.cluster_info.int(
compose_files,
compose_env_file,
compose_project_name,
deployment_context.spec,
stack_name=stack_name,
)
# Initialize job compose files if provided
if job_compose_files: