All Versions
30
Latest Version
Avg Release Cycle
-
Latest Release
-

Changelog History
Page 2

  • v5.2.0 Changes

    ๐Ÿ”‹ Features & Enhancements

    • ๐Ÿ‘Œ Improve image import performance (#826, @sbaier1)
      • New flag: k3d image import --mode [auto | direct | tools]
      • tools is the old default, which spawns a k3d-tools container for importing
      • auto is the new default to automatically detect which mode should work best
      • direct directly streams the images into the node containers without the k3d-tools container
    • โœจ Enhanced usability of nodefilters & error messages for wrong usage (#871)
    • ๐Ÿ†• New command: k3d version list [k3s | k3d | k3d-proxy | k3d-tools] to get image tags that can be used with k3d (#870)
      • e.g. use k3d version list k3s --format repo to get the latest image available for K3s and use it via k3d cluster create --image <image>
      • Docs: [docs/usage/commands/k3d_version_list.md](./docs/usage/commands/k3d_version_list.md)

    ๐Ÿ›  Fixes

    • cluster network: reserve IP extra IP for k3d-tools container in k3d-managed IPAM to avoid conflicts
    • ๐Ÿ–จ process the SimpleConfig before validating it to avoid early exit in hostnetwork mode (#860)
    • ๐Ÿ›  error out if K3D_FIX_DNS=1 is set and user tries to mount a file to /etc/resolv.conf (conflict)
    • clusterStart: only run actions which are necessary given the start reason (e.g. cluster start vs. cluster create)
    • ๐Ÿ›  fix injection of host.k3d.internal based on resolving host.docker.internal (#872)
      • also now uses host.docker.internal in kubeconfig based on certain conditions (see PR)

    Misc

    • โœ… tests/e2e: parellelize and cleanup tests -> cut execution speed in half (#848 & #849)
      • also run some make targets in parallel
      • new env var E2E_PARALLEL=<int> to configure parallelism
      • test output is now redirected to files inside the runner and only the logs of failed tests will later be output
    • โšก๏ธ Update dependencies, including docker, containerd & k8s
    • ๐Ÿ“„ docs: clarify usage of local registries with k3d
    • ๐Ÿ“„ docs: fix port numbers in registry usage guide

    Notes

    • ๐Ÿณ k3d v5.x.x requires at least docker version 20.10.4
  • v5.1.0 Changes

    ๐Ÿ”‹ Features

    • clusterCreate: --image option (also in config file) magic words to follow K3s channels (#841)
      • latest/stable to follow latest/stable channels of K3s
      • +<channel> (prefix +) where <channel> can as well be latest or stable, but also e.g. v1.21
      • k3d will then check the K3s channel server to get the latest image for that channel

    โœจ Enhancements

    • ๐ŸŒฒ nodeHooks: add descriptions and log them for more verbosity (#843)
    • node create: inject host.k3d.internal into /etc/hosts similar to the cluster create command (#843)

    ๐Ÿ›  Fix

    • --network host: do not do any network magic (like host.k3d.internal injection, etc.) when host network is used (#844)

    Misc

    • ๐Ÿ— CI/Makefile: build with -mod vendor
    • ๐Ÿ“„ docs: document using some K3s features in k3d, including servicelb, traefik, local-storage-provisioner and coredns (#845)
  • v5.0.3 Changes

    โœจ Enhancements & Fixes

    • ๐Ÿณ simplified way of getting a Docker API Client that works with Docker Contexts and DOCKER_* environment variable configuration (#829, @dragonflylee)
      • fix: didn't honor DOCKER_TLS environment variables before
  • v5.0.2 Changes

    โœจ Enhancements

    • ๐Ÿš€ CoreDNS Configmap is now edited in the auto-deploy manifest on disk instead of relying on kubectl patch command (#814)
    • ๐Ÿ”จ refactor: add cmd subcommands in a single function call (#819, @moeryomenko)
    • ๐ŸŒฒ handle ready-log-messages by type and intent & check them in single log streams instead of checking whole chunks every time (#818)

    ๐Ÿ›  Fixes

    • ๐Ÿ›  fix: config file check failing with env var expansion because unexpanded input file was checked

    Misc

    • cleanup: ensure that connections/streams are closed once unused (#818)
    • cleanup: split type definitions across multiple files to increase readability (#818)
    • ๐Ÿ“„ docs: clarify node create help text about cluster reference (#808, @losinggeneration)
    • ๐Ÿ”จ refactor: move from io/ioutil (deprecated) to io and os packages (#827, @Juneezee)
  • v5.0.1 Changes

    โœจ Enhancement

    • โž• add HostFromClusterNetwork field to LocalRegistryHosting configmap as per KEP-1755 (#754)

    ๐Ÿ›  Fixes

    • ๐Ÿ›  fix: nilpointer exception on failed exec process with no returned logreader
    • ๐Ÿ‘‰ make post-create cluster preparation (DNS stuff mostly) more resilient (#780)
    • ๐Ÿ›  fix v1alpha2 -> v1alpha3 config migration (and other related issues) (#799)

    Misc

    • ๐Ÿ“„ docs: fix typo (#784)
    • ๐Ÿ“„ docs: fix usage of legacy --k3s-agent/server-arg flag
  • v5.0.0 Changes

    ๐Ÿš€ This release contains a whole lot of new features, breaking changes as well as smaller fixes and improvements. The changelog shown here is likely not complete but gives a broad overview over the changes. For more details, please check the v5 milestone (https://github.com/rancher/k3d/milestone/27) or even the commit history. โšก๏ธ The docs have been updated, so you should also find the information you need there, with more to come!

    โšก๏ธ The demo repository has also been updated to work with k3d v5: https://github.com/iwilltry42/k3d-demo.

    Info: https://k3d.io is now versioned, so you can checkout different versions of the documentation by using the dropdown menu in the page title bar!

    Feedback welcome!

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ†• new syntax for nodefilters
      • dropped the usage of square brackets [] for indexing, as it caused problems with some shells trying to interpret them
      • new syntax: @identifier[:index][:opt] (see https://github.com/rancher/k3d/discussions/652)
      • example for a port-mapping: --port 8080:80@server:0:proxy
        • identifier = server, index = 0, opt = proxy
        • opt is an extra optional argument used for different purposes depending on the flag
        • currently, only the --port flag has opts, namely proxy and direct (see other breaking change)
    • 0๏ธโƒฃ port-mapping now go via the loadbalancer (serverlb) by default
      • the --port flag has the proxy opt (see new nodefilter syntax above) set by default
      • to leverage the old behavior of direct port-mappings, use the direct opt on the port flag
      • the nodefilter loadbalancer will now do the same as servers:*;agents:* (proxied via the loadbalancer)
    • flag --registries-create transformed from bool flag to string flag: let's you define the name and port-binding of the newly created registry, e.g. --registry-create myregistry.localhost:5001

    ๐Ÿ›  Fixes

    • cleaned up and properly sorted the sanitization of existing resources used to create new nodes (#638)

    ๐Ÿ”‹ Features & Enhancements

    • ๐Ÿ†• new command: k3d node edit to edit existing nodes (#615)
      • currently only allows k3d node edit NODE --port-add HOSTPORT:CONTAINERPORT for the serverlb/loadbalancer to add new ports
      • pkg: new NodeEdit function
    • ๐Ÿ†• new (hidden) command: k3d debug with some options for debugging k3d resources (#638)
      • e.g. k3d debug loadbalancer get-config to get the current loadbalancer configuration
    • loadbalancer / k3d-proxy (#638)
      • updated fork of confd to make usage of the file backend including a file watcher for auto-reloads
      • this also checks the config before applying it, so the lb doesn't crash on a faulty config
      • updating the loadbalancer writes the new config file and also checks if everything's going fine afterwards
      • some settings of the loadbalancer can now be configured using --lb-config-override, see docs at https://k3d.io/v5.0.0/design/defaults/#k3d-loadbalancer
    • helper images can now be set explicitly via environment variables: K3D_IMAGE_LOADBALANCER & K3D_IMAGE_TOOLS (#638)
    • ๐Ÿšš concurrently add new nodes to an existing cluster (remove some dumb code) (#640)
      • --wait is now the default for k3d node create
    • normalized flag usage for k3s and runtime (#598, @ejose19)
      • rename k3d cluster create --label to k3d cluster create --runtime-label (as it's labelling the node on runtime level, e.g. docker)
      • config option moved to options.runtime.labels
      • add k3d cluster create --k3s-node-label to add Kubernetes node labels via k3s flag (#584, @developer-guy, @ejose, @dentrax)
      • new config option options.k3s.nodeLabels
      • the same for k3d node create
    • ๐Ÿ‘Œ improved config file handling (#605)
      • new version v1alpha3
      • warning when using outdated version
      • validation dynamically based on provided config apiVersion
      • new default for k3d config init
      • new command k3d config migrate INPUT [OUTPUT] to migrate config files between versions
      • currently supported migration v1alpha2 -> v1alpha3
      • pkg: new Config interface type to support new generic FromViper config file parsing
    • ๐Ÿ”„ changed flags --k3s-server-arg & --k3s-agent-arg into --k3s-arg with nodefilter support (#605)
      • new config path options.k3s.extraArgs
    • config file: environment variables ($VAR, ${VAR} will be expanded unconditionally) (#643)
    • ๐Ÿณ docker context support (#601, @developer-guy & #674)
    • ๐Ÿ›  Feature flag using the environment variable K3D_FIX_DNS and setting it to a true value (e.g. export K3D_FIX_DNS=1) to forward DNS queries to your local machine, e.g. to use your local company DNS

    Misc

    • โœ… tests/e2e: timeouts everywhere to avoid killing DroneCI (#638)
    • ๐Ÿ”Š logs: really final output when creating/deleting nodes (so far, we were not outputting a final success message and the process was still doing stuff) (#640)
    • โœ… tests/e2e: add tests for v1alpha2 to v1alpha3 migration
    • ๐Ÿ“„ docs: use v1alpha3 config version
    • ๐Ÿ“„ docs: update general appearance and cleanup
  • v4.4.8

  • v4.4.7 Changes

    ๐Ÿ”‹ Features / Enhancements

    • ๐Ÿ†• new flag: k3d image import --keep-tools to not delete the tools node container after importing the image(s) (#672)
    • ๐Ÿ‘Œ improve image name handling when importing images (#653, @cimnine)

    ๐Ÿ›  Fixes

    • 0๏ธโƒฃ Use default gateway, when bridge network doesn't have it (#666, @kuritka)
    • Start an existing, but not running tools node to re-use it when importing an image (#672)

    Misc

    • deps: switching back to upstream viper including the StringArray fix
    • ๐Ÿ“„ docs: reference to "nolar/setup-k3d-k3s" step for GitHub Actions (#668, @nolar)
    • ๐Ÿ“„ docs: updated and simplified CUDA guide (#662, @vainkop) (#669)
  • v4.4.6 Changes

    ๐Ÿ›  Fixes

    • ๐Ÿ›  fix an issue where the cluster creation would stall waiting for the starting worker processes log message from the loadbalancer/serverlb
      • this was likely caused by a rounding issue when asking docker to get the container logs starting at a specific timestamp
      • we now drop subsecond precision for this to avoid the rounding issue, which was confirmed to work
      • see issues #592 & #621

    Misc

    • ๐ŸŒฒ to debug the issue mentioned above, we introduced a new environment variable K3D_LOG_NODE_WAIT_LOGS, which can be set to a list of node roles (e.g. K3D_LOG_NODE_WAIT_LOGS=loadbalancer,agent) to output the container logs that k3d inspects
  • v4.4.5 Changes

    ๐Ÿ›  Fixes

    • ๐Ÿณ overall: use the getDockerClient helper function everywhere to e.g. support docker via ssh everywhere
    • nodeCreate: do not copy meminfo/edac volume mounts from existing nodes, to avoid conflicts with generated mounts
    • ๐Ÿ kubeconfig: fix file handling on windows (#626 + #628, @dragonflylee)

    Misc

    • docs: add FAQ entry on nf_conntrack_max: permission denied issue from kube-proxy (#607)
    • ๐Ÿ“„ docs: cleanup, fix formatting, etc.
    • โšก๏ธ license: update to include 2021 in time range
    • ๐Ÿ“„ docs: link to AutoK3s (#614, @JacieChao)
    • โšก๏ธ tests/e2e: update the list of tested k3s versions