Releases: k3d-io/k3d
v3.0.0-beta.0
🎉 First Beta of k3d v3
We've spent quite some days on completely re-writing k3d from scratch. New concepts, new architecture, new setup, new syntax, new everything.
Why v3? Because v2 is too mainstream.. 🙄 The real reason is that v3 is not just the next step in k3d's "evolution", but rather a complete rewrite, including new concepts and structures. At first it was planned to drop a v2.0.0 release in between v1.x and v3.0.0, but due to the changes over time, this is not going to happen anymore.
Also, "k3d v3" just sounds sooo good 😁
🙏 Testing
Please test this beta version thoroughly, but be aware that it includes some big breaking changes.
💻 Installation
Please checkout the installation instructions here: https://k3d.io/#installation
📄 Documentation & Website
We're now building a website from the docs/
folder using mkdocs
.
The final site files will be stored in the gh-pages
branch.
Check it out: https://k3d.io/
❗ Breaking Changes
-
By far the largest breaking change for you as a k3d user is the change of the CLI syntax.
- Old (k3d v1.x):
k3d create -n mycluster
- New:
k3d create cluster mycluster
- Please checkout
k3d help
or the command tree on the website as a reference
- Old (k3d v1.x):
-
Every cluster you create will now spawn at least 2 containers:
- 1 master node
- 1 load balancer
- The load balancer will be the access point to the Kubernetes API, so even for multi-master clusters, you only need to expose a single api port. The load balancer will then take care of proxying your request to the correct master node.
-
By default
get kubeconfig
will now modify your default kubeconfig, instead of creating a new file for each cluster
🆕 New Features
There are a lot of new features, like
- creating multi-master clusters (dqlite):
k3d create cluster --masters 3
- updating existing kubeconfigs:
k3d get kubeconfig mycluster --output /my/kubeconfig.yaml --update
- attaching new clusters to existing networks:
k3d create cluster --network this-other-network
- handling nodes independently from clusters:
k3d create/start/stop/delete node mynode
... many more ...
🔜 Missing Features
There are some features of v1.x that haven't made it into this release yet.
Probably the most prominent one is the registries feature (--enable-registry
) and related options.
Please checkout the feature comparison page on the website to see what's implemented, what's missing, what has been dropped and what is planned to land in v3.x.
v3.0.0-alpha.4
Development release
v3.0.0-alpha.3
Development release
v3.0.0-alpha.2
Development release, for testing only.
v1.7.0
Features/Enhancements
- Improve judgement and show an error if non-existent cluster-name was passed to delete/start/stop (#197, @sunny0826)
- New flag
--registry-volume
forcreate
to (re-)use an existing volume as storage backend for the managed registry (#199, @inercia) - New flag
--keep-registry-volume
fordelete
to not delete the volume used by the registry (#199, @inercia) - New flag
--enable-registry-cache
to make the managed registry act as a pull-through cache for DockerHub (#207, @inercia)
v1.6.0
Features/Enhancement
- New Flag
--registry-file FILE
forcreate
to point to a non-defaultregistries.yaml
file (#173, @inercia) - Do not print the /etc/hosts message if the registry name can be resolved (#177, @inercia)
- New flag
--prune
fordelete
to disconnect all containers from the cluster network before removing it (#178, @inercia) - Start existing registry when starting/creating a cluster
- improved error message when getting the kubeconfig fails
Build/Development
Docs
v3.0.0-alpha.1 -> Second Preview of k3d v3
Changes since alpha.0
- cleaned up the repo and structured some ideas
- implemented
--k3s-server-arg
and--k3s-agent-arg
flags - implemented
--wait
flag (waits for all masters to be up) - CLI: now rolling back if cluster creation fails
- Fixed/Improved Makefile and ported e2e tests from
master
v1.5.1
v1.5.0
Features
- New flag
k3d create --label key[=value][@node-specifier]
to assign docker labels to node containers (#163, @lionelnicolas) - New flags `k3d create --enable-registry [--registry-name NAME] [--registry-port PORT] to automatically create/attach a local insecure registry when creating a cluster (#161 + #169, @inercia)
- New flag
k3d get-kubeconfig --overwrite
to force an overwrite of the kubeconfig.yaml (fixes #154)
Development
Fixes
- return error if no image was specified for
import-image
- adapt to new tagging-scheme of k3s (and differences between GitHub releases and DockerHub tags)
- better default + help text for
--wait
flag (default is not0
=wait forever)
Docs
Thanks to all contributors!
Note: default k3s version in this release is rancher/k3s:v1.17.0-k3s.1
v3.0.0-alpha.0 -> First Preview of k3d v3.0.0
Preview k3d v3.0.0
In the beginning, k3d was a learning project and grew organically without a clear plan in mind.
This and the eagerness to implement all the requested features as fast as possible, resulted in quite a lot of spaghetti code which became a bit more difficult to maintain and extend.
k3d v3 aims to make a few things better:
- a better project structure with more clearly defined module/package boundaries
- cleaner/leaner code
- new CLI syntax to fit better into the Kubernetes ecosystem (syntax similar to e.g. kubectl)
- usable as a Go module from within other Go projects.
Additionally it offers some new or modified features compared to v1.x, even though not every single feature of v1.x found its way into v3 yet.
This is quite an early release, but I'd like to gather feedback rather earlier than later now.
So please test this release, play around with it, open issues and/or pull-requests and let me know, what you think of it via Slack :)