@@ -102,11 +102,12 @@ type podEndpoint struct {
102
102
}
103
103
104
104
type 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
110
111
}
111
112
112
113
type controllerMetadata struct {
@@ -247,14 +248,19 @@ type NewLoadBalancerControllerInput struct {
247
248
248
249
// NewLoadBalancerController creates a controller
249
250
func 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
+ }
250
255
specialSecrets := specialSecrets {
251
- defaultServerSecret : input .DefaultServerSecret ,
252
- wildcardTLSSecret : input .WildcardTLSSecret ,
256
+ defaultServerSecret : input .DefaultServerSecret ,
257
+ wildcardTLSSecret : input .WildcardTLSSecret ,
258
+ otelTrustedCertSecret : otelTrustedCertSecret ,
253
259
}
254
260
if input .IsNginxPlus {
255
261
specialSecrets .licenseSecret = fmt .Sprintf ("%s/%s" , input .ControllerNamespace , input .NginxConfigurator .MgmtCfgParams .Secrets .License )
256
262
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 )
258
264
}
259
265
lbc := & LoadBalancerController {
260
266
client : input .KubeClient ,
@@ -924,7 +930,7 @@ func (lbc *LoadBalancerController) updateAllConfigs() {
924
930
if _ , hasCRL := secret .Data [configs .CACrlKey ]; hasCRL {
925
931
lbc .configurator .MgmtCfgParams .Secrets .TrustedCRL = secret .Name
926
932
}
927
- lbc .specialSecrets .trustedCertSecret = fmt .Sprintf ("%s/%s" , secret .Namespace , secret .Name )
933
+ lbc .specialSecrets .mgmtTrustedCertSecret = fmt .Sprintf ("%s/%s" , secret .Namespace , secret .Name )
928
934
lbc .handleSpecialSecretUpdate (secret , reloadNginx )
929
935
}
930
936
// update special ClientAuth secret in mgmtConfigParams
@@ -937,6 +943,15 @@ func (lbc *LoadBalancerController) updateAllConfigs() {
937
943
lbc .handleSpecialSecretUpdate (secret , reloadNginx )
938
944
}
939
945
}
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
+ }
940
955
resources := lbc .configuration .GetResources ()
941
956
nl .Debugf (lbc .Logger , "Updating %v resources" , len (resources ))
942
957
resourceExes := lbc .createExtendedResources (resources )
@@ -1843,7 +1858,9 @@ func (lbc *LoadBalancerController) isSpecialSecret(secretName string) bool {
1843
1858
return true
1844
1859
case lbc .specialSecrets .clientAuthSecret :
1845
1860
return true
1846
- case lbc .specialSecrets .trustedCertSecret :
1861
+ case lbc .specialSecrets .mgmtTrustedCertSecret :
1862
+ return true
1863
+ case lbc .specialSecrets .otelTrustedCertSecret :
1847
1864
return true
1848
1865
default :
1849
1866
return false
@@ -1918,7 +1935,12 @@ func (lbc *LoadBalancerController) handleSpecialSecretUpdate(secret *api_v1.Secr
1918
1935
if ok := lbc .performNGINXReload (secret ); ! ok {
1919
1936
return
1920
1937
}
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 :
1922
1944
lbc .updateAllConfigs ()
1923
1945
if ok := lbc .performNGINXReload (secret ); ! ok {
1924
1946
return
@@ -1944,7 +1966,12 @@ func (lbc *LoadBalancerController) writeSpecialSecrets(secret *api_v1.Secret, sp
1944
1966
return false
1945
1967
}
1946
1968
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
+ }
1948
1975
case api_v1 .SecretTypeTLS :
1949
1976
// if the secret name matches the specified
1950
1977
if secretNsName == mgmtClientAuthNamespaceName {
@@ -1981,7 +2008,7 @@ func (lbc *LoadBalancerController) specialSecretValidation(secretNsName string,
1981
2008
return false
1982
2009
}
1983
2010
}
1984
- if secretNsName == lbc .specialSecrets .trustedCertSecret {
2011
+ if secretNsName == lbc .specialSecrets .mgmtTrustedCertSecret {
1985
2012
err := secrets .ValidateCASecret (secret )
1986
2013
if err != nil {
1987
2014
nl .Errorf (lbc .Logger , "Couldn't validate the special Secret %v: %v" , secretNsName , err )
@@ -1997,6 +2024,14 @@ func (lbc *LoadBalancerController) specialSecretValidation(secretNsName string,
1997
2024
return false
1998
2025
}
1999
2026
}
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
+ }
2000
2035
return true
2001
2036
}
2002
2037
0 commit comments