@@ -45,34 +45,37 @@ func (t *Translator) translateSecret(tctx *TranslateContext, listener gatewayv1.
4545 if ref .Namespace != nil {
4646 ns = string (* ref .Namespace )
4747 }
48- sslObj := & v1.Ssl {
49- Snis : []string {},
48+ if listener .TLS .CertificateRefs [0 ].Kind != nil && * listener .TLS .CertificateRefs [0 ].Kind == "Secret" {
49+ sslObj := & v1.Ssl {
50+ Snis : []string {},
51+ }
52+ name := listener .TLS .CertificateRefs [0 ].Name
53+ secret := tctx .Secrets [types.NamespacedName {Namespace : ns , Name : string (ref .Name )}]
54+ if secret .Data == nil {
55+ log .Error ("secret data is nil" , "secret" , secret )
56+ return nil , fmt .Errorf ("no secret data found for %s/%s" , ns , name )
57+ }
58+ cert , key , err := extractKeyPair (secret , true )
59+ if err != nil {
60+ return nil , err
61+ }
62+ sslObj .Cert = string (cert )
63+ sslObj .Key = string (key )
64+ // Dashboard doesn't allow wildcard hostname
65+ if listener .Hostname != nil && * listener .Hostname != "" {
66+ sslObj .Snis = append (sslObj .Snis , string (* listener .Hostname ))
67+ }
68+ hosts , err := extractHost (cert )
69+ if err != nil {
70+ return nil , err
71+ }
72+ sslObj .Snis = append (sslObj .Snis , hosts ... )
73+ // Note: Dashboard doesn't allow duplicate certificate across ssl objects
74+ sslObj .ID = id .GenID (sslObj .Cert )
75+ sslObj .Labels = label .GenLabel (obj )
76+ sslObjs = append (sslObjs , sslObj )
5077 }
51- name := listener .TLS .CertificateRefs [0 ].Name
52- secret := tctx .Secrets [types.NamespacedName {Namespace : ns , Name : string (ref .Name )}]
53- if secret .Data == nil {
54- log .Error ("secret data is nil" , "secret" , secret )
55- return nil , fmt .Errorf ("no secret data found for %s/%s" , ns , name )
56- }
57- cert , key , err := extractKeyPair (secret , true )
58- if err != nil {
59- return nil , err
60- }
61- sslObj .Cert = string (cert )
62- sslObj .Key = string (key )
63- // Dashboard doesn't allow wildcard hostname
64- if listener .Hostname != nil && * listener .Hostname != "" {
65- sslObj .Snis = append (sslObj .Snis , string (* listener .Hostname ))
66- }
67- hosts , err := extractHost (cert )
68- if err != nil {
69- return nil , err
70- }
71- sslObj .Snis = append (sslObj .Snis , hosts ... )
72- // Note: Dashboard doesn't allow duplicate certificate across ssl objects
73- sslObj .ID = id .GenID (sslObj .Cert )
74- sslObj .Labels = label .GenLabel (obj )
75- sslObjs = append (sslObjs , sslObj )
78+
7679 }
7780 // Only supported on TLSRoute. The certificateRefs field is ignored in this mode.
7881 case gatewayv1 .TLSModePassthrough :
0 commit comments