Skip to content

Commit 01535d0

Browse files
committed
Remove cert processing, rename configmap keys, fix tests
Signed-off-by: Haywood Shannon <[email protected]>
1 parent b7bab37 commit 01535d0

File tree

8 files changed

+270
-203
lines changed

8 files changed

+270
-203
lines changed

cmd/nginx-ingress/main.go

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ func main() {
166166
logEventAndExit(ctx, eventRecorder, pod, secretErrorReason, err)
167167
}
168168

169-
if err := processMgmtTrustedCertSecret(kubeClient, nginxManager, mgmtCfgParams, controllerNamespace); err != nil {
169+
if err := processTrustedCertSecret(kubeClient, nginxManager, mgmtCfgParams, controllerNamespace); err != nil {
170170
logEventAndExit(ctx, eventRecorder, pod, secretErrorReason, err)
171171
}
172172

@@ -189,18 +189,13 @@ func main() {
189189
if err != nil {
190190
logEventAndExit(ctx, eventRecorder, pod, secretErrorReason, err)
191191
}
192-
193192
globalConfigurationValidator := createGlobalConfigurationValidator()
194193

195194
mustProcessGlobalConfiguration(ctx)
196195

197196
cfgParams := configs.NewDefaultConfigParams(ctx, *nginxPlus)
198197
cfgParams = processConfigMaps(kubeClient, cfgParams, nginxManager, templateExecutor, eventRecorder)
199198

200-
if err := processOtelTrustedCertSecret(kubeClient, nginxManager, cfgParams, controllerNamespace); err != nil {
201-
logEventAndExit(ctx, eventRecorder, pod, secretErrorReason, err)
202-
}
203-
204199
staticCfgParams := &configs.StaticConfigParams{
205200
DisableIPV6: *disableIPV6,
206201
DefaultHTTPListenerPort: *defaultHTTPListenerPort,
@@ -376,7 +371,7 @@ func processClientAuthSecret(kubeClient *kubernetes.Clientset, nginxManager ngin
376371
return nil
377372
}
378373

379-
func processMgmtTrustedCertSecret(kubeClient *kubernetes.Clientset, nginxManager nginx.Manager, mgmtCfgParams *configs.MGMTConfigParams, controllerNamespace string) error {
374+
func processTrustedCertSecret(kubeClient *kubernetes.Clientset, nginxManager nginx.Manager, mgmtCfgParams *configs.MGMTConfigParams, controllerNamespace string) error {
380375
if mgmtCfgParams.Secrets.TrustedCert == "" {
381376
return nil
382377
}
@@ -397,23 +392,6 @@ func processMgmtTrustedCertSecret(kubeClient *kubernetes.Clientset, nginxManager
397392
return nil
398393
}
399394

400-
func processOtelTrustedCertSecret(kubeClient *kubernetes.Clientset, nginxManager nginx.Manager, cfgParams *configs.ConfigParams, controllerNamespace string) error {
401-
if cfgParams.MainOtelExporterTrustedCA == "" {
402-
return nil
403-
}
404-
405-
trustedCertSecretNsName := controllerNamespace + "/" + cfgParams.MainOtelExporterTrustedCA
406-
407-
secret, err := getAndValidateSecret(kubeClient, trustedCertSecretNsName, secrets.SecretTypeCA)
408-
if err != nil {
409-
return fmt.Errorf("error trying to get the trusted cert secret %v: %w", trustedCertSecretNsName, err)
410-
}
411-
412-
caBytes, _ := configs.GenerateCAFileContent(secret)
413-
nginxManager.CreateSecret(fmt.Sprintf("%s-%s-%s", controllerNamespace, cfgParams.MainOtelExporterTrustedCA, configs.CACrtKey), caBytes, nginx.ReadWriteOnlyFileMode)
414-
return nil
415-
}
416-
417395
func mustCreateConfigAndKubeClient(ctx context.Context) (*rest.Config, *kubernetes.Clientset) {
418396
l := nl.LoggerFromContext(ctx)
419397
var config *rest.Config

internal/configs/config_params.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ type ConfigParams struct {
3535
MainLogFormatEscaping string
3636
MainMainSnippets []string
3737
MainOtelLoadModule bool
38-
MainOtelGlobalTraceEnabled bool
38+
MainOtelTraceInHTTP bool
3939
MainOtelExporterEndpoint string
4040
MainOtelExporterTrustedCA string
4141
MainOtelExporterHeaderName string

internal/configs/configmaps.go

Lines changed: 77 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -530,100 +530,9 @@ func ParseConfigMap(ctx context.Context, cfgm *v1.ConfigMap, nginxPlus bool, has
530530
}
531531
}
532532

533-
if otelExporterEndpoint, exists := cfgm.Data["otel-exporter-endpoint"]; exists {
534-
otelExporterEndpoint = strings.TrimSpace(otelExporterEndpoint)
535-
if otelExporterEndpoint != "" {
536-
cfgParams.MainOtelExporterEndpoint = otelExporterEndpoint
537-
}
538-
}
539-
540-
if otelExporterTrustedCA, exists := cfgm.Data["otel-exporter-trusted-ca"]; exists {
541-
otelExporterTrustedCA = strings.TrimSpace(otelExporterTrustedCA)
542-
if otelExporterTrustedCA != "" {
543-
cfgParams.MainOtelExporterTrustedCA = otelExporterTrustedCA
544-
}
545-
}
546-
547-
if otelExporterHeaderName, exists := cfgm.Data["otel-exporter-header-name"]; exists {
548-
otelExporterHeaderName = strings.TrimSpace(otelExporterHeaderName)
549-
if otelExporterHeaderName != "" {
550-
cfgParams.MainOtelExporterHeaderName = otelExporterHeaderName
551-
}
552-
}
553-
554-
if otelExporterHeaderValue, exists := cfgm.Data["otel-exporter-header-value"]; exists {
555-
otelExporterHeaderValue = strings.TrimSpace(otelExporterHeaderValue)
556-
if otelExporterHeaderValue != "" {
557-
cfgParams.MainOtelExporterHeaderValue = otelExporterHeaderValue
558-
}
559-
}
560-
561-
if otelServiceName, exists := cfgm.Data["otel-service-name"]; exists {
562-
otelServiceName = strings.TrimSpace(otelServiceName)
563-
if otelServiceName != "" {
564-
cfgParams.MainOtelServiceName = otelServiceName
565-
}
566-
}
567-
568-
if otelGlobalTraceEnabled, exists, err := GetMapKeyAsBool(cfgm.Data, "otel-global-trace-enabled", cfgm); exists {
569-
if err != nil {
570-
nl.Error(l, err)
571-
eventLog.Event(cfgm, v1.EventTypeWarning, nl.EventReasonInvalidValue, err.Error())
572-
configOk = false
573-
}
574-
cfgParams.MainOtelGlobalTraceEnabled = otelGlobalTraceEnabled
575-
}
576-
577-
if cfgParams.MainOtelExporterEndpoint != "" {
578-
cfgParams.MainOtelLoadModule = true
579-
}
580-
581-
if otelExporterEndpoint, exists := cfgm.Data["otel-exporter-endpoint"]; exists {
582-
otelExporterEndpoint = strings.TrimSpace(otelExporterEndpoint)
583-
if otelExporterEndpoint != "" {
584-
cfgParams.MainOtelExporterEndpoint = otelExporterEndpoint
585-
}
586-
}
587-
588-
if otelExporterTrustedCA, exists := cfgm.Data["otel-exporter-trusted-ca"]; exists {
589-
otelExporterTrustedCA = strings.TrimSpace(otelExporterTrustedCA)
590-
if otelExporterTrustedCA != "" {
591-
cfgParams.MainOtelExporterTrustedCA = otelExporterTrustedCA
592-
}
593-
}
594-
595-
if otelExporterHeaderName, exists := cfgm.Data["otel-exporter-header-name"]; exists {
596-
otelExporterHeaderName = strings.TrimSpace(otelExporterHeaderName)
597-
if otelExporterHeaderName != "" {
598-
cfgParams.MainOtelExporterHeaderName = otelExporterHeaderName
599-
}
600-
}
601-
602-
if otelExporterHeaderValue, exists := cfgm.Data["otel-exporter-header-value"]; exists {
603-
otelExporterHeaderValue = strings.TrimSpace(otelExporterHeaderValue)
604-
if otelExporterHeaderValue != "" {
605-
cfgParams.MainOtelExporterHeaderValue = otelExporterHeaderValue
606-
}
607-
}
608-
609-
if otelServiceName, exists := cfgm.Data["otel-service-name"]; exists {
610-
otelServiceName = strings.TrimSpace(otelServiceName)
611-
if otelServiceName != "" {
612-
cfgParams.MainOtelServiceName = otelServiceName
613-
}
614-
}
615-
616-
if otelGlobalTraceEnabled, exists, err := GetMapKeyAsBool(cfgm.Data, "otel-global-trace-enabled", cfgm); exists {
617-
if err != nil {
618-
nl.Error(l, err)
619-
eventLog.Event(cfgm, v1.EventTypeWarning, nl.EventReasonInvalidValue, err.Error())
620-
configOk = false
621-
}
622-
cfgParams.MainOtelGlobalTraceEnabled = otelGlobalTraceEnabled
623-
}
624-
625-
if cfgParams.MainOtelExporterEndpoint != "" {
626-
cfgParams.MainOtelLoadModule = true
533+
_, otelErr := parseConfigMapOpenTelemetry(l, cfgm, cfgParams, eventLog)
534+
if otelErr != nil {
535+
configOk = false
627536
}
628537

629538
if hasAppProtect {
@@ -836,6 +745,79 @@ func parseConfigMapZoneSync(l *slog.Logger, cfgm *v1.ConfigMap, cfgParams *Confi
836745
return &cfgParams.ZoneSync, nil
837746
}
838747

748+
//nolint:gocyclo
749+
func parseConfigMapOpenTelemetry(l *slog.Logger, cfgm *v1.ConfigMap, cfgParams *ConfigParams, eventLog record.EventRecorder) (*ConfigParams, error) {
750+
if otelExporterEndpoint, exists := cfgm.Data["otel-exporter-endpoint"]; exists {
751+
otelExporterEndpoint = strings.TrimSpace(otelExporterEndpoint)
752+
if otelExporterEndpoint != "" {
753+
cfgParams.MainOtelExporterEndpoint = otelExporterEndpoint
754+
}
755+
}
756+
757+
if otelExporterHeaderName, exists := cfgm.Data["otel-exporter-header-name"]; exists {
758+
otelExporterHeaderName = strings.TrimSpace(otelExporterHeaderName)
759+
if otelExporterHeaderName != "" {
760+
cfgParams.MainOtelExporterHeaderName = otelExporterHeaderName
761+
}
762+
}
763+
764+
if otelExporterHeaderValue, exists := cfgm.Data["otel-exporter-header-value"]; exists {
765+
otelExporterHeaderValue = strings.TrimSpace(otelExporterHeaderValue)
766+
if otelExporterHeaderValue != "" {
767+
cfgParams.MainOtelExporterHeaderValue = otelExporterHeaderValue
768+
}
769+
}
770+
771+
if otelServiceName, exists := cfgm.Data["otel-service-name"]; exists {
772+
otelServiceName = strings.TrimSpace(otelServiceName)
773+
if otelServiceName != "" {
774+
cfgParams.MainOtelServiceName = otelServiceName
775+
}
776+
}
777+
778+
otelValid := true
779+
780+
if otelTraceInHTTP, exists, err := GetMapKeyAsBool(cfgm.Data, "otel-trace-in-http", cfgm); exists {
781+
if err != nil {
782+
nl.Error(l, err)
783+
eventLog.Event(cfgm, v1.EventTypeWarning, nl.EventReasonInvalidValue, err.Error())
784+
otelValid = false
785+
}
786+
cfgParams.MainOtelTraceInHTTP = otelTraceInHTTP
787+
}
788+
789+
if (cfgParams.MainOtelExporterHeaderName != "" && cfgParams.MainOtelExporterHeaderValue == "") ||
790+
(cfgParams.MainOtelExporterHeaderName == "" && cfgParams.MainOtelExporterHeaderValue != "") {
791+
errorText := "Both 'otel-exporter-header-name' and 'otel-exporter-header-value' must be set or neither"
792+
nl.Error(l, errorText)
793+
eventLog.Event(cfgm, v1.EventTypeWarning, nl.EventReasonInvalidValue, errorText)
794+
otelValid = false
795+
}
796+
797+
if cfgParams.MainOtelExporterEndpoint != "" {
798+
cfgParams.MainOtelLoadModule = true
799+
}
800+
801+
if cfgParams.MainOtelExporterEndpoint == "" &&
802+
(cfgParams.MainOtelExporterTrustedCA != "" ||
803+
cfgParams.MainOtelExporterHeaderName != "" ||
804+
cfgParams.MainOtelExporterHeaderValue != "" ||
805+
cfgParams.MainOtelServiceName != "" ||
806+
cfgParams.MainOtelTraceInHTTP) {
807+
errorText := "ConfigMap key 'otel-exporter-endpoint' is required when other otel fields are set"
808+
nl.Error(l, errorText)
809+
eventLog.Event(cfgm, v1.EventTypeWarning, nl.EventReasonInvalidValue, errorText)
810+
otelValid = false
811+
cfgParams.MainOtelTraceInHTTP = false
812+
}
813+
814+
if !otelValid {
815+
return nil, errors.New("invalid OpenTelemetry configuration")
816+
}
817+
818+
return cfgParams, nil
819+
}
820+
839821
// ParseMGMTConfigMap parses the mgmt block ConfigMap into MGMTConfigParams.
840822
//
841823
//nolint:gocyclo
@@ -988,11 +970,6 @@ func GenerateNginxMainConfig(staticCfgParams *StaticConfigParams, config *Config
988970
ResolverValid: config.ZoneSync.ResolverValid,
989971
}
990972

991-
mainOtelExporterTrustedCA := ""
992-
if config.MainOtelExporterTrustedCA != "" {
993-
mainOtelExporterTrustedCA = fmt.Sprintf("%s-%s-%s", os.Getenv("POD_NAMESPACE"), config.MainOtelExporterTrustedCA, CACrtKey)
994-
}
995-
996973
nginxCfg := &version1.MainConfig{
997974
AccessLog: config.MainAccessLog,
998975
DefaultServerAccessLogOff: config.DefaultServerAccessLogOff,
@@ -1015,9 +992,8 @@ func GenerateNginxMainConfig(staticCfgParams *StaticConfigParams, config *Config
1015992
NginxStatusAllowCIDRs: staticCfgParams.NginxStatusAllowCIDRs,
1016993
NginxStatusPort: staticCfgParams.NginxStatusPort,
1017994
MainOtelLoadModule: config.MainOtelLoadModule,
1018-
MainOtelGlobalTraceEnabled: config.MainOtelGlobalTraceEnabled,
995+
MainOtelGlobalTraceEnabled: config.MainOtelTraceInHTTP,
1019996
MainOtelExporterEndpoint: config.MainOtelExporterEndpoint,
1020-
MainOtelExporterTrustedCA: mainOtelExporterTrustedCA,
1021997
MainOtelExporterHeaderName: config.MainOtelExporterHeaderName,
1022998
MainOtelExporterHeaderValue: config.MainOtelExporterHeaderValue,
1023999
MainOtelServiceName: config.MainOtelServiceName,

0 commit comments

Comments
 (0)