Surpport snippet for server section by the annotation of the ingess
This commit is contained in:
parent
37bd14dcd2
commit
407d8535da
6 changed files with 137 additions and 0 deletions
|
|
@ -36,6 +36,7 @@ import (
|
|||
"k8s.io/ingress/core/pkg/ingress/annotations/redirect"
|
||||
"k8s.io/ingress/core/pkg/ingress/annotations/rewrite"
|
||||
"k8s.io/ingress/core/pkg/ingress/annotations/secureupstream"
|
||||
"k8s.io/ingress/core/pkg/ingress/annotations/serversnippet"
|
||||
"k8s.io/ingress/core/pkg/ingress/annotations/serviceupstream"
|
||||
"k8s.io/ingress/core/pkg/ingress/annotations/sessionaffinity"
|
||||
"k8s.io/ingress/core/pkg/ingress/annotations/snippet"
|
||||
|
|
@ -83,6 +84,7 @@ func newAnnotationExtractor(cfg extractorConfig) annotationExtractor {
|
|||
"DefaultBackend": defaultbackend.NewParser(cfg),
|
||||
"UpstreamVhost": upstreamvhost.NewParser(),
|
||||
"VtsFilterKey": vtsfilterkey.NewParser(),
|
||||
"ServerSnippet": serversnippet.NewParser(),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
@ -128,6 +130,7 @@ const (
|
|||
serverAlias = "Alias"
|
||||
clientBodyBufferSize = "ClientBodyBufferSize"
|
||||
certificateAuth = "CertificateAuth"
|
||||
serverSnippet = "ServerSnippet"
|
||||
)
|
||||
|
||||
func (e *annotationExtractor) ServiceUpstream(ing *extensions.Ingress) bool {
|
||||
|
|
@ -181,3 +184,8 @@ func (e *annotationExtractor) CertificateAuth(ing *extensions.Ingress) *authtls.
|
|||
secure := val.(*authtls.AuthSSLConfig)
|
||||
return secure
|
||||
}
|
||||
|
||||
func (e *annotationExtractor) ServerSnippet(ing *extensions.Ingress) string {
|
||||
val, _ := e.annotations[serverSnippet].Parse(ing)
|
||||
return val.(string)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1065,6 +1065,28 @@ func (ic *GenericController) createServers(data []interface{},
|
|||
servers[host].Alias = ""
|
||||
}
|
||||
}
|
||||
|
||||
// configure server snippet
|
||||
for _, ingIf := range data {
|
||||
ing := ingIf.(*extensions.Ingress)
|
||||
if !class.IsValid(ing, ic.cfg.IngressClass, ic.cfg.DefaultIngressClass) {
|
||||
continue
|
||||
}
|
||||
|
||||
for _, rule := range ing.Spec.Rules {
|
||||
host := rule.Host
|
||||
if host == "" {
|
||||
host = defServerName
|
||||
}
|
||||
|
||||
srvsnippet := ic.annotations.ServerSnippet(ing)
|
||||
// only add a server snippet if the server does not have one previously configured
|
||||
|
||||
if servers[host].ServerSnippet == "" && srvsnippet != "" {
|
||||
servers[host].ServerSnippet = srvsnippet
|
||||
}
|
||||
}
|
||||
}
|
||||
return servers
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue