Skip to content

feat: Add Podman support as drop-in replacement for Docker #360

Draft
ZPascal wants to merge 1 commit into
cloudfoundry:mainfrom
ZPascal:add-podman-support
Draft

feat: Add Podman support as drop-in replacement for Docker #360
ZPascal wants to merge 1 commit into
cloudfoundry:mainfrom
ZPascal:add-podman-support

Conversation

@ZPascal

@ZPascal ZPascal commented May 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Podman runtime support — scripts/detect-runtime.sh auto-detects Docker or Podman (explicit CONTAINER_RUNTIME override takes precedence). All scripts (create-kind.sh, delete-kind.sh, init.sh) use the detected runtime; no Docker
    aliasing required.
  • Podman on macOS/Windows — scripts/setup-podman-vm.sh creates and configures a rootful Podman machine (4 CPU, 8 GB, 60 GB) with NFS kernel modules and inotify limits applied inside the VM.
  • Cilium disabled under rootless Podman — SKIP_CILIUM=true is set automatically when Podman is detected. This skips the Cilium Helm release and suppresses CiliumClusterwideNetworkPolicy CRDs
    (assets/base-chart/templates/network-policy.yaml); https://github.com/aojea/kindnet provides pod networking instead. assets/values/cilium-podman.yaml documents a degraded-mode Cilium config for opt-in use.
  • KinD config for Podman — kind-podman.yaml adds BPF filesystem mounts on all nodes (required by kindnet on some kernels).
  • Remove CAPI udp-forwarder sidecar — the udp-forwarder sidecar from cloud_controller_ng was removed; loggregator endpoint is now configured directly.
  • CF API readiness polling — make login now polls /v2/info for up to 10 minutes before calling cf login, fixing a race where make up returned before the cloud-controller pod was healthy.
  • CI: Podman smoke job — kind-smoke.yaml now dispatches both Docker and Podman smoke runs via a shared reusable workflow (smoke-run.yaml), eliminating ~230 lines of duplication.

ARM / Apple Silicon limitations

The CF application workload layer is amd64-only:

  • cflinuxfs4 rootfs and all pre-compiled buildpack archives are x86-64 images.
  • Docker Desktop on Apple Silicon: enable Rosetta emulation (Settings → General → Use Rosetta for x86_64/amd64 emulation). Well-tested path.
  • Podman on Apple Silicon: Podman machine runs under QEMU/Rosetta. Functional but slower than Docker Desktop with Rosetta.
  • Linux ARM64: not supported — cflinuxfs4 and buildpacks are amd64-only; app staging will fail without kernel-level x86 emulation (binfmt_misc + QEMU).

CF platform components (gorouter, diego, CAPI, etc.) build and run natively on ARM; only app workloads are restricted to amd64.

Rootless Podman limitations

  • No Cilium: CAP_NET_ADMIN in the host user namespace is required by Cilium 1.18.x and is unavailable in rootless containers. kindnet is used instead; Cilium network policies are not enforced.
  • No make build: docker buildx bake is not supported with Podman. Use podman build directly with releases/*/Dockerfile.
  • Linux prerequisites: fs.inotify.max_user_instances=512 and net.ipv4.ip_unprivileged_port_start=80 must be set before make up.

@ZPascal ZPascal force-pushed the add-podman-support branch 2 times, most recently from e11a2de to 362eb75 Compare May 6, 2026 14:02
@linux-foundation-easycla

linux-foundation-easycla Bot commented May 7, 2026

Copy link
Copy Markdown

CLA Signed

The committers listed above are authorized under a signed CLA.

@lukaszgryglicki

Copy link
Copy Markdown

/easycla

@ZPascal ZPascal force-pushed the add-podman-support branch from 4bc003f to 61afe52 Compare May 10, 2026 15:32
@ZPascal ZPascal force-pushed the add-podman-support branch 5 times, most recently from feef7d2 to 0648cc2 Compare May 25, 2026 13:38
@ZPascal ZPascal force-pushed the add-podman-support branch 4 times, most recently from 22c8334 to 162984c Compare May 27, 2026 17:02
@ZPascal ZPascal changed the title Add podman support feat: Add Podman support as drop-in replacement for Docker May 27, 2026
@ZPascal ZPascal force-pushed the add-podman-support branch from da6bc4f to 3c80079 Compare May 27, 2026 19:11
@ZPascal ZPascal force-pushed the add-podman-support branch from 3c80079 to bb577c4 Compare May 27, 2026 21:47
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.

2 participants