cargo podlet 0.3.0
0.3.0 - 2024-05-21

5 months ago

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 .pod file and a .container file for each container in the pod.

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-to option.
  • BREAKING (compose) Rename podlet compose --pod to podlet compose --kube.
  • (container) Add Entrypoint= Quadlet option.
  • (container) Add StopTimeout= Quadlet option.
  • (container) Support Notify=healthy Quadlet option.
  • (container) Support no-dereference option for Mount=.
  • (container) Add podman run --preserve-fd option.
  • (container) Add podman run --gpus option.
  • (container) Add podman run --retry option.
  • (container) Add podman run --retry-delay option.
  • Add podman --config global option.
  • (pod) Generate .pod Quadlet file from command.
    • Adds the podlet podman pod create subcommand.
    • The --infra-conmon-pidfile and --pod-id-file options were deliberately not implemented as they are set by Quadlet in the generated {name}-pod.service file and can't be set multiple times.
  • BREAKING (compose) Re-add podlet compose --pod option.
    • The --pod option causes podlet to create a .pod Quadlet file in addition to the .container, .volume, and .network files. The containers are linked to the pod and their published ports are moved.
  • (generate) Quadlet files from an existing pod and its containers.
    • Adds the podlet generate pod subcommand.
      • Runs podman pod inspect on the given pod.
      • Deserializes the output.
      • Parses the pod creation command.
      • Does the same for each of the pod's containers.

Bug Fixes

  • Use Quadlet serializer for Unit Display implementation (#64).
    • Brings Unit inline with the other sections of the generated Quadlet file.
  • (container) Add podman run --uts option.
  • (container) --pids-limit range is -1..=u32::MAX.
  • (container) Enforce --blkio-weight range 10..=1000.
  • (container) --blkio-weight-device can 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) --kube help add name requirement.
  • Add code of conduct.
  • Add security policy.
  • Update links to the repository.
  • (contributing) Add contribution guidelines.
    • Adapted from the Buildah/Podman contribution guidelines.
    • Suggests the use of conventional commits and clarifies that the Signed-off-by footer is required for a PR to be merged.
    • Moved and expanded upon the building and continuous integration sections from the README.md file to the new CONTRIBUTING.md file.
  • (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 from compose_spec::Compose.
  • (compose) quadlet::Globals from compose_spec::Service.
  • (compose) Container Quadlet options from compose_spec::Service.
  • (compose) Container Podman args from compose_spec::Service.
  • (compose) quadlet::Network from compose_spec::Network.
  • (compose) quadlet::Volume from compose_spec::Volume.
  • (compose) Kubernetes YAML from compose_spec::Compose.
  • (container) Destructure in Quadlet option conversion.
  • (compose) Move podlet compose args into their own struct.

Miscellaneous

  • (deps) Remove duration-str dependency.
    • All usages were replaced with compose_spec::duration.
  • 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.
  • (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 build job.

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

Don't miss a new podlet release

NewReleases is sending notifications on new releases.