diff --git a/mirrord/config/src/agent.rs b/mirrord/config/src/agent.rs index 9600edfcd4d..00997c87306 100644 --- a/mirrord/config/src/agent.rs +++ b/mirrord/config/src/agent.rs @@ -245,7 +245,7 @@ pub struct AgentConfig { /// ```json /// [ /// { - /// "operator": "Exists" + /// "key": "meow", "operator": "Exists", "effect": "NoSchedule" /// } /// ] /// ``` diff --git a/mirrord/kube/src/api/container/job.rs b/mirrord/kube/src/api/container/job.rs index d9958e6620b..d064224ded2 100644 --- a/mirrord/kube/src/api/container/job.rs +++ b/mirrord/kube/src/api/container/job.rs @@ -114,6 +114,8 @@ pub struct JobVariant { impl<'c> JobVariant> { pub fn new(agent: &'c AgentConfig, params: &'c ContainerParams) -> Self { + // TODO(alex) [high]: Here we also have agent config, which has tolerations. + // So why doesn't it propagate? JobVariant { inner: PodVariant::new(agent, params), } @@ -199,6 +201,7 @@ impl<'c> JobTargetedVariant<'c> { params: &'c ContainerParams, runtime_data: &'c RuntimeData, ) -> Self { + // TODO(alex) [high]: Here we have agent config, which has tolerations. let inner = PodTargetedVariant::new(agent, params, runtime_data); JobTargetedVariant { diff --git a/mirrord/kube/src/api/container/pod.rs b/mirrord/kube/src/api/container/pod.rs index f8461e8a002..9e44a69a5b1 100644 --- a/mirrord/kube/src/api/container/pod.rs +++ b/mirrord/kube/src/api/container/pod.rs @@ -195,6 +195,8 @@ impl ContainerVariant for PodTargetedVariant<'_> { let agent = self.agent_config(); let params = self.params(); + let tolerations = agent.tolerations.as_ref().unwrap_or(&DEFAULT_TOLERATIONS); + let env = self.runtime_data.mesh.map(|mesh_vendor| { let mut env = vec![EnvVar { name: "MIRRORD_AGENT_IN_SERVICE_MESH".into(), @@ -214,6 +216,7 @@ impl ContainerVariant for PodTargetedVariant<'_> { let update = Pod { spec: Some(PodSpec { restart_policy: Some("Never".to_string()), + tolerations: Some(tolerations.clone()), host_pid: Some(true), node_name: Some(runtime_data.node_name.clone()), volumes: Some(vec![