You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: keps/sig-cluster-lifecycle/kubeadm/20190722-Advanced-configurations-with-kubeadm-(Kustomize).md
+34-31Lines changed: 34 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,8 +17,8 @@ approvers:
17
17
- "@luxas"
18
18
editor: "@fabriziopandini"
19
19
creation-date: 2019-07-22
20
-
last-updated: 2019-09-02
21
-
status: implementable
20
+
last-updated: 2020-09-18
21
+
status: replaced
22
22
---
23
23
24
24
# Advanced configurations with kubeadm (Kustomize)
@@ -64,7 +64,10 @@ status: implementable
64
64
65
65
## Summary
66
66
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
68
71
a Kubernetes cluster with static pods customizations not supported by the Kubeadm component configuration.
69
72
70
73
## Motivation
@@ -75,7 +78,7 @@ Kubernetes cluster via the Kubeadm component configuration or the corresponding
75
78
More specifically the kubeadm component configuration provides an abstraction that allows to:
76
79
77
80
1. To define configurations settings at cluster level using the `ClusterConfiguration`
78
-
config object
81
+
config object
79
82
2. To define a limited set of configurations at the node level using the
80
83
`NodeRegistrationOptions` object or the `localAPIEndpoint` object
81
84
@@ -86,7 +89,7 @@ as of today. Some examples:
86
89
- It is not possible to add sidecars e.g. for authorization web-hooks serving components.
87
90
- It is not possible to set/alter timeouts for liveness probes in control plane components.
88
91
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
90
93
pod manifest generated by Kubeadm at node level - vs the kubeadm component configuration
91
94
that allows mostly cluster-wide configurations on control-plane/etcd args only -.
92
95
@@ -106,29 +109,29 @@ to some iterations. The goal of the current iteration is to:
106
109
during cluster lifecycle and more specifically for supporting the kubeadm upgrade workflow.
107
110
- To ensure the proper functioning of “advanced configurations” with kubeadm phases.
108
111
- 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
110
113
111
114
### Non-Goals
112
115
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.
115
118
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
117
120
advanced configuration options belongs to higher-level tools/users.
118
121
- To deprecate the Kubeadm component configuration because:
119
122
- The component configuration provides an abstraction well suited for most common use
120
123
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
122
125
is committed to support and monitor in the Kubernetes test grid.
123
126
- To define how to manage “advanced configurations” when kubeadm and [`etcdadm`](https://github.com/kubernetes-sigs/etcdadm)
124
127
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
126
129
(this is postponed until kubeadm - [`addons`](https://github.com/kubernetes-sigs/cluster-addons)
127
130
project integration).
128
131
129
132
## Proposal
130
133
131
-
### User Stories
134
+
### User Stories
132
135
133
136
#### Story 1
134
137
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
144
147
145
148
### Implementation Details
146
149
147
-
This proposal explores as a first option for implementing Kubeadm
150
+
This proposal explores as a first option for implementing Kubeadm
148
151
“advanced configurations“ the usage of Kustomize; please refer to
149
152
[Declarative application management in Kubernetes](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/declarative-application-management.md)
150
153
and [Kustomize KEP](https://github.com/kubernetes/enhancements/blob/master/keps/sig-cli/0008-kustomize.md)
@@ -169,7 +172,7 @@ This has some implications:
169
172
3. Kubeadm is responsible for coordinating the execution of Kustomize within the
170
173
init/join/upgrade workflows
171
174
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
173
176
proposal is going to assume that Kustomize patches for kubeadm are always defined
174
177
specifically for the node where kubeadm is going to be executed.
175
178
@@ -203,20 +206,20 @@ EOF
203
206
```
204
207
205
208
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.
208
211
209
212
If instead higher-level tools/users are providing a `kustomization.yaml` file, kubeadm will use it.
210
213
This scenario allows e.g. usage of `patchesJson6902`/other kustomize features.
211
214
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
213
216
> the static pod file manifest that should be kustomized by each phase.
214
217
215
218
2 - Run kubeadm passing the folder where kustomization patches exist, e.g.
0 commit comments