Skip to content

Latest commit

 

History

History
336 lines (265 loc) · 14.5 KB

CHANGELOG.md

File metadata and controls

336 lines (265 loc) · 14.5 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.3.0 - 2024-05-21

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.

0.2.4 - 2024-01-30

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 .image Quadlet files with:
        • podlet podman image pull
        • podlet generate image
    • All Quadlet file types
      • ContainersConfModule=
      • GlobalArgs=
  • 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=

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

0.2.3 - 2023-12-31

Features

  • Add support for Quadlet options introduced in Podman v4.7.0 (#29)
    • Container
      • DNS=
      • DNSOption=
      • DNSSearch=
      • PidsLimit=
      • ShmSize=
      • Ulimit=
    • Kube
      • AutoUpdate=
    • Network
      • DNS=
  • Add podlet generate subcommands for generating Quadlet files from existing:
    • Containers (#23)
    • Networks
    • Volumes

Bug Fixes

  • (compose) network_mode accept 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

0.2.2 - 2023-12-15

Features

  • Add support for Quadlet options introduced in Podman v4.6.0 (#28)
    • Container
      • Sysctl= (#22, thanks @b-rad15!)
      • AutoUpdate=
      • HostName=
      • Pull=
      • WorkingDir=
      • SecurityLabelNested=
      • Mask=
      • Unmask=
    • Kube, Network, and Volume
      • PodmanArgs=
  • (compose) Support volume driver field

Bug Fixes

  • (container) Arg --tls-verify requires =
  • (network) Filter out empty Options= Quadlet option
  • Escape newlines in joined Quadlet values (#32)
  • (compose) Support cap_drop, userns_mode, and group_add service fields (#31, #34)
  • (compose) Split command string (#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.

Documentation

  • (readme) Podman v4.6.0
  • (changelog) Add git-cliff configuration

Refactor

  • Use custom serializer for PodmanArgs=
  • Use custom serializer for Quadlet sections

Miscellaneous Tasks

  • Update dependencies

0.2.1 - 2023-11-28

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 compose or cat compose-example.yaml | podlet compose -

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_spaces write to formatter
  • Consistent use of eyre::bail and eyre::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

0.2.0 - 2023-06-15

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-check to opt-out.
  • 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 --overwrite flag if overwriting is desired.

0.1.1 - 2023-04-19

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.

0.1.0 - 2023-04-14

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=