- Kubernetes: 1.20.4
- Kubelet: moved deprecated
--logging-format
flag to kubeletconfig - Kubelet: removed deprecated
--experimental-check-node-capabilities-before-mount
flag - ApiServer: added support for compressing rotated audit log files with
--audit-log-compress
- ApiServer: added
--etcd-healthcheck-timeout
flag - KubeletConfig: topologyManagerScope
- Service Account Token Volume Projection
- FeatureGates: added CustomCPUCFSQuotaPeriod for
cpuCFSQuotaPeriod
to work - FeatureGates: added APIServerIdentity
- FeatureGates: added CronJobControllerV2
- FeatureGates: added GracefulNodeShutdown
- FeatureGates: removed ConfigurableFSGroupPolicy
- FeatureGates: removed EndpointSliceProxying
- Kubernetes: 1.19.7
- Node Problem Detector: 0.8.6
- Weave Net: 2.8.1
- etcd: 3.4.14
- CNI/plugins: 0.9.1
- Node-problem-detector: change docker image url
- Kubernetes: 1.19.1
- Docker: 19.03.12
- FeatureGates: add GenericEphemeralVolume
- FeatureGates: add CSIStorageCapacity
- FeatureGates: add EphemeralContainers
- ControllerManager: add
--cluster-signing-duration
flag - Cgroups: default cgroup driver set to
systemd
- Logging: add
logging_format
to all components - ControllerManager: use separate flags for different CSR signers
- ControllerManager: garbagecollector controller flags
- ControllerManager: horizontalpodautoscaling controller flags
- Kubelet: set the maximum number of images to report in
Node.Status.Images
- Kubelet: integrate with the kernel memcg notification to determine if memory eviction thresholds are crossed rather than polling
- Kubelet: check the underlying node for required components (binaries, etc.) before performing the mount
- KubeProxy: add
--bind-address-hard-fail
flag to treat failure to bind to a port as fatal - KubeletConfig: Add support for disabling /logs endpoint in kubelet.
- Node Problem Detector: 0.8.4
- CNI/plugins: 0.8.7
- etcd: 3.4.13
- Kubernetes: 1.18.8
- kubelet: added
systemReserved
andkubeReserved
configuration options (only for cpu and memory now) - Weave Net: 2.7.0
- etcd: 3.4.12
- Weave: include
weave-npc
by default 🤷 - BUG: Fix etcd initial_cluster_string
- Weave: don't include
weave-npc
by default - Weave: define weave metrics port in DaemonSet to use it in Pod/ServiceMonitors
- Weave: define npd metrics port in DaemonSet to use it in Pod/ServiceMonitors
- Kubernetes: 1.18.6
- etcd: 3.4.10
- Update etcd cookbook to 6.0.0 version
- Kubernetes: 1.18.4
- Kubelet config: set default
cpuCFSQuotaPeriod
to 10ms. See kubernetes#67577 for details - Security: Bump rack from 2.1.2 to 2.2.3
- Kubernetes: addon_manager v9.1.1
- Node Problem Detector: 0.8.2
- Weave Net: 2.6.5
- CoreDNS: 1.7.0
- Kubernetes: 1.18.3
- etcd: 3.4.9
- Weave Net: 2.6.4
- Added new variable:
default['etcd']['interface']
. This feature allows to separate k8s and etcd listen interfaces
- Kubernetes: 1.18.1
- KubeProxy: use config file instead of thousands cmdline flags
- Docker CE: 19.03.8
- KubeProxy: added flag detect-local-mode
- KubeProxy: separate
metrics-bind-address
andmetrics-port
flags merged to single metrics-bind-address flag with datatypeipport
- FeatureGates: added ImmutableEphemeralVolumes
- FeatureGates: added ServiceAppProtocol
- FeatureGates: added ConfigurableFSGroupPolicy
- FeatureGates: added EndpointSliceProxying
- etcd: 3.4.7
- Kubernetes: 1.17.3
- Kubernetes: addon_manager v9.0.2
- Gemfile: actualization
- Kubernetes: 1.17.2
- SSL: fix subject generation
- SSL: rebuild profiles section to be more universal
- Controller manager: use service account credentials
- Controller manager: add bootstrapsigner and tokencleaner controllers
- Controller manager: add requestheader client ca file
- Apiserver: no more insecure ports
- SSL: etcd client keypair
- SSL: keypair generator should log cfssl command before apply
- SSL: each keypair has its own profile by default
- SSL: Certification authorities should have their own csr profile
- Recipes::Master: configuration files for scheduler and controller-manager
- SSL: scheduler and controller_manager should have their own keypairs
- CNI/plugins: 0.8.5
- CoreDNS: 1.6.7
-
actualize your
lib/tasks/ssl/config.yaml
withlib/tasks/ssl/config_example.yaml
-
add list of dns names and/or ip addresses to
.accounts.etcd_peer
and.accounts.etcd_server
sections -
set necessary environment variables, like:
export CHEF_SECRET_FILE=../../.chef/secret.pem export CHEF_DIR=../../.chef
-
regenerate all the things with
$ rake encrypt_all
-
move databag items to databags directory
$ mv ssl/{ca-cluster_signing,ca-requestheader,ca-etcd_server,ca-etcd_peer,admin,proxy,front_proxy_client,kubelet_client,service_account,etcd_server,etcd_peer,apiserver}_ssl.json \ ../../data_bags/kubernetes
-
upload new items to the chef server
$ for i in ca-cluster_signing ca-requestheader ca-etcd_server \ ca-etcd_peer admin proxy front_proxy_client kubelet_client \ service_account etcd_server etcd_peer apiserver do knife data bag from file kubernetes ${i}_ssl.json done
-
go to any node with etcd peer
-
set
ETCDCTL_API
environment variable equal to3
-
get list of all members with
$ etcdctl member list
we will use the following list as an example:8f3ebeda27935ffc, started, 10.135.130.52, http://10.135.130.52:2380, http://10.135.130.52:2379 9d2e8736041a9a71, started, 10.135.128.188, http://10.135.128.188:2380, http://10.135.128.188:2379
for now we're on host with peer
8f3ebeda27935ffc
so it will be last in line -
upgrade all members one by one with the last the one you're on the host with
$ etcdctl member update 9d2e8736041a9a71 --peer-urls="https://10.135.128.188:2380" --insecure-skip-tls-verify $ etcdctl member update 8f3ebeda27935ffc --peer-urls="https://10.135.130.52:2380" --insecure-skip-tls-verify
BE AWARE! Your apiservers will be unresponsive from that time till upgrade to finish
-
remove all keypairs retrieved by kubelets
$ knife ssh "roles:kubernetes_node" "sudo unlink /etc/kubernetes/ssl/kubelet-client-current.pem" $ knife ssh "roles:kubernetes_node" "sudo unlink /etc/kubernetes/ssl/kubelet-server-current.pem"
-
Etcd upgrade and restart all instances
$ knife ssh "roles:etcd" "sudo chef-client" $ knife ssh "roles:etcd" "sudo systemctl restart etcd"
-
Api servers upgrade and restart all instances
$ knife ssh "roles:kubernetes_master" "sudo chef-client" $ knife ssh "roles:kubernetes_master" "sudo systemctl restart kube-apiserver"
-
Workers upgrade and restart all instances
$ knife ssh "roles:kubernetes_node" "sudo chef-client" $ knife ssh "roles:kubernetes_node" "sudo systemctl restart kubelet"
- Kubernetes: 1.17.0
- FeatureGates: added ServiceTopology
- etcd: 3.4.3
- SSL: etcd CAs and keypairs
- SSL: separate cluster signing CA instead of one CA to rule them all
- SSL: kubelet_client keypair
- SSL: service account keypair
- SSL: requestheader CA and keypair
- SSL: keypair generation procedure should get CN and profile from keypair properties
- SSL: ability to generate and use multiple CAs
- SSL: added profile for long living keypairs
- CVE-2019-16782
- Remove deis from cookbook
- Kubernetes: 1.16.3
- podman: 1.6.3
- buildah: 1.11.6
- CoreDNS: 1.6.5
- CNI/plugins: 0.8.3
- Weave Net: 2.6.0
- Configure the Aggregation Layer
- skopeo: 0.1.40
- buildah: 1.11.4
- Kubernetes: 1.16.2
- FeatureGates:
VolumeSubpathEnvExpansion
is beta now and enabled by default - Kubelet:
--cni-cache-dir
option, which defaults to/var/lib/cni/cache
- podman: 1.6.2
- Kubernetes: 1.15.3
- podman: 1.5.1
- Etcd: 3.3.15
- CoreDNS: 1.6.2
- CNI/plugins: 0.8.2
- podman: 1.5.0
- buildah: 1.10.1
- Kubernetes: 1.15.1
- CoreDNS: 1.6.0
- DockerCE: pin cli version with daemon version
- Haproxy: 2.0
- Docker CE: 18.09.8
- podman: 1.4.4
- buildah: 1.9.2
- cri-o: 1.15.0
- Kubernetes: 1.15.0
- kubelet: remove flag
--allow_privileged
- Docker CE: 18.09.7
- cri-o: 1.14.5
- CoreDNS: 1.5.1
- skopeo: 0.1.37
- podman: 1.4.3
- buildah: 1.8.4
- cri-o: 1.14.4
- Etcd: 3.3.13
- Kubernetes: 1.14.2
- buildah: 1.8.2
- podman: 1.3.1
- skopeo: 0.1.36
- cri-o: 1.14.1
- Weave Net: 2.5.2
- KubeProxy: make bionic compatible
- CNI: binaries
cnitool
andnoop
are not needed on production hosts - Docker CE: 18.09.6
- docker version: dynamic codename
- make dns bionic compatible
- docker: remove ancient jpetazzo/nsenter
- CNI/plugins: 0.8.0
- Kubernetes: 1.14.1
- Docker CE: 18.09.5
- CoreDNS: 1.5.0
- buildah: 1.7.3
- cri-o: 1.13.4
- podman: 1.2.0
- skopeo: 0.1.35
- runc: 1.0-rc7
- podman: 1.1.1
- CoreDNS: 1.4.0
- CoreDNS: change deprecated proxy plugin to forward
- ApiServer <=> Kubelet communications:
--kubelet-preferred-address-types
apiserver key now explicitly points toInternalIP,ExternalIP,InternalDNS,ExternalDNS,Hostname
; this way you are free to use hostname (or any other name) for your kubelets, just make sure your kubelet has proper NodeAddressType:InternalIP
orExternalIP
and so on. You can check it like this:$ kubectl get no <node> -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}'
- CNI/plugins: 0.7.5
- Kubernetes: 1.13.5
- Docker CE: 18.06.2 Fixing CVE-2019-5736
- Recipes::Docker: set default action for package
docker-ce
to:upgrade
- Kubernetes: 1.13.4
- Kube-proxy: add
metrics-port
andmetrics-bind-address
to cmd flags - cri-o: 1.13.1
- buildah: 1.7.1
- Etcd: 3.3.12
- Weave Net: 2.5.1
- CoreDNS: 1.3.1
- buildah: 1.6
- Addon manager: 9.0
- Gemfile.lock: fix CVE-2018-14404
- Haproxy: 1.9
- Kubernetes: 1.13.3
- WIP: Audit webhook initial implementation
- runc: 1.0.0-rc6
- runsc: 2018-12-14
- skopeo: 0.1.34
- podman: 1.0.0
- CoreDNS: 1.3.0
- Etcd: 3.3.11
- Kubernetes: 1.13.2
- fix file modes arguments and some more minor syntax issues
- kubelet: fixed warning "failed to get imageFs info: no imagefs label for configured runtime"
- docker version set to 18.06 accordingly to external dependencies
- Kubernetes: 1.13.1
- Apiserver: encryption provider config is no more experimental
- Scheduler: listen on secure port cluster-wide
- Controller manager: listen on secure port cluster-wide
- Apiserver: etcd2 support removed, so no more remark about application/json media type
- Kubernetes: 1.13.0
- CoreDNS: security context
- CoreDNS: added plugins: loop, reload, loadbalance
- FeatureGates: added NodeLease
- Controller manager: remove deprecated args
- podman: 0.12.1
- cri-o: 1.13.0
- FeatureGates: added TTLAfterFinished
- Weave: preserve the client source IP address
- Weave: don't mount cni-conf directory when portmap is used
- Weave Net: 2.5.0
- Addon manager: 8.9
- Apiserver: added PodNodeSelector to the list of admission controllers
- cri-o: 1.12.1
- skopeo: 0.1.32
- podman: 0.11.1
- Gemfile.lock: fix CVE-2018-16471 and CVE-2018-16470
- Kubernetes: 1.12.2
- cri-tools: 1.12.0
- buildah: 1.4
- CoreDNS: 1.2.5
- Etcd: 3.3.10
- Etcd cookbook: 5.6.0
- podman: 0.10.1.3
- Weave: Morph the livenessProbe into readinessProbe
- cri-o: 1.12.0
- Audit Policy apiVersion set to
v1
- Gemfile: chef updated to 14.6.47
- Reworked API audit options
- Kubelet: client certificate rotation is now enabled by default
- Kubelet: removed
cadvisor_port
- Feature gates: added VolumeSubpathEnvExpansion
- Apiserver: only etcd3 is available as a storage backend
- Admission plugins: added Priority
- Kubernetes: 1.12.0
- cri-o: 1.11.6
- podman: 0.9.3.1
- cri-tools: 1.11.1
- cri-o: 1.11.5
- podman: 0.9.3
- CoreDNS: Corefile template was update with an option to enable hosts plugin for inline host entries
- Gemfile: update ffi due to CVE-2018-1000201
- weave-net: 2.4.1
- podman: 0.9.2
- cri-o: 1.11.4
- Docker: repin daemon version. Fixes #14
- Docker: fix for chef >= 13
- ApiServer: added
--requestheader-client-ca-file
cmdline flag - ControllerManager: explicit HPA settings
- New addon: node problem detector
Disabled by default, use
node['kubernetes']['addons']['npd']['enabled']
to activate - Kubernetes: 1.11.2
- cri-o: 1.11.2
- buildah: 1.3
- podman: 0.8.3
- skopeo: 0.1.31
- Etcd: 3.3.9
- Weave: 2.4.0
- podman upgraded to 0.7.2
- Kubernetes: 1.11.1
- Etcd systemd unit default name set to
etcd
instead ofetcd-#{node['name']}
- CoreDNS: 1.2.0
- kube-proxy: explicitly set cluster-cidr
- kube-proxy: simplify proxy-mode configuration
- Make kubernetes services network route ipvs compatible
- Packages: install
ipvsadm
andipset
for IPVS proxy mode - kube-proxy: split attributes to global and ipvs-related
- sdn canal: calico updated to 3.1
- CNI plugins: bump to 0.7.1
- podman: 0.7.1
- cri-o: 1.11.1
- Kubelet: add ability to use custom runtimes
kubeletconfig
: check forRotateKubeletServerCertificate
feature gate before enabling server certificates autorotation- Docker moved to separate recipe
- install CRIO and corresponding binaries
- Buildah installation recipe
- Explicitly install aufs-tools if cri-o uses aufs as storage
kubeletconfig
: explicitly set cgroup driver
- Kubernetes: 1.11.0
- Feature gates: remove already enabled by default
MountPropagation
andVolumeScheduling
recipes/proxy
: typo fix inLimitNOFILE
systemd-unit instructionkubeletconfig
: fix unexpected camelcase in keyskubeletconfig
: explicitly add TLS-settings
- Delete kubernetes dashboard from cookbook
- Kubernetes: 1.11.0-rc.3
- KubeDNS: 1.14.10
- Get rid of upstart (and ubuntu-trusty) support
- Return
create
action for etcd recipe - Add checksum validation for etcd tarball
- Kubernetes updated to 1.10.5
- [breaking] Upgrade docker from
docker-engine-1.12
todocker-ce-17.03
- Etcd updated to 3.3.8
- CoreDNS update to 1.1.4
- Add ReadOnlyPort for kubelet. Need for heapster auth.
- Update versioning procedure. From now on major and minor parts coincedes with Kubernetes major and minor, and patch version reflects the current release number
- Kubernetes updated to 1.10.3
- CoreDNS updated to 1.1.3
- Etcd updated to 3.3.5
- Upgrade etcd cookbook dependency from 4.1 to 5.5
- Add chef-client 14 support
- Weave: 2.3.0
- Weave: split
--status-addr
into separate--status-addr
and--metrics-addr
args - Weave: make status port and metrics port as attributes
- Etcd: 3.3.3
- Kubernetes 1.10.1
- Use --config for kubelet
- Change featureGates struct from string to hash
- Update helpers.rb for backward compatibility with service options
- Reanimate inspec with testkitchen.
- Fix docker built-in variables into recipe
- Move kube-proxy config args from recipe to k8s_proxy.rb
- Add sort for master nodes in haproxy config
- Bump cniVersion from 0.3.0 to 0.3.1
- Add haproxy reload by default
- Bump to 1.10.0 kubernetes version
- Change packages array to hash
- Move cni plugins symlinks to attributes for enable/disable actions
- Move kubelet args to attributes/kubelet.rb from recipe
- Move apiserver args to attributes/k8s_apiserver.rb from recipe
- Move scheduler args to attributes/scheduler.rb from recipe
- Move controller_manager args to attributes/k8s_controller.rb from recipe
- Add custom docker installation. Default
true
. But if you have another docker installation you can skip built-in. - Move packages array from
packages.rb
to default attrs file - Update README.md for new users.
- Bunch of runit services replaced by manifests
- Kubernetes updated to 1.2.5
- Node down detection moved from a 5m40s to 46s (via https://fatalfailure.wordpress.com/2016/06/10/improving-kubernetes-reliability-quicker-detection-of-a-node-down/)
- Weave scope to visualize container network
Initial release of kubernetes