@@ -102,11 +102,12 @@ type podEndpoint struct {
102102}
103103
104104type specialSecrets struct {
105- defaultServerSecret string
106- wildcardTLSSecret string
107- licenseSecret string
108- clientAuthSecret string
109- trustedCertSecret string
105+ defaultServerSecret string
106+ wildcardTLSSecret string
107+ licenseSecret string
108+ clientAuthSecret string
109+ mgmtTrustedCertSecret string
110+ otelTrustedCertSecret string
110111}
111112
112113type controllerMetadata struct {
@@ -247,14 +248,19 @@ type NewLoadBalancerControllerInput struct {
247248
248249// NewLoadBalancerController creates a controller
249250func NewLoadBalancerController (input NewLoadBalancerControllerInput ) * LoadBalancerController {
251+ otelTrustedCertSecret := ""
252+ if input .NginxConfigurator .CfgParams .MainOtelExporterTrustedCA != "" {
253+ otelTrustedCertSecret = fmt .Sprintf ("%s/%s" , input .ControllerNamespace , input .NginxConfigurator .CfgParams .MainOtelExporterTrustedCA )
254+ }
250255 specialSecrets := specialSecrets {
251- defaultServerSecret : input .DefaultServerSecret ,
252- wildcardTLSSecret : input .WildcardTLSSecret ,
256+ defaultServerSecret : input .DefaultServerSecret ,
257+ wildcardTLSSecret : input .WildcardTLSSecret ,
258+ otelTrustedCertSecret : otelTrustedCertSecret ,
253259 }
254260 if input .IsNginxPlus {
255261 specialSecrets .licenseSecret = fmt .Sprintf ("%s/%s" , input .ControllerNamespace , input .NginxConfigurator .MgmtCfgParams .Secrets .License )
256262 specialSecrets .clientAuthSecret = fmt .Sprintf ("%s/%s" , input .ControllerNamespace , input .NginxConfigurator .MgmtCfgParams .Secrets .ClientAuth )
257- specialSecrets .trustedCertSecret = fmt .Sprintf ("%s/%s" , input .ControllerNamespace , input .NginxConfigurator .MgmtCfgParams .Secrets .TrustedCert )
263+ specialSecrets .mgmtTrustedCertSecret = fmt .Sprintf ("%s/%s" , input .ControllerNamespace , input .NginxConfigurator .MgmtCfgParams .Secrets .TrustedCert )
258264 }
259265 lbc := & LoadBalancerController {
260266 client : input .KubeClient ,
@@ -924,7 +930,7 @@ func (lbc *LoadBalancerController) updateAllConfigs() {
924930 if _ , hasCRL := secret .Data [configs .CACrlKey ]; hasCRL {
925931 lbc .configurator .MgmtCfgParams .Secrets .TrustedCRL = secret .Name
926932 }
927- lbc .specialSecrets .trustedCertSecret = fmt .Sprintf ("%s/%s" , secret .Namespace , secret .Name )
933+ lbc .specialSecrets .mgmtTrustedCertSecret = fmt .Sprintf ("%s/%s" , secret .Namespace , secret .Name )
928934 lbc .handleSpecialSecretUpdate (secret , reloadNginx )
929935 }
930936 // update special ClientAuth secret in mgmtConfigParams
@@ -937,6 +943,15 @@ func (lbc *LoadBalancerController) updateAllConfigs() {
937943 lbc .handleSpecialSecretUpdate (secret , reloadNginx )
938944 }
939945 }
946+ // update special Otel CA secret in configParams
947+ if cfgParams .MainOtelExporterTrustedCA != "" {
948+ secret , err := lbc .client .CoreV1 ().Secrets (lbc .configMap .GetNamespace ()).Get (context .TODO (), cfgParams .MainOtelExporterTrustedCA , meta_v1.GetOptions {})
949+ if err != nil {
950+ nl .Errorf (lbc .Logger , "secret %s/%s: %v" , lbc .configMap .GetNamespace (), cfgParams .MainOtelExporterTrustedCA , err )
951+ }
952+ lbc .specialSecrets .otelTrustedCertSecret = fmt .Sprintf ("%s/%s" , secret .Namespace , secret .Name )
953+ lbc .handleSpecialSecretUpdate (secret , reloadNginx )
954+ }
940955 resources := lbc .configuration .GetResources ()
941956 nl .Debugf (lbc .Logger , "Updating %v resources" , len (resources ))
942957 resourceExes := lbc .createExtendedResources (resources )
@@ -1843,7 +1858,9 @@ func (lbc *LoadBalancerController) isSpecialSecret(secretName string) bool {
18431858 return true
18441859 case lbc .specialSecrets .clientAuthSecret :
18451860 return true
1846- case lbc .specialSecrets .trustedCertSecret :
1861+ case lbc .specialSecrets .mgmtTrustedCertSecret :
1862+ return true
1863+ case lbc .specialSecrets .otelTrustedCertSecret :
18471864 return true
18481865 default :
18491866 return false
@@ -1918,7 +1935,12 @@ func (lbc *LoadBalancerController) handleSpecialSecretUpdate(secret *api_v1.Secr
19181935 if ok := lbc .performNGINXReload (secret ); ! ok {
19191936 return
19201937 }
1921- case lbc .specialSecrets .trustedCertSecret :
1938+ case lbc .specialSecrets .mgmtTrustedCertSecret :
1939+ lbc .updateAllConfigs ()
1940+ if ok := lbc .performNGINXReload (secret ); ! ok {
1941+ return
1942+ }
1943+ case lbc .specialSecrets .otelTrustedCertSecret :
19221944 lbc .updateAllConfigs ()
19231945 if ok := lbc .performNGINXReload (secret ); ! ok {
19241946 return
@@ -1944,7 +1966,12 @@ func (lbc *LoadBalancerController) writeSpecialSecrets(secret *api_v1.Secret, sp
19441966 return false
19451967 }
19461968 case secrets .SecretTypeCA :
1947- lbc .configurator .AddOrUpdateCASecret (secret , fmt .Sprintf ("mgmt/%s" , configs .CACrtKey ), fmt .Sprintf ("mgmt/%s" , configs .CACrlKey ))
1969+ if lbc .specialSecrets .mgmtTrustedCertSecret != "" {
1970+ lbc .configurator .AddOrUpdateCASecret (secret , fmt .Sprintf ("mgmt/%s" , configs .CACrtKey ), fmt .Sprintf ("mgmt/%s" , configs .CACrlKey ))
1971+ }
1972+ if lbc .specialSecrets .otelTrustedCertSecret != "" {
1973+ lbc .configurator .AddOrUpdateCASecret (secret , fmt .Sprintf ("%s-%s-%s" , lbc .metadata .namespace , lbc .configurator .CfgParams .MainOtelExporterTrustedCA , configs .CACrtKey ), "" )
1974+ }
19481975 case api_v1 .SecretTypeTLS :
19491976 // if the secret name matches the specified
19501977 if secretNsName == mgmtClientAuthNamespaceName {
@@ -1981,7 +2008,7 @@ func (lbc *LoadBalancerController) specialSecretValidation(secretNsName string,
19812008 return false
19822009 }
19832010 }
1984- if secretNsName == lbc .specialSecrets .trustedCertSecret {
2011+ if secretNsName == lbc .specialSecrets .mgmtTrustedCertSecret {
19852012 err := secrets .ValidateCASecret (secret )
19862013 if err != nil {
19872014 nl .Errorf (lbc .Logger , "Couldn't validate the special Secret %v: %v" , secretNsName , err )
@@ -1997,6 +2024,14 @@ func (lbc *LoadBalancerController) specialSecretValidation(secretNsName string,
19972024 return false
19982025 }
19992026 }
2027+ if secretNsName == lbc .specialSecrets .otelTrustedCertSecret {
2028+ err := secrets .ValidateCASecret (secret )
2029+ if err != nil {
2030+ nl .Errorf (lbc .Logger , "Couldn't validate the special Secret %v: %v" , secretNsName , err )
2031+ lbc .recorder .Eventf (lbc .metadata .pod , api_v1 .EventTypeWarning , nl .EventReasonRejected , "the special Secret %v was rejected, using the previous version: %v" , secretNsName , err )
2032+ return false
2033+ }
2034+ }
20002035 return true
20012036}
20022037
0 commit comments