Skip to content

Commit dc6f14d

Browse files
committed
Networking configuration options for webhooks
Signed-off-by: Ben Perry <[email protected]>
1 parent ade1c7c commit dc6f14d

File tree

5 files changed

+260
-22
lines changed

5 files changed

+260
-22
lines changed

operator/v1/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,71 @@ spec:
9191
DeployOption contains the options of deploying a cluster-manager
9292
Default mode is used if DeployOption is not set.
9393
properties:
94+
default:
95+
description: Default includes configurations for clustermanager
96+
in the Default mode
97+
properties:
98+
registrationWebhookConfiguration:
99+
description: RegistrationWebhookConfiguration represents the
100+
customized webhook-server configuration of registration.
101+
properties:
102+
healthProbeBindAddress:
103+
default: :8000
104+
description: |-
105+
HealthProbeBindAddress represents the healthcheck address of a webhook-server. The default value is ":8000".
106+
Healthchecks may be disabled by setting a value of "0" or "".
107+
type: string
108+
hostNetwork:
109+
description: |-
110+
HostNetwork enables running webhook pods with hostNetwork: true
111+
This may be required in some installations, such as EKS with Calico CNI,
112+
to allow the API Server to communicate with the webhook pods.
113+
type: boolean
114+
metricsBindAddress:
115+
default: :8080
116+
description: |-
117+
MetricsBindAddress represents the metrics address of a webhook-server. The default value is ":8080"
118+
Metrics may be disabled by setting a value of "0" or "".
119+
type: string
120+
port:
121+
default: 9443
122+
description: Port represents the port of a webhook-server.
123+
The default value of Port is 9443.
124+
format: int32
125+
maximum: 65535
126+
type: integer
127+
type: object
128+
workWebhookConfiguration:
129+
description: WorkWebhookConfiguration represents the customized
130+
webhook-server configuration of work.
131+
properties:
132+
healthProbeBindAddress:
133+
default: :8000
134+
description: |-
135+
HealthProbeBindAddress represents the healthcheck address of a webhook-server. The default value is ":8000".
136+
Healthchecks may be disabled by setting a value of "0" or "".
137+
type: string
138+
hostNetwork:
139+
description: |-
140+
HostNetwork enables running webhook pods with hostNetwork: true
141+
This may be required in some installations, such as EKS with Calico CNI,
142+
to allow the API Server to communicate with the webhook pods.
143+
type: boolean
144+
metricsBindAddress:
145+
default: :8080
146+
description: |-
147+
MetricsBindAddress represents the metrics address of a webhook-server. The default value is ":8080"
148+
Metrics may be disabled by setting a value of "0" or "".
149+
type: string
150+
port:
151+
default: 9443
152+
description: Port represents the port of a webhook-server.
153+
The default value of Port is 9443.
154+
format: int32
155+
maximum: 65535
156+
type: integer
157+
type: object
158+
type: object
94159
hosted:
95160
description: Hosted includes configurations we need for clustermanager
96161
in the Hosted mode.
@@ -106,6 +171,24 @@ spec:
106171
The Address must be reachable by apiserver of the hub cluster.
107172
pattern: ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$
108173
type: string
174+
healthProbeBindAddress:
175+
default: :8000
176+
description: |-
177+
HealthProbeBindAddress represents the healthcheck address of a webhook-server. The default value is ":8000".
178+
Healthchecks may be disabled by setting a value of "0" or "".
179+
type: string
180+
hostNetwork:
181+
description: |-
182+
HostNetwork enables running webhook pods with hostNetwork: true
183+
This may be required in some installations, such as EKS with Calico CNI,
184+
to allow the API Server to communicate with the webhook pods.
185+
type: boolean
186+
metricsBindAddress:
187+
default: :8080
188+
description: |-
189+
MetricsBindAddress represents the metrics address of a webhook-server. The default value is ":8080"
190+
Metrics may be disabled by setting a value of "0" or "".
191+
type: string
109192
port:
110193
default: 443
111194
description: Port represents the port of a webhook-server.
@@ -127,6 +210,24 @@ spec:
127210
The Address must be reachable by apiserver of the hub cluster.
128211
pattern: ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$
129212
type: string
213+
healthProbeBindAddress:
214+
default: :8000
215+
description: |-
216+
HealthProbeBindAddress represents the healthcheck address of a webhook-server. The default value is ":8000".
217+
Healthchecks may be disabled by setting a value of "0" or "".
218+
type: string
219+
hostNetwork:
220+
description: |-
221+
HostNetwork enables running webhook pods with hostNetwork: true
222+
This may be required in some installations, such as EKS with Calico CNI,
223+
to allow the API Server to communicate with the webhook pods.
224+
type: boolean
225+
metricsBindAddress:
226+
default: :8080
227+
description: |-
228+
MetricsBindAddress represents the metrics address of a webhook-server. The default value is ":8080"
229+
Metrics may be disabled by setting a value of "0" or "".
230+
type: string
130231
port:
131232
default: 443
132233
description: Port represents the port of a webhook-server.

operator/v1/types_clustermanager.go

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,19 +232,62 @@ const (
232232
FeatureGateModeTypeDisable FeatureGateModeType = "Disable"
233233
)
234234

235+
// DefaultClusterManagerConfiguration represents customized configurations for clustermanager in the Default mode
236+
type DefaultClusterManagerConfiguration struct {
237+
// RegistrationWebhookConfiguration represents the customized webhook-server configuration of registration.
238+
// +optional
239+
RegistrationWebhookConfiguration DefaultWebhookConfiguration `json:"registrationWebhookConfiguration,omitempty"`
240+
241+
// WorkWebhookConfiguration represents the customized webhook-server configuration of work.
242+
// +optional
243+
WorkWebhookConfiguration DefaultWebhookConfiguration `json:"workWebhookConfiguration,omitempty"`
244+
}
245+
235246
// HostedClusterManagerConfiguration represents customized configurations we need to set for clustermanager in the Hosted mode.
236247
type HostedClusterManagerConfiguration struct {
237248
// RegistrationWebhookConfiguration represents the customized webhook-server configuration of registration.
238249
// +optional
239-
RegistrationWebhookConfiguration WebhookConfiguration `json:"registrationWebhookConfiguration,omitempty"`
250+
RegistrationWebhookConfiguration HostedWebhookConfiguration `json:"registrationWebhookConfiguration,omitempty"`
240251

241252
// WorkWebhookConfiguration represents the customized webhook-server configuration of work.
242253
// +optional
243-
WorkWebhookConfiguration WebhookConfiguration `json:"workWebhookConfiguration,omitempty"`
254+
WorkWebhookConfiguration HostedWebhookConfiguration `json:"workWebhookConfiguration,omitempty"`
244255
}
245256

246-
// WebhookConfiguration has two properties: Address and Port.
257+
// WebhookConfiguration represents customization of webhook servers
247258
type WebhookConfiguration struct {
259+
// HealthProbeBindAddress represents the healthcheck address of a webhook-server. The default value is ":8000".
260+
// Healthchecks may be disabled by setting a value of "0" or "".
261+
// +optional
262+
// +kubebuilder:default=":8000"
263+
HealthProbeBindAddress string `json:"healthProbeBindAddress"`
264+
265+
// MetricsBindAddress represents the metrics address of a webhook-server. The default value is ":8080"
266+
// Metrics may be disabled by setting a value of "0" or "".
267+
// +optional
268+
// +kubebuilder:default=":8080"
269+
MetricsBindAddress string `json:"metricsBindAddress"`
270+
271+
// HostNetwork enables running webhook pods with hostNetwork: true
272+
// This may be required in some installations, such as EKS with Calico CNI,
273+
// to allow the API Server to communicate with the webhook pods.
274+
// +optional
275+
HostNetwork bool `json:"hostNetwork,omitempty"`
276+
}
277+
278+
// DefaultWebhookConfiguration represents customization of webhook servers running in default installation mode
279+
type DefaultWebhookConfiguration struct {
280+
// Port represents the port of a webhook-server. The default value of Port is 9443.
281+
// +optional
282+
// +kubebuilder:default=9443
283+
// +kubebuilder:validation:Maximum=65535
284+
Port int32 `json:"port,omitempty"`
285+
286+
WebhookConfiguration `json:",inline"`
287+
}
288+
289+
// HostedWebhookConfiguration represents customization of webhook servers running in hosted installation mode
290+
type HostedWebhookConfiguration struct {
248291
// Address represents the address of a webhook-server.
249292
// It could be in IP format or fqdn format.
250293
// The Address must be reachable by apiserver of the hub cluster.
@@ -258,6 +301,8 @@ type WebhookConfiguration struct {
258301
// +kubebuilder:default=443
259302
// +kubebuilder:validation:Maximum=65535
260303
Port int32 `json:"port,omitempty"`
304+
305+
WebhookConfiguration `json:",inline"`
261306
}
262307

263308
// ClusterManagerDeployOption describes the deployment options for cluster-manager
@@ -274,6 +319,10 @@ type ClusterManagerDeployOption struct {
274319
// +kubebuilder:validation:Enum=Default;Hosted
275320
Mode InstallMode `json:"mode,omitempty"`
276321

322+
// Default includes configurations for clustermanager in the Default mode
323+
// +optional
324+
Default *DefaultClusterManagerConfiguration `json:"default,omitempty"`
325+
277326
// Hosted includes configurations we need for clustermanager in the Hosted mode.
278327
// +optional
279328
Hosted *HostedClusterManagerConfiguration `json:"hosted,omitempty"`

operator/v1/zz_generated.deepcopy.go

Lines changed: 57 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

operator/v1/zz_generated.swagger_doc_generated.go

Lines changed: 37 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)