@@ -111,6 +111,7 @@ func (s *StateStore) BuildState(ingressClass *networkingv1.IngressClass) error {
111111
112112 for _ , ing := range ingressGroup {
113113 hostSecretMap := make (map [string ]string )
114+ tlsConfiguredHosts := sets .NewString ()
114115 desiredPorts := sets .NewInt32 ()
115116 // we always expect the default_ingress backendset
116117 desiredBackendSets := sets .NewString (DefaultIngressName )
@@ -119,24 +120,33 @@ func (s *StateStore) BuildState(ingressClass *networkingv1.IngressClass) error {
119120 ingressTls := ing .Spec .TLS [ingressItem ]
120121 for j := range ingressTls .Hosts {
121122 host := ingressTls .Hosts [j ]
123+ tlsConfiguredHosts .Insert (host )
122124 hostSecretMap [host ] = ingressTls .SecretName
123125 }
124126 }
125127
126128 for _ , rule := range ing .Spec .Rules {
129+ host := rule .Host
130+
127131 for _ , path := range rule .HTTP .Paths {
128132 serviceName , servicePort , err := util .PathToServiceAndPort (ing .Namespace , path , s .ServiceLister )
129133 if err != nil {
130134 return errors .Wrap (err , "error finding service and port" )
131135 }
132136
133- desiredPorts .Insert (servicePort )
134- allListeners .Insert (servicePort )
137+ listenerPort , err := util .DetermineListenerPort (ing , & tlsConfiguredHosts , host , servicePort )
138+ if err != nil {
139+ return errors .Wrap (err , "error determining listener port" )
140+ }
141+
142+ desiredPorts .Insert (listenerPort )
143+ allListeners .Insert (listenerPort )
144+
135145 bsName := util .GenerateBackendSetName (ing .Namespace , serviceName , servicePort )
136146 desiredBackendSets .Insert (bsName )
137147 allBackendSets .Insert (bsName )
138148
139- err = validateListenerProtocol (ing , listenerProtocolMap , servicePort )
149+ err = validateListenerProtocol (ing , listenerProtocolMap , listenerPort )
140150 if err != nil {
141151 return err
142152 }
@@ -153,9 +163,9 @@ func (s *StateStore) BuildState(ingressClass *networkingv1.IngressClass) error {
153163 bsTLSEnabled := util .GetBackendTlsEnabled (ing )
154164 certificateId := util .GetListenerTlsCertificateOcid (ing )
155165 if certificateId != nil {
156- tlsPortDetail , ok := listenerTLSConfigMap [servicePort ]
166+ tlsPortDetail , ok := listenerTLSConfigMap [listenerPort ]
157167 if ok {
158- err = validatePortInUse (tlsPortDetail , "" , certificateId , servicePort )
168+ err = validatePortInUse (tlsPortDetail , "" , certificateId , listenerPort )
159169 if err != nil {
160170 return errors .Wrap (err , "validating certificates" )
161171 }
@@ -164,17 +174,17 @@ func (s *StateStore) BuildState(ingressClass *networkingv1.IngressClass) error {
164174 Type : ArtifactTypeCertificate ,
165175 Artifact : * certificateId ,
166176 }
167- listenerTLSConfigMap [servicePort ] = config
177+ listenerTLSConfigMap [listenerPort ] = config
168178 updateBackendTlsStatus (bsTLSEnabled , bsTLSConfigMap , bsName , config )
169179 }
170180
171- if rule . Host != "" {
172- secretName , ok := hostSecretMap [rule . Host ]
181+ if host != "" {
182+ secretName , ok := hostSecretMap [host ]
173183
174184 if ok && secretName != "" {
175- tlsPortDetail , ok := listenerTLSConfigMap [servicePort ]
185+ tlsPortDetail , ok := listenerTLSConfigMap [listenerPort ]
176186 if ok {
177- err = validatePortInUse (tlsPortDetail , secretName , nil , servicePort )
187+ err = validatePortInUse (tlsPortDetail , secretName , nil , listenerPort )
178188 if err != nil {
179189 return errors .Wrap (err , "validating secrets" )
180190 }
@@ -183,7 +193,7 @@ func (s *StateStore) BuildState(ingressClass *networkingv1.IngressClass) error {
183193 Type : ArtifactTypeSecret ,
184194 Artifact : secretName ,
185195 }
186- listenerTLSConfigMap [servicePort ] = config
196+ listenerTLSConfigMap [listenerPort ] = config
187197 updateBackendTlsStatus (bsTLSEnabled , bsTLSConfigMap , bsName , config )
188198 }
189199 }
0 commit comments