diff --git a/config/agentrun.yaml b/config/agentrun.yaml index edaaedd3..90363210 100644 --- a/config/agentrun.yaml +++ b/config/agentrun.yaml @@ -271,6 +271,11 @@ controlPlane: apiKeySecretRef: name: agentrun-v02-api-key key: HWLAB_API_KEY + env: + OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces + OTEL_SERVICE_NAME: agentrun-manager + UNIDESK_NODE_ID: D601 + HWLAB_RUNTIME_LANE: v0.3 unideskSshEndpointEnv: name: UNIDESK_MAIN_SERVER_IP value: 74.48.78.17 diff --git a/scripts/src/agentrun-lanes.ts b/scripts/src/agentrun-lanes.ts index 947dd6d0..17c2a250 100644 --- a/scripts/src/agentrun-lanes.ts +++ b/scripts/src/agentrun-lanes.ts @@ -94,6 +94,7 @@ export interface AgentRunLaneSpec { readonly manager: { readonly serviceAccount: string; readonly apiKeySecretRef: { readonly name: string; readonly key: string }; + readonly env: Readonly>; readonly unideskSshEndpointEnv: { readonly name: string; readonly value: string } | null; readonly bootRepoUrl: string; readonly imageBuild: AgentRunImageBuildSpec; @@ -279,6 +280,7 @@ export function agentRunLaneSummary(spec: AgentRunLaneSpec): Record, path: string): AgentRun manager: { serviceAccount: stringField(manager, "serviceAccount", `${path}.manager`), apiKeySecretRef: parseSecretRef(recordField(manager, "apiKeySecretRef", `${path}.manager`), `${path}.manager.apiKeySecretRef`), + env: optionalEnvRecord(manager, "env", `${path}.manager`), unideskSshEndpointEnv: optionalEnvPair(manager, "unideskSshEndpointEnv", `${path}.manager`), bootRepoUrl: urlField(manager, "bootRepoUrl", `${path}.manager`), imageBuild: parseImageBuild(recordField(manager, "imageBuild", `${path}.manager`), `${path}.manager.imageBuild`), @@ -719,6 +722,12 @@ function optionalEnvPair(obj: Record, key: string, path: string }; } +function optionalEnvRecord(obj: Record, key: string, path: string): Readonly> { + const value = obj[key]; + if (value === undefined || value === null) return {}; + return stringRecordField(asRecord(value, `${path}.${key}`), `${path}.${key}`); +} + function optionalStringArrayField(obj: Record, key: string, path: string): readonly string[] { const value = obj[key]; if (value === undefined || value === null) return []; diff --git a/scripts/src/agentrun-manifests.ts b/scripts/src/agentrun-manifests.ts index f0736b2f..087d3ef5 100644 --- a/scripts/src/agentrun-manifests.ts +++ b/scripts/src/agentrun-manifests.ts @@ -449,6 +449,7 @@ function managerEnv(spec: AgentRunLaneSpec, sourceCommit: string, imageRef: stri ...(spec.deployment.runner.egressProxyUrl === null ? [] : [{ name: "AGENTRUN_RUNNER_EGRESS_PROXY_URL", value: spec.deployment.runner.egressProxyUrl }]), ...(spec.deployment.runner.noProxyExtra.length === 0 ? [] : [{ name: "AGENTRUN_RUNNER_NO_PROXY_EXTRA", value: spec.deployment.runner.noProxyExtra.join(",") }]), { name: "AGENTRUN_API_KEY", valueFrom: { secretKeyRef: spec.deployment.manager.apiKeySecretRef } }, + ...Object.entries(spec.deployment.manager.env).sort(([left], [right]) => left.localeCompare(right)).map(([name, value]) => ({ name, value })), ...(spec.deployment.manager.unideskSshEndpointEnv === null ? [] : [{ name: spec.deployment.manager.unideskSshEndpointEnv.name, value: spec.deployment.manager.unideskSshEndpointEnv.value }]), ]; }