8
8
"encoding/pem"
9
9
"fmt"
10
10
"os"
11
- "sort"
12
11
"strings"
13
12
14
13
"github.com/nginxinc/kubernetes-ingress/internal/k8s/secrets"
@@ -65,6 +64,14 @@ const (
65
64
spiffeKeyFileMode = os .FileMode (0600 )
66
65
)
67
66
67
+ // ExtendedResources holds all extended configuration resources, for which Configurator configures NGINX.
68
+ type ExtendedResources struct {
69
+ IngressExes []* IngressEx
70
+ MergeableIngresses []* MergeableIngresses
71
+ VirtualServerExes []* VirtualServerEx
72
+ TransportServerExes []* TransportServerEx
73
+ }
74
+
68
75
type tlsPassthroughPair struct {
69
76
Host string
70
77
UnixSocket string
@@ -550,8 +557,7 @@ func (cnf *Configurator) AddOrUpdateTransportServer(transportServerEx *Transport
550
557
func (cnf * Configurator ) addOrUpdateTransportServer (transportServerEx * TransportServerEx ) error {
551
558
name := getFileNameForTransportServer (transportServerEx .TransportServer )
552
559
553
- listener := cnf .globalCfgParams .Listeners [transportServerEx .TransportServer .Spec .Listener .Name ]
554
- tsCfg := generateTransportServerConfig (transportServerEx , listener .Port , cnf .isPlus )
560
+ tsCfg := generateTransportServerConfig (transportServerEx , transportServerEx .ListenerPort , cnf .isPlus )
555
561
556
562
content , err := cnf .templateExecutorV2 .ExecuteTransportServerTemplate (& tsCfg )
557
563
if err != nil {
@@ -590,11 +596,7 @@ func (cnf *Configurator) GetVirtualServerRoutesForVirtualServer(key string) []*c
590
596
}
591
597
592
598
func (cnf * Configurator ) updateTLSPassthroughHostsConfig () error {
593
- cfg , duplicatedHosts := generateTLSPassthroughHostsConfig (cnf .tlsPassthroughPairs )
594
-
595
- for _ , host := range duplicatedHosts {
596
- glog .Warningf ("host %s is used by more than one TransportServers" , host )
597
- }
599
+ cfg := generateTLSPassthroughHostsConfig (cnf .tlsPassthroughPairs )
598
600
599
601
content , err := cnf .templateExecutorV2 .ExecuteTLSPassthroughHostsTemplate (cfg )
600
602
if err != nil {
@@ -606,30 +608,14 @@ func (cnf *Configurator) updateTLSPassthroughHostsConfig() error {
606
608
return nil
607
609
}
608
610
609
- func generateTLSPassthroughHostsConfig (tlsPassthroughPairs map [string ]tlsPassthroughPair ) (* version2.TLSPassthroughHostsConfig , []string ) {
610
- var keys []string
611
-
612
- for key := range tlsPassthroughPairs {
613
- keys = append (keys , key )
614
- }
615
-
616
- // we sort the keys of tlsPassthroughPairs so that we get the same result for the same input
617
- sort .Strings (keys )
618
-
611
+ func generateTLSPassthroughHostsConfig (tlsPassthroughPairs map [string ]tlsPassthroughPair ) * version2.TLSPassthroughHostsConfig {
619
612
cfg := version2.TLSPassthroughHostsConfig {}
620
- var duplicatedHosts []string
621
-
622
- for _ , key := range keys {
623
- pair := tlsPassthroughPairs [key ]
624
-
625
- if _ , exists := cfg [pair .Host ]; exists {
626
- duplicatedHosts = append (duplicatedHosts , pair .Host )
627
- }
628
613
614
+ for _ , pair := range tlsPassthroughPairs {
629
615
cfg [pair .Host ] = pair .UnixSocket
630
616
}
631
617
632
- return & cfg , duplicatedHosts
618
+ return & cfg
633
619
}
634
620
635
621
func (cnf * Configurator ) addOrUpdateCASecret (secret * api_v1.Secret ) string {
@@ -645,33 +631,40 @@ func (cnf *Configurator) addOrUpdateJWKSecret(secret *api_v1.Secret) string {
645
631
}
646
632
647
633
// AddOrUpdateResources adds or updates configuration for resources.
648
- func (cnf * Configurator ) AddOrUpdateResources (ingExes [] * IngressEx , mergeableIngresses [] * MergeableIngresses , virtualServerExes [] * VirtualServerEx ) (Warnings , error ) {
634
+ func (cnf * Configurator ) AddOrUpdateResources (resources ExtendedResources ) (Warnings , error ) {
649
635
allWarnings := newWarnings ()
650
636
651
- for _ , ingEx := range ingExes {
637
+ for _ , ingEx := range resources . IngressExes {
652
638
warnings , err := cnf .addOrUpdateIngress (ingEx )
653
639
if err != nil {
654
640
return allWarnings , fmt .Errorf ("Error adding or updating ingress %v/%v: %v" , ingEx .Ingress .Namespace , ingEx .Ingress .Name , err )
655
641
}
656
642
allWarnings .Add (warnings )
657
643
}
658
644
659
- for _ , m := range mergeableIngresses {
645
+ for _ , m := range resources . MergeableIngresses {
660
646
warnings , err := cnf .addOrUpdateMergeableIngress (m )
661
647
if err != nil {
662
648
return allWarnings , fmt .Errorf ("Error adding or updating mergeableIngress %v/%v: %v" , m .Master .Ingress .Namespace , m .Master .Ingress .Name , err )
663
649
}
664
650
allWarnings .Add (warnings )
665
651
}
666
652
667
- for _ , vsEx := range virtualServerExes {
653
+ for _ , vsEx := range resources . VirtualServerExes {
668
654
warnings , err := cnf .addOrUpdateVirtualServer (vsEx )
669
655
if err != nil {
670
656
return allWarnings , fmt .Errorf ("Error adding or updating VirtualServer %v/%v: %v" , vsEx .VirtualServer .Namespace , vsEx .VirtualServer .Name , err )
671
657
}
672
658
allWarnings .Add (warnings )
673
659
}
674
660
661
+ for _ , tsEx := range resources .TransportServerExes {
662
+ err := cnf .addOrUpdateTransportServer (tsEx )
663
+ if err != nil {
664
+ return allWarnings , fmt .Errorf ("Error adding or updating TransportServer %v/%v: %v" , tsEx .TransportServer .Namespace , tsEx .TransportServer .Name , err )
665
+ }
666
+ }
667
+
675
668
if err := cnf .nginxManager .Reload (nginx .ReloadForOtherUpdate ); err != nil {
676
669
return allWarnings , fmt .Errorf ("Error when reloading NGINX when updating resources: %v" , err )
677
670
}
@@ -1080,36 +1073,26 @@ func (cnf *Configurator) UpdateConfig(cfgParams *ConfigParams, ingExes []*Ingres
1080
1073
return allWarnings , nil
1081
1074
}
1082
1075
1083
- // UpdateGlobalConfiguration updates NGINX config based on the changes to the GlobalConfiguration resource.
1084
- // Currently, changes to the GlobalConfiguration only affect TransportServer resources.
1085
- // As a result of the changes, the configuration for TransportServers is updated and some TransportServers
1086
- // might be removed from NGINX.
1087
- func (cnf * Configurator ) UpdateGlobalConfiguration (globalConfiguration * conf_v1alpha1.GlobalConfiguration ,
1088
- transportServerExes []* TransportServerEx ) (updatedTransportServerExes []* TransportServerEx , deletedTransportServerExes []* TransportServerEx , err error ) {
1089
- cnf .globalCfgParams = ParseGlobalConfiguration (globalConfiguration , cnf .staticCfgParams .TLSPassthrough )
1090
-
1091
- for _ , tsEx := range transportServerExes {
1092
- if cnf .CheckIfListenerExists (& tsEx .TransportServer .Spec .Listener ) {
1093
- updatedTransportServerExes = append (updatedTransportServerExes , tsEx )
1094
-
1095
- err := cnf .addOrUpdateTransportServer (tsEx )
1096
- if err != nil {
1097
- return updatedTransportServerExes , deletedTransportServerExes , fmt .Errorf ("Error when updating global configuration: %v" , err )
1098
- }
1076
+ func (cnf * Configurator ) UpdateTransportServers (updatedTSExes []* TransportServerEx , deletedKeys []string ) error {
1077
+ for _ , tsEx := range updatedTSExes {
1078
+ err := cnf .addOrUpdateTransportServer (tsEx )
1079
+ if err != nil {
1080
+ return fmt .Errorf ("Error adding or updating TransportServer %v/%v: %v" , tsEx .TransportServer .Namespace , tsEx .TransportServer .Name , err )
1081
+ }
1082
+ }
1099
1083
1100
- } else {
1101
- deletedTransportServerExes = append (deletedTransportServerExes , tsEx )
1102
- if err != nil {
1103
- return updatedTransportServerExes , deletedTransportServerExes , fmt .Errorf ("Error when updating global configuration: %v" , err )
1104
- }
1084
+ for _ , key := range deletedKeys {
1085
+ err := cnf .deleteTransportServer (key )
1086
+ if err != nil {
1087
+ return fmt .Errorf ("Error when removing TransportServer %v: %v" , key , err )
1105
1088
}
1106
1089
}
1107
1090
1108
1091
if err := cnf .nginxManager .Reload (nginx .ReloadForOtherUpdate ); err != nil {
1109
- return updatedTransportServerExes , deletedTransportServerExes , fmt .Errorf ("Error when updating global configuration : %v" , err )
1092
+ return fmt .Errorf ("Error when updating TransportServers : %v" , err )
1110
1093
}
1111
1094
1112
- return updatedTransportServerExes , deletedTransportServerExes , nil
1095
+ return nil
1113
1096
}
1114
1097
1115
1098
func keyToFileName (key string ) string {
0 commit comments