Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sig-cluster-lifecycle: update the kubeadm config KEP for 1.22 #2627

Merged
merged 1 commit into from
Apr 19, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 30 additions & 7 deletions keps/sig-cluster-lifecycle/kubeadm/970-kubeadm-config/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# kubeadm Config file graduation (v1beta2)
# kubeadm Config file graduation

## Table of Contents

Expand All @@ -16,13 +16,16 @@
- [Add config options for new and existing kubeadm features](#add-config-options-for-new-and-existing-kubeadm-features)
- [v1beta3](#v1beta3)
- [Make kubeadm's config format more CRD and third party friendly](#make-kubeadms-config-format-more-crd-and-third-party-friendly)
- [Opt-in AddOns](#opt-in-addons)
- [Allow skipping phases via config](#allow-skipping-phases-via-config)
- [Remove deprecated structures and fields](#remove-deprecated-structures-and-fields)
- [Other changes](#other-changes)
- [Risks and Mitigations](#risks-and-mitigations)
- [Graduation Criteria](#graduation-criteria)
- [Implementation History](#implementation-history)
- [v1alpha3 released with Kubernetes 1.12](#v1alpha3-released-with-kubernetes-112)
- [v1beta1 released with Kubernetes 1.13](#v1beta1-released-with-kubernetes-113)
- [v1beta2 released with Kubernetes 1.15](#v1beta2-released-with-kubernetes-115)
- [v1beta3 released with Kubernetes 1.22](#v1beta3-released-with-kubernetes-122)
- [Drawbacks](#drawbacks)
<!-- /toc -->

Expand Down Expand Up @@ -176,7 +179,7 @@ etcd configuration in the `v1alpha2` version.

### v1beta2

This section outlines changes to be introduced in a second iteration of the kubeadm config format.
This section outlines changes to be introduced in a second Beta iteration of the kubeadm configuration.

#### Add config options for new and existing kubeadm features

Expand All @@ -195,7 +198,10 @@ limited use cases.

### v1beta3

This section outlines changes to be introduced in the third iteration of the kubeadm config format.
This section outlines changes to be introduced in a third Beta iteration of the kubeadm configuration.

The version introduces no drastic changes since v1beta2. It performs cleanup of deprecated features
and introduces features that have seen high demand.

#### Make kubeadm's config format more CRD and third party friendly

Expand All @@ -204,10 +210,21 @@ This includes:
- Adding metadata fields to InitConfiguration, JoinConfiguration and ClusterConfiguration.
- Marking omitempty fields as `+optional`.

#### Opt-in AddOns
#### Allow skipping phases via config

In the past few releases users have been increasingly using the kubeadm phases feature to skip the
installation of the bundled kube-proxy and CoreDNS addon. From the configuration API this will be
done with a `skipPhases` field (string slice) that is part of InitConfiguration and JoinConfiguration.

#### Remove deprecated structures and fields

- `ClusterStatus`: deprecated and replaced by annotating the kube-apiserver Pod.
- `ClusterConfiguration.dns.type`: no longer needed since kubeadm only supports CoreDNS.
- `ClusterConfiguration.useHyperkubeImage`: hyperkube was previously deprecated.

In the past few releases users have been increasingly using the kubeadm phases feature to skip the installation of the Kube-Proxy and CoreDNS/Kube-DNS addons. This, however, causes some problems when joining new nodes to the cluster or upgrading existing ones, as there are no means of persisting the user wish to not install some of the addons.
This, combined with recent developments in the Cluster AddOns sub-project of SIG Cluster Lifecycle, led us to believe, that the best way to tackle the problem at hand is to allow for users to specify precisely which addons should be installed by kubeadm and persist the choice in the ClusterConfiguration.
#### Other changes

Lower priority changes will be a best effort.

### Risks and Mitigations

Expand Down Expand Up @@ -265,6 +282,12 @@ This risk will be mitigated by implementing the change according to following ap
- Added new fields for specifying the encryption key for certificates and for specifying which pre-flight errors to be ignored.
- **omitempty** has a wider use, but is removed from the *taints* field of NodeRegistrationOptions.

### v1beta3 released with Kubernetes 1.22

- Details for the changes in v1beta3 since v1beta2 can be seen in the
[changelog](https://pkg.go.dev/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3).
- v1beta1 removed.

## Drawbacks

The differences from the current kubeadm config are relevant and kubeadm users can get confused.
Expand Down
10 changes: 5 additions & 5 deletions keps/sig-cluster-lifecycle/kubeadm/970-kubeadm-config/kep.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
title: Kubeadm config file graduation (v1beta2)
title: Kubeadm config file graduation
kep-number: 970
authors:
- "@fabriziopandini"
- "@luxas"
- "@rosti"
- "@neolit123"
owning-sig: sig-cluster-lifecycle
reviewers:
- "@chuckha"
Expand All @@ -13,9 +15,7 @@ approvers:
- "@timothysc"
- "@fabriziopandini"
- "@neolit123"
editor: "@fabriziopandini"
editor: "@neolit123"
creation-date: 2018-08-01
last-updated: 2019-04-29
last-updated: 2021-04-15
status: implementable
see-also:
- KEP 0008