-
Notifications
You must be signed in to change notification settings - Fork 450
/
types.go
231 lines (208 loc) · 9.52 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
// 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"
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 LeaderElectionConfiguration
// Discovery defines the configuration of the discovery client.
Discovery DiscoveryConfiguration
// LogLevel is the level/severity for the logs. Must be one of [info,debug,error].
LogLevel 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
// 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/features/gardener_features.go".
// Default: nil
FeatureGates map[string]bool
}
// ControllerManagerControllerConfiguration defines the configuration of the controllers.
type ControllerManagerControllerConfiguration struct {
// CloudProfile defines the configuration of the CloudProfile controller.
CloudProfile *CloudProfileControllerConfiguration
// ControllerRegistration defines the configuration of the ControllerRegistration controller.
ControllerRegistration *ControllerRegistrationControllerConfiguration
// 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
}
// 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
}
// 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
}
// 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
}
// 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.
// +optional
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
}
// 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
}
// DiscoveryConfiguration defines the configuration of how to discover API groups.
// It allows to set where to store caching data and to specify the TTL of that data.
type DiscoveryConfiguration struct {
// DiscoveryCacheDir is the directory to store discovery cache information.
// If unset, the discovery client will use the current working directory.
DiscoveryCacheDir *string
// HTTPCacheDir is the directory to store discovery HTTP cache information.
// If unset, no HTTP caching will be done.
HTTPCacheDir *string
// TTL is the ttl how long discovery cache information shall be valid.
TTL *metav1.Duration
}
// LeaderElectionConfiguration defines the configuration of leader election
// clients for components that can run with leader election enabled.
type LeaderElectionConfiguration struct {
componentbaseconfig.LeaderElectionConfiguration
// LockObjectNamespace defines the namespace of the lock object.
LockObjectNamespace string
// LockObjectName defines the lock object name.
LockObjectName string
}
// 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 unsecured, unauthenticated access.
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"
)