Skip to content

Commit

Permalink
disable manager
Browse files Browse the repository at this point in the history
  • Loading branch information
petar-cvit committed Nov 4, 2024
1 parent abff03a commit 9b97276
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 88 deletions.
129 changes: 66 additions & 63 deletions cyclops-ctrl/cmd/main/main.go
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
package main

import (
"context"
"flag"
"fmt"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/modulecontroller"
"os"
"strconv"
"time"

_ "github.com/joho/godotenv/autoload"
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
_ "k8s.io/client-go/plugin/pkg/client/auth"
ctrl "sigs.k8s.io/controller-runtime"
ctrlCache "sigs.k8s.io/controller-runtime/pkg/cache"
"sigs.k8s.io/controller-runtime/pkg/healthz"
"sigs.k8s.io/controller-runtime/pkg/log/zap"
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
"sigs.k8s.io/controller-runtime/pkg/webhook"
"strconv"
"time"

"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/auth"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/handler"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/integrations/helm"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/modulecontroller"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/prometheus"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/telemetry"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/template"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/template/cache"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/template/render"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/pkg/cluster/k8sclient"
_ "github.com/joho/godotenv/autoload"
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
_ "k8s.io/client-go/plugin/pkg/client/auth"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/log/zap"

cyclopsv1alpha1 "github.com/cyclops-ui/cyclops/cyclops-ctrl/api/v1alpha1"
)
Expand All @@ -55,7 +55,7 @@ func main() {
"Enable leader election for controller manager. "+
"Enabling this will ensure there is only one active controller manager.")
opts := zap.Options{
Development: true,
Development: false,
}
opts.BindFlags(flag.CommandLine)
flag.Parse()
Expand Down Expand Up @@ -98,64 +98,67 @@ func main() {
panic(err)
}

go handler.Start()

mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
Scheme: scheme,
HealthProbeBindAddress: probeAddr,
LeaderElection: enableLeaderElection,
LeaderElectionID: "f9d9f115.cyclops-ui.com",
Metrics: metricsserver.Options{
BindAddress: metricsAddr,
},
WebhookServer: webhook.NewServer(webhook.Options{
Port: 9443,
}),
Cache: ctrlCache.Options{
DefaultNamespaces: map[string]ctrlCache.Config{
getWatchNamespace(): {},
},
},
})
if err != nil {
setupLog.Error(err, "unable to start manager")
os.Exit(1)
}

disableReconciler := getEnvBool("DISABLE_MODULE_RECONCILER")
if disableReconciler {
setupLog.Info("reconciler disabled")
}

if err = (modulecontroller.NewModuleReconciler(
mgr.GetClient(),
mgr.GetScheme(),
templatesRepo,
k8sClient,
renderer,
disableReconciler,
telemetryClient,
monitor,
)).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "Module")
os.Exit(1)
}
//+kubebuilder:scaffold:builder

if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
setupLog.Error(err, "unable to set up health check")
os.Exit(1)
}
if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil {
setupLog.Error(err, "unable to set up ready check")
os.Exit(1)
if !disableReconciler {
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
Scheme: scheme,
HealthProbeBindAddress: probeAddr,
LeaderElection: enableLeaderElection,
LeaderElectionID: "f9d9f115.cyclops-ui.com",
Metrics: metricsserver.Options{
BindAddress: metricsAddr,
},
WebhookServer: webhook.NewServer(webhook.Options{
Port: 9443,
}),
Cache: ctrlCache.Options{
DefaultNamespaces: map[string]ctrlCache.Config{
getWatchNamespace(): {},
},
},
})
if err != nil {
setupLog.Error(err, "unable to start manager")
os.Exit(1)
}

if err = (modulecontroller.NewModuleReconciler(
mgr.GetClient(),
mgr.GetScheme(),
templatesRepo,
k8sClient,
renderer,
telemetryClient,
monitor,
)).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "Module")
os.Exit(1)
}
//+kubebuilder:scaffold:builder

if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
setupLog.Error(err, "unable to set up health check")
os.Exit(1)
}
if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil {
setupLog.Error(err, "unable to set up ready check")
os.Exit(1)
}

go func() {
setupLog.Info("starting manager")
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
setupLog.Error(err, "problem running manager")
os.Exit(1)
}
}()
}

setupLog.Info("starting manager")
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
setupLog.Error(err, "problem running manager")
os.Exit(1)
}
handler.Start(context.Background())
}

func getEnvBool(key string) bool {
Expand Down
20 changes: 14 additions & 6 deletions cyclops-ctrl/internal/handler/handler.go
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
package handler

import (
"context"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/controller"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/controller/sse"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/integrations/helm"
"github.com/gin-gonic/gin"
"net/http"

"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/controller"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/prometheus"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/telemetry"
templaterepo "github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/template"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/internal/template/render"
"github.com/cyclops-ui/cyclops/cyclops-ctrl/pkg/cluster/k8sclient"
"github.com/gin-gonic/gin"
"net/http"
"os/signal"
"syscall"
)

type Handler struct {
Expand Down Expand Up @@ -45,7 +47,7 @@ func New(
}, nil
}

func (h *Handler) Start() error {
func (h *Handler) Start(ctx context.Context) {
gin.SetMode(gin.DebugMode)

templatesController := controller.NewTemplatesController(h.templatesRepo, h.k8sClient, h.telemetryClient)
Expand All @@ -57,6 +59,9 @@ func (h *Handler) Start() error {

server := sse.NewServer(h.k8sClient)

h.router.GET("/healthz", func(c *gin.Context) { c.String(http.StatusOK, "OK") })
h.router.GET("/readyz", func(c *gin.Context) { c.String(http.StatusOK, "OK") })

h.router.GET("/stream/resources/:name", sse.HeadersMiddleware(), server.Resources)
h.router.GET("/stream/releases/resources/:name", sse.HeadersMiddleware(), server.ReleaseResources)
h.router.POST("/stream/resources", sse.HeadersMiddleware(), server.SingleResource)
Expand Down Expand Up @@ -116,7 +121,10 @@ func (h *Handler) Start() error {

h.router.Use(h.options)

return h.router.Run()
c, stop := signal.NotifyContext(ctx, syscall.SIGINT, syscall.SIGTERM)
go h.router.Run()
<-c.Done()
stop()
}

func (h *Handler) pong() func(ctx *gin.Context) {
Expand Down
30 changes: 11 additions & 19 deletions cyclops-ctrl/internal/modulecontroller/module_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,9 @@ type ModuleReconciler struct {
client.Client
Scheme *runtime.Scheme

templatesRepo templaterepo.ITemplateRepo
kubernetesClient k8sclient.IKubernetesClient
renderer *render.Renderer
skipReconciliation bool
templatesRepo templaterepo.ITemplateRepo
kubernetesClient k8sclient.IKubernetesClient
renderer *render.Renderer

telemetryClient telemetry.Client
monitor prometheus.Monitor
Expand All @@ -66,20 +65,18 @@ func NewModuleReconciler(
templatesRepo templaterepo.ITemplateRepo,
kubernetesClient k8sclient.IKubernetesClient,
renderer *render.Renderer,
skipReconciliation bool,
telemetryClient telemetry.Client,
monitor prometheus.Monitor,
) *ModuleReconciler {
return &ModuleReconciler{
Client: client,
Scheme: scheme,
templatesRepo: templatesRepo,
kubernetesClient: kubernetesClient,
renderer: renderer,
telemetryClient: telemetryClient,
monitor: monitor,
skipReconciliation: skipReconciliation,
logger: ctrl.Log.WithName("reconciler"),
Client: client,
Scheme: scheme,
templatesRepo: templatesRepo,
kubernetesClient: kubernetesClient,
renderer: renderer,
telemetryClient: telemetryClient,
monitor: monitor,
logger: ctrl.Log.WithName("reconciler"),
}
}

Expand All @@ -97,11 +94,6 @@ func NewModuleReconciler(
// For more details, check Reconcile and its Result here:
// - https://pkg.go.dev/sigs.k8s.io/[email protected]/pkg/reconcile
func (r *ModuleReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
if r.skipReconciliation {
r.logger.Info("skipping reconciliation", "namespaced name", req.NamespacedName)
return ctrl.Result{}, nil
}

_ = log.FromContext(ctx)
r.telemetryClient.ModuleReconciliation()
r.monitor.OnReconciliation()
Expand Down

0 comments on commit 9b97276

Please sign in to comment.