diff --git a/pkg/ingress/apisix_upstream.go b/pkg/ingress/apisix_upstream.go index 790ca33654..3a1aab2711 100644 --- a/pkg/ingress/apisix_upstream.go +++ b/pkg/ingress/apisix_upstream.go @@ -118,7 +118,7 @@ func (c *apisixUpstreamController) sync(ctx context.Context, ev *types.Event) er } var portLevelSettings map[int32]*configv2beta3.ApisixUpstreamConfig - if len(au.Spec.PortLevelSettings) > 0 { + if au.Spec != nil && len(au.Spec.PortLevelSettings) > 0 { portLevelSettings = make(map[int32]*configv2beta3.ApisixUpstreamConfig, len(au.Spec.PortLevelSettings)) for _, port := range au.Spec.PortLevelSettings { portLevelSettings[port.Port] = &port.ApisixUpstreamConfig @@ -135,7 +135,7 @@ func (c *apisixUpstreamController) sync(ctx context.Context, ev *types.Event) er var subsets []configv2beta3.ApisixUpstreamSubset subsets = append(subsets, configv2beta3.ApisixUpstreamSubset{}) - if len(au.Spec.Subsets) > 0 { + if au.Spec != nil && len(au.Spec.Subsets) > 0 { subsets = append(subsets, au.Spec.Subsets...) } clusterName := c.controller.cfg.APISIX.DefaultClusterName @@ -154,7 +154,7 @@ func (c *apisixUpstreamController) sync(ctx context.Context, ev *types.Event) er return err } var newUps *apisixv1.Upstream - if ev.Type != types.EventDelete { + if au.Spec != nil && ev.Type != types.EventDelete { cfg, ok := portLevelSettings[port.Port] if !ok { cfg = &au.Spec.ApisixUpstreamConfig diff --git a/pkg/ingress/controller.go b/pkg/ingress/controller.go index dc44239858..917fd6188b 100644 --- a/pkg/ingress/controller.go +++ b/pkg/ingress/controller.go @@ -577,7 +577,7 @@ func (c *Controller) syncEndpoint(ctx context.Context, ep kube.Endpoint) error { log.Errorf("failed to get ApisixUpstream %s/%s: %s", ep.Namespace(), svcName, err) return err } - } else if len(au.Spec.Subsets) > 0 { + } else if au.Spec != nil && len(au.Spec.Subsets) > 0 { subsets = append(subsets, au.Spec.Subsets...) } diff --git a/pkg/kube/translation/translator.go b/pkg/kube/translation/translator.go index 8d48bbcb2e..a4d2ad5d1b 100644 --- a/pkg/kube/translation/translator.go +++ b/pkg/kube/translation/translator.go @@ -186,7 +186,7 @@ func (t *translator) TranslateUpstream(namespace, name, subset string, port int3 if err != nil { return nil, err } - if au == nil { + if au == nil || au.Spec == nil { ups.Nodes = nodes return ups, nil }