Skip to content

Cross-cloud ephemeral IaCProviderRunner (RunJob): optional gRPC service + per-cloud impls #840

@intel352

Description

@intel352

Cross-cloud ephemeral IaCProviderRunner (RunJob) — optional gRPC service + per-cloud impls

Spun out of the infra-admin Phase 2+3 program (ADR 0020 in the workspace repo; design docs/plans/2026-06-02-infra-admin-phase2-3-design.md). The Phase 3 ephemeral exec-env ships via the existing Argo Workflows module (k8s only). This issue tracks the cross-cloud ephemeral primitive, which is a proto-contract change rippling to every provider plugin and is therefore its own program (a spike confirmed ~2500–4500 LOC across ~6 repos).

Why

interfaces.JobSpec is defined but unused; interfaces.IaCProvider has no RunJob. There is no way to launch a one-off container/task on a cloud provider native job runner (ECS RunTask/Batch, GCP Cloud Run Jobs, Azure Container Instances, DigitalOcean App jobs) through the IaC provider contract. The Argo path covers k8s but not cloud-native job runners.

Proposed RPC (new OPTIONAL service on the IaC contract)

service IaCProviderRunner {
  rpc RunJob(JobSpec) returns (JobHandle);
  rpc JobStatus(JobHandle) returns (JobStatusReply);   // {state, exit_code}
  rpc JobLogs(JobHandle) returns (stream LogChunk);
}
  • Optional, advertised via the plugin manifest (mirrors the IaCProviderRegionLister/DriftDetector accessor pattern from feat(iac): add provider region lister contract #819 / iac/providerclient). Providers that do not implement it advertise nothing; callers get a nil accessor.
  • A provider-ephemeral sandbox.SandboxRunner dispatches to the resolved provider IaCProviderRunner (parallel to the ArgoEphemeralRunner that ships in the Phase 3 program).
  • Secrets resolve provider-side (never cross the wire), consistent with ADR 0017.

Per-plugin task list (each provider plugin)

Scope note

Carved out of the Phase 2+3 program with explicit user approval (AskUserQuestion 2026-06-02: "All deliverable now; cross-cloud RunJob designed-but-filed"). The Phase 2+3 program ships the Argo (k8s) ephemeral runner; this issue is the cross-cloud follow-on.

See ADR 0020 (decisions/0020-argo-ephemeral-direct-api-and-crosscloud-runjob-filed.md, workspace repo).

Current status

AWS, GCP, Azure, workflow core, and workflow-registry are implemented, released, and verified as of 2026-06-03. DigitalOcean remains open pending a contract/provider-target design for App Platform job identity.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions