/
types.go
341 lines (311 loc) · 15.2 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
339
340
341
// SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and Gardener contributors
//
// SPDX-License-Identifier: Apache-2.0
package config
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
componentbaseconfig "k8s.io/component-base/config"
)
// +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
// 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
// CertificateSigningRequest defines the configuration of the CertificateSigningRequest controller.
CertificateSigningRequest *CertificateSigningRequestControllerConfiguration
// 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
// 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
// SeedExtensionsCheck defines the configuration of the SeedExtensionsCheck controller.
SeedExtensionsCheck *SeedExtensionsCheckControllerConfiguration
// SeedBackupBucketsCheck defines the configuration of the SeedBackupBucketsCheck controller.
SeedBackupBucketsCheck *SeedBackupBucketsCheckControllerConfiguration
// 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
}
// CertificateSigningRequestControllerConfiguration defines the configuration of the CertificateSigningRequest
// controller.
type CertificateSigningRequestControllerConfiguration struct {
// ConcurrentSyncs is the number of workers used for the controller to work on
// events.
ConcurrentSyncs *int
}
// 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
}
// 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 seed controller will check for active gardenlet hearbeats.
SyncPeriod *metav1.Duration
}
// SeedExtensionsCheckControllerConfiguration defines the configuration of the SeedExtensionsCheck
// controller.
type SeedExtensionsCheckControllerConfiguration 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 the health check of Seed Extensions is performed).
SyncPeriod *metav1.Duration
// ConditionThresholds defines the condition threshold per condition type.
ConditionThresholds []ConditionThreshold
}
// SeedBackupBucketsCheckControllerConfiguration defines the configuration of the
// SeedBackupBucketsCheck controller.
type SeedBackupBucketsCheckControllerConfiguration 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 the health check of BackupBuckets is performed).
SyncPeriod *metav1.Duration
// ConditionThresholds defines the condition threshold per condition type.
ConditionThresholds []ConditionThreshold
}
// 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
// TriggerDeadlineDuration is an optional deadline for triggering hibernation if scheduled
// time is missed for any reason (defaults to '2h').
TriggerDeadlineDuration *metav1.Duration
}
// 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
}
// 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
// RetryJitterPeriod is a jitter duration for the reconciler retry that can be used to distribute the retries randomly.
// If its value is greater than 0 then the shoot will not be retried with the configured retry period but a random
// duration between 0 and the configured value will be added. It is defaulted to 5m.
RetryJitterPeriod *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
}
// ConditionThreshold defines the duration how long a flappy condition stays in progressing state.
type ConditionThreshold struct {
// Type is the type of the condition to define the threshold for.
Type string
// Duration is the duration how long the condition can stay in the progressing state.
Duration metav1.Duration
}
// ServerConfiguration contains details for the HTTP(S) servers.
type ServerConfiguration struct {
// HealthProbes is the configuration for serving the healthz and readyz endpoints.
HealthProbes *Server
// Metrics is the configuration for serving the metrics endpoint.
Metrics *Server
}
// 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
}