Skip to content

Commit d0c17ef

Browse files
committed
REORG/MAJOR: Refactor custom resources management into k8s package
1 parent e7c33d8 commit d0c17ef

File tree

9 files changed

+398
-478
lines changed

9 files changed

+398
-478
lines changed

pkg/controller/controller.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ import (
1919
"path/filepath"
2020
"strings"
2121

22+
"k8s.io/client-go/rest"
23+
"k8s.io/client-go/tools/clientcmd"
24+
2225
"github.com/google/renameio"
2326

2427
"github.com/haproxytech/client-native/v2/models"
2528
config "github.com/haproxytech/kubernetes-ingress/pkg/configuration"
2629
"github.com/haproxytech/kubernetes-ingress/pkg/controller/route"
27-
cr "github.com/haproxytech/kubernetes-ingress/pkg/customresource"
2830
"github.com/haproxytech/kubernetes-ingress/pkg/haproxy/api"
2931
"github.com/haproxytech/kubernetes-ingress/pkg/haproxy/process"
3032
"github.com/haproxytech/kubernetes-ingress/pkg/ingress"
@@ -39,15 +41,14 @@ var logger = utils.GetLogger()
3941
// HAProxyController is ingress controller
4042
type HAProxyController struct {
4143
cfg config.ControllerCfg
42-
crManager cr.CRManager
4344
client api.HAProxyClient
4445
osArgs utils.OSArgs
4546
store store.K8s
4647
publishService *utils.NamespaceValue
4748
auxCfgModTime int64
4849
eventChan chan k8s.SyncDataEvent
4950
ingressChan chan ingress.Sync
50-
k8s *k8s.K8s
51+
k8s k8s.K8s
5152
ready bool
5253
reload bool
5354
restart bool
@@ -110,18 +111,20 @@ func (c *HAProxyController) Start(haproxyConf []byte) {
110111
}
111112

112113
// Get K8s client
113-
c.k8s, err = k8s.GetKubernetesClient(c.osArgs.DisableServiceExternalName)
114+
var restConfig *rest.Config
114115
if c.osArgs.External {
115116
kubeconfig := filepath.Join(utils.HomeDir(), ".kube", "config")
116117
if c.osArgs.KubeConfig != "" {
117118
kubeconfig = c.osArgs.KubeConfig
118119
}
119-
c.k8s, err = k8s.GetRemoteKubernetesClient(kubeconfig, c.osArgs.DisableServiceExternalName)
120-
}
121-
if err != nil {
122-
logger.Panic(err)
120+
restConfig, err = clientcmd.BuildConfigFromFlags("", kubeconfig)
121+
} else {
122+
restConfig, err = rest.InClusterConfig()
123123
}
124-
x := c.k8s.API.Discovery()
124+
logger.Panicf("Unable to get kubernetes client config: %s", err)
125+
126+
c.k8s = k8s.New(restConfig, c.osArgs, c.eventChan)
127+
x := c.k8s.GetClient().Discovery()
125128
if k8sVersion, err := x.ServerVersion(); err != nil {
126129
logger.Panicf("Unable to get Kubernetes version: %v\n", err)
127130
} else {
@@ -139,7 +142,7 @@ func (c *HAProxyController) Start(haproxyConf []byte) {
139142
if c.publishService != nil {
140143
// Update Ingress status
141144
c.ingressChan = make(chan ingress.Sync, chanSize)
142-
go ingress.UpdateStatus(c.k8s.API, c.store, c.osArgs.IngressClass, c.osArgs.EmptyIngressClass, c.ingressChan)
145+
go ingress.UpdateStatus(c.k8s.GetClient(), c.store, c.osArgs.IngressClass, c.osArgs.EmptyIngressClass, c.ingressChan)
143146
}
144147
}
145148

pkg/controller/monitor.go

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
"strconv"
2020
"time"
2121

22-
cr "github.com/haproxytech/kubernetes-ingress/pkg/customresource"
22+
corev1alpha1 "github.com/haproxytech/kubernetes-ingress/crs/api/core/v1alpha1"
2323
"github.com/haproxytech/kubernetes-ingress/pkg/k8s"
2424
"github.com/haproxytech/kubernetes-ingress/pkg/store"
2525
"k8s.io/client-go/informers"
@@ -32,12 +32,11 @@ func (c *HAProxyController) monitorChanges() {
3232
informersSynced := []cache.InformerSynced{}
3333
stop := make(chan struct{})
3434
epMirror := c.endpointsMirroring()
35-
c.crManager = cr.NewCRManager(&c.store, c.k8s.RestConfig, c.osArgs.CacheResyncPeriod, c.eventChan, stop)
3635

3736
c.k8s.EventPods(c.podNamespace, c.podPrefix, c.osArgs.CacheResyncPeriod, c.eventChan)
3837

3938
for _, namespace := range c.getWhitelistedNamespaces() {
40-
factory := informers.NewSharedInformerFactoryWithOptions(c.k8s.API, c.osArgs.CacheResyncPeriod, informers.WithNamespace(namespace))
39+
factory := informers.NewSharedInformerFactoryWithOptions(c.k8s.GetClient(), c.osArgs.CacheResyncPeriod, informers.WithNamespace(namespace))
4140

4241
// Core.V1 Resources
4342
svci := factory.Core().V1().Services().Informer()
@@ -79,7 +78,7 @@ func (c *HAProxyController) monitorChanges() {
7978
}
8079

8180
// Custom Resources
82-
informersSynced = append(informersSynced, c.crManager.RunInformers(namespace)...)
81+
informersSynced = append(informersSynced, c.k8s.RunCRInformers(namespace, stop)...)
8382
}
8483

8584
if !cache.WaitForCacheSync(stop, informersSynced...) {
@@ -109,8 +108,24 @@ func (c *HAProxyController) SyncData() {
109108
hadChanges = false
110109
continue
111110
}
112-
case k8s.CUSTOM_RESOURCE:
113-
change = c.crManager.EventCustomResource(job)
111+
case k8s.CR_GLOBAL:
112+
var data *corev1alpha1.Global
113+
if job.Data != nil {
114+
data = job.Data.(*corev1alpha1.Global)
115+
}
116+
change = c.store.EventGlobalCR(job.Namespace, job.Name, data)
117+
case k8s.CR_DEFAULTS:
118+
var data *corev1alpha1.Defaults
119+
if job.Data != nil {
120+
data = job.Data.(*corev1alpha1.Defaults)
121+
}
122+
change = c.store.EventDefaultsCR(job.Namespace, job.Name, data)
123+
case k8s.CR_BACKEND:
124+
var data *corev1alpha1.Backend
125+
if job.Data != nil {
126+
data = job.Data.(*corev1alpha1.Backend)
127+
}
128+
change = c.store.EventBackendCR(job.Namespace, job.Name, data)
114129
case k8s.NAMESPACE:
115130
change = c.store.EventNamespace(ns, job.Data.(*store.Namespace))
116131
case k8s.INGRESS:
@@ -134,7 +149,7 @@ func (c *HAProxyController) SyncData() {
134149

135150
func (c *HAProxyController) getIngressSharedInformers(factory informers.SharedInformerFactory) (ii, ici cache.SharedIndexInformer) {
136151
for i, apiGroup := range []string{"networking.k8s.io/v1", "networking.k8s.io/v1beta1", "extensions/v1beta1"} {
137-
resources, err := c.k8s.API.ServerResourcesForGroupVersion(apiGroup)
152+
resources, err := c.k8s.GetClient().ServerResourcesForGroupVersion(apiGroup)
138153
if err != nil {
139154
continue
140155
}
@@ -168,7 +183,7 @@ func (c *HAProxyController) getIngressSharedInformers(factory informers.SharedIn
168183

169184
func (c *HAProxyController) getEndpointSlicesSharedInformer(factory informers.SharedInformerFactory) cache.SharedIndexInformer {
170185
for i, apiGroup := range []string{"discovery.k8s.io/v1", "discovery.k8s.io/v1beta1"} {
171-
resources, err := c.k8s.API.ServerResourcesForGroupVersion(apiGroup)
186+
resources, err := c.k8s.GetClient().ServerResourcesForGroupVersion(apiGroup)
172187
if err != nil {
173188
continue
174189
}
@@ -213,7 +228,7 @@ func (c *HAProxyController) getWhitelistedNamespaces() []string {
213228
func (c *HAProxyController) endpointsMirroring() bool {
214229
var major, minor int
215230
var err error
216-
version, _ := c.k8s.API.ServerVersion()
231+
version, _ := c.k8s.GetClient().ServerVersion()
217232
if version == nil {
218233
return false
219234
}

pkg/customresource/crmanager.go

Lines changed: 0 additions & 102 deletions
This file was deleted.

0 commit comments

Comments
 (0)