Add stream-snippet as a ConfigMap and Annotation option (#8029)

* stream snippet

* gofmt -s
This commit is contained in:
Tobias Salzmann 2021-12-23 20:46:30 +01:00 committed by GitHub
parent cf6ea08739
commit ce9deaa332
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 386 additions and 4 deletions

View file

@ -659,6 +659,9 @@ type Configuration struct {
// ServerSnippet adds custom configuration to all the servers in the nginx configuration
ServerSnippet string `json:"server-snippet"`
// StreamSnippet adds custom configuration to the stream section of the nginx configuration
StreamSnippet string `json:"stream-snippet"`
// LocationSnippet adds custom configuration to all the locations in the nginx configuration
LocationSnippet string `json:"location-snippet"`
@ -956,10 +959,11 @@ type TemplateConfig struct {
MaxmindEditionFiles *[]string
MonitorMaxBatchSize int
PID string
StatusPath string
StatusPort int
StreamPort int
PID string
StatusPath string
StatusPort int
StreamPort int
StreamSnippets []string
}
// ListenPorts describe the ports required to run the

View file

@ -538,6 +538,7 @@ func (n *NGINXController) getConfiguration(ingresses []*ingress.Ingress) (sets.S
PassthroughBackends: passUpstreams,
BackendConfigChecksum: n.store.GetBackendConfiguration().Checksum,
DefaultSSLCertificate: n.getDefaultSSLCertificate(),
StreamSnippets: n.getStreamSnippets(ingresses),
}
}
@ -562,6 +563,11 @@ func dropSnippetDirectives(anns *annotations.Ingress, ingKey string) {
anns.ExternalAuth.AuthSnippet = ""
}
if anns.StreamSnippet != "" {
klog.V(3).Infof("Ingress %q tried to use stream-snippet and the annotation is disabled by the admin. Removing the annotation", ingKey)
anns.StreamSnippet = ""
}
}
}
@ -1779,3 +1785,14 @@ func ingressForHostPath(hostname, path string, servers []*ingress.Server) []*net
return ingresses
}
func (n *NGINXController) getStreamSnippets(ingresses []*ingress.Ingress) []string {
snippets := make([]string, 0, len(ingresses))
for _, i := range ingresses {
if i.ParsedAnnotations.StreamSnippet == "" {
continue
}
snippets = append(snippets, i.ParsedAnnotations.StreamSnippet)
}
return snippets
}

View file

@ -599,6 +599,7 @@ func (n NGINXController) generateTemplate(cfg ngx_config.Configuration, ingressC
StatusPath: nginx.StatusPath,
StatusPort: nginx.StatusPort,
StreamPort: nginx.StreamPort,
StreamSnippets: append(ingressCfg.StreamSnippets, cfg.StreamSnippet),
}
tc.Cfg.Checksum = ingressCfg.ConfigurationChecksum