Skip to content

v0.6.0

Compare
Choose a tag to compare
@BenTheElder BenTheElder released this 18 Nov 17:33

v0.6.0 brings major internal rework and some important breaking changes that we hope will make kind easier to use.

It is also worth noting that kind is now used for blocking Kubernetes pull request testing, in addition to already being used for release signal. This is a major milestone for the project.

Breaking Changes

  • KUBECONFIG is now automatically merged in the same style as kops, minikube, GKE, etc. Please see #1060 for a detailed migration guide.

    • You do not need to and should not do export KUBECONFIG="$(kind get kubeconfig-path)". This command is deprecated and will be removed in a future release.
    • kind will set your current-context when creating a cluster
    • You can configure using a different file by either setting the KUBECONFIG environment variable before creating a cluster, or by setting the --kubeconfig flag on cluster creation
  • Config files are now parsed in strict mode, which should help catch invalid config files

  • kind is moving all external (labels, config) namespaced objects into x-k8s.io to comply with the guidelines for API review. For this release kind will support and use both labels without breaking anything, however in a future release we will only use the new x-k8s.io labels. This note is primarily for @danderson 🙃

  • The default node image is a Kubernetes v1.16.3 image kindest/node:v1.16.3@sha256:bced4bc71380b59873ea3917afe9fb35b00e174d22f50c7cab9188eac2b0fb88

  • Node images built with kind v0.6.0 have many improvements and require kind v0.5.0+, images built with v0.4.0 / v0.3.0 should continue to work with v0.6.0 however.

New Features

  • There is a new kind.x-k8s.io/v1alpha4 config format.
    • Support for per-node kubeadm config patches
    • Support for patching the kind nodes's containerd config, which will be used in an upcoming new guide for local registries
  • Automatic KUBECONFIG export and merge to simplify using kind.
    • kind clusters will always have a kind- prefix in kubeconfig file entries and now can be identified by this.
  • kind export kubeconfig to re-export credentials in the way kind create cluster now does.
  • Significant logging rework
    • -q / --quiet flag to silence status messages / error output
    • Logging with -v 1 / --verbosity 1 or greater will result in detailed error output including stacktraces and command output
  • Colored terminal output and slightly better spinners.
    • You can disable both by setting the environment variable TERM to dumb
  • Enhanced kind version output with more details
    • Builds with make build or make install include git commit
    • The simplified version can be obtained with kind version -q
  • Mounts in extraMounts may have relative paths on the host, resolved against the working directory of kind
  • kubeadm config patches no longer need to include metadata.name and may optionally exclude the apiVersion, allowing more flexible matching of patches to config objects
    • The kind binary is now 75% smaller as a result of eliminating dependencies and writing a patch runtime specific to our needs.
  • kindnetd now has improved logging with klog
  • A random salutation is printed at the end of kind create cluster 🙃
  • It should be possible to install kind via chocolatey with choco install kind. We're also hoping to get a homebrew package shortly!

New Node have been Images for kind v0.5.0, please use these exact images (IE like kindest/node:v1.16.3@sha256:bced4bc71380b59873ea3917afe9fb35b00e174d22f50c7cab9188eac2b0fb88) or build your own as we may need to change the image format again in the future 😅

  • v1.16.3 sha256:bced4bc71380b59873ea3917afe9fb35b00e174d22f50c7cab9188eac2b0fb88
  • v1.15.6 sha256:1c8ceac6e6b48ea74cecae732e6ef108bc7864d8eca8d211d6efb58d6566c40a
  • v1.14.9 sha256:00fb7d424076ed07c157eedaa3dd36bc478384c6d7635c5755746f151359320f
  • v1.13.12 sha256:ad1dd06aca2b85601f882ba1df4fdc03d5a57b304652d0e81476580310ba6289
  • v1.12.10 sha256:e93e70143f22856bd652f03da880bfc70902b736750f0a68e5e66d70de236e40
  • v1.11.10 sha256:44e1023d3a42281c69c255958e09264b5ac787c20a7b95caf2d23f8d8f3746f2

The new node images for recent Kubernetes versions should be > 200 MB smaller thanks to a KEP we implemented upstream to allow building without most of the in-tree cloud provider code.

https://github.com/kubernetes/enhancements/blob/master/keps/sig-cloud-provider/20190729-building-without-in-tree-providers.md

Fixes

  • Various kind CLI output was corrected to be to stdout or stderr where appropriate
  • We have robust new containerd nightly build infrastructure and are shipping the lastest upstream containerd 1.3 + backports in all node images
  • Removed unnecessary dependencies and upgraded all dependencies
  • Fixed building Kubernetes master branch with Bazel
  • Upgraded to build with Go 1.13.4
  • Upgraded all dependencies
  • kindnetd now mounts the iptables xtables lock to ensure coordination with kube-proxy
  • kind will attempt to recreate the original cgroup environment inside the node, this eliminates some error output from kubelet
  • fixed a race condition in command execution, eliminating a source of flakiness of some kind commands
  • kind get kubeconfig does not depend on an existing config file on the host
  • the product_uuid is now faked to be different per-node
  • switched to GA storageclass annotation on the default storage class
    • removed unnecessary addon manager annotation
  • kindnetd is now more robust with backoff on failures
  • kind is now relatively decoupled from docker internally for node management
  • deflaked our cross build and fixed running it on macOS

Contributors

Thanks again to everyone who contributed to this release! ❤️

Users whose commits are in this release (alphabetically by user name)