From b1a157950507e876a815c80646007ef3cfb79149 Mon Sep 17 00:00:00 2001 From: Adyanth Hosavalike Date: Tue, 29 Apr 2025 14:44:28 +0530 Subject: [PATCH] Create dummy tunnelBinding test without ownerRef remove commented code deployment needs to apply --- config/rbac/role.yaml | 13 +++++++-- .../controller/clustertunnel_controller.go | 2 ++ .../controller/generic_tunnel_reconciler.go | 29 +++++++++++++++++++ internal/controller/tunnel_controller.go | 2 ++ .../controller/tunnelbinding_controller.go | 10 ++++--- 5 files changed, 50 insertions(+), 6 deletions(-) diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index 1a810ca..bad4fa8 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -66,9 +66,7 @@ rules: - networking.cfargotunnel.com resources: - accesstunnels/status - - clustertunnels/status - tunnelbindings/status - - tunnels/status verbs: - get - patch @@ -81,3 +79,14 @@ rules: - tunnels/finalizers verbs: - update +- apiGroups: + - networking.cfargotunnel.com + resources: + - clustertunnels/status + - tunnels/status + verbs: + - get + - list + - patch + - update + - watch diff --git a/internal/controller/clustertunnel_controller.go b/internal/controller/clustertunnel_controller.go index e01a2d7..1252b92 100644 --- a/internal/controller/clustertunnel_controller.go +++ b/internal/controller/clustertunnel_controller.go @@ -121,6 +121,7 @@ func (r *ClusterTunnelReconciler) initStruct(ctx context.Context, tunnel Tunnel) //+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=clustertunnels,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=clustertunnels/status,verbs=get;update;patch //+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=clustertunnels/finalizers,verbs=update +//+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnelbindings,verbs=create;update;patch //+kubebuilder:rbac:groups=core,resources=configmaps,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=core,resources=secrets,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete @@ -178,6 +179,7 @@ func (r *ClusterTunnelReconciler) SetupWithManager(mgr ctrl.Manager) error { r.Recorder = mgr.GetEventRecorderFor("cloudflare-operator") return ctrl.NewControllerManagedBy(mgr). For(&networkingv1alpha1.ClusterTunnel{}). + Owns(&networkingv1alpha1.TunnelBinding{}). Owns(&corev1.ConfigMap{}). Owns(&corev1.Secret{}). Owns(&appsv1.Deployment{}). diff --git a/internal/controller/generic_tunnel_reconciler.go b/internal/controller/generic_tunnel_reconciler.go index 17d1c52..ce89316 100644 --- a/internal/controller/generic_tunnel_reconciler.go +++ b/internal/controller/generic_tunnel_reconciler.go @@ -254,10 +254,17 @@ func createManagedResources(r GenericTunnelReconciler) (ctrl.Result, error) { return ctrl.Result{}, err } + // Create Deployment if it does not exist and scale it if err := k8s.Apply(r, deploymentForTunnel(r)); err != nil { return ctrl.Result{}, err } + // Create dummy TunnelBinding + tunnelBinding := dummyTunnelBindingForTunnel(r) + if err := k8s.Apply(r, tunnelBinding); err != nil { + return ctrl.Result{}, err + } + return ctrl.Result{}, nil } @@ -474,3 +481,25 @@ func deploymentForTunnel(r GenericTunnelReconciler) *appsv1.Deployment { ctrl.SetControllerReference(r.GetTunnel().GetObject(), dep, r.GetScheme()) return dep } + +func dummyTunnelBindingForTunnel(r GenericTunnelReconciler) *networkingv1alpha1.TunnelBinding { + tunnelBinding := &networkingv1alpha1.TunnelBinding{ + TypeMeta: metav1.TypeMeta{ + APIVersion: networkingv1alpha1.GroupVersion.String(), + Kind: "TunnelBinding", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: r.GetTunnel().GetName(), + Namespace: r.GetTunnel().GetNamespace(), + }, + Subjects: []networkingv1alpha1.TunnelBindingSubject{}, + TunnelRef: networkingv1alpha1.TunnelRef{ + Kind: r.GetTunnel().GetObject().GetObjectKind().GroupVersionKind().Kind, + Name: r.GetTunnel().GetName(), + DisableDNSUpdates: true, // Nothing to update + }, + } + tunnelBinding.SetLabels(labelsForBinding(*tunnelBinding)) + ctrl.SetControllerReference(r.GetTunnel().GetObject(), tunnelBinding, r.GetScheme()) + return tunnelBinding +} diff --git a/internal/controller/tunnel_controller.go b/internal/controller/tunnel_controller.go index e0fca74..816db67 100644 --- a/internal/controller/tunnel_controller.go +++ b/internal/controller/tunnel_controller.go @@ -120,6 +120,7 @@ func (r *TunnelReconciler) initStruct(ctx context.Context, tunnel Tunnel) error //+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnels,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnels/status,verbs=get;update;patch //+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnels/finalizers,verbs=update +//+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnelbindings,verbs=create;update;patch //+kubebuilder:rbac:groups=core,resources=configmaps,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=core,resources=secrets,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete @@ -173,6 +174,7 @@ func (r *TunnelReconciler) SetupWithManager(mgr ctrl.Manager) error { r.Recorder = mgr.GetEventRecorderFor("cloudflare-operator") return ctrl.NewControllerManagedBy(mgr). For(&networkingv1alpha1.Tunnel{}). + Owns(&networkingv1alpha1.TunnelBinding{}). Owns(&corev1.ConfigMap{}). Owns(&corev1.Secret{}). Owns(&appsv1.Deployment{}). diff --git a/internal/controller/tunnelbinding_controller.go b/internal/controller/tunnelbinding_controller.go index c00703f..6e472c9 100644 --- a/internal/controller/tunnelbinding_controller.go +++ b/internal/controller/tunnelbinding_controller.go @@ -129,10 +129,10 @@ func (r *TunnelBindingReconciler) initStruct(ctx context.Context, tunnelBinding //+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnelbindings,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnelbindings/status,verbs=get;update;patch //+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnelbindings/finalizers,verbs=update -//+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnels,verbs=get -//+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnels/status,verbs=get -//+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=clustertunnels,verbs=get -//+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=clustertunnels/status,verbs=get +//+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnels,verbs=get;list;watch +//+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=tunnels/status,verbs=get;list;watch +//+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=clustertunnels,verbs=get;list;watch +//+kubebuilder:rbac:groups=networking.cfargotunnel.com,resources=clustertunnels/status,verbs=get;list;watch //+kubebuilder:rbac:groups=core,resources=configmaps,verbs=get;list;watch;update;patch //+kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;update;patch //+kubebuilder:rbac:groups=core,resources=services,verbs=get;list;watch @@ -609,5 +609,7 @@ func (r *TunnelBindingReconciler) SetupWithManager(mgr ctrl.Manager) error { r.Recorder = mgr.GetEventRecorderFor("cloudflare-operator") return ctrl.NewControllerManagedBy(mgr). For(&networkingv1alpha1.TunnelBinding{}). + Owns(&networkingv1alpha1.ClusterTunnel{}). + Owns(&networkingv1alpha1.Tunnel{}). Complete(r) }