@@ -41,6 +41,7 @@ import (
4141 dataflowv1 "github.com/dataflow-operator/dataflow/api/v1"
4242 "github.com/dataflow-operator/dataflow/internal/controller"
4343 _ "github.com/dataflow-operator/dataflow/internal/metrics" // Импортируем для регистрации метрик
44+ "github.com/dataflow-operator/dataflow/internal/webhookenv"
4445 //+kubebuilder:scaffold:imports
4546)
4647
@@ -131,20 +132,21 @@ func main() {
131132 ctrl .SetLogger (zaprctrl .New (zapOpts ... ))
132133 }
133134
134- webhookOpts := webhook.Options {Port : 9443 }
135- if certDir := os .Getenv ("WEBHOOK_CERT_DIR" ); certDir != "" {
136- webhookOpts .CertDir = certDir
137- }
138- mgr , err := ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {
135+ // Webhook server включается только при заданном WEBHOOK_CERT_DIR (в e2e и при отключённом webhook в Helm сертификаты не монтируются).
136+ certDir := webhookenv .GetWebhookCertDir ()
137+ mgrOpts := ctrl.Options {
139138 Scheme : scheme ,
140139 Metrics : metricsserver.Options {
141140 BindAddress : metricsAddr ,
142141 },
143- WebhookServer : webhook .NewServer (webhookOpts ),
144142 HealthProbeBindAddress : probeAddr ,
145143 LeaderElection : true , // Always HA-ready: only one active controller across replicas
146144 LeaderElectionID : "dataflow-operator.dataflow.io" ,
147- })
145+ }
146+ if certDir != "" {
147+ mgrOpts .WebhookServer = webhook .NewServer (webhook.Options {Port : 9443 , CertDir : certDir })
148+ }
149+ mgr , err := ctrl .NewManager (ctrl .GetConfigOrDie (), mgrOpts )
148150 if err != nil {
149151 setupLog .Error (err , "unable to start manager" )
150152 os .Exit (1 )
@@ -154,8 +156,12 @@ func main() {
154156 setupLog .Error (err , "unable to create controller" , "controller" , "DataFlow" )
155157 os .Exit (1 )
156158 }
157- validator := admission .WithCustomValidator (mgr .GetScheme (), & dataflowv1.DataFlow {}, & dataflowv1.DataFlow {})
158- mgr .GetWebhookServer ().Register ("/validate-dataflow-dataflow-io-v1-dataflow" , validator )
159+ if certDir != "" {
160+ validator := admission .WithCustomValidator (mgr .GetScheme (), & dataflowv1.DataFlow {}, & dataflowv1.DataFlow {})
161+ mgr .GetWebhookServer ().Register ("/validate-dataflow-dataflow-io-v1-dataflow" , validator )
162+ } else {
163+ setupLog .Info ("webhook disabled (WEBHOOK_CERT_DIR not set), skipping validator registration" )
164+ }
159165 //+kubebuilder:scaffold:builder
160166
161167 if err := mgr .AddHealthzCheck ("healthz" , healthz .Ping ); err != nil {
0 commit comments