github k3d-io/k3d v3.0.0-beta.1

latest releases: v5.6.3, v5.6.2, v5.6.1...
pre-release4 years ago

🎉 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
  • 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:

Don't miss a new k3d release

NewReleases is sending notifications on new releases.