Updated
- Bumping chart version to v0.6.1 for scalr-agent v1.1.0
Added
-
Added a PodDisruptionBudget for task pods (
task.podDisruptionBudget), enabled by default withmaxUnavailable: 0. Previously only the controller had a PDB (selectingapp.kubernetes.io/component: agent), so task pods were not covered and could be evicted mid-run by the Eviction API during node upgrades/drains — the pod-levelsafe-to-evict/karpenterannotations do not protect against that path, only a PDB does. With the new PDB a draining node now waits for the running task to finish on its own before evicting it. Configurable viatask.podDisruptionBudget.enabled,minAvailable, andmaxUnavailable. -
Added mTLS client certificate configuration (
global.tls.clientCertSecret,global.tls.clientCert,global.tls.clientKey) for mutual TLS authentication between the agent and Scalr. The bootstrap certificate and key are mounted read-only at/etc/scalr-agent/ssl/and mapped toSCALR_AGENT_TLS_CERT_FILEandSCALR_AGENT_TLS_KEY_FILE. Supports both existing Kubernetes secrets (includingkubernetes.io/tlstype) and inline PEM values. Applied to the controller and worker containers; the runner container is not affected. Note: mTLS is an upcoming Enterprise feature.
Fixed
- Fixed
helm upgradefailing withYAML parse error ... mapping values are not allowed in this contextwhenglobal.labelswas set. The common labels helper was emitting the rendered map on the same line as the preceding label, producing invalid YAML. Thanks to @PabloPie for reporting and contributing the fix in #148. - Fixed
global.labelsnot being applied to pods. Labels set viaglobal.labelsnow propagate to both workloadmetadata.labelsand the pod template'sspec.template.metadata.labelsfor the controller Deployment and task Jobs, matching the behavior users expect from a "global" label setting. Component-specific overrides (global.podLabels,agent.podLabels,task.podLabels) continue to take precedence on key collisions. - Fixed
agent.podSecurityContextandtask.podSecurityContexthaving no effect when overriding values fromglobal.podSecurityContext. Component-specific values now correctly take precedence over global defaults.