11package nginx
22
33import (
4+ "context"
5+
46 "github.com/Azure/aks-app-routing-operator/pkg/config"
57 "github.com/Azure/aks-app-routing-operator/pkg/controller/ingress"
68 "github.com/Azure/aks-app-routing-operator/pkg/controller/service"
79 "github.com/Azure/aks-app-routing-operator/pkg/manifests"
810 appsv1 "k8s.io/api/apps/v1"
11+ k8serrors "k8s.io/apimachinery/pkg/api/errors"
12+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13+ "k8s.io/client-go/kubernetes"
914 "sigs.k8s.io/controller-runtime/pkg/client"
1015 "sigs.k8s.io/controller-runtime/pkg/manager"
1116)
@@ -19,12 +24,30 @@ type nginx struct {
1924 defaultIngConfig * manifests.NginxIngressConfig
2025}
2126
27+ const (
28+ defaultIcName = "webapprouting.kubernetes.azure.com"
29+ )
30+
2231// New starts all resources required for provisioning Nginx ingresses and the configs used for those ingresses
2332func New (m manager.Manager , conf * config.Config , self * appsv1.Deployment ) ([]* manifests.NginxIngressConfig , error ) {
33+ kcs , err := kubernetes .NewForConfig (m .GetConfig ()) // need to use config since manager hasn't started yet
34+ if err != nil {
35+ return nil , err
36+ }
37+
38+ defaultControllerClass := "webapprouting.kubernetes.azure.com/nginx"
39+ defaultIc , err := kcs .NetworkingV1 ().IngressClasses ().Get (context .Background (), defaultIcName , metav1.GetOptions {})
40+ if err == nil {
41+ defaultControllerClass = defaultIc .Spec .Controller
42+ }
43+ if err != nil && ! k8serrors .IsNotFound (err ) {
44+ return nil , err
45+ }
46+
2447 defaultIngConfig := & manifests.NginxIngressConfig {
25- ControllerClass : "webapprouting.kubernetes.azure.com/nginx" ,
48+ ControllerClass : defaultControllerClass ,
2649 ResourceName : "nginx" ,
27- IcName : "webapprouting.kubernetes.azure.com" ,
50+ IcName : defaultIcName ,
2851 }
2952
3053 // TODO: re-add for dynamic provisioning, until then serviceConfig is nil
0 commit comments