Skip to content

Commit 18576ae

Browse files
committed
fix: review
Signed-off-by: ashing <[email protected]>
1 parent 97e563f commit 18576ae

File tree

7 files changed

+69
-30
lines changed

7 files changed

+69
-30
lines changed

internal/controller/config/config.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,3 +174,7 @@ func GetIngressPublishService() string {
174174
func GetIngressStatusAddress() []string {
175175
return ControllerConfig.IngressStatusAddress
176176
}
177+
178+
func GetControllerName() string {
179+
return ControllerConfig.ControllerName
180+
}

internal/controller/indexer/indexer.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const (
1616
ParentRefs = "parentRefs"
1717
IngressClass = "ingressClass"
1818
SecretIndexRef = "secretRefs"
19+
IngressClassRef = "ingressClassRef"
1920
)
2021

2122
func SetupIndexer(mgr ctrl.Manager) error {
@@ -78,8 +79,8 @@ func setupIngressIndexer(mgr ctrl.Manager) error {
7879
if err := mgr.GetFieldIndexer().IndexField(
7980
context.Background(),
8081
&networkingv1.Ingress{},
81-
IngressClass,
82-
IngressClassIndexFunc,
82+
IngressClassRef,
83+
IngressClassRefIndexFunc,
8384
); err != nil {
8485
return err
8586
}
@@ -104,10 +105,29 @@ func setupIngressIndexer(mgr ctrl.Manager) error {
104105
return err
105106
}
106107

108+
// create IngressClass index
109+
if err := mgr.GetFieldIndexer().IndexField(
110+
context.Background(),
111+
&networkingv1.IngressClass{},
112+
IngressClass,
113+
IngressClassIndexFunc,
114+
); err != nil {
115+
return err
116+
}
117+
107118
return nil
108119
}
109120

110121
func IngressClassIndexFunc(rawObj client.Object) []string {
122+
ingressClass := rawObj.(*networkingv1.IngressClass)
123+
if ingressClass.Spec.Controller == "" {
124+
return nil
125+
}
126+
controllerName := ingressClass.Spec.Controller
127+
return []string{controllerName}
128+
}
129+
130+
func IngressClassRefIndexFunc(rawObj client.Object) []string {
111131
ingress := rawObj.(*networkingv1.Ingress)
112132
if ingress.Spec.IngressClassName == nil {
113133
return nil

internal/controller/ingress_controller.go

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ import (
2424
"sigs.k8s.io/controller-runtime/pkg/reconcile"
2525
)
2626

27-
// +kubebuilder:rbac:groups=networking.k8s.io,resources=ingresses,verbs=get;list;watch;update
28-
// +kubebuilder:rbac:groups=networking.k8s.io,resources=ingresses/status,verbs=get;update
29-
// +kubebuilder:rbac:groups=networking.k8s.io,resources=ingressclasses,verbs=get;list;watch
30-
3127
// IngressReconciler reconciles a Ingress object.
3228
type IngressReconciler struct { //nolint:revive
3329
client.Client
@@ -128,7 +124,9 @@ func (r *IngressReconciler) checkIngressClass(obj client.Object) bool {
128124
// handle the case where IngressClassName is not specified
129125
// find all ingress classes and check if any of them is marked as default
130126
ingressClassList := &networkingv1.IngressClassList{}
131-
if err := r.List(context.Background(), ingressClassList); err != nil {
127+
if err := r.List(context.Background(), ingressClassList, client.MatchingFields{
128+
indexer.IngressClass: config.GetControllerName(),
129+
}); err != nil {
132130
r.Log.Error(err, "failed to list ingress classes")
133131
return false
134132
}
@@ -310,7 +308,10 @@ func (r *IngressReconciler) processBackendService(ctx context.Context, tctx *pro
310308
Namespace: namespace,
311309
Name: backendService.Name,
312310
}, &service); err != nil {
313-
r.Log.Error(err, "failed to get service", "namespace", namespace, "name", backendService.Name)
311+
if client.IgnoreNotFound(err) == nil {
312+
r.Log.Info("service not found", "namespace", namespace, "name", backendService.Name)
313+
return nil
314+
}
314315
return err
315316
}
316317

@@ -392,8 +393,7 @@ func (r *IngressReconciler) updateStatus(ctx context.Context, ingress *networkin
392393
return fmt.Errorf("failed to get publish service %s: %w", publishService, err)
393394
}
394395

395-
if svc.Spec.Type != corev1.ServiceTypeLoadBalancer {
396-
r.Log.Error(fmt.Errorf("publish service %s is not a load balancer service", publishService), "publish service is not a load balancer service")
396+
if svc.Spec.Type == corev1.ServiceTypeLoadBalancer {
397397
// get the LoadBalancer IP and Hostname of the service
398398
for _, ip := range svc.Status.LoadBalancer.Ingress {
399399
if ip.IP != "" {
@@ -408,20 +408,6 @@ func (r *IngressReconciler) updateStatus(ctx context.Context, ingress *networkin
408408
}
409409
}
410410
}
411-
412-
} else {
413-
// 3. if the PublishService is not configured, try to use the Gateway's Addresses
414-
cfg := config.GetFirstGatewayConfig()
415-
if cfg != nil {
416-
for _, addr := range cfg.Addresses {
417-
if addr == "" {
418-
continue
419-
}
420-
loadBalancerStatus.Ingress = append(loadBalancerStatus.Ingress, networkingv1.IngressLoadBalancerIngress{
421-
IP: addr,
422-
})
423-
}
424-
}
425411
}
426412
}
427413

internal/manager/controllers.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ import (
3333
// +kubebuilder:rbac:groups=gateway.networking.k8s.io,resources=httproutes,verbs=get;list;watch
3434
// +kubebuilder:rbac:groups=gateway.networking.k8s.io,resources=httproutes/status,verbs=get;update
3535

36+
// Networking
37+
// +kubebuilder:rbac:groups=networking.k8s.io,resources=ingresses,verbs=get;list;watch;update
38+
// +kubebuilder:rbac:groups=networking.k8s.io,resources=ingresses/status,verbs=get;update
39+
// +kubebuilder:rbac:groups=networking.k8s.io,resources=ingressclasses,verbs=get;list;watch
40+
3641
type Controller interface {
3742
SetupWithManager(mgr manager.Manager) error
3843
}

test/e2e/framework/consts.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ import (
66
)
77

88
const (
9-
DashboardEndpoint = "http://api7ee3-dashboard.api7-ee-e2e:7080"
10-
DashboardTLSEndpoint = "https://api7ee3-dashboard.api7-ee-e2e:7443"
9+
DashboardEndpoint = "http://api7ee3-dashboard.api7-ee-e2e-test:7080"
10+
DashboardTLSEndpoint = "https://api7ee3-dashboard.api7-ee-e2e-test:7443"
1111
DataPlaneEndpoint = "http://api7ee3-apisix-gateway:80" // has two instances
1212
DataPlaneForIngressEndpoint = "http://api7ee3-apisix-gateway-ingress:80" // only one instances
1313
DataPlaneForIngressHost = "api7ee3-apisix-gateway-ingress"
1414
DataPlaneTcpPort = 9100
1515
MTLSDataPlaneHost = "api7ee3-apisix-gateway-mtls"
1616
MTLSDataPlaneEndpoint = "http://api7ee3-apisix-gateway-mtls:80" // only one instance
1717
PrometheusEndpoint = "http://api7-prometheus-server:9090"
18-
DPManagerEndpoint = "http://api7ee3-dp-manager.api7-ee-e2e:7900"
19-
DPManagerTLSEndpoint = "https://api7ee3-dp-manager.api7-ee-e2e:7943"
18+
DPManagerEndpoint = "http://api7ee3-dp-manager.api7-ee-e2e-test:7900"
19+
DPManagerTLSEndpoint = "https://api7ee3-dp-manager.api7-ee-e2e-test:7943"
2020
VaultEndpoint = "http://api7ee3-vault:8200"
2121
KeycloakEndpoint = "http://api7ee3-keycloak:80"
2222
)

test/e2e/framework/framework.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
)
2121

2222
var (
23-
_namespace = "api7-ee-e2e"
23+
_namespace = "api7-ee-e2e-test"
2424
_framework *Framework
2525
)
2626

test/e2e/framework/manifests/ingress.yaml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,30 @@ rules:
184184
verbs:
185185
- get
186186
- update
187+
- apiGroups:
188+
- networking.k8s.io
189+
resources:
190+
- ingressclasses
191+
verbs:
192+
- get
193+
- list
194+
- watch
195+
- apiGroups:
196+
- networking.k8s.io
197+
resources:
198+
- ingresses
199+
verbs:
200+
- get
201+
- list
202+
- update
203+
- watch
204+
- apiGroups:
205+
- networking.k8s.io
206+
resources:
207+
- ingresses/status
208+
verbs:
209+
- get
210+
- update
187211
---
188212
apiVersion: rbac.authorization.k8s.io/v1
189213
kind: ClusterRole
@@ -360,4 +384,4 @@ spec:
360384
configMap:
361385
name: ingress-config
362386
serviceAccountName: api7-ingress-controller-manager
363-
terminationGracePeriodSeconds: 10
387+
terminationGracePeriodSeconds: 10

0 commit comments

Comments
 (0)