All Versions
30
Latest Version
Avg Release Cycle
-
Latest Release
-
Changelog History
Page 2
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 ak3d-tools
container for importingauto
is the new default to automatically detect which mode should work bestdirect
directly streams the images into the node containers without thek3d-tools
container
- New flag:
- โจ 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 viak3d cluster create --image <image>
- Docs: [docs/usage/commands/k3d_version_list.md](./docs/usage/commands/k3d_version_list.md)
- e.g. use
๐ 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 resolvinghost.docker.internal
(#872)- also now uses
host.docker.internal
in kubeconfig based on certain conditions (see PR)
- also now uses
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
- ๐ Improve image import performance (#826, @sbaier1)
-
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 belatest
orstable
, 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
: injecthost.k3d.internal
into/etc/hosts
similar to thecluster create
command (#843)
๐ Fix
--network host
: do not do any network magic (likehost.k3d.internal
injection, etc.) whenhost
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
andcoredns
(#845)
- clusterCreate:
-
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
- fix: didn't honor
- ๐ณ simplified way of getting a Docker API Client that works with Docker Contexts and
-
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)
- ๐ CoreDNS Configmap is now edited in the auto-deploy manifest on disk instead of relying on
-
v5.0.1 Changes
โจ Enhancement
- โ add
HostFromClusterNetwork
field toLocalRegistryHosting
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
- โ add
-
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 hasopt
s, namelyproxy
anddirect
(see other breaking change)
- identifier =
- dropped the usage of square brackets
- 0๏ธโฃ port-mapping now go via the loadbalancer (serverlb) by default
- the
--port
flag has theproxy
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 asservers:*;agents:*
(proxied via the loadbalancer)
- the
- 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
- currently only allows
- ๐ 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
- e.g.
- 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
- updated fork of
- 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 fork3d node create
- normalized flag usage for k3s and runtime (#598, @ejose19)
- rename
k3d cluster create --label
tok3d 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
- rename
- ๐ 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 genericFromViper
config file parsing
- new version
- ๐ changed flags
--k3s-server-arg
&--k3s-agent-arg
into--k3s-arg
with nodefilter support (#605)- new config path
options.k3s.extraArgs
- new config path
- 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
- ๐ new syntax for nodefilters
-
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)
- normalize image names internally, e.g. strip prefixes that docker adds, but that break the process
- see https://k3d.io/usage/commands/k3d_image_import/ for more info
๐ 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)
- ๐ new flag:
-
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
- ๐ fix an issue where the cluster creation would stall waiting for the
-
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