Skip to content

feat(cf-runtime): add opt-in pod-per-step runtime mode#713

Draft
masontikhonov wants to merge 1 commit into
mainfrom
feat/k8s-pod-per-step-runtime
Draft

feat(cf-runtime): add opt-in pod-per-step runtime mode#713
masontikhonov wants to merge 1 commit into
mainfrom
feat/k8s-pod-per-step-runtime

Conversation

@masontikhonov

@masontikhonov masontikhonov commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Adds an opt-in runtime.podPerStep.enabled mode to the cf-runtime chart for the new KubernetesPodPerStep engine runtime (one Kubernetes pod per pipeline step, no DinD). Part of the cross-repo pod-per-step effort (engine, cf-api, runtime-environment-manager, dind-volume-provisioner PRs in parallel).

When enabled:

  • codefresh-engine Role is expanded to manage step pods (pods CRUD+watch, pods/log, pods/exec, pods/attach, PVC get/list, configmaps get, secrets get/create/update/delete for per-build buildkit registry docker-config, events list/watch)
  • runtime-env spec emits runtimeScheduler.type: KubernetesPodPerStep, a workspace PVC recipe under runtimeScheduler.pvcs, optional runtimeScheduler.stepScheduler defaults, and BUILDKIT_IMAGE/CRANE_IMAGE env vars; dockerDaemonScheduler becomes {type: Empty}
  • DinD-only resources (dind Service, codefresh-dind-config ConfigMap, gencerts-dind post-install hooks) are not installed

When disabled (default) the rendered chart is byte-identical to today — verified by diffing helm template output against main.

Tests: 4 new helm-unittest cases (RBAC both modes, dind resource gating, full runtime-spec render in pod-per-step mode); full suite 61/61 green; helm lint passes in both modes.

Related PRs

  • engine: codefresh-io/engine#1613
  • cf-api: codefresh-io/cf-api#6125
  • runtime-environment-manager: codefresh-io/runtime-environment-manager#369
  • venona (cf-runtime chart): feat(cf-runtime): add opt-in pod-per-step runtime mode #713 (this PR)
  • dind-volume-provisioner: codefresh-io/dind-volume-provisioner#109

🤖 Generated with Claude Code

Add runtime.podPerStep.enabled (default: false) to support the new
KubernetesPodPerStep engine runtime, where the engine creates a
Kubernetes pod per pipeline step instead of using DinD:

- rbac.yaml: when enabled, expand the codefresh-engine Role to manage
  step pods (pods, pods/log, pods/exec, pods/attach, pvcs, configmaps,
  secrets create/update/delete for per-build buildkit registry
  docker-config, events)
- values.yaml: new runtime.podPerStep block with buildkit/crane image
  defaults, workspace PVC parameters and stepScheduler passthrough
- runtime-env-spec-tmpl.yaml: when enabled, emit
  runtimeScheduler.type=KubernetesPodPerStep, runtimeScheduler.pvcs
  (workspace), runtimeScheduler.stepScheduler, BUILDKIT_IMAGE/CRANE_IMAGE
  env vars, and dockerDaemonScheduler.type=Empty
- condition off dind-only resources (dind Service, dind daemon
  ConfigMap, gencerts-dind post-install hooks) when enabled
- chart unit tests for both modes

Default (disabled) rendering is byte-identical to the current chart.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@masontikhonov
masontikhonov requested a review from a team as a code owner July 7, 2026 16:17
@masontikhonov
masontikhonov marked this pull request as draft July 7, 2026 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant