Add --disable-catch-all option to disable catch-all server
This commit is contained in:
parent
4e98666720
commit
1678d99a03
9 changed files with 172 additions and 10 deletions
|
|
@ -97,6 +97,8 @@ type Configuration struct {
|
|||
SyncRateLimit float32
|
||||
|
||||
DynamicCertificatesEnabled bool
|
||||
|
||||
DisableCatchAll bool
|
||||
}
|
||||
|
||||
// GetPublishService returns the Service used to set the load-balancer status of Ingresses.
|
||||
|
|
|
|||
|
|
@ -915,7 +915,8 @@ func newNGINXController(t *testing.T) *NGINXController {
|
|||
fs,
|
||||
channels.NewRingChannel(10),
|
||||
false,
|
||||
pod)
|
||||
pod,
|
||||
false)
|
||||
|
||||
config := &Configuration{
|
||||
ListenPorts: &ngx_config.ListenPorts{
|
||||
|
|
|
|||
|
|
@ -127,7 +127,8 @@ func NewNGINXController(config *Configuration, mc metric.Collector, fs file.File
|
|||
fs,
|
||||
n.updateCh,
|
||||
config.DynamicCertificatesEnabled,
|
||||
pod)
|
||||
pod,
|
||||
config.DisableCatchAll)
|
||||
|
||||
n.syncQueue = task.NewTaskQueue(n.syncIngress)
|
||||
|
||||
|
|
|
|||
|
|
@ -232,7 +232,8 @@ func New(checkOCSP bool,
|
|||
fs file.Filesystem,
|
||||
updateCh *channels.RingChannel,
|
||||
isDynamicCertificatesEnabled bool,
|
||||
pod *k8s.PodInfo) Storer {
|
||||
pod *k8s.PodInfo,
|
||||
disableCatchAll bool) Storer {
|
||||
|
||||
store := &k8sStore{
|
||||
isOCSPCheckEnabled: checkOCSP,
|
||||
|
|
@ -310,6 +311,10 @@ func New(checkOCSP bool,
|
|||
klog.Infof("ignoring add for ingress %v based on annotation %v with value %v", ing.Name, class.IngressKey, a)
|
||||
return
|
||||
}
|
||||
if ing.Spec.Backend != nil && disableCatchAll {
|
||||
klog.Infof("ignoring add for catch-all ingress %v/%v because of --disable-catch-all", ing.Namespace, ing.Name)
|
||||
return
|
||||
}
|
||||
recorder.Eventf(ing, corev1.EventTypeNormal, "CREATE", fmt.Sprintf("Ingress %s/%s", ing.Namespace, ing.Name))
|
||||
|
||||
store.syncIngress(ing)
|
||||
|
|
@ -340,6 +345,10 @@ func New(checkOCSP bool,
|
|||
klog.Infof("ignoring delete for ingress %v based on annotation %v", ing.Name, class.IngressKey)
|
||||
return
|
||||
}
|
||||
if ing.Spec.Backend != nil && disableCatchAll {
|
||||
klog.Infof("ignoring delete for catch-all ingress %v/%v because of --disable-catch-all", ing.Namespace, ing.Name)
|
||||
return
|
||||
}
|
||||
recorder.Eventf(ing, corev1.EventTypeNormal, "DELETE", fmt.Sprintf("Ingress %s/%s", ing.Namespace, ing.Name))
|
||||
|
||||
store.listers.IngressWithAnnotation.Delete(ing)
|
||||
|
|
@ -358,13 +367,27 @@ func New(checkOCSP bool,
|
|||
validOld := class.IsValid(oldIng)
|
||||
validCur := class.IsValid(curIng)
|
||||
if !validOld && validCur {
|
||||
if curIng.Spec.Backend != nil && disableCatchAll {
|
||||
klog.Infof("ignoring update for catch-all ingress %v/%v because of --disable-catch-all", curIng.Namespace, curIng.Name)
|
||||
return
|
||||
}
|
||||
|
||||
klog.Infof("creating ingress %v based on annotation %v", curIng.Name, class.IngressKey)
|
||||
recorder.Eventf(curIng, corev1.EventTypeNormal, "CREATE", fmt.Sprintf("Ingress %s/%s", curIng.Namespace, curIng.Name))
|
||||
} else if validOld && !validCur {
|
||||
klog.Infof("removing ingress %v based on annotation %v", curIng.Name, class.IngressKey)
|
||||
// FIXME: this does not actually delete the Ingress resource.
|
||||
// The existing one will be updated with latest changes and invalid ingress.class will be missed.
|
||||
recorder.Eventf(curIng, corev1.EventTypeNormal, "DELETE", fmt.Sprintf("Ingress %s/%s", curIng.Namespace, curIng.Name))
|
||||
} else if validCur && !reflect.DeepEqual(old, cur) {
|
||||
recorder.Eventf(curIng, corev1.EventTypeNormal, "UPDATE", fmt.Sprintf("Ingress %s/%s", curIng.Namespace, curIng.Name))
|
||||
if curIng.Spec.Backend != nil && disableCatchAll {
|
||||
klog.Infof("ignoring update for catch-all ingress %v/%v because of --disable-catch-all", curIng.Namespace, curIng.Name)
|
||||
// FIXME: this does not actually delete the Ingress resource.
|
||||
// The existing one will be updated with latest changes.
|
||||
recorder.Eventf(curIng, corev1.EventTypeNormal, "DELETE", fmt.Sprintf("Ingress %s/%s", curIng.Namespace, curIng.Name))
|
||||
} else {
|
||||
recorder.Eventf(curIng, corev1.EventTypeNormal, "UPDATE", fmt.Sprintf("Ingress %s/%s", curIng.Namespace, curIng.Name))
|
||||
}
|
||||
} else {
|
||||
klog.Infof("ignoring ingress %v based on annotation %v", curIng.Name, class.IngressKey)
|
||||
return
|
||||
|
|
|
|||
|
|
@ -82,7 +82,8 @@ func TestStore(t *testing.T) {
|
|||
fs,
|
||||
updateCh,
|
||||
false,
|
||||
pod)
|
||||
pod,
|
||||
false)
|
||||
|
||||
storer.Run(stopCh)
|
||||
|
||||
|
|
@ -163,7 +164,8 @@ func TestStore(t *testing.T) {
|
|||
fs,
|
||||
updateCh,
|
||||
false,
|
||||
pod)
|
||||
pod,
|
||||
false)
|
||||
|
||||
storer.Run(stopCh)
|
||||
|
||||
|
|
@ -316,7 +318,8 @@ func TestStore(t *testing.T) {
|
|||
fs,
|
||||
updateCh,
|
||||
false,
|
||||
pod)
|
||||
pod,
|
||||
false)
|
||||
|
||||
storer.Run(stopCh)
|
||||
|
||||
|
|
@ -424,7 +427,8 @@ func TestStore(t *testing.T) {
|
|||
fs,
|
||||
updateCh,
|
||||
false,
|
||||
pod)
|
||||
pod,
|
||||
false)
|
||||
|
||||
storer.Run(stopCh)
|
||||
|
||||
|
|
@ -514,7 +518,8 @@ func TestStore(t *testing.T) {
|
|||
fs,
|
||||
updateCh,
|
||||
false,
|
||||
pod)
|
||||
pod,
|
||||
false)
|
||||
|
||||
storer.Run(stopCh)
|
||||
|
||||
|
|
@ -627,7 +632,8 @@ func TestStore(t *testing.T) {
|
|||
fs,
|
||||
updateCh,
|
||||
false,
|
||||
pod)
|
||||
pod,
|
||||
false)
|
||||
|
||||
storer.Run(stopCh)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue