mirror of
https://github.com/clastix/kamaji.git
synced 2026-02-14 18:10:03 +00:00
fix(soot): add unique controller names to prevent metric conflicts (#1043)
Signed-off-by: Azeez Syed <syedazeez337@gmail.com>
This commit is contained in:
@@ -36,6 +36,7 @@ type CoreDNS struct {
|
|||||||
AdminClient client.Client
|
AdminClient client.Client
|
||||||
GetTenantControlPlaneFunc utils.TenantControlPlaneRetrievalFn
|
GetTenantControlPlaneFunc utils.TenantControlPlaneRetrievalFn
|
||||||
TriggerChannel chan event.GenericEvent
|
TriggerChannel chan event.GenericEvent
|
||||||
|
ControllerName string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *CoreDNS) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) {
|
func (c *CoreDNS) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) {
|
||||||
@@ -80,6 +81,7 @@ func (c *CoreDNS) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile
|
|||||||
|
|
||||||
func (c *CoreDNS) SetupWithManager(mgr manager.Manager) error {
|
func (c *CoreDNS) SetupWithManager(mgr manager.Manager) error {
|
||||||
return controllerruntime.NewControllerManagedBy(mgr).
|
return controllerruntime.NewControllerManagedBy(mgr).
|
||||||
|
Named(c.ControllerName).
|
||||||
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: ptr.To(true)}).
|
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: ptr.To(true)}).
|
||||||
For(&rbacv1.ClusterRoleBinding{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
For(&rbacv1.ClusterRoleBinding{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
||||||
return object.GetName() == kubeadm.CoreDNSClusterRoleBindingName
|
return object.GetName() == kubeadm.CoreDNSClusterRoleBindingName
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ type KonnectivityAgent struct {
|
|||||||
AdminClient client.Client
|
AdminClient client.Client
|
||||||
GetTenantControlPlaneFunc utils.TenantControlPlaneRetrievalFn
|
GetTenantControlPlaneFunc utils.TenantControlPlaneRetrievalFn
|
||||||
TriggerChannel chan event.GenericEvent
|
TriggerChannel chan event.GenericEvent
|
||||||
|
ControllerName string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (k *KonnectivityAgent) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) {
|
func (k *KonnectivityAgent) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) {
|
||||||
@@ -87,6 +88,7 @@ func (k *KonnectivityAgent) Reconcile(ctx context.Context, _ reconcile.Request)
|
|||||||
|
|
||||||
func (k *KonnectivityAgent) SetupWithManager(mgr manager.Manager) error {
|
func (k *KonnectivityAgent) SetupWithManager(mgr manager.Manager) error {
|
||||||
return controllerruntime.NewControllerManagedBy(mgr).
|
return controllerruntime.NewControllerManagedBy(mgr).
|
||||||
|
Named(k.ControllerName).
|
||||||
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: ptr.To(true)}).
|
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: ptr.To(true)}).
|
||||||
For(&appsv1.DaemonSet{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
For(&appsv1.DaemonSet{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
||||||
return object.GetName() == konnectivity.AgentName && object.GetNamespace() == konnectivity.AgentNamespace
|
return object.GetName() == konnectivity.AgentName && object.GetNamespace() == konnectivity.AgentNamespace
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ type KubeadmPhase struct {
|
|||||||
GetTenantControlPlaneFunc utils.TenantControlPlaneRetrievalFn
|
GetTenantControlPlaneFunc utils.TenantControlPlaneRetrievalFn
|
||||||
TriggerChannel chan event.GenericEvent
|
TriggerChannel chan event.GenericEvent
|
||||||
Phase resources.KubeadmPhaseResource
|
Phase resources.KubeadmPhaseResource
|
||||||
|
ControllerName string
|
||||||
|
|
||||||
logger logr.Logger
|
logger logr.Logger
|
||||||
}
|
}
|
||||||
@@ -75,6 +76,7 @@ func (k *KubeadmPhase) SetupWithManager(mgr manager.Manager) error {
|
|||||||
k.logger = mgr.GetLogger().WithName(k.Phase.GetName())
|
k.logger = mgr.GetLogger().WithName(k.Phase.GetName())
|
||||||
|
|
||||||
return controllerruntime.NewControllerManagedBy(mgr).
|
return controllerruntime.NewControllerManagedBy(mgr).
|
||||||
|
Named(k.ControllerName).
|
||||||
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: ptr.To(true)}).
|
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: ptr.To(true)}).
|
||||||
For(k.Phase.GetWatchedObject(), builder.WithPredicates(predicate.NewPredicateFuncs(k.Phase.GetPredicateFunc()))).
|
For(k.Phase.GetWatchedObject(), builder.WithPredicates(predicate.NewPredicateFuncs(k.Phase.GetPredicateFunc()))).
|
||||||
WatchesRawSource(source.Channel(k.TriggerChannel, &handler.EnqueueRequestForObject{})).
|
WatchesRawSource(source.Channel(k.TriggerChannel, &handler.EnqueueRequestForObject{})).
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ type KubeProxy struct {
|
|||||||
AdminClient client.Client
|
AdminClient client.Client
|
||||||
GetTenantControlPlaneFunc utils.TenantControlPlaneRetrievalFn
|
GetTenantControlPlaneFunc utils.TenantControlPlaneRetrievalFn
|
||||||
TriggerChannel chan event.GenericEvent
|
TriggerChannel chan event.GenericEvent
|
||||||
|
ControllerName string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (k *KubeProxy) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) {
|
func (k *KubeProxy) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) {
|
||||||
@@ -82,6 +83,7 @@ func (k *KubeProxy) Reconcile(ctx context.Context, _ reconcile.Request) (reconci
|
|||||||
|
|
||||||
func (k *KubeProxy) SetupWithManager(mgr manager.Manager) error {
|
func (k *KubeProxy) SetupWithManager(mgr manager.Manager) error {
|
||||||
return controllerruntime.NewControllerManagedBy(mgr).
|
return controllerruntime.NewControllerManagedBy(mgr).
|
||||||
|
Named(k.ControllerName).
|
||||||
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: ptr.To(true)}).
|
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: ptr.To(true)}).
|
||||||
For(&rbacv1.ClusterRoleBinding{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
For(&rbacv1.ClusterRoleBinding{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
||||||
return object.GetName() == kubeadm.KubeProxyClusterRoleBindingName
|
return object.GetName() == kubeadm.KubeProxyClusterRoleBindingName
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ type Migrate struct {
|
|||||||
WebhookServiceName string
|
WebhookServiceName string
|
||||||
WebhookCABundle []byte
|
WebhookCABundle []byte
|
||||||
TriggerChannel chan event.GenericEvent
|
TriggerChannel chan event.GenericEvent
|
||||||
|
ControllerName string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Migrate) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) {
|
func (m *Migrate) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) {
|
||||||
@@ -189,6 +190,7 @@ func (m *Migrate) SetupWithManager(mgr manager.Manager) error {
|
|||||||
m.TriggerChannel = make(chan event.GenericEvent)
|
m.TriggerChannel = make(chan event.GenericEvent)
|
||||||
|
|
||||||
return controllerruntime.NewControllerManagedBy(mgr).
|
return controllerruntime.NewControllerManagedBy(mgr).
|
||||||
|
Named(m.ControllerName).
|
||||||
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: pointer.To(true)}).
|
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: pointer.To(true)}).
|
||||||
For(&admissionregistrationv1.ValidatingWebhookConfiguration{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
For(&admissionregistrationv1.ValidatingWebhookConfiguration{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
||||||
vwc := m.object()
|
vwc := m.object()
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ type WritePermissions struct {
|
|||||||
WebhookServiceName string
|
WebhookServiceName string
|
||||||
WebhookCABundle []byte
|
WebhookCABundle []byte
|
||||||
TriggerChannel chan event.GenericEvent
|
TriggerChannel chan event.GenericEvent
|
||||||
|
ControllerName string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *WritePermissions) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) {
|
func (r *WritePermissions) Reconcile(ctx context.Context, _ reconcile.Request) (reconcile.Result, error) {
|
||||||
@@ -190,6 +191,7 @@ func (r *WritePermissions) SetupWithManager(mgr manager.Manager) error {
|
|||||||
r.TriggerChannel = make(chan event.GenericEvent)
|
r.TriggerChannel = make(chan event.GenericEvent)
|
||||||
|
|
||||||
return controllerruntime.NewControllerManagedBy(mgr).
|
return controllerruntime.NewControllerManagedBy(mgr).
|
||||||
|
Named(r.ControllerName).
|
||||||
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: ptr.To(true)}).
|
WithOptions(controller.TypedOptions[reconcile.Request]{SkipNameValidation: ptr.To(true)}).
|
||||||
For(&admissionregistrationv1.ValidatingWebhookConfiguration{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
For(&admissionregistrationv1.ValidatingWebhookConfiguration{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
|
||||||
return object.GetName() == r.object().GetName()
|
return object.GetName() == r.object().GetName()
|
||||||
|
|||||||
@@ -253,6 +253,9 @@ func (m *Manager) Reconcile(ctx context.Context, request reconcile.Request) (res
|
|||||||
//
|
//
|
||||||
// Register all the controllers of the soot here:
|
// Register all the controllers of the soot here:
|
||||||
//
|
//
|
||||||
|
// Generate unique controller name prefix from TenantControlPlane to avoid metric conflicts
|
||||||
|
controllerNamePrefix := fmt.Sprintf("%s-%s", tcp.GetNamespace(), tcp.GetName())
|
||||||
|
|
||||||
writePermissions := &controllers.WritePermissions{
|
writePermissions := &controllers.WritePermissions{
|
||||||
Logger: mgr.GetLogger().WithName("writePermissions"),
|
Logger: mgr.GetLogger().WithName("writePermissions"),
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
@@ -261,6 +264,7 @@ func (m *Manager) Reconcile(ctx context.Context, request reconcile.Request) (res
|
|||||||
WebhookServiceName: m.MigrateServiceName,
|
WebhookServiceName: m.MigrateServiceName,
|
||||||
WebhookCABundle: m.MigrateCABundle,
|
WebhookCABundle: m.MigrateCABundle,
|
||||||
TriggerChannel: nil,
|
TriggerChannel: nil,
|
||||||
|
ControllerName: fmt.Sprintf("%s-writepermissions", controllerNamePrefix),
|
||||||
}
|
}
|
||||||
if err = writePermissions.SetupWithManager(mgr); err != nil {
|
if err = writePermissions.SetupWithManager(mgr); err != nil {
|
||||||
return reconcile.Result{}, err
|
return reconcile.Result{}, err
|
||||||
@@ -273,6 +277,7 @@ func (m *Manager) Reconcile(ctx context.Context, request reconcile.Request) (res
|
|||||||
GetTenantControlPlaneFunc: m.retrieveTenantControlPlane(tcpCtx, request),
|
GetTenantControlPlaneFunc: m.retrieveTenantControlPlane(tcpCtx, request),
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
Logger: mgr.GetLogger().WithName("migrate"),
|
Logger: mgr.GetLogger().WithName("migrate"),
|
||||||
|
ControllerName: fmt.Sprintf("%s-migrate", controllerNamePrefix),
|
||||||
}
|
}
|
||||||
if err = migrate.SetupWithManager(mgr); err != nil {
|
if err = migrate.SetupWithManager(mgr); err != nil {
|
||||||
return reconcile.Result{}, err
|
return reconcile.Result{}, err
|
||||||
@@ -283,6 +288,7 @@ func (m *Manager) Reconcile(ctx context.Context, request reconcile.Request) (res
|
|||||||
GetTenantControlPlaneFunc: m.retrieveTenantControlPlane(tcpCtx, request),
|
GetTenantControlPlaneFunc: m.retrieveTenantControlPlane(tcpCtx, request),
|
||||||
Logger: mgr.GetLogger().WithName("konnectivity_agent"),
|
Logger: mgr.GetLogger().WithName("konnectivity_agent"),
|
||||||
TriggerChannel: make(chan event.GenericEvent),
|
TriggerChannel: make(chan event.GenericEvent),
|
||||||
|
ControllerName: fmt.Sprintf("%s-konnectivity", controllerNamePrefix),
|
||||||
}
|
}
|
||||||
if err = konnectivityAgent.SetupWithManager(mgr); err != nil {
|
if err = konnectivityAgent.SetupWithManager(mgr); err != nil {
|
||||||
return reconcile.Result{}, err
|
return reconcile.Result{}, err
|
||||||
@@ -293,6 +299,7 @@ func (m *Manager) Reconcile(ctx context.Context, request reconcile.Request) (res
|
|||||||
GetTenantControlPlaneFunc: m.retrieveTenantControlPlane(tcpCtx, request),
|
GetTenantControlPlaneFunc: m.retrieveTenantControlPlane(tcpCtx, request),
|
||||||
Logger: mgr.GetLogger().WithName("kube_proxy"),
|
Logger: mgr.GetLogger().WithName("kube_proxy"),
|
||||||
TriggerChannel: make(chan event.GenericEvent),
|
TriggerChannel: make(chan event.GenericEvent),
|
||||||
|
ControllerName: fmt.Sprintf("%s-kubeproxy", controllerNamePrefix),
|
||||||
}
|
}
|
||||||
if err = kubeProxy.SetupWithManager(mgr); err != nil {
|
if err = kubeProxy.SetupWithManager(mgr); err != nil {
|
||||||
return reconcile.Result{}, err
|
return reconcile.Result{}, err
|
||||||
@@ -303,6 +310,7 @@ func (m *Manager) Reconcile(ctx context.Context, request reconcile.Request) (res
|
|||||||
GetTenantControlPlaneFunc: m.retrieveTenantControlPlane(tcpCtx, request),
|
GetTenantControlPlaneFunc: m.retrieveTenantControlPlane(tcpCtx, request),
|
||||||
Logger: mgr.GetLogger().WithName("coredns"),
|
Logger: mgr.GetLogger().WithName("coredns"),
|
||||||
TriggerChannel: make(chan event.GenericEvent),
|
TriggerChannel: make(chan event.GenericEvent),
|
||||||
|
ControllerName: fmt.Sprintf("%s-coredns", controllerNamePrefix),
|
||||||
}
|
}
|
||||||
if err = coreDNS.SetupWithManager(mgr); err != nil {
|
if err = coreDNS.SetupWithManager(mgr); err != nil {
|
||||||
return reconcile.Result{}, err
|
return reconcile.Result{}, err
|
||||||
@@ -315,6 +323,7 @@ func (m *Manager) Reconcile(ctx context.Context, request reconcile.Request) (res
|
|||||||
Phase: resources.PhaseUploadConfigKubeadm,
|
Phase: resources.PhaseUploadConfigKubeadm,
|
||||||
},
|
},
|
||||||
TriggerChannel: make(chan event.GenericEvent),
|
TriggerChannel: make(chan event.GenericEvent),
|
||||||
|
ControllerName: fmt.Sprintf("%s-kubeadmconfig", controllerNamePrefix),
|
||||||
}
|
}
|
||||||
if err = uploadKubeadmConfig.SetupWithManager(mgr); err != nil {
|
if err = uploadKubeadmConfig.SetupWithManager(mgr); err != nil {
|
||||||
return reconcile.Result{}, err
|
return reconcile.Result{}, err
|
||||||
@@ -327,6 +336,7 @@ func (m *Manager) Reconcile(ctx context.Context, request reconcile.Request) (res
|
|||||||
Phase: resources.PhaseUploadConfigKubelet,
|
Phase: resources.PhaseUploadConfigKubelet,
|
||||||
},
|
},
|
||||||
TriggerChannel: make(chan event.GenericEvent),
|
TriggerChannel: make(chan event.GenericEvent),
|
||||||
|
ControllerName: fmt.Sprintf("%s-kubeletconfig", controllerNamePrefix),
|
||||||
}
|
}
|
||||||
if err = uploadKubeletConfig.SetupWithManager(mgr); err != nil {
|
if err = uploadKubeletConfig.SetupWithManager(mgr); err != nil {
|
||||||
return reconcile.Result{}, err
|
return reconcile.Result{}, err
|
||||||
@@ -339,6 +349,7 @@ func (m *Manager) Reconcile(ctx context.Context, request reconcile.Request) (res
|
|||||||
Phase: resources.PhaseBootstrapToken,
|
Phase: resources.PhaseBootstrapToken,
|
||||||
},
|
},
|
||||||
TriggerChannel: make(chan event.GenericEvent),
|
TriggerChannel: make(chan event.GenericEvent),
|
||||||
|
ControllerName: fmt.Sprintf("%s-bootstraptoken", controllerNamePrefix),
|
||||||
}
|
}
|
||||||
if err = bootstrapToken.SetupWithManager(mgr); err != nil {
|
if err = bootstrapToken.SetupWithManager(mgr); err != nil {
|
||||||
return reconcile.Result{}, err
|
return reconcile.Result{}, err
|
||||||
@@ -351,6 +362,7 @@ func (m *Manager) Reconcile(ctx context.Context, request reconcile.Request) (res
|
|||||||
Phase: resources.PhaseClusterAdminRBAC,
|
Phase: resources.PhaseClusterAdminRBAC,
|
||||||
},
|
},
|
||||||
TriggerChannel: make(chan event.GenericEvent),
|
TriggerChannel: make(chan event.GenericEvent),
|
||||||
|
ControllerName: fmt.Sprintf("%s-kubeadmrbac", controllerNamePrefix),
|
||||||
}
|
}
|
||||||
if err = kubeadmRbac.SetupWithManager(mgr); err != nil {
|
if err = kubeadmRbac.SetupWithManager(mgr); err != nil {
|
||||||
return reconcile.Result{}, err
|
return reconcile.Result{}, err
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ var _ = Describe("Deploy a TenantControlPlane resource with DataStoreOverrides",
|
|||||||
// Fill TenantControlPlane object
|
// Fill TenantControlPlane object
|
||||||
tcp := &kamajiv1alpha1.TenantControlPlane{
|
tcp := &kamajiv1alpha1.TenantControlPlane{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "tcp-clusterip",
|
Name: "tcp-datastore-overrides",
|
||||||
Namespace: "default",
|
Namespace: "default",
|
||||||
},
|
},
|
||||||
Spec: kamajiv1alpha1.TenantControlPlaneSpec{
|
Spec: kamajiv1alpha1.TenantControlPlaneSpec{
|
||||||
|
|||||||
Reference in New Issue
Block a user