From 7101a37abe902eb14b16395d496d33216b1394f3 Mon Sep 17 00:00:00 2001 From: Adyanth H Date: Sun, 27 Feb 2022 14:30:53 +0530 Subject: [PATCH] :sparkles: Allow target override with annotation --- controllers/service_controller.go | 6 +++++- controllers/utils.go | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/controllers/service_controller.go b/controllers/service_controller.go index 620cc7f..e09e8a0 100644 --- a/controllers/service_controller.go +++ b/controllers/service_controller.go @@ -472,9 +472,13 @@ func (r *ServiceReconciler) configureCloudflare() error { finalIngresses := make([]UnvalidatedIngressRule, 0, len(services)+1) for _, service := range services { + targetService := decodeLabel(service.Labels[configServiceLabel], service) + if target, ok := service.Annotations[targetAnnotation]; ok { + targetService = target + } finalIngresses = append(finalIngresses, UnvalidatedIngressRule{ Hostname: service.Labels[configHostnameLabel], - Service: decodeLabel(service.Labels[configServiceLabel], service), + Service: targetService, }) } // Catchall ingress diff --git a/controllers/utils.go b/controllers/utils.go index b1d706f..1714002 100644 --- a/controllers/utils.go +++ b/controllers/utils.go @@ -19,6 +19,8 @@ const ( clusterTunnelAnnotation = "cfargotunnel.com/cluster-tunnel" // FQDN to create a DNS entry for and route traffic from internet on, defaults to Service name + cloudflare domain fqdnAnnotation = "cfargotunnel.com/fqdn" + // Target can be used to override the target to send traffic to. Ex: Can be used to point to an ingress rather than the service directly + targetAnnotation = "cfargotunnel.com/target" // Tunnel properties isClusterTunnelAnnotation = "cfargotunnel.com/is-cluster-tunnel"