Skip to content

Commit 6200154

Browse files
authored
Merge pull request kubernetes#1991 from neolit123/1.20-replace-kubeadm-kustomize-with-patches
keps/sig-cluster-lifecycle/kubeadm: mark the kustomization KEP as replaced
2 parents 9dcb6d3 + 4c1c3c8 commit 6200154

File tree

1 file changed

+34
-31
lines changed

1 file changed

+34
-31
lines changed

keps/sig-cluster-lifecycle/kubeadm/20190722-Advanced-configurations-with-kubeadm-(Kustomize).md

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ approvers:
1717
- "@luxas"
1818
editor: "@fabriziopandini"
1919
creation-date: 2019-07-22
20-
last-updated: 2019-09-02
21-
status: implementable
20+
last-updated: 2020-09-18
21+
status: replaced
2222
---
2323

2424
# Advanced configurations with kubeadm (Kustomize)
@@ -64,7 +64,10 @@ status: implementable
6464

6565
## Summary
6666

67-
This KEP is aimed at defining a new kubeadm feature that will allow users to bootstrap
67+
**Note:** this KEP was replaced by the KEP tracked in [#1739](https://github.com/kubernetes/enhancements/issues/1739)
68+
which uses raw patches for customization.
69+
70+
This KEP is aimed at defining a new kubeadm feature that will allow users to bootstrap
6871
a Kubernetes cluster with static pods customizations not supported by the Kubeadm component configuration.
6972

7073
## Motivation
@@ -75,7 +78,7 @@ Kubernetes cluster via the Kubeadm component configuration or the corresponding
7578
More specifically the kubeadm component configuration provides an abstraction that allows to:
7679

7780
1. To define configurations settings at cluster level using the `ClusterConfiguration`
78-
config object
81+
config object
7982
2. To define a limited set of configurations at the node level using the
8083
`NodeRegistrationOptions` object or the `localAPIEndpoint` object
8184

@@ -86,7 +89,7 @@ as of today. Some examples:
8689
- It is not possible to add sidecars e.g. for authorization web-hooks serving components.
8790
- It is not possible to set/alter timeouts for liveness probes in control plane components.
8891

89-
This KEP aims to introduce a new feature that will eneable users full control of static
92+
This KEP aims to introduce a new feature that will eneable users full control of static
9093
pod manifest generated by Kubeadm at node level - vs the kubeadm component configuration
9194
that allows mostly cluster-wide configurations on control-plane/etcd args only -.
9295

@@ -106,29 +109,29 @@ to some iterations. The goal of the current iteration is to:
106109
during cluster lifecycle and more specifically for supporting the kubeadm upgrade workflow.
107110
- To ensure the proper functioning of “advanced configurations” with kubeadm phases.
108111
- To clarify what is in the scope of kubeadm and what instead should be the responsibility
109-
of the users/of higher-level tools in the stack like e.g. cluster API
112+
of the users/of higher-level tools in the stack like e.g. cluster API
110113

111114
### Non-Goals
112115

113-
- To provide any validation or guarantee about the security, conformance,
114-
consistency, of “advanced configurations” for control-plane/etcd settings.
116+
- To provide any validation or guarantee about the security, conformance,
117+
consistency, of “advanced configurations” for control-plane/etcd settings.
115118
As it is already for `extraArgs` fields in the kubeadm component configuration or in the
116-
Kubelet/KubeProxy component config, the responsibility of proper usage of those
119+
Kubelet/KubeProxy component config, the responsibility of proper usage of those
117120
advanced configuration options belongs to higher-level tools/users.
118121
- To deprecate the Kubeadm component configuration because:
119122
- The component configuration provides an abstraction well suited for most common use
120123
cases (that can be addressed with cluster-wide configurations on control-plane/etcd command line args only)
121-
- The component configuration implicitly defines the main cluster variants the kubeadm team
124+
- The component configuration implicitly defines the main cluster variants the kubeadm team
122125
is committed to support and monitor in the Kubernetes test grid.
123126
- To define how to manage “advanced configurations” when kubeadm and [`etcdadm`](https://github.com/kubernetes-sigs/etcdadm)
124127
project will integrate. This will be defined in following iterations of this KEP.
125-
- To define how to manage “advanced configurations” for the addons
128+
- To define how to manage “advanced configurations” for the addons
126129
(this is postponed until kubeadm - [`addons`](https://github.com/kubernetes-sigs/cluster-addons)
127130
project integration).
128131

129132
## Proposal
130133

131-
### User Stories
134+
### User Stories
132135

133136
#### Story 1
134137
As a cluster administrator, I want to add a sidecar to the kube-apiserver pod for running an
@@ -144,7 +147,7 @@ As a cluster administrator, I want to upgrade my cluster preserving all the
144147

145148
### Implementation Details
146149

147-
This proposal explores as a first option for implementing Kubeadm
150+
This proposal explores as a first option for implementing Kubeadm
148151
“advanced configurations“ the usage of Kustomize; please refer to
149152
[Declarative application management in Kubernetes](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/declarative-application-management.md)
150153
and [Kustomize KEP](https://github.com/kubernetes/enhancements/blob/master/keps/sig-cli/0008-kustomize.md)
@@ -169,7 +172,7 @@ This has some implications:
169172
3. Kubeadm is responsible for coordinating the execution of Kustomize within the
170173
init/join/upgrade workflows
171174

172-
Additionally, in order to simplify the first implementation of this KEP, this
175+
Additionally, in order to simplify the first implementation of this KEP, this
173176
proposal is going to assume that Kustomize patches for kubeadm are always defined
174177
specifically for the node where kubeadm is going to be executed.
175178

@@ -203,20 +206,20 @@ EOF
203206
```
204207

205208
In case higher-level tools/users are providing only strategic merge patches, like in the example above,
206-
it is not requested to take care of defining a `kustomization.yaml` file. In case the `kustomization.yaml`
207-
is missing kubeadm will create it on the fly using all the patches in the folder.
209+
it is not requested to take care of defining a `kustomization.yaml` file. In case the `kustomization.yaml`
210+
is missing kubeadm will create it on the fly using all the patches in the folder.
208211

209212
If instead higher-level tools/users are providing a `kustomization.yaml` file, kubeadm will use it.
210213
This scenario allows e.g. usage of `patchesJson6902`/other kustomize features.
211214

212-
> In case a `kustomization.yaml` file exist, kubeadm ignores the `resource` value and replaces it with
215+
> In case a `kustomization.yaml` file exist, kubeadm ignores the `resource` value and replaces it with
213216
> the static pod file manifest that should be kustomized by each phase.
214217
215218
2 - Run kubeadm passing the folder where kustomization patches exist, e.g.
216219

217220
```
218221
kubeadm init --experimental-kustomize kubeadm-patches/
219-
or
222+
or
220223
kubeadm init phase control-plane ... --experimental-kustomize kubeadm-patches/
221224
```
222225
or
@@ -232,7 +235,7 @@ kubeadm upgrade apply --experimental-kustomize kubeadm-patches/
232235
or
233236
```
234237
kubeadm upgrade node --experimental-kustomize kubeadm-patches/
235-
or
238+
or
236239
kubeadm upgrade node phase control-plane --experimental-kustomize kubeadm-patches/
237240
```
238241

@@ -242,9 +245,9 @@ when beta is reached. `-k` abbreviation can be reserved or even fully connected.
242245
#### Providing and storing Kustomize patches to kubeadm
243246

244247
Before kubeadm init, Kustomize patches should be eventually provided to kubeadm
245-
by higher-level tools/users; patches should be defined in a custom location
248+
by higher-level tools/users; patches should be defined in a custom location
246249
on the machine file system and this location could be passed to
247-
kubeadm init/join with a CLI flag.
250+
kubeadm init/join with a CLI flag.
248251

249252
In order to simplify the first implementation of this KEP, this proposal is assuming
250253
to use the same approach also for kubeadm join; this point could be reconsidered
@@ -258,7 +261,7 @@ for allowing kubeadm to preserve changes during the kubeadm upgrade workflow.
258261

259262
In order to simplify the first implementation of this KEP, this proposal is assuming
260263
that Kustomize patches will remain stored in the custom location on the machine file system
261-
for the necessary time, and that this location will be passed to kubeadm upgrade with a CLI
264+
for the necessary time, and that this location will be passed to kubeadm upgrade with a CLI
262265
flag; this point could be reconsidered in the future, by e.g. defining a method for
263266
allowing higher-level tools/users to define Kustomize patches using a new CRD.
264267

@@ -272,14 +275,14 @@ can create confusion in the users.
272275
kubeadm maintainers should take care of making differences cristal clear in release notes
273276
and feature announcement:
274277

275-
- The component configuration provides an abstraction well suited for most common use cases
278+
- The component configuration provides an abstraction well suited for most common use cases
276279
that can be addressed with cluster-wide configurations on control-plane/etcd command line args only,
277-
while “advanced configurations”/kustomize allows users full control of static
280+
while “advanced configurations”/kustomize allows users full control of static
278281
pod manifest generated by Kubeadm at node level.
279282
- The component configuration implicitly defines the main cluster variants the kubeadm team is
280283
committed to support and monitor in the Kubernetes test grid, while instead higher-level
281-
tools/user are responsible for the security, conformance, consistency, of
282-
“advanced configurations” for control-plane/etcd static pod manifests.
284+
tools/user are responsible for the security, conformance, consistency, of
285+
“advanced configurations” for control-plane/etcd static pod manifests.
283286

284287
_Misleading expectations on the level of flexibility_
285288
In order to provide guarantee about kubeadm respecting “advanced configurations” during
@@ -288,8 +291,8 @@ around _what_ can be customized and _how_.
288291

289292
Even if the proposed solution is based on the user feedback/issues, the kubeadm maintainers
290293
want to be sure the implementation is providing the expected level of flexibility and, in
291-
order to ensure that, we will wait for at least one K8s release cycle for the users to provide
292-
feedback before moving forward in graduating the feature to beta.
294+
order to ensure that, we will wait for at least one K8s release cycle for the users to provide
295+
feedback before moving forward in graduating the feature to beta.
293296

294297
Similarly, the kubeadm maintainers should work with [`etcdadm`](https://github.com/kubernetes-sigs/etcdadm)
295298
project and [`addons`](https://github.com/kubernetes-sigs/cluster-addons) project
@@ -300,7 +303,7 @@ Static pod manifests are managed by kubeadm, while “advanced configurations”
300303
will be managed by users.
301304

302305
It might happen that a static pod manifest during upgrades is changed by kubeadm in a way that
303-
some patches will not cleanly apply anymore.
306+
some patches will not cleanly apply anymore.
304307

305308
The kubeadm maintainers will work on release notes to make potential breaking changes more visible;
306309
additionally, upgrade instructions will be updated adding the recommendation to --dry-run and check
@@ -320,8 +323,8 @@ consistent state in case of errors.
320323
Add at least one periodic E2E test job exercising “advanced configurations” during init,
321324
join and upgrades.
322325

323-
Please note that, in accordance with the split of responsibilities defined in the previous paragraphs,
324-
the new E2E test will focus _only_ on the mechanics of applying “advanced configurations”/kustomize
326+
Please note that, in accordance with the split of responsibilities defined in the previous paragraphs,
327+
the new E2E test will focus _only_ on the mechanics of applying “advanced configurations”/kustomize
325328
patches, not on the possible combination of patches and nor on the security, conformance, consistency,
326329
of the resulting Kubernetes cluster.
327330

0 commit comments

Comments
 (0)