feat(bootstrap): add Podman socket fallback for macOS#502
Open
craigamcw wants to merge 2 commits intoNVIDIA:mainfrom
Open
feat(bootstrap): add Podman socket fallback for macOS#502craigamcw wants to merge 2 commits intoNVIDIA:mainfrom
craigamcw wants to merge 2 commits intoNVIDIA:mainfrom
Conversation
Implemented feature with help from Claude Code
Add additive Podman support on macOS without changing any Linux paths,
K3s logic, policy engine, or inference routing.
Socket discovery fallback chain:
1. $DOCKER_HOST
2. $CONTAINER_HOST
3. /var/run/docker.sock (bollard default)
4. Podman socket via `podman machine inspect` (macOS only)
Container runtime adaptations when Podman is detected:
- security_opt: unmask /sys/fs/cgroup and /dev/kmsg
- kubelet feature gate: KubeletInUserNamespace=true
- kubelet arg: cgroups-per-qos=false, enforce-node-allocatable=
Image push reliability:
- Extended timeout (120s → 600s) for Unix socket connections
- Fallback from bollard put_archive API to `docker cp` CLI for
large image transfers that fail over the Podman API socket
Also adds documentation for Podman setup in quickstart, support matrix,
and a new troubleshooting page.
Signed-off-by: Craig <craig@epic28.com>
|
All contributors have signed the DCO ✍️ ✅ |
Author
|
I have read the DCO document and I hereby sign the DCO. |
Author
|
recheck |
Collaborator
|
Thanks for the PR. I'm thinking through the best way to to test this. There is enough business logic and difference in implementation that we'll want some podman specific e2e tests. |
Add E2E tests that validate the Podman macOS support end-to-end: - doctor check succeeds with explicit DOCKER_HOST pointing at Podman - doctor check auto-discovers the Podman socket without DOCKER_HOST - doctor check respects CONTAINER_HOST as a fallback - full gateway lifecycle (start → status → destroy) under Podman with KubeletInUserNamespace and cgroups-per-qos flags All tests skip gracefully when Podman is not installed or not running, so they do not break CI on Docker-only environments. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Craig <craig@epic28.com>
Author
|
Thank you Drew. I added Podman-specific E2E tests in
All tests skip gracefully when Podman is not installed, so they won't break CI on Docker-only runners. Verified locally: 4/4 pass on macOS M4 with Podman 5.8.1 (applehv, rootful mode). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implemented feature with help from Claude Code.
Add additive Podman support on macOS without changing any Linux paths, K3s logic, policy engine, or inference routing.
Socket discovery fallback chain:
podman machine inspect(macOS only)Container runtime adaptations when Podman is detected:
Image push reliability:
docker cpCLI for large image transfers that fail over the Podman API socketAlso adds documentation for Podman setup in quickstart, support matrix, and a new troubleshooting page.
Summary
Adds Podman as a supported container runtime on macOS. OpenShell now auto-discovers the Podman machine socket, configures k3s kubelet flags for rootful Podman compatibility, and falls back to docker cp for reliable large image uploads. No Linux paths, K3s core logic, policy engine, or inference routing are changed.
Related Issue
N/A — feature contribution (Podman on macOS was previously unsupported)
Changes
Testing
mise run pre-commitpassesChecklist
docs/reference/troubleshooting.md (new)