v3.0.0-beta.1
Pre-releaseπ Second 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.
π π Changes since v3.0.0-beta.0
k3d create cluster --no-lb
: new--no-lb
flag to disable the automatic deployment of the loadbalancer in front of the cluster's master nodes- This will result in
--api-port SOMEPORT
to be exposed on the first master node (i.e.master-0
) instead
- This will result in
iwilltry42/k3d-proxy:v0.0.2
: new version of the used nginx proxy, with improved health checks and new variables to update the loadbalancing configuration- masterlb: now hot-reloads configuration when a new master node is being added to the cluster
k3d create node
: now inherits more details from existing nodes in the cluster and does not fail anymore if no node with the target role exists in cluster- New nodefilter
loadbalancer
fork3d create cluster --port
(see example in docs)- Example:
k3d create cluster mycluster --port 8080:80@loadbalancer
will add a mapping of host port 8080 to loadbalancer port 80, which will proxy requests to port 80 on all master nodes
- Example:
- Docs:
- Updated admonitions and syntax highlighting
- New v1 vs v3 feature comparison: https://k3d.io/faq/v1vsv3-comparison/
- More info at the frontpage: https://k3d.io
- New section about multi-master setups: https://k3d.io/usage/multimaster/
- Updated section about exposing services with the new
loadbalancer
option: https://k3d.io/usage/guides/exposing_services/#1-via-ingress