feat: support file-based / external API key credentials (API key counterpart of #311)
I maintainer di solito rispondono entro 1 giorno
@jaypipes ci sta già lavorando.
Dal 23/7/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Problem
We authenticate to Temporal Cloud with API keys and run the controller on GKE.
Our security policy requires secrets to be held in GCP Secret Manager and retrieved by the
workload at runtime, rather than stored as Kubernetes Secrets in etcd.
Today Connection accepts credentials only via apiKeySecretRef, a SecretKeySelector that
must name a Kubernetes Secret in the same namespace. The controller resolves it through the
Kubernetes API, and it also injects TEMPORAL_API_KEY into managed worker pods via
secretKeyRef. There is no way to supply the API key from a file, from a volume mounted by
the Secrets Store CSI driver, or from an external secret manager.
#311 proposes file-based credentials, but is explicitly scoped to mTLS. There is currently no
equivalent for API key auth, so organizations that standardize on API keys cannot benefit
from it.
Why this matters
- The Secrets Store CSI driver can mount secrets into pods without creating a Kubernetes
Secret (secretObjectsis optional). That pattern is unusable with the controller today,
because credentials are resolved through the API server rather than through the pod-spec
layer. - Same RBAC motivation as #311: the chart grants
secrets get/list/watchin a ClusterRole.
On a cluster shared by multiple teams, that is considerably wider than the controller's
actual need. A file-based mode would let deployers drop the rule entirely. - Temporal's own guidance recommends retrieving API keys from a key management system rather
than hardcoding them, and the Go SDK already supports this through
client.NewAPIKeyDynamicCredentials.
Proposed
An alternative to apiKeySecretRef on ConnectionSpec:
spec:
hostPort: "us-east-1.aws.api.temporal.io:7233"
apiKeyFile:
path: /etc/temporal/api-key
The controller would read the file on each use. Since #301 already made the API key re-read
per RPC via NewAPIKeyDynamicCredentials, this is largely a change of source rather than a
change of lifecycle.
When this mode is used, the controller would skip credential injection into worker pods and
leave credential delivery to the pod-spec layer (volumes / CSI), consistent with the scope
of #311.
Related
- #311 — file-based mTLS credentials (the mTLS counterpart of this request)
- #246 — controller as a library (would also address this, by allowing a pre-configured client)
- #301 — the API key is already re-read per RPC
- Lingua principale
- Go
- Stelle
- 197
- Fork
- 79
- Merge medio
- 5g 7h
- PR unite (30g)
- 29
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di temporalio/temporal-worker-controller
-
[Bug] Gate inputFrom.configMapKeyRef fails with the default chart: the manager role has no ConfigMap permissionForse già presa @wankhede04 l’ha presa 2 giorni fa. Apertarbac
Difficoltà 3/5 Mezza giornata Idoneità per principianti 25/100
temporalio/temporal-worker-controller#649 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Bug: v1.6's delete-protection finalizer is never removed from migrated TemporalWorkerDeployment/TemporalConnection, so they stay Terminating after the v1.7 migrationForse già presa @niyomukiza-mechack l’ha presa 5 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 57/100
temporalio/temporal-worker-controller#644 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature Request] `sunset.drainingReplicas`: run Draining versions at a smaller replica countForse già presa @D-Joey-G l’ha presa 5 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
temporalio/temporal-worker-controller#635 · 3 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
AI agent skillsAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
temporalio/temporal-worker-controller#633 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
refactor integration testsAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 62/100
temporalio/temporal-worker-controller#632 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di temporalio/temporal-worker-controller
Issue simili
-
kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
kubernetes-sigs/kueue#17385 ·
I maintainer di solito rispondono entro 1 giorno
-
Tablet Pods keep only one of several topology spread constraints that share a label selectorForse già presa @RaphaelFakhri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
planetscale/vitess-operator#858 ·
I maintainer di solito rispondono entro 2 giorni
-
Realtime: ASR EOU language tags leak into the LLM conversation (unintended reply-language switching)Forse già presa @nexxtmobile l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
content:edit documentation effort:high
Difficoltà 1/5 1-3 ore Idoneità per principianti 67/100
cloudflare/cloudflare-docs#34428 ·
I maintainer di solito rispondono entro 1 giorno
-
generate: duplicate-skill warning ignores lint.allow_overrides when a local skill shadows a builtinAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno