ngrok / kubernetes-ingress-controller

The official ngrok Ingress Controller for Kubernetes

Home Page:https://ngrok.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CNAME Target not being set on Ingress Status

ppapp92 opened this issue · comments

Kubernetes Version

1.28

Helm Chart Version

0.12.1

Ingress Controller Version

0.10.1

System Info

AWS EKS
ArgoCD
ExternalDNS

Helm Chart configuration

kubernetes-ingress-controller:
  replicaCount: 1
  ingressClass:
    name: ngrok
    create: true
    default: false
  controllerName: "k8s.ngrok.com/ingress-controller"
  credentials:
    apiKey: <API_KEY>
    authtoken: <AUTHTOKEN>
  region: ""

What happened

When an Ngrok class ingress resource is created in K8 the Address(status.loadBalancer) doesn't get updated by the Ngrok Ingress Controller. This means that ExternalDNS does not create appropriate route53 entires to fully automate the deployment of an application.

Similar to #161

What you think should happen instead

Ngrok Ingress Controller should update the ingress resource with the CNAME Target so that ExternalDNS can properly configure DNS for the newly created service/app.

How to reproduce

Create an ingress resource in K8

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  finalizers:
  - k8s.ngrok.com/finalizer
  generation: 1
  labels:
    app.kubernetes.io/component: server
    app.kubernetes.io/instance: argo-workflows
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: argo-workflows-server
    app.kubernetes.io/part-of: argo-workflows
    helm.sh/chart: argo-workflows-0.40.4
  name: argo-workflows-server
  namespace: argo
spec:
  ingressClassName: ngrok
  rules:
  - host: domain.example.com
    http:
      paths:
      - backend:
          service:
            name: argo-workflows-server
            port:
              number: 2746
        path: /
        pathType: Prefix

View the status of the ingress and see that the loadBalancer address is empty

status:
  loadBalancer: {}

Both the Tunnel and Domain resources get created.

apiVersion: ingress.k8s.ngrok.com/v1alpha1
kind: Domain
metadata:
  finalizers:
  - k8s.ngrok.com/finalizer
  generation: 1
  name: example
  namespace: argo
spec:
  description: Created by kubernetes-ingress-controller
  domain: domain.example.com
  metadata: '{"owned-by":"kubernetes-ingress-controller"}'
status:
  cnameTarget: x.ngrok-cname.com
  domain: domain.example.com
  id: rd_x
  uri: https://api.ngrok.com/reserved_domains/rd_x
apiVersion: ingress.k8s.ngrok.com/v1alpha1
kind: Tunnel
metadata:
  finalizers:
  - k8s.ngrok.com/finalizer
  labels:
    k8s.ngrok.com/controller-name: ingress-ngrok-kubernetes-ingress-controller-manager
    k8s.ngrok.com/controller-namespace: ingress-ngrok
    k8s.ngrok.com/port: "2746"
    k8s.ngrok.com/service: argo-workflows-server
  name: argo-workflows-server-2746-v4g2m
  namespace: argo
  ownerReferences:
  - apiVersion: networking.k8s.io/v1
    kind: Ingress
    name: argo-workflows-server
spec:
  backend:
    protocol: HTTP
  forwardsTo: argo-workflows-server.argo.svc.cluster.local:2746
  labels:
    k8s.ngrok.com/namespace: argo
    k8s.ngrok.com/port: "2746"
    k8s.ngrok.com/service: argo-workflows-server

Adding log from Ingress Controller. I did the following:

  1. Restarted Ingress Controller
  2. Created Ngrok type ingress
  3. Captured logs

Domain, Edges, Endpoints get created in Ngrok Dashboard however the Domain can't verify because ExternalDNS never creates the CNAME in route53.

If I then delete the ingress and recreate it (after the Domain and Tunnel resource have been created) the ingress creates with the CNAME attached and ExternalDNS is able to create the entry.

{"level":"info","ts":"2024-02-15T15:26:06Z","logger":"setup","msg":"starting manager","version":"0.10.1","commit":"1cf33f17961038010f0011663c7bf17d997e1108"}
{"level":"info","ts":"2024-02-15T15:26:06Z","logger":"controller-runtime.metrics","msg":"Metrics server is starting to listen","addr":":8080"}
{"level":"info","ts":"2024-02-15T15:26:06Z","logger":"setup","msg":"found matching ingress","ingress-name":"argo-workflows-server","ingress-namespace":"argo"}
{"level":"info","ts":"2024-02-15T15:26:06Z","logger":"setup","msg":"found matching ingress","ingress-name":"kubecost-cost-analyzer","ingress-namespace":"kubecost"}
{"level":"info","ts":"2024-02-15T15:26:07Z","logger":"drivers.tunnel","msg":"client session established","obj":"csess","id":"9350fcf729ae"}
{"level":"info","ts":"2024-02-15T15:26:07Z","logger":"setup","msg":"starting manager"}
{"level":"info","ts":"2024-02-15T15:26:07Z","msg":"Starting server","path":"/metrics","kind":"metrics","addr":":8080"}
{"level":"info","ts":"2024-02-15T15:26:07Z","logger":"controllers.tunnel","msg":"Starting EventSource","source":"kind source: *v1alpha1.Tunnel"}
{"level":"info","ts":"2024-02-15T15:26:07Z","logger":"controllers.tunnel","msg":"Starting Controller"}
I0215 15:26:07.140893       1 leaderelection.go:248] attempting to acquire leader lease ingress-ngrok/ingress-ngrok-kubernetes-ingress-controller-leader...
{"level":"info","ts":"2024-02-15T15:26:07Z","msg":"Starting server","kind":"health probe","addr":":8081"}
{"level":"info","ts":"2024-02-15T15:26:07Z","logger":"controllers.tunnel","msg":"Starting workers","worker count":1}
I0215 15:26:24.861042       1 leaderelection.go:258] successfully acquired lease ingress-ngrok/ingress-ngrok-kubernetes-ingress-controller-leader
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"tcpedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"TCPEdge","source":"kind source: *v1alpha1.TCPEdge"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"ngrokmoduleset","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"NgrokModuleSet","source":"kind source: *v1alpha1.NgrokModuleSet"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting Controller","controller":"ngrokmoduleset","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"NgrokModuleSet"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"httpsedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"HTTPSEdge","source":"kind source: *v1alpha1.HTTPSEdge"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting Controller","controller":"httpsedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"HTTPSEdge"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"ippolicy","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"IPPolicy","source":"kind source: *v1alpha1.IPPolicy"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting Controller","controller":"ippolicy","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"IPPolicy"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"tcpedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"TCPEdge","source":"kind source: *v1alpha1.IPPolicy"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting Controller","controller":"tcpedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"TCPEdge"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"domain","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"Domain","source":"kind source: *v1alpha1.Domain"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting Controller","controller":"domain","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"Domain"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"ingress","controllerGroup":"networking.k8s.io","controllerKind":"Ingress","source":"kind source: *v1.Ingress"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"ingress","controllerGroup":"networking.k8s.io","controllerKind":"Ingress","source":"kind source: *v1.IngressClass"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"ingress","controllerGroup":"networking.k8s.io","controllerKind":"Ingress","source":"kind source: *v1.Service"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"ingress","controllerGroup":"networking.k8s.io","controllerKind":"Ingress","source":"kind source: *v1alpha1.Domain"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"ingress","controllerGroup":"networking.k8s.io","controllerKind":"Ingress","source":"kind source: *v1alpha1.HTTPSEdge"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"ingress","controllerGroup":"networking.k8s.io","controllerKind":"Ingress","source":"kind source: *v1alpha1.Tunnel"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"ingress","controllerGroup":"networking.k8s.io","controllerKind":"Ingress","source":"kind source: *v1alpha1.NgrokModuleSet"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting Controller","controller":"ingress","controllerGroup":"networking.k8s.io","controllerKind":"Ingress"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"tlsedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"TLSEdge","source":"kind source: *v1alpha1.TLSEdge"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting EventSource","controller":"tlsedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"TLSEdge","source":"kind source: *v1alpha1.IPPolicy"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting Controller","controller":"tlsedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"TLSEdge"}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting workers","controller":"httpsedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"HTTPSEdge","worker count":1}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting workers","controller":"tcpedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"TCPEdge","worker count":1}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting workers","controller":"ippolicy","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"IPPolicy","worker count":1}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting workers","controller":"ngrokmoduleset","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"NgrokModuleSet","worker count":1}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting workers","controller":"domain","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"Domain","worker count":1}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting workers","controller":"tlsedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"TLSEdge","worker count":1}
{"level":"info","ts":"2024-02-15T15:26:24Z","msg":"Starting workers","controller":"ingress","controllerGroup":"networking.k8s.io","controllerKind":"Ingress","worker count":1}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"cache-store-driver","msg":"sync start"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"cache-store-driver","msg":"syncing driver state!!"}
{"level":"error","ts":"2024-02-15T15:26:24Z","logger":"cache-store-driver","msg":"error updating tunnel","tunnel":{"metadata":{"generateName":"argo-workflows-server-2746-","namespace":"argo","creationTimestamp":null,"labels":{"k8s.ngrok.com/controller-name":"ingress-ngrok-kubernetes-ingress-controller-manager","k8s.ngrok.com/controller-namespace":"ingress-ngrok","k8s.ngrok.com/port":"2746","k8s.ngrok.com/service":"argo-workflows-server"},"ownerReferences":[{"apiVersion":"","kind":"","name":"argo-workflows-server","uid":"0c9dc0e1-7191-43a5-9376-efd0f853fb96"}]},"spec":{"forwardsTo":"argo-workflows-server.argo.svc.cluster.local:2746","labels":{"k8s.ngrok.com/namespace":"argo","k8s.ngrok.com/port":"2746","k8s.ngrok.com/service":"argo-workflows-server","k8s.ngrok.com/service-uid":"009d3f57-3e3f-4cdb-8a76-76ad91b4d091"},"backend":{"protocol":"HTTP"}},"status":{}},"error":"Tunnel.ingress.k8s.ngrok.com \"argo-workflows-server-2746-v4g2m\" is invalid: [metadata.ownerReferences.apiVersion: Invalid value: \"\": version must not be empty, metadata.ownerReferences.kind: Invalid value: \"\": kind must not be empty]","stacktrace":"github.com/ngrok/kubernetes-ingress-controller/internal/store.(*Driver).applyTunnels\n\tgithub.com/ngrok/kubernetes-ingress-controller/internal/store/driver.go:457\ngithub.com/ngrok/kubernetes-ingress-controller/internal/store.(*Driver).Sync\n\tgithub.com/ngrok/kubernetes-ingress-controller/internal/store/driver.go:323\ngithub.com/ngrok/kubernetes-ingress-controller/internal/controllers.(*IngressReconciler).Reconcile\n\tgithub.com/ngrok/kubernetes-ingress-controller/internal/controllers/ingress_controller.go:129\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:122\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:323\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:274\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:235"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"cache-store-driver","msg":"sync done"}
{"level":"error","ts":"2024-02-15T15:26:24Z","logger":"controllers.ingress","msg":"Failed to sync","ingress":"kubecost/kubecost-cost-analyzer","error":"Tunnel.ingress.k8s.ngrok.com \"argo-workflows-server-2746-v4g2m\" is invalid: [metadata.ownerReferences.apiVersion: Invalid value: \"\": version must not be empty, metadata.ownerReferences.kind: Invalid value: \"\": kind must not be empty]","stacktrace":"github.com/ngrok/kubernetes-ingress-controller/internal/controllers.(*IngressReconciler).Reconcile\n\tgithub.com/ngrok/kubernetes-ingress-controller/internal/controllers/ingress_controller.go:131\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:122\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:323\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:274\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:235"}
{"level":"error","ts":"2024-02-15T15:26:24Z","msg":"Reconciler error","controller":"ingress","controllerGroup":"networking.k8s.io","controllerKind":"Ingress","Ingress":{"name":"kubecost-cost-analyzer","namespace":"kubecost"},"namespace":"kubecost","name":"kubecost-cost-analyzer","reconcileID":"fc4639f4-02bc-4bd5-bf41-be3681dfbee0","error":"Tunnel.ingress.k8s.ngrok.com \"argo-workflows-server-2746-v4g2m\" is invalid: [metadata.ownerReferences.apiVersion: Invalid value: \"\": version must not be empty, metadata.ownerReferences.kind: Invalid value: \"\": kind must not be empty]","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:329\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:274\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:235"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"controllers.ingress","msg":"Ingress is not of type ngrok so skipping it","ingress":"app/app"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"controllers.ingress","msg":"Ingress is not of type ngrok so skipping it","ingress":"app/app"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"controllers.ingress","msg":"Ingress is not of type ngrok so skipping it","ingress":"app/app"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"controllers.ingress","msg":"Ingress is not of type ngrok so skipping it","ingress":"app/app"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"controllers.ingress","msg":"Ingress is not of type ngrok so skipping it","ingress":"app/app"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"controllers.ingress","msg":"Ingress is not of type ngrok so skipping it","ingress":"app/app"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"controllers.ingress","msg":"Ingress is not of type ngrok so skipping it","ingress":"app/app"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"cache-store-driver","msg":"sync start"}
{"level":"info","ts":"2024-02-15T15:26:24Z","logger":"cache-store-driver","msg":"syncing driver state!!"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"cache-store-driver","msg":"sync done"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"cache-store-driver","msg":"sync start"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"cache-store-driver","msg":"syncing driver state!!"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"cache-store-driver","msg":"sync done"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"controllers.https-edge","msg":"Got existing route","v1alpha1.HTTPSEdge":"argo/argo-workflows-dev-venue-dev-sh-92sz6","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cMzPbFAbK2Wcnn9a7KriYh5986"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"controllers.https-edge","msg":"Applying route modules","v1alpha1.HTTPSEdge":"argo/argo-workflows-dev-venue-dev-sh-92sz6","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cMzPbFAbK2Wcnn9a7KriYh5986"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"controllers.https-edge","msg":"Updating route","v1alpha1.HTTPSEdge":"argo/argo-workflows-dev-venue-dev-sh-92sz6","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cMzPbFAbK2Wcnn9a7KriYh5986","ngrok.backend.id":"bkdtg_2c3DmWKvUKgg9aV3JIOsDOWUOu7"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"controllers.https-edge","msg":"Updated route","v1alpha1.HTTPSEdge":"argo/argo-workflows-dev-venue-dev-sh-92sz6","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cMzPbFAbK2Wcnn9a7KriYh5986"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"controllers.https-edge","msg":"Got existing route","v1alpha1.HTTPSEdge":"kubecost/kubecost-dev-venue-dev-sh-kcm27","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2c3hIAkctzMfkwByVXWwP7dMZ0G"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"controllers.https-edge","msg":"Applying route modules","v1alpha1.HTTPSEdge":"kubecost/kubecost-dev-venue-dev-sh-kcm27","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2c3hIAkctzMfkwByVXWwP7dMZ0G"}
{"level":"info","ts":"2024-02-15T15:26:25Z","logger":"controllers.https-edge","msg":"Updating route","v1alpha1.HTTPSEdge":"kubecost/kubecost-dev-venue-dev-sh-kcm27","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2c3hIAkctzMfkwByVXWwP7dMZ0G","ngrok.backend.id":"bkdtg_2bpOf93CU861qCnuQj1i3edumV8"}
{"level":"info","ts":"2024-02-15T15:26:26Z","logger":"controllers.https-edge","msg":"Updated route","v1alpha1.HTTPSEdge":"kubecost/kubecost-dev-venue-dev-sh-kcm27","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2c3hIAkctzMfkwByVXWwP7dMZ0G"}
{"level":"info","ts":"2024-02-15T15:27:23Z","logger":"cache-store-driver","msg":"sync start"}
{"level":"info","ts":"2024-02-15T15:27:23Z","logger":"cache-store-driver","msg":"syncing driver state!!"}
{"level":"info","ts":"2024-02-15T15:27:23Z","logger":"cache-store-driver","msg":"sync done"}
{"level":"info","ts":"2024-02-15T15:27:23Z","logger":"cache-store-driver","msg":"sync start"}
{"level":"info","ts":"2024-02-15T15:27:23Z","logger":"cache-store-driver","msg":"syncing driver state!!"}
{"level":"info","ts":"2024-02-15T15:27:23Z","logger":"cache-store-driver","msg":"sync done"}
{"level":"error","ts":"2024-02-15T15:27:24Z","msg":"Reconciler error","controller":"httpsedge","controllerGroup":"ingress.k8s.ngrok.com","controllerKind":"HTTPSEdge","HTTPSEdge":{"name":"signoz-dev-venue-dev-sh-fpvvg","namespace":"signoz"},"namespace":"signoz","name":"signoz-dev-venue-dev-sh-fpvvg","reconcileID":"91f7bbe4-4181-4376-af90-74c25b0b4e79","error":"HTTP 400: The domain '<app.example.com>:443' is not reserved. [ERR_NGROK_7117]\n\nOperation ID: op_2cPQgSANPQcFe8ZTHSnjOM9MPD0","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:329\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:274\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\tsigs.k8s.io/controller-runtime@v0.14.1/pkg/internal/controller/controller.go:235"}
{"level":"info","ts":"2024-02-15T15:27:24Z","logger":"controllers.https-edge","msg":"Creating new route","v1alpha1.HTTPSEdge":"signoz/signoz-dev-venue-dev-sh-fpvvg","route.match":"/","route.match_type":"path_prefix"}
{"level":"info","ts":"2024-02-15T15:27:24Z","logger":"controllers.https-edge","msg":"Created new route","v1alpha1.HTTPSEdge":"signoz/signoz-dev-venue-dev-sh-fpvvg","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cPQgPTWGxPuwAk7oyCFdoKbqDr"}
{"level":"info","ts":"2024-02-15T15:27:24Z","logger":"controllers.https-edge","msg":"Applying route modules","v1alpha1.HTTPSEdge":"signoz/signoz-dev-venue-dev-sh-fpvvg","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cPQgPTWGxPuwAk7oyCFdoKbqDr"}
{"level":"info","ts":"2024-02-15T15:27:24Z","logger":"controllers.https-edge","msg":"Updating route","v1alpha1.HTTPSEdge":"signoz/signoz-dev-venue-dev-sh-fpvvg","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cPQgPTWGxPuwAk7oyCFdoKbqDr","ngrok.backend.id":"bkdtg_2cNOMIw3xMMsH5umI16szSpQ0Uv"}
{"level":"info","ts":"2024-02-15T15:27:24Z","logger":"controllers.https-edge","msg":"Updated route","v1alpha1.HTTPSEdge":"signoz/signoz-dev-venue-dev-sh-fpvvg","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cPQgPTWGxPuwAk7oyCFdoKbqDr"}

Additional logs after ingress is recreated:

{"level":"info","ts":"2024-02-15T15:38:22Z","logger":"controllers.ingress","msg":"Deleting ingress from store","ingress":"signoz/signoz-frontend"}
{"level":"info","ts":"2024-02-15T15:38:22Z","logger":"cache-store-driver","msg":"sync start"}
{"level":"info","ts":"2024-02-15T15:38:22Z","logger":"cache-store-driver","msg":"syncing driver state!!"}
{"level":"info","ts":"2024-02-15T15:38:22Z","logger":"controllers.tunnel","msg":"Tunnel deleted successfully","v1alpha1.Tunnel":"signoz/signoz-frontend-3301-rdw9v","name":"signoz/signoz-frontend-3301-rdw9v"}
{"level":"error","ts":"2024-02-15T15:38:22Z","logger":"controllers.tunnel","msg":"Error accepting connection","v1alpha1.Tunnel":"signoz/signoz-frontend-3301-rdw9v","id":"tn_2cPQgKk9zLo52tNRT9L97j0rVTS","protocol":"HTTP","dest":"app.svc.cluster.local:3301","error":"failed to accept connection: Tunnel closed","stacktrace":"github.com/ngrok/kubernetes-ingress-controller/pkg/tunneldriver.handleConnections\n\tgithub.com/ngrok/kubernetes-ingress-controller/pkg/tunneldriver/driver.go:192"}
{"level":"info","ts":"2024-02-15T15:38:22Z","logger":"cache-store-driver","msg":"sync done"}
{"level":"info","ts":"2024-02-15T15:38:22Z","logger":"cache-store-driver","msg":"sync start"}
{"level":"info","ts":"2024-02-15T15:38:22Z","logger":"cache-store-driver","msg":"syncing driver state!!"}
{"level":"info","ts":"2024-02-15T15:38:22Z","logger":"cache-store-driver","msg":"sync done"}
{"level":"info","ts":"2024-02-15T15:39:01Z","logger":"cache-store-driver","msg":"sync start"}
{"level":"info","ts":"2024-02-15T15:39:01Z","logger":"cache-store-driver","msg":"syncing driver state!!"}
{"level":"info","ts":"2024-02-15T15:39:01Z","logger":"cache-store-driver","msg":"sync done"}
{"level":"info","ts":"2024-02-15T15:39:01Z","logger":"cache-store-driver","msg":"sync start"}
{"level":"info","ts":"2024-02-15T15:39:01Z","logger":"cache-store-driver","msg":"syncing driver state!!"}
{"level":"info","ts":"2024-02-15T15:39:01Z","logger":"cache-store-driver","msg":"sync done"}
{"level":"info","ts":"2024-02-15T15:39:02Z","logger":"controllers.https-edge","msg":"Creating new route","v1alpha1.HTTPSEdge":"signoz/signoz-dev-venue-dev-sh-67c9l","route.match":"/","route.match_type":"path_prefix"}
{"level":"info","ts":"2024-02-15T15:39:02Z","logger":"controllers.https-edge","msg":"Created new route","v1alpha1.HTTPSEdge":"signoz/signoz-dev-venue-dev-sh-67c9l","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cPS687JMDCwwmSHTk97cfu263M"}
{"level":"info","ts":"2024-02-15T15:39:02Z","logger":"controllers.https-edge","msg":"Applying route modules","v1alpha1.HTTPSEdge":"signoz/signoz-dev-venue-dev-sh-67c9l","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cPS687JMDCwwmSHTk97cfu263M"}
{"level":"info","ts":"2024-02-15T15:39:02Z","logger":"controllers.https-edge","msg":"Updating route","v1alpha1.HTTPSEdge":"signoz/signoz-dev-venue-dev-sh-67c9l","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cPS687JMDCwwmSHTk97cfu263M","ngrok.backend.id":"bkdtg_2cNOMIw3xMMsH5umI16szSpQ0Uv"}
{"level":"info","ts":"2024-02-15T15:39:02Z","logger":"controllers.https-edge","msg":"Updated route","v1alpha1.HTTPSEdge":"signoz/signoz-dev-venue-dev-sh-67c9l","route.match":"/","route.match_type":"path_prefix","ngrok.route.id":"edghtsrt_2cPS687JMDCwwmSHTk97cfu263M"}