weichen lai created YUNIKORN-3443:
-------------------------------------

             Summary: Support Podman in release tools for building images and 
validation
                 Key: YUNIKORN-3443
                 URL: https://issues.apache.org/jira/browse/YUNIKORN-3443
             Project: Apache YuniKorn
          Issue Type: Improvement
          Components: release
            Reporter: weichen lai


h3. Motivation
Currently, the release scripts and tools in {{yunikorn-release}} are tightly 
coupled with Docker:
# {{release-tools/build-image.py}} explicitly searches for and invokes 
{{docker}} ({{cmd = get_cmd("docker")}}) for logging in, pushing images, and 
managing multi-arch manifests ({{docker manifest}}).
# {{release-top-level-artifacts/validate_cluster.sh}} checks for Docker daemon 
availability using {{docker version | grep "^Server:"}} and uses {{kind load 
docker-image}} to preload images into the Kind cluster.

Following the work in YUNIKORN-3441 introducing Podman support for local builds 
and E2E testing in {{yunikorn-k8shim}}, developers and release managers who 
work in Podman-only environments (or rootless container setups) still cannot 
run release packaging, image builds, or cluster validation smoothly without a 
Docker daemon.

We should extend Podman support to {{yunikorn-release}}.

h3. Proposed Changes
# *Container Engine Abstraction in {{release-tools/build-image.py}}*:
** Auto-detect container engine ({{docker}} preferred, fallback to {{podman}}), 
or support configuring via CLI flag (e.g., {{--engine}}) / environment variable 
({{DOCKER}}).
** Add explicit registry target ({{docker.io}}) during {{login}} command to 
ensure compatibility with Podman CLI:
     {{[cmd, "login", "docker.io", "--username", ..., "--password", ...]}}
** Ensure {{podman manifest}} commands ({{create}}, {{add}}/{{--amend}}, {{push 
--purge}}) work seamlessly alongside {{docker manifest}}.
# *Adapt {{release-top-level-artifacts/validate_cluster.sh}} for Podman*:
** Replace the daemon-specific check ({{docker version | grep "^Server:"}}) 
with {{${DOCKER} info &> /dev/null}}, which works for both Docker and 
daemonless Podman.
** Sideload images into Kind using {{kind load image-archive}} via temporary 
tarballs when Podman is used.
** Set {{KIND_EXPERIMENTAL_PROVIDER=podman}} when running under Podman.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to