Releases: containers/podlet
0.3.1 - 2026-02-02
Release Notes
After an extended hiatus, Podlet is back! I, @k9withabone, apologize for my prolonged absence and silence. Life is overwhelming at times.
The good news is @TheRealBecks has stepped up and joined me as a maintainer! We are also looking another maintainer to join us! If you are interested please comment on this discussion (#171).
This is a fairly large release which includes a number of bug fixes and new features. In the future, the goal is to have smaller releases more frequently. Here are some highlights of this release:
-
Added support for Quadlet options introduced in Podman v5.1.0 (#85) and v5.2.0 (#123). This includes support for creating
.buildQuadlet files withpodlet podman buildand from thebuildsection of a service in a Compose file. -
Added the
-s, --split-optionsoption (#168) which allows the user to specify which Quadlet options should be split onto multiple lines.
By default, Podlet combines all Quadlet options that can be into a space separated list.
For example,podlet podman run -e ONE=one -e TWO=two imageresults in:# image.container [Container] Environment=ONE=one TWO=two Image=image
While
podlet -s Environment podman run -e ONE=one -e TWO=two imageresults in:# image.container [Container] Environment=ONE=one Environment=TWO=two Image=image
See
podlet --helpfor more information and all Quadlet options that can be split. -
Fixed a number of bugs related to Compose file handling (#122).
-
Added a Minimum Supported Rust Version (MSRV) policy (#169) which can be seen in the contribution guide.
Features
- (container) Add
GroupAdd=Quadlet option. - (container) Add
subpathimage mount option. - (generate) Add options to ignore unsupported pod options. (#86)
- Added
--ignore-infra-conmon-pidfileand--ignore-pod-id-fileoptions topodlet generate pod. - The
--infra-conmon-pidfileand--pod-id-fileoptions are deliberately unimplemented bypodlet podman pod createas they are set by Quadlet when generating the systemd service unit file, and cannot be set multiple times. Becausepodlet generate podusespodlet podman pod createinternally, this caused an error when attempting to generate a.podQuadlet file from a pod created using either of those options, such as those created with the deprecatedpodman generate systemdcommand.
- Added
- (compose) Merge
<<keys. (#58) - (compose) Perform additional validation.
- Ensures that networks, volumes (when used across multiple services), configs, and secrets used in each service are defined in the appropriate top-level field.
- (container) Add
LogOpt=Quadlet option. - (container) Add
StopSignal=Quadlet option. - (container) Add
NetworkAlias=Quadlet option. - (pod) Add
NetworkAlias=Quadlet option. - (build) Generate
.buildQuadlet file from command.- Added the
podlet podman buildsubcommand.
- Added the
- (compose)
.buildQuadlet files from Compose. (#100)- Added support to
podlet composefor converting thebuildsection of a Compose service to a.buildQuadlet file.
- Added support to
- (compose) Search for
podman-compose.yamlwhen usingpodlet composeby [@TheRealBecks] in #167. - Add
--split-optionsoption. (#118)- By default, when generating a Quadlet file, Podlet will combine all Quadlet options that can be into a space separated list (e.g.,
Environment=ONE=one TWO=two). The--split-optionsoption allows the user to specify which Quadlet options they would like Podlet to write on separate lines.
- By default, when generating a Quadlet file, Podlet will combine all Quadlet options that can be into a space separated list (e.g.,
Bug Fixes
- Support
podman pod create --nameoption by @ananthb in #89. - (compose) Append
.networkto container network name. (#90) - (generate) Accept array or object from
podman inspectoutput. (#94)- Podman v5.0.0 and newer always returns an array from
podman inspect. Older versions of Podman may return a single JSON object if there is only one result, notably forpodman pod inspect.
- Podman v5.0.0 and newer always returns an array from
- (compose) Prepend container dependencies with pod name. (#114)
- When the
podlet compose --podoption is used, the names of the services from the Compose file are prepended with the pod name. If a service had a dependency via thedepends_onattribute, the name of the dependency was not similarly prepended with the pod name when added to the[Unit]section of the Quadlet file.
- When the
- (compose) Support
services[].memswap_limit.- The
services[].memswap_limitattribute is translated topodman run --memory-swap.
- The
- (container) Support short flag
-hforpodman run --hostname. (#105)- Changed short help flag to
-?forpodlet podman run. This could be a potentially minor breaking change for some users.
- Changed short help flag to
- (compose)
.buildQuadlet file error reporting. (#126)- If there was an error converting the
buildsection of a Compose service it would not be reported to the user. The rest of the service would fail to convert to a.containerQuadlet file as theimagewould not be set (it's set after thebuildsection is successfully converted). The user would receive a "imageorbuildis required" error as the service error would be reported first.
- If there was an error converting the
Documentation
- (readme) Add homebrew to the installation section by @cprecioso in #80.
- (contributing) Add MSRV policy.
- Set MSRV to 1.85, following the Rust version in Debian stable.
- (readme) Update demo, features, and usage.
Refactor
- Add generic impls of
HostPathstrait. - Destruct tuples to enhance readability by @Integral-Tech.
impl Serialize for podlet::quadlet::File.- Changed
podlet::serde::quadlet::Serializerto accept sequences and tuples in addition to structs. Elements in a sequence are serialized as separate sections. Tuples are combined into a single section (for combiningpodlet::quadlet::Resourceandpodlet::quadlet::Globals).
- Changed
Miscellaneous
- (release-container) Add
--alltobuildah manifest push. (#82) - Add Podman v5.1.0 to
PodmanVersion. - (deps) Update
compose_specto v0.3.0. (#91, #96, #106, #117) - Add Podman v5.2.0 to
PodmanVersion. - (ci) Add
msrvjob. - Update to Rust 2024 edition.
- Includes changes to formatting for the Rust 2024 style edition.
- (deps) Replace
nixwithrustix. - (lints) Fix Clippy lints.
- (release) Update dist.
- Formerly known as cargo-dist.
- (ci) Bump actions/checkout to v6.
- (ci) Add
spellcheckjob. - (deps) Update dependencies.
New Contributors
- @TheRealBecks made their first contribution in #167
- @Integral-Tech made their first contribution in #129
- @ananthb made their first contribution in #89
- @cprecioso made their first contribution in #80
Download podlet 0.3.1
| File | Platform | Checksum |
|---|---|---|
| podlet-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| podlet-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| podlet-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| podlet-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| podlet-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | [checksum](https://github.com/containers/podlet/releases/download/v0.3.1/podlet-aarch64-unknow... |
0.3.0 - 2024-05-21
Release Notes
Big release for Podlet!
In case you didn't already notice, Podlet is now officially a part of the Containers community! As a part of the transition, a new code of conduct, security policy, and contribution guidelines were added (#76). Additionally, the Podlet container image is now available at ghcr.io/containers/podlet. The existing images at quay.io/k9withabone/podlet and docker.io/k9withabone/podlet are deprecated and will not be receiving updates.
Under the hood, the library used to deserialize Compose files was changed (#73). As a result, only Compose files which follow the Compose specification are supported. The top-level version field is completely ignored. Most Compose files should still work as before. This was a large change so look out for bugs.
Added support for Quadlet options introduced in Podman v5.0.0 (#75). The headline feature is support for generating Quadlet .pod files. They can be generated from:
- A Podman command with
podlet podman pod create. - A Compose file with
podlet compose --pod. - An existing pod with
podlet generate pod.- This creates a
.podfile and a.containerfile for each container in the pod.
- This creates a
Note that the existing option for generating Kubernetes Pod YAML from a Compose file was renamed to podlet compose --kube. Both the --pod and --kube options of podlet compose do not take an argument and instead require the top-level name field in the Compose file. The name is used as the name of the pod and in the filename of the created files.
Features
- Add
podlet --binds-tooption. - BREAKING (compose) Rename
podlet compose --podtopodlet compose --kube. - (container) Add
Entrypoint=Quadlet option. - (container) Add
StopTimeout=Quadlet option. - (container) Support
Notify=healthyQuadlet option. - (container) Support
no-dereferenceoption forMount=. - (container) Add
podman run --preserve-fdoption. - (container) Add
podman run --gpusoption. - (container) Add
podman run --retryoption. - (container) Add
podman run --retry-delayoption. - Add
podman --configglobal option. - (pod) Generate
.podQuadlet file from command.- Adds the
podlet podman pod createsubcommand. - The
--infra-conmon-pidfileand--pod-id-fileoptions were deliberately not implemented as they are set by Quadlet in the generated{name}-pod.servicefile and can't be set multiple times.
- Adds the
- BREAKING (compose) Re-add
podlet compose --podoption.- The
--podoption causes podlet to create a.podQuadlet file in addition to the.container,.volume, and.networkfiles. The containers are linked to the pod and their published ports are moved.
- The
- (generate) Quadlet files from an existing pod and its containers.
- Adds the
podlet generate podsubcommand.- Runs
podman pod inspecton the given pod. - Deserializes the output.
- Parses the pod creation command.
- Does the same for each of the pod's containers.
- Runs
- Adds the
Bug Fixes
- Use Quadlet serializer for
UnitDisplayimplementation (#64).- Brings
Unitinline with the other sections of the generated Quadlet file.
- Brings
- (container) Add
podman run --utsoption. - (container)
--pids-limitrange is-1..=u32::MAX. - (container) Enforce
--blkio-weightrange10..=1000. - (container)
--blkio-weight-devicecan be specified multiple times. - (container) Don't add empty
PodmanArgs=when downgrading Podman version. - Correct use of
eyre::bail!()on non-Unix platforms.
Documentation
- (clippy) Fix Clippy lint warning for
Idmap. - (compose)
--kubehelp addnamerequirement. - Add code of conduct.
- Add security policy.
- Update links to the repository.
- The repository is now at https://github.com/containers/podlet.
- (contributing) Add contribution guidelines.
- Adapted from the Buildah/Podman contribution guidelines.
- Suggests the use of conventional commits and clarifies that the
Signed-off-byfooter is required for a PR to be merged. - Moved and expanded upon the building and continuous integration sections from the
README.mdfile to the newCONTRIBUTING.mdfile.
- (readme) Update container image location.
- The Podlet container image is now located at ghcr.io/containers/podlet.
- Fix Podman and Quadlet capitalization.
- (readme) Update demo, features, and usage.
Refactor
- BREAKING (deps) Remove
docker_compose_types. - BREAKING (compose) Deserialize
compose_spec::Compose. cli::Unit::is_empty()- Check each field instead of comparing to the default.
- (compose) Conversion to
quadlet::Files fromcompose_spec::Compose. - (compose)
quadlet::Globalsfromcompose_spec::Service. - (compose) Container Quadlet options from
compose_spec::Service. - (compose) Container Podman args from
compose_spec::Service. - (compose)
quadlet::Networkfromcompose_spec::Network. - (compose)
quadlet::Volumefromcompose_spec::Volume. - (compose) Kubernetes YAML from
compose_spec::Compose. - (container) Destructure in Quadlet option conversion.
- (compose) Move
podlet composeargs into their own struct.
Miscellaneous
- (deps) Remove
duration-strdependency.- All usages were replaced with
compose_spec::duration.
- All usages were replaced with
- Add Podman v5.0.0 to Podman versions.
- Also added v4.9.X aliases to 4.8 and v5.0.X aliases to 5.0.
- (container) Reorder fields to match Quadlet docs.
- (lints) Fix new rust 1.78 clippy lints.
- BREAKING (release-container) Push to ghcr.io/containers/podlet.
- The docker.io/k9withabone/podlet and quay.io/k9withabone/podlet container images will no longer be updated.
- (release-container) Add annotations/labels to manifest/image.
- Adds labels to the Podlet container image and annotations to the multi-arch manifest as suggested by the GitHub packages documentation: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#labelling-container-images.
- (ci) Bump actions/checkout to v4.
- (ci) Use Buildah container to build Podlet container.
- (deps) Update dependencies.
- (release) Update cargo-dist.
- (release-container) Fix manifest annotation quoting.
- (ci) Use consistent formatting.
- (ci) Add image to manifest when building container.
- (ci) Add
buildjob.
Download podlet 0.3.0
| File | Platform | Checksum |
|---|---|---|
| podlet-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| podlet-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| podlet-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| podlet-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| podlet-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.2.4 - 2024-01-30
Release Notes
Features
- Set compatibility with
--podman-version(#45) - Add support for quadlet options introduced in podman v4.8.0 (#30)
- Container
GIDMap=ReadOnlyTmpfs=SubGIDMap=SubUIDMap=UIDMap=- Remove
VolatileTmp=
- Volume
Driver=Image=
- Image
- Brand new!
- Generate
.imagequadlet files with:podlet podman image pullpodlet generate image
- All quadlet file types
ContainersConfModule=GlobalArgs=
- Container
- Convert relative host paths to absolute paths with
--absolute-host-paths(#52)- Does not affect paths in the
PodmanArgs=quadlet option or Kubernetes YAML files. - As part of the work to implement this, the following quadlet options are now fully parsed and validated:
AddDevice=Mount=Rootfs=Volume=DecryptionKey=
- Does not affect paths in the
Security
- Remove ASCII control characters (except whitespace) from container commands
Documentation
- (readme) Map user into podlet container (#50, thanks @rugk!)
- (readme) Update demo, features, and usage
Refactor
- (container) Parse security opts with
str::strip_prefix - Remove arg serializer's map functionality
Miscellaneous Tasks
- Add podman v4.9.0 to podman versions
- Update dependencies
- (ci) Update cargo-dist
Download podlet 0.2.4
| File | Platform | Checksum |
|---|---|---|
| podlet-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| podlet-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| podlet-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| podlet-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| podlet-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.2.3 - 2023-12-31
Release Notes
Features
- Add support for quadlet options introduced in podman v4.7.0 (#29)
- Container
DNS=DNSOption=DNSSearch=PidsLimit=ShmSize=Ulimit=
- Kube
AutoUpdate=
- Network
DNS=
- Container
- Add
podlet generatesubcommands for generating quadlet files from existing:- Containers (#23)
- Networks
- Volumes
Bug Fixes
- (compose)
network_modeaccept all podman values (#38)- Improved error message for unsupported values
- (network) Support
<start-IP>-<end-IP>syntax for--ip-range
Documentation
- (readme) Podman v4.7.0
- (readme) Update demo and usage
Miscellaneous Tasks
- (ci) Skip container run for conmon v2.1.9
- (lint) Fix new rust 1.75 clippy warnings
- Update dependencies
Download podlet 0.2.3
| File | Platform | Checksum |
|---|---|---|
| podlet-aarch64-apple-darwin.tar.xz | macOS Apple Silicon | checksum |
| podlet-x86_64-apple-darwin.tar.xz | macOS Intel | checksum |
| podlet-x86_64-pc-windows-msvc.zip | Windows x64 | checksum |
| podlet-x86_64-unknown-linux-gnu.tar.xz | Linux x64 | checksum |
| podlet-x86_64-unknown-linux-musl.tar.xz | musl Linux x64 | checksum |
0.2.2 - 2023-12-15
Release Notes
Features
- Add support for quadlet options introduced in podman v4.6.0 (#28)
- (compose) Support volume
driverfield
Bug Fixes
- (container) Arg
--tls-verifyrequires = - (network) Filter out empty
Options=quadlet option - Escape newlines in joined quadlet values (#32)
- (compose) Support
cap_drop,userns_mode, andgroup_addservice fields (#31, #34) - (compose) Split
commandstring (#36)- When the command is converted to the
Exec=quadlet option, it is now properly quoted. When converting to k8s, it is properly split into args.
- When the command is converted to the
Documentation
- (readme) Podman v4.6.0
- (changelog) Add
git-cliffconfiguration
Refactor
- Use custom serializer for
PodmanArgs= - Use custom serializer for quadlet sections
Miscellaneous Tasks
- Update dependencies
Download podlet 0.2.2
| File | Platform | Checksum |
|---|---|---|
| podlet-aarch64-apple-darwin.tar.xz | macOS Apple Silicon | checksum |
| podlet-x86_64-apple-darwin.tar.xz | macOS Intel | checksum |
| podlet-x86_64-pc-windows-msvc.zip | Windows x64 | checksum |
| podlet-x86_64-unknown-linux-gnu.tar.xz | Linux x64 | checksum |
| podlet-x86_64-unknown-linux-musl.tar.xz | musl Linux x64 | checksum |
0.2.1 - 2023-11-28
Release Notes
Features
- Compose: Read compose file from stdin (#18)
- For
podlet compose, if a compose file is not provided and stdin is not a terminal, or-is provided, podlet will attempt to read a compose file from stdin. - For example
cat compose-example.yaml | podlet composeorcat compose-example.yaml | podlet compose -
- For
Bug Fixes
- Truncate when overwriting existing files
- Compose service volumes can be mixed long and short form (#26)
Documentation
- Readme: Add sample podlet container usage instructions (#17, thanks @Nitrousoxide!)
- Readme: Update description, add build and local ci instructions
Miscellaneous Tasks
- CI: Update podman for build and publish of container
- CI: Add container builds to regular checks
- Update dependencies
- CI: Update cargo-dist to v0.5.0
Refactor
quadlet::writeln_escape_spaceswrite to formatter- Consistent use of
eyre::bailandeyre::ensure - Add
quadlet::Kube::new() - Simplify
cli::File::write() - Split
compose_try_into_quadlet_files() - Move compose functions into their own module
- Move lints to Cargo.toml, add additional lints
Styling
- Fix let-else formatting
Download podlet 0.2.1
| File | Platform | Checksum |
|---|---|---|
| podlet-aarch64-apple-darwin.tar.xz | macOS Apple Silicon | checksum |
| podlet-x86_64-apple-darwin.tar.xz | macOS Intel | checksum |
| podlet-x86_64-pc-windows-msvc.zip | Windows x64 | checksum |
| podlet-x86_64-unknown-linux-gnu.tar.xz | Linux x64 | checksum |
| podlet-x86_64-unknown-linux-musl.tar.xz | musl Linux x64 | checksum |
[0.2.0] - 2023-06-15
Release Notes
Added
- Check for existing systemd unit files with the same name as the service generated by quadlet from the podlet generated quadlet file and throw an error if there is a conflict (#14).
- Use
--skip-services-checkto opt-out.
- Use
- Convert a (docker) compose file (#9) to:
- Multiple quadlet files
- A pod with a quadlet kube file and Kubernetes YAML
Changed
- Breaking: files are no longer overwritten by default, added
--overwriteflag if overwriting is desired.
Download podlet 0.2.0
| target | kind | download |
|---|---|---|
| aarch64-apple-darwin | tarball | podlet-aarch64-apple-darwin.tar.xz |
| x86_64-apple-darwin | tarball | podlet-x86_64-apple-darwin.tar.xz |
| x86_64-pc-windows-msvc | tarball | podlet-x86_64-pc-windows-msvc.zip |
| x86_64-unknown-linux-gnu | tarball | podlet-x86_64-unknown-linux-gnu.tar.xz |
[0.1.1] - 2023-04-19
Release Notes
Added
- A container image of podlet now available on quay.io and docker hub.
- Option flag for outputting to podman unit directory
--unit-directory.- Places the generated file in the appropriate directory (i.e.
/etc/containers/systemd,~/.config/containers/systemd) for use by quadlet.
- Places the generated file in the appropriate directory (i.e.
Download podlet 0.1.1
| target | kind | download |
|---|---|---|
| aarch64-apple-darwin | tarball | podlet-v0.1.1-aarch64-apple-darwin.tar.xz |
| x86_64-apple-darwin | tarball | podlet-v0.1.1-x86_64-apple-darwin.tar.xz |
| x86_64-pc-windows-msvc | tarball | podlet-v0.1.1-x86_64-pc-windows-msvc.zip |
| x86_64-unknown-linux-gnu | tarball | podlet-v0.1.1-x86_64-unknown-linux-gnu.tar.xz |
[0.1.0] - 2023-04-14
Release Notes
The initial release of podlet! Designed for podman v4.5.0 and newer.
Initial Features
- Create quadlet files:
.container-podman run.kube-podman kube play.network-podman network create.volume-podman volume create
- Write to stdout, or to a file.
- The file name, if not provided, is pulled from the container name or image, kube file, or network or volume name.
- Options for common systemd unit options
- [Unit]
- Description=
- Wants=
- Requires=
- Before=
- After=
- [Service]
- Restart=
- [Install]
- WantedBy=
- RequiredBy=
- [Unit]
Download podlet 0.1.0
| target | kind | download |
|---|---|---|
| aarch64-apple-darwin | tarball | podlet-v0.1.0-aarch64-apple-darwin.tar.xz |
| x86_64-apple-darwin | tarball | podlet-v0.1.0-x86_64-apple-darwin.tar.xz |
| x86_64-pc-windows-msvc | tarball | podlet-v0.1.0-x86_64-pc-windows-msvc.zip |
| x86_64-unknown-linux-gnu | tarball | podlet-v0.1.0-x86_64-unknown-linux-gnu.tar.xz |