@@ -103,6 +103,11 @@ type podEndpoint struct {
103103 configs.MeshPodOwner
104104}
105105
106+ type specialSecrets struct {
107+ defaultServerSecret string
108+ wildcardTLSSecret string
109+ }
110+
106111// LoadBalancerController watches Kubernetes API and
107112// reconfigures NGINX via NginxController when needed
108113type LoadBalancerController struct {
@@ -131,7 +136,7 @@ type LoadBalancerController struct {
131136 appProtectEnabled bool
132137 appProtectDosEnabled bool
133138 recorder record.EventRecorder
134- defaultServerSecret string
139+ specialSecrets specialSecrets
135140 ingressClass string
136141 statusUpdater * statusUpdater
137142 leaderElector * leaderelection.LeaderElector
@@ -142,7 +147,6 @@ type LoadBalancerController struct {
142147 namespaceList []string
143148 secretNamespaceList []string
144149 controllerNamespace string
145- wildcardTLSSecret string
146150 areCustomResourcesEnabled bool
147151 enableOIDC bool
148152 metricsCollector collectors.ControllerCollector
@@ -226,14 +230,18 @@ type NewLoadBalancerControllerInput struct {
226230
227231// NewLoadBalancerController creates a controller
228232func NewLoadBalancerController (input NewLoadBalancerControllerInput ) * LoadBalancerController {
233+ specialSecrets := specialSecrets {
234+ defaultServerSecret : input .DefaultServerSecret ,
235+ wildcardTLSSecret : input .WildcardTLSSecret ,
236+ }
229237 lbc := & LoadBalancerController {
230238 client : input .KubeClient ,
231239 confClient : input .ConfClient ,
232240 dynClient : input .DynClient ,
233241 restConfig : input .RestConfig ,
234242 Logger : nl .LoggerFromContext (input .LoggerContext ),
235243 configurator : input .NginxConfigurator ,
236- defaultServerSecret : input . DefaultServerSecret ,
244+ specialSecrets : specialSecrets ,
237245 appProtectEnabled : input .AppProtectEnabled ,
238246 appProtectDosEnabled : input .AppProtectDosEnabled ,
239247 isNginxPlus : input .IsNginxPlus ,
@@ -245,7 +253,6 @@ func NewLoadBalancerController(input NewLoadBalancerControllerInput) *LoadBalanc
245253 namespaceList : input .Namespace ,
246254 secretNamespaceList : input .SecretNamespace ,
247255 controllerNamespace : input .ControllerNamespace ,
248- wildcardTLSSecret : input .WildcardTLSSecret ,
249256 areCustomResourcesEnabled : input .AreCustomResourcesEnabled ,
250257 enableOIDC : input .EnableOIDC ,
251258 metricsCollector : input .MetricsCollector ,
@@ -1726,7 +1733,14 @@ func removeDuplicateResources(resources []Resource) []Resource {
17261733}
17271734
17281735func (lbc * LoadBalancerController ) isSpecialSecret (secretName string ) bool {
1729- return secretName == lbc .defaultServerSecret || secretName == lbc .wildcardTLSSecret
1736+ switch secretName {
1737+ case lbc .specialSecrets .defaultServerSecret :
1738+ return true
1739+ case lbc .specialSecrets .wildcardTLSSecret :
1740+ return true
1741+ default :
1742+ return false
1743+ }
17301744}
17311745
17321746func (lbc * LoadBalancerController ) handleRegularSecretDeletion (resources []Resource ) {
@@ -1754,31 +1768,35 @@ func (lbc *LoadBalancerController) handleSecretUpdate(secret *api_v1.Secret, res
17541768 lbc .updateResourcesStatusAndEvents (resources , warnings , addOrUpdateErr )
17551769}
17561770
1757- func (lbc * LoadBalancerController ) handleSpecialSecretUpdate (secret * api_v1.Secret ) {
1771+ func (lbc * LoadBalancerController ) validationTLSSpecialSecret (secret * api_v1.Secret , secretName string ) {
17581772 var specialSecretsToUpdate []string
17591773 secretNsName := secret .Namespace + "/" + secret .Name
1774+
17601775 err := secrets .ValidateTLSSecret (secret )
17611776 if err != nil {
17621777 nl .Errorf (lbc .Logger , "Couldn't validate the special Secret %v: %v" , secretNsName , err )
17631778 lbc .recorder .Eventf (secret , api_v1 .EventTypeWarning , "Rejected" , "the special Secret %v was rejected, using the previous version: %v" , secretNsName , err )
17641779 return
17651780 }
1766-
1767- if secretNsName == lbc .defaultServerSecret {
1768- specialSecretsToUpdate = append (specialSecretsToUpdate , configs .DefaultServerSecretName )
1769- }
1770- if secretNsName == lbc .wildcardTLSSecret {
1771- specialSecretsToUpdate = append (specialSecretsToUpdate , configs .WildcardSecretName )
1772- }
1781+ specialSecretsToUpdate = append (specialSecretsToUpdate , secretName )
17731782
17741783 err = lbc .configurator .AddOrUpdateSpecialTLSSecrets (secret , specialSecretsToUpdate )
17751784 if err != nil {
17761785 nl .Errorf (lbc .Logger , "Error when updating the special Secret %v: %v" , secretNsName , err )
17771786 lbc .recorder .Eventf (secret , api_v1 .EventTypeWarning , "UpdatedWithError" , "the special Secret %v was updated, but not applied: %v" , secretNsName , err )
17781787 return
17791788 }
1789+ }
1790+
1791+ func (lbc * LoadBalancerController ) handleSpecialSecretUpdate (secret * api_v1.Secret ) {
1792+ switch secret .Name {
1793+ case lbc .specialSecrets .defaultServerSecret :
1794+ lbc .validationTLSSpecialSecret (secret , configs .DefaultServerSecretName )
1795+ case lbc .specialSecrets .wildcardTLSSecret :
1796+ lbc .validationTLSSpecialSecret (secret , configs .WildcardSecretName )
1797+ }
17801798
1781- lbc .recorder .Eventf (secret , api_v1 .EventTypeNormal , "Updated" , "the special Secret %v was updated" , secretNsName )
1799+ lbc .recorder .Eventf (secret , api_v1 .EventTypeNormal , "Updated" , "the special Secret %v was updated" , secret . Namespace + "/" + secret . Name )
17821800}
17831801
17841802func getStatusFromEventTitle (eventTitle string ) string {
0 commit comments