-
Notifications
You must be signed in to change notification settings - Fork 473
/
types.go
338 lines (307 loc) · 14.5 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
// Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package config
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
componentbaseconfig "k8s.io/component-base/config"
"k8s.io/klog"
)
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ControllerManagerConfiguration defines the configuration for the Gardener controller manager.
type ControllerManagerConfiguration struct {
metav1.TypeMeta
// GardenClientConnection specifies the kubeconfig file and the client connection settings
// for the proxy server to use when communicating with the garden apiserver.
GardenClientConnection componentbaseconfig.ClientConnectionConfiguration
// Controllers defines the configuration of the controllers.
Controllers ControllerManagerControllerConfiguration
// LeaderElection defines the configuration of leader election client.
LeaderElection *componentbaseconfig.LeaderElectionConfiguration
// LogLevel is the level/severity for the logs. Must be one of [info,debug,error].
LogLevel string
// LogFormat is the output format for the logs. Must be one of [text,json].
LogFormat string
// KubernetesLogLevel is the log level used for Kubernetes' k8s.io/klog functions.
KubernetesLogLevel klog.Level
// Server defines the configuration of the HTTP server.
Server ServerConfiguration
// Debugging holds configuration for Debugging related features.
Debugging *componentbaseconfig.DebuggingConfiguration
// FeatureGates is a map of feature names to bools that enable or disable alpha/experimental
// features. This field modifies piecemeal the built-in default values from
// "github.com/gardener/gardener/pkg/controllermanager/features/features.go".
// Default: nil
FeatureGates map[string]bool
}
// ControllerManagerControllerConfiguration defines the configuration of the controllers.
type ControllerManagerControllerConfiguration struct {
// Bastion defines the configuration of the Bastion controller.
Bastion *BastionControllerConfiguration
// CloudProfile defines the configuration of the CloudProfile controller.
CloudProfile *CloudProfileControllerConfiguration
// ControllerDeployment defines the configuration of the ControllerDeployment controller.
ControllerDeployment *ControllerDeploymentControllerConfiguration
// ControllerRegistration defines the configuration of the ControllerRegistration controller.
ControllerRegistration *ControllerRegistrationControllerConfiguration
// Event defines the configuration of the Event controller. If unset, the event controller will be disabled.
Event *EventControllerConfiguration
// ExposureClass defines the configuration of the ExposureClass controller.
ExposureClass *ExposureClassControllerConfiguration
// Plant defines the configuration of the Plant controller.
Plant *PlantControllerConfiguration
// Project defines the configuration of the Project controller.
Project *ProjectControllerConfiguration
// Quota defines the configuration of the Quota controller.
Quota *QuotaControllerConfiguration
// SecretBinding defines the configuration of the SecretBinding controller.
SecretBinding *SecretBindingControllerConfiguration
// Seed defines the configuration of the Seed controller.
Seed *SeedControllerConfiguration
// ShootMaintenance defines the configuration of the ShootMaintenance controller.
ShootMaintenance ShootMaintenanceControllerConfiguration
// ShootQuota defines the configuration of the ShootQuota controller.
ShootQuota ShootQuotaControllerConfiguration
// ShootHibernation defines the configuration of the ShootHibernation controller.
ShootHibernation ShootHibernationControllerConfiguration
// ShootReference defines the configuration of the ShootReference controller. If unspecified, it is defaulted with `concurrentSyncs=5`.
ShootReference *ShootReferenceControllerConfiguration
// ShootRetry defines the configuration of the ShootRetry controller. If unspecified, it is defaulted with `concurrentSyncs=5`.
ShootRetry *ShootRetryControllerConfiguration
// ShootConditions defines the configuration of the ShootConditions controller. If unspecified, it is defaulted with `concurrentSyncs=5`.
ShootConditions *ShootConditionsControllerConfiguration
// ShootStatusLabel defines the configuration of the ShootStatusLabel controller.
ShootStatusLabel *ShootStatusLabelControllerConfiguration
// ManagedSeedSet defines the configuration of the ManagedSeedSet controller.
ManagedSeedSet *ManagedSeedSetControllerConfiguration
}
// BastionControllerConfiguration defines the configuration of the Bastion
// controller.
type BastionControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
// MaxLifetime is the maximum time a Bastion resource can exist before it is
// forcefully deleted (defaults to '24h').
MaxLifetime *metav1.Duration
}
// CloudProfileControllerConfiguration defines the configuration of the CloudProfile
// controller.
type CloudProfileControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
}
// ControllerDeploymentControllerConfiguration defines the configuration of the
// ControllerDeployment controller.
type ControllerDeploymentControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
}
// ControllerRegistrationControllerConfiguration defines the configuration of the
// ControllerRegistration controller.
type ControllerRegistrationControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
}
// PlantControllerConfiguration defines the configuration of the
// PlantControllerConfiguration controller.
type PlantControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
// SyncPeriod is the duration how often the existing resources are reconciled.
SyncPeriod metav1.Duration
}
// EventControllerConfiguration defines the configuration of the Event controller.
type EventControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
// TTLNonShootEvents is the time-to-live for all non-shoot related events (defaults to `1h`).
TTLNonShootEvents *metav1.Duration
}
// ExposureClassControllerConfiguration defines the configuration of the
// ExposureClass controller.
type ExposureClassControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
}
// ProjectControllerConfiguration defines the configuration of the
// Project controller.
type ProjectControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
// MinimumLifetimeDays is the number of days a `Project` may exist before it is being
// checked whether it is actively used or got stale.
MinimumLifetimeDays *int
// Quotas is the default configuration matching projects are set up with if a quota is not already specified.
Quotas []QuotaConfiguration
// StaleGracePeriodDays is the number of days a `Project` may be unused/stale before a
// timestamp for an auto deletion is computed.
StaleGracePeriodDays *int
// StaleExpirationTimeDays is the number of days after a `Project` that has been marked as
// 'stale'/'unused' and passed the 'stale grace period' will be considered for auto deletion.
StaleExpirationTimeDays *int
// StaleSyncPeriod is the duration how often the reconciliation loop for stale Projects is executed.
StaleSyncPeriod *metav1.Duration
}
// QuotaConfiguration defines quota configurations.
type QuotaConfiguration struct {
// Config is the quota specification used for the project set-up.
// Only v1.ResourceQuota resources are supported.
Config runtime.Object
// ProjectSelector is an optional setting to select the projects considered for quotas.
// Defaults to empty LabelSelector, which matches all projects.
ProjectSelector *metav1.LabelSelector
}
// QuotaControllerConfiguration defines the configuration of the Quota controller.
type QuotaControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
}
// SecretBindingControllerConfiguration defines the configuration of the
// SecretBinding controller.
type SecretBindingControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
}
// SeedControllerConfiguration defines the configuration of the
// Seed controller.
type SeedControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
// MonitorPeriod is the duration after the seed controller will mark the `GardenletReady`
// condition in `Seed` resources as `Unknown` in case the gardenlet did not send heartbeats.
MonitorPeriod *metav1.Duration
// ShootMonitorPeriod is the duration after the seed controller will mark Gardener's conditions
// in `Shoot` resources as `Unknown` in case the gardenlet of the responsible seed cluster did
// not send heartbeats.
ShootMonitorPeriod *metav1.Duration
// SyncPeriod is the duration how often the existing resources are reconciled.
SyncPeriod metav1.Duration
}
// ShootMaintenanceControllerConfiguration defines the configuration of the
// ShootMaintenance controller.
type ShootMaintenanceControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
// EnableShootControlPlaneRestarter configures whether adequate pods of the shoot control plane are restarted during maintenance.
EnableShootControlPlaneRestarter *bool
// EnableShootCoreAddonRestarter configures whether some core addons to be restarted during maintenance.
EnableShootCoreAddonRestarter *bool
}
// ShootQuotaControllerConfiguration defines the configuration of the
// ShootQuota controller.
type ShootQuotaControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
// SyncPeriod is the duration how often the existing resources are reconciled
// (how often Shoots referenced Quota is checked).
SyncPeriod metav1.Duration
}
// ShootHibernationControllerConfiguration defines the configuration of the
// ShootHibernation controller.
type ShootHibernationControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
}
// ShootReferenceControllerConfiguration defines the configuration of the
// ShootReference controller.
type ShootReferenceControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// shoots.
ConcurrentSyncs int
// ProtectAuditPolicyConfigMaps controls whether the shoot reference controller shall protect ConfigMaps containing
// audit policies and referenced in Shoots.
ProtectAuditPolicyConfigMaps *bool
}
// ShootRetryControllerConfiguration defines the configuration of the
// ShootRetry controller.
type ShootRetryControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
// RetryPeriod is the retry period for retrying failed Shoots that match certain criterion.
RetryPeriod *metav1.Duration
}
// ShootConditionsControllerConfiguration defines the configuration of the
// ShootConditions controller.
type ShootConditionsControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
}
// ShootStatusLabelControllerConfiguration defines the configuration of the
// ShootStatusLabel controller.
type ShootStatusLabelControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
}
// ManagedSeedSetControllerConfiguration defines the configuration of the
// ManagedSeedSet controller.
type ManagedSeedSetControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs int
// MaxShootRetries is the maximum number of times to retry failed shoots before giving up. Defaults to 3.
MaxShootRetries *int
// SyncPeriod is the duration how often the existing resources are reconciled.
SyncPeriod metav1.Duration
}
// ServerConfiguration contains details for the HTTP(S) servers.
type ServerConfiguration struct {
// HTTP is the configuration for the HTTP server.
HTTP Server
// HTTPS is the configuration for the HTTPS server.
HTTPS HTTPSServer
}
// Server contains information for HTTP(S) server configuration.
type Server struct {
// BindAddress is the IP address on which to listen for the specified port.
BindAddress string
// Port is the port on which to serve requests.
Port int
}
// HTTPSServer is the configuration for the HTTPSServer server.
type HTTPSServer struct {
// Server is the configuration for the bind address and the port.
Server
// TLSServer contains information about the TLS configuration for a HTTPS server.
TLS TLSServer
}
// TLSServer contains information about the TLS configuration for a HTTPS server.
type TLSServer struct {
// ServerCertPath is the path to the server certificate file.
ServerCertPath string
// ServerKeyPath is the path to the private key file.
ServerKeyPath string
}
const (
// ControllerManagerDefaultLockObjectNamespace is the default lock namespace for leader election.
ControllerManagerDefaultLockObjectNamespace = "garden"
// ControllerManagerDefaultLockObjectName is the default lock name for leader election.
ControllerManagerDefaultLockObjectName = "gardener-controller-manager-leader-election"
)