Cloud-SDK extraction B/C/D — PR 7: gke cross-process contract spike (ADR 0037)#678
Conversation
There was a problem hiding this comment.
Pull request overview
This docs-only PR adds ADR 0037 to decide the cross-process contract strategy for moving the GKE platform.kubernetes backend out of core during the cloud-SDK extraction.
Changes:
- Adds a new accepted ADR selecting the existing
ResourceDrivercontract for GKE. - Documents method mapping, consequences for plugin/core follow-up tasks, and ADR numbering context.
Comments suppressed due to low confidence (2)
decisions/0037-gke-cross-process-contract.md:112
- The follow-up task description says to resolve the gcp plugin when
provider == gke, but platform.kubernetes does not read aproviderconfig value for backend selection; it readstype(module/platform_kubernetes.go:87-95). This should be corrected totype == gkeso Tasks 25/26 preserve the existing config contract.
**Tasks 25/26 (workflow core — `gke` dispatch + adapter).** Add a host-side `kubernetesBackend`
implementation that dispatches to a `ResourceDriver` gRPC client for `infra.k8s_cluster`,
resolved from `workflow-plugin-gcp` when `provider == gke`. It builds `ResourceSpec`/`ResourceRef`
from `PlatformKubernetes` config, serializes `CloudCredentials` into the request, and performs
decisions/0037-gke-cross-process-contract.md:116
- This repeats the incorrect claim that platform.kubernetes keeps a
provider:config key. The existing module comment, Init logic, and schema all usetypefor the cluster backend selector, so this should say the module keeps itstype:config key.
Phase A `grpcIaCStateStore` adapter (`module/iac_state_grpc_client.go`). `platform.kubernetes`
keeps its module type and its `provider:` config key in core; `kind`/`k3s`/`eks`/`aks` stay
fully in-core and unchanged.
|
|
||
| ### The in-core interface | ||
|
|
||
| `platform.kubernetes` dispatches on its `provider:` config key to a `kubernetesBackend` |
There was a problem hiding this comment.
Fixed in 1d52814. (1) Config key corrected provider: → type: throughout — verified against platform_kubernetes.go:87 (config["type"]) + schema/module_schema.go:2665; design §2 supersession noted. (2) ADR-sequence wording narrowed to the local 0036/0037 ordering only.
| reserved by PR 1 (the `IaCStateBackend.Configure` RPC), which is in flight on a parallel branch | ||
| and not yet merged. PR 7 is independent of PR 1, so the spike's `tail -1` free-number check shows | ||
| `0035` rather than the plan's anticipated `0036` — expected for parallel work. `0037` is the | ||
| scope-locked number for this ADR; once both PRs merge the sequence is gap-free. |
There was a problem hiding this comment.
Fixed in 1d52814. (1) Config key corrected provider: → type: throughout — verified against platform_kubernetes.go:87 (config["type"]) + schema/module_schema.go:2665; design §2 supersession noted. (2) ADR-sequence wording narrowed to the local 0036/0037 ordering only.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
⏱ Benchmark Results✅ No significant performance regressions detected. benchstat comparison (baseline → PR)
|
Summary
decisions/0037—kubernetesBackendinterface-audit spike for thegkecross-process contract (Phase C of the cloud-SDK extraction, plan PR 7 / Task 19).gkeinto the existingResourceDrivercontract. Zero new proto surface.workflow-plugin-gcpalready has a working GKEDriver registered underinfra.k8s_cluster→ Task 22 (gcp plugin) is a verify+harden pass, not a new build; PR 9's proto regen is not a serial prerequisite to PR 8.Docs-only — no code. Gates plan PRs 8 + 9.
Test plan
kubernetesBackendinterface, GKEDriver,iac.protoResourceDriver RPCs, precedent adapter)🤖 Generated with Claude Code