Skip to content

Commit a3cd531

Browse files
GovSignals BotConProgramming
authored andcommitted
feat(supervisor): parameterize worker-pod annotations via KUBERNETES_WORKER_POD_ANNOTATIONS
Replaces the hardcoded Rubix `com.palantir.rubix.service/pod-cert` annotation with a JSON-shaped env var so the same supervisor image can run in environments that need different per-pod annotations (Rubix in FedStart, none/empty in GameWarden). Default is `{}` so behavior matches upstream when the env is unset.
1 parent 188295c commit a3cd531

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

apps/supervisor/src/env.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,31 @@ const Env = z
9494
KUBERNETES_WORKER_NODETYPE_LABEL: z.string().default("v4-worker"),
9595
KUBERNETES_WORKER_SERVICE_ACCOUNT: z.string().optional(), // Service account for worker pods
9696
KUBERNETES_WORKER_AUTOMOUNT_SERVICE_ACCOUNT_TOKEN: BoolEnv.default(false), // Whether to mount SA token
97+
KUBERNETES_WORKER_POD_ANNOTATIONS: z
98+
.string()
99+
.default("{}")
100+
.transform((v, ctx) => {
101+
try {
102+
const parsed = JSON.parse(v);
103+
if (
104+
typeof parsed !== "object" ||
105+
parsed === null ||
106+
Array.isArray(parsed) ||
107+
Object.values(parsed).some((value) => typeof value !== "string")
108+
) {
109+
throw new Error("expected JSON object of string values");
110+
}
111+
return parsed as Record<string, string>;
112+
} catch (err) {
113+
ctx.addIssue({
114+
code: z.ZodIssueCode.custom,
115+
message: `Invalid KUBERNETES_WORKER_POD_ANNOTATIONS: ${
116+
err instanceof Error ? err.message : String(err)
117+
}`,
118+
});
119+
return z.NEVER;
120+
}
121+
}), // Extra annotations to apply to every worker pod (e.g. for service mesh / cert injection)
97122
KUBERNETES_IMAGE_PULL_SECRETS: z.string().optional(), // csv
98123
KUBERNETES_EPHEMERAL_STORAGE_SIZE_LIMIT: z.string().default("10Gi"),
99124
KUBERNETES_EPHEMERAL_STORAGE_SIZE_REQUEST: z.string().default("2Gi"),

apps/supervisor/src/workloadManager/kubernetes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export class KubernetesWorkloadManager implements WorkloadManager {
118118
"app.kubernetes.io/component": "create",
119119
},
120120
annotations: {
121-
"com.palantir.rubix.service/pod-cert": "{}",
121+
...env.KUBERNETES_WORKER_POD_ANNOTATIONS,
122122
},
123123
},
124124
spec: {

0 commit comments

Comments
 (0)