feat: vertical slice proxy provider (#2)
Reviewed-on: #2 Co-authored-by: Timo Behrendt <t.behrendt@t00n.de> Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
This commit was merged in pull request #2.
This commit is contained in:
@@ -21,6 +21,7 @@ import (
|
||||
"flag"
|
||||
"net/url"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"gitea.t000-n.de/t.behrendt/authentik-kubernetes-operator/pkg/signals"
|
||||
@@ -32,6 +33,9 @@ import (
|
||||
// Uncomment the following line to load the gcp plugin (only required to authenticate against GKE clusters).
|
||||
// _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
|
||||
|
||||
applicationcontroller "gitea.t000-n.de/t.behrendt/authentik-kubernetes-operator/pkg/controllers/application"
|
||||
policybindingcontroller "gitea.t000-n.de/t.behrendt/authentik-kubernetes-operator/pkg/controllers/policybinding"
|
||||
proxyprovidercontroller "gitea.t000-n.de/t.behrendt/authentik-kubernetes-operator/pkg/controllers/proxyprovider"
|
||||
clientset "gitea.t000-n.de/t.behrendt/authentik-kubernetes-operator/pkg/generated/clientset/versioned"
|
||||
informers "gitea.t000-n.de/t.behrendt/authentik-kubernetes-operator/pkg/generated/informers/externalversions"
|
||||
)
|
||||
@@ -61,7 +65,7 @@ func main() {
|
||||
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
|
||||
}
|
||||
|
||||
proxyProviderClient, err := clientset.NewForConfig(cfg)
|
||||
clientset, err := clientset.NewForConfig(cfg)
|
||||
if err != nil {
|
||||
logger.Error(err, "Error building proxy provider clientset")
|
||||
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
|
||||
@@ -73,20 +77,56 @@ func main() {
|
||||
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
|
||||
}
|
||||
|
||||
proxyProviderInformerFactory := informers.NewSharedInformerFactory(proxyProviderClient, time.Second*30)
|
||||
proxyProviderInformerFactory := informers.NewSharedInformerFactory(clientset, time.Second*30)
|
||||
|
||||
controller := NewController(ctx, kubeClient, proxyProviderClient, authentikClient,
|
||||
ppController := proxyprovidercontroller.NewController(ctx, kubeClient, clientset, authentikClient,
|
||||
proxyProviderInformerFactory.Proxyprovider().V1alpha1().ProxyProviders(),
|
||||
)
|
||||
|
||||
applicationInformerFactory := informers.NewSharedInformerFactory(clientset, time.Second*30)
|
||||
appController := applicationcontroller.NewController(ctx, kubeClient, clientset, authentikClient,
|
||||
applicationInformerFactory.Application().V1alpha1().Applications(),
|
||||
)
|
||||
|
||||
policyBindingInformerFactory := informers.NewSharedInformerFactory(clientset, time.Second*30)
|
||||
pbController := policybindingcontroller.NewController(ctx, kubeClient, clientset, authentikClient,
|
||||
policyBindingInformerFactory.PolicyBinding().V1alpha1().PolicyBindings(),
|
||||
)
|
||||
|
||||
// notice that there is no need to run Start methods in a separate goroutine. (i.e. go kubeInformerFactory.Start(ctx.done())
|
||||
// Start method is non-blocking and runs all registered informers in a dedicated goroutine.
|
||||
proxyProviderInformerFactory.Start(ctx.Done())
|
||||
applicationInformerFactory.Start(ctx.Done())
|
||||
policyBindingInformerFactory.Start(ctx.Done())
|
||||
|
||||
if err = controller.Run(ctx, 2); err != nil {
|
||||
logger.Error(err, "Error running controller")
|
||||
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
|
||||
}
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(3)
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
if err := ppController.Run(ctx, 2); err != nil {
|
||||
logger.Error(err, "Error running proxy provider controller")
|
||||
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
if err := appController.Run(ctx, 2); err != nil {
|
||||
logger.Error(err, "Error running application controller")
|
||||
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
if err := pbController.Run(ctx, 2); err != nil {
|
||||
logger.Error(err, "Error running policy binding controller")
|
||||
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
|
||||
}
|
||||
}()
|
||||
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
||||
Reference in New Issue
Block a user