Skip to content

v3.0.0-beta.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@iwilltry42 iwilltry42 released this 11 May 10:40
e98f96b

πŸŽ‰ 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 :feelsgood: 😁

πŸ™ 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
  • 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
  • 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 for k3d 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
  • Docs: