k8s: add app.kubernetes.io/stack label to pods and jobs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>feature/k8s-jobs
parent
d7a742032e
commit
b8702f0bfc
|
|
@ -75,13 +75,14 @@ class ClusterInfo:
|
||||||
parsed_job_yaml_map: Any
|
parsed_job_yaml_map: Any
|
||||||
image_set: Set[str] = set()
|
image_set: Set[str] = set()
|
||||||
app_name: str
|
app_name: str
|
||||||
|
stack_name: str
|
||||||
environment_variables: DeployEnvVars
|
environment_variables: DeployEnvVars
|
||||||
spec: Spec
|
spec: Spec
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.parsed_job_yaml_map = {}
|
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)
|
self.parsed_pod_yaml_map = parsed_pod_files_map_from_file_names(pod_files)
|
||||||
# Find the set of images in the pods
|
# Find the set of images in the pods
|
||||||
self.image_set = images_for_deployment(pod_files)
|
self.image_set = images_for_deployment(pod_files)
|
||||||
|
|
@ -91,6 +92,7 @@ class ClusterInfo:
|
||||||
}
|
}
|
||||||
self.environment_variables = DeployEnvVars(env_vars)
|
self.environment_variables = DeployEnvVars(env_vars)
|
||||||
self.app_name = deployment_name
|
self.app_name = deployment_name
|
||||||
|
self.stack_name = stack_name
|
||||||
self.spec = spec
|
self.spec = spec
|
||||||
if opts.o.debug:
|
if opts.o.debug:
|
||||||
print(f"Env vars: {self.environment_variables.map}")
|
print(f"Env vars: {self.environment_variables.map}")
|
||||||
|
|
@ -589,6 +591,8 @@ class ClusterInfo:
|
||||||
|
|
||||||
annotations = None
|
annotations = None
|
||||||
labels = {"app": self.app_name}
|
labels = {"app": self.app_name}
|
||||||
|
if self.stack_name:
|
||||||
|
labels["app.kubernetes.io/stack"] = self.stack_name
|
||||||
affinity = None
|
affinity = None
|
||||||
tolerations = None
|
tolerations = None
|
||||||
|
|
||||||
|
|
@ -706,9 +710,10 @@ class ClusterInfo:
|
||||||
elif job_name.endswith(".yaml"):
|
elif job_name.endswith(".yaml"):
|
||||||
job_name = job_name[: -len(".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(
|
template = client.V1PodTemplateSpec(
|
||||||
metadata=client.V1ObjectMeta(
|
metadata=client.V1ObjectMeta(
|
||||||
labels={"app": self.app_name}
|
labels=pod_labels
|
||||||
),
|
),
|
||||||
spec=client.V1PodSpec(
|
spec=client.V1PodSpec(
|
||||||
containers=containers,
|
containers=containers,
|
||||||
|
|
@ -721,12 +726,13 @@ class ClusterInfo:
|
||||||
template=template,
|
template=template,
|
||||||
backoff_limit=0,
|
backoff_limit=0,
|
||||||
)
|
)
|
||||||
|
job_labels = {"app": self.app_name, **({"app.kubernetes.io/stack": self.stack_name} if self.stack_name else {})}
|
||||||
job = client.V1Job(
|
job = client.V1Job(
|
||||||
api_version="batch/v1",
|
api_version="batch/v1",
|
||||||
kind="Job",
|
kind="Job",
|
||||||
metadata=client.V1ObjectMeta(
|
metadata=client.V1ObjectMeta(
|
||||||
name=f"{self.app_name}-job-{job_name}",
|
name=f"{self.app_name}-job-{job_name}",
|
||||||
labels={"app": self.app_name},
|
labels=job_labels,
|
||||||
),
|
),
|
||||||
spec=job_spec,
|
spec=job_spec,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -126,11 +126,13 @@ class K8sDeployer(Deployer):
|
||||||
# Use deployment-specific namespace for resource isolation and easy cleanup
|
# Use deployment-specific namespace for resource isolation and easy cleanup
|
||||||
self.k8s_namespace = f"laconic-{compose_project_name}"
|
self.k8s_namespace = f"laconic-{compose_project_name}"
|
||||||
self.cluster_info = ClusterInfo()
|
self.cluster_info = ClusterInfo()
|
||||||
|
stack_name = deployment_context.stack.name if deployment_context else ""
|
||||||
self.cluster_info.int(
|
self.cluster_info.int(
|
||||||
compose_files,
|
compose_files,
|
||||||
compose_env_file,
|
compose_env_file,
|
||||||
compose_project_name,
|
compose_project_name,
|
||||||
deployment_context.spec,
|
deployment_context.spec,
|
||||||
|
stack_name=stack_name,
|
||||||
)
|
)
|
||||||
# Initialize job compose files if provided
|
# Initialize job compose files if provided
|
||||||
if job_compose_files:
|
if job_compose_files:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue