l7mp / stunner

A Kubernetes media gateway for WebRTC. Contact: info@l7mp.io
https://l7mp.io
MIT License
751 stars 58 forks source link

TURN DTLS returns no ICE candidates while TURN UDP works fine #167

Closed IvaskevychYuriy closed 1 month ago

IvaskevychYuriy commented 1 month ago

Description

Hello, I'm testing out a PoC of STUNner as TURN server using DTLS. Planning on using it for our media backend in the same cluster.

UDP listener works just fine right out of the box but I cannot figure out issue with DTLS - I don't even see the handshake when I try gathering candidates.

Steps to Reproduce

Setup a cluster in a HyperV VM (I've faces some issues with UDP and WSL so using VM here) and configure STUNner to use NodePorts:

Configuring Env

Host machine:

HyperV VM:

Also grab IP of the VM and add it to the hosts file of Host machine like 1.2.3.4 aaa.local.com

Configuring cluster with STUNner

  1. helm upgrade -i stunner-gateway-operator stunner/stunner-gateway-operator -n t --create-namespace --version 0.21.0 -f ./stunner.yaml Where stunner.yaml is:
    stunnerGatewayOperator:
    enabled: true
    deployment:
    container:
      manager:
        image:
          tag: 0.21.0
    dataplane:
    mode: managed
    spec:
      replicas: 1
      image: docker.io/l7mp/stunnerd:0.21.0
      terminationGracePeriodSeconds: 600 # 10m
      enableMetricsEndpoint: true
    stunnerAuthService:
    enabled: true
    deployment:
    container:
      authService:
        image:
          tag: 0.21.0
  2. Self-signed TLS secret - ECDSA 256, generated by openssl:
    apiVersion: v1
    kind: Secret
    metadata:
    name: test-tls
    type: kubernetes.io/tls
    data:
    tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkVENDQVJ1Z0F3SUJBZ0lVUHdqcFpBbVZDRS90MWIvYURIRHJ5VDZ0d0Ewd0NnWUlLb1pJemowRUF3SXcKRURFT01Bd0dBMVVFQXd3RmRHVnpkREV3SGhjTk1qUXhNREEwTVRRd01ERTBXaGNOTWpVeE1EQTBNVFF3TURFMApXakFRTVE0d0RBWURWUVFEREFWMFpYTjBNVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTDUzCkRocWJjWnhYa2xtYlc1R1NPeG96ZUZ2bDUwdTFZSElqVjFVenhWT0ZOMktyblEwcEtGS2tVV2FWMzNCcFhVNWEKRnQyK29Jd1I1VURtMFRiWUJZT2pVekJSTUIwR0ExVWREZ1FXQkJUSXRwVHlMaUcxVnBjUUlCalJWMUJPUTQ5RwpRVEFmQmdOVkhTTUVHREFXZ0JUSXRwVHlMaUcxVnBjUUlCalJWMUJPUTQ5R1FUQVBCZ05WSFJNQkFmOEVCVEFECkFRSC9NQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJQ1didUF4eFgxZ3VGRGJzS3NrcU15aG15T0ViaHFsQW0zd2wKUWxHcXFia3pBaUVBaitOWXFCZHQ5cXdOMnpDeGRZSjg4cVRJU3lHWXpqdmJqZnE5ZzlnU3RvWT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    tls.key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUJwZUkrYjFmR2Z2Z2pycUViV3h4MkNBRUtLc1lLdDl4NEhvdEdsakJ4QitvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFdm5jT0dwdHhuRmVTV1p0YmtaSTdHak40VytYblM3VmdjaU5YVlRQRlU0VTNZcXVkRFNrbwpVcVJSWnBYZmNHbGRUbG9XM2I2Z2pCSGxRT2JSTnRnRmd3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=

The secret public part:

-----BEGIN CERTIFICATE-----
MIIBdTCCARugAwIBAgIUPwjpZAmVCE/t1b/aDHDryT6twA0wCgYIKoZIzj0EAwIw
EDEOMAwGA1UEAwwFdGVzdDEwHhcNMjQxMDA0MTQwMDE0WhcNMjUxMDA0MTQwMDE0
WjAQMQ4wDAYDVQQDDAV0ZXN0MTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL53
DhqbcZxXklmbW5GSOxozeFvl50u1YHIjV1UzxVOFN2KrnQ0pKFKkUWaV33BpXU5a
Ft2+oIwR5UDm0TbYBYOjUzBRMB0GA1UdDgQWBBTItpTyLiG1VpcQIBjRV1BOQ49G
QTAfBgNVHSMEGDAWgBTItpTyLiG1VpcQIBjRV1BOQ49GQTAPBgNVHRMBAf8EBTAD
AQH/MAoGCCqGSM49BAMCA0gAMEUCICWbuAxxX1guFDbsKskqMyhmyOEbhqlAm3wl
QlGqqbkzAiEAj+NYqBdt9qwN2zCxdYJ88qTISyGYzjvbjfq9g9gStoY=
-----END CERTIFICATE-----

The secret private part:

-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIBpeI+b1fGfvgjrqEbWxx2CAEKKsYKt9x4HotGljBxB+oAoGCCqGSM49
AwEHoUQDQgAEvncOGptxnFeSWZtbkZI7GjN4W+XnS7VgciNXVTPFU4U3YqudDSko
UqRRZpXfcGldTloW3b6gjBHlQObRNtgFgw==
-----END EC PRIVATE KEY-----

NOTE: I've even installed this cert into my Trusted Roots, just in case - does not make a difference.

  1. Stunner resources:
    apiVersion: v1
    kind: Secret
    metadata:
    name: stunner-creds
    type: Opaque
    stringData:
    type: static
    username: media
    password: abcdefgg12345
    ---
    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway
    metadata:
    name: udp-gateway
    annotations:
    stunner.l7mp.io/nodeport: '{"udp-listener":30478,"dtls-listener":30349}'
    stunner.l7mp.io/service-type: NodePort
    spec:
    gatewayClassName: stunner-gatewayclass
    listeners:
    - name: udp-listener
      port: 3478
      protocol: TURN-UDP
    - name: dtls-listener
      port: 5349
      protocol: TURN-DTLS
      tls:
        certificateRefs:
        - kind: Secret
          name: test-tls
    ---
    apiVersion: gateway.networking.k8s.io/v1
    kind: GatewayClass
    metadata:
    name: stunner-gatewayclass
    spec:
    controllerName: "stunner.l7mp.io/gateway-operator"
    parametersRef:
    group: "stunner.l7mp.io"
    kind: GatewayConfig
    name: stunner-gatewayconfig
    namespace: t
    ---
    apiVersion: stunner.l7mp.io/v1
    kind: GatewayConfig
    metadata:
    name: stunner-gatewayconfig
    spec:
    realm: test
    logLevel: all:DEBUG
    authRef:
    name: stunner-creds
    namespace: t
    ---
    apiVersion: stunner.l7mp.io/v1
    kind: UDPRoute
    metadata:
    name: media-plane
    spec:
    parentRefs:
    - name: udp-gateway
    rules:
    - backendRefs:
      - name: mediamtx
        namespace: t
        port: 8189

NOTE: here I'm exposing two listeners: UDP and DTLS

I've waited until everyhting is up and running, here are services for example: image

NOTE: Please disregard mediamtx and cert-manager - this is part of the PoC not relevant here as I'm using separate certificate and not even touching the mediaserver yet. Backend ref could be anything even some udp-greeter for this scenario.

  1. Logs after start stunner-auth-* pod:
    08:25:56.991218 main.go:68: authd INFO: Obtaining CDS server address
    08:25:56.991305 main.go:76: authd INFO: Creating CDS client to server at stunner-config-discovery.t.svc:13478
    08:25:56.991317 cds_api.go:102: cds-client DEBUG: WATCH: watching all configs from CDS server ws://stunner-config-discovery.t.svc:13478/api/v1/configs?watch=true
    08:25:56.991328 main.go:88: authd INFO: Starting auth request handler
    08:25:56.991349 main.go:98: authd INFO: Starting HTTP REST server at port 8088
    08:25:56.993021 cds_api.go:280: cds-client INFO: connection successfully opened to config discovery server at ws://stunner-config-discovery.t.svc:13478/api/v1/configs?watch=true
    08:25:56.993684 cds_api.go:357: cds-client DEBUG: new config received from "ws://stunner-config-discovery.t.svc:13478/api/v1/configs?watch=true": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"
    08:25:56.993729 handler.go:54: auth-svc DEBUG: New config available for gateway "t/udp-gateway": {version="v1",admin:{name="t/udp-gateway",logLevel="all:DEBUG",metrics="http://:8080/metrics",health-check="http://:8086"},static-auth:{realm="test",username="<SECRET>",password="<SECRET>"},listeners=["t/udp-gateway/udp-listener":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},"t/udp-gateway/dtls-listener":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=["t/media-plane":{type="STATIC",protocol="UDP",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}

    udp-gateway-* pod:

    08:26:02.967623 main.go:83: stunnerd INFO: Starting stunnerd id "t/udp-gateway", STUNner version v0.21.0-0-g5eede986 (5eede98) built on 2024-09-20T13:39:45+0000
    08:26:02.967695 main.go:126: stunnerd INFO: Bootstrapping stunnerd with minimal config
    08:26:02.967700 main.go:145: stunnerd INFO: Watching configuration at origin "http://10.42.0.19:13478"
    08:26:02.967851 main.go:191: stunnerd INFO: New configuration available: "{version=\"v1\",admin:{name=\"t/udp-gateway\"},static-auth:{realm=\"stunner.l7mp.io\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[],clusters=[]}"
    08:26:02.968033 reconcile.go:112: stunner INFO: Setting loglevel to "all:INFO"
    08:26:02.968050 reconcile.go:140: stunner WARNING: Running with no listeners
    08:26:02.968053 reconcile.go:156: stunner WARNING: Running with no clusters: all traffic will be dropped
    08:26:02.968057 reconcile.go:176: stunner INFO: Reconciliation ready: new objects: 2, changed objects: 0, deleted objects: 0, started objects: 0, restarted objects: 0
    08:26:02.968065 reconcile.go:180: stunner INFO: New dataplane status: t/udp-gateway:{logLevel="all:INFO",health-check="http://:8086"}/static-auth:{realm="stunner.l7mp.io",username="<SECRET>",password="<SECRET>"}/[]/[]/allocs:0/status=READY
    08:26:02.968340 cds_api.go:280: cds-client INFO: connection successfully opened to config discovery server at ws://10.42.0.19:13478/api/v1/configs/t/udp-gateway?watch=true
    08:26:02.969162 main.go:191: stunnerd INFO: New configuration available: "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://10.42.0.45:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://10.42.0.45:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"
    08:26:02.969311 reconcile.go:112: stunner INFO: Setting loglevel to "all:DEBUG"
    08:26:02.969333 auth.go:56: stunner-auth DEBUG: using authentication: static
    08:26:02.969338 reconcile.go:131: auth-manager DEBUG: reconciliation ready: to-be-created: 0, changed: 1, deleted: 0
    08:26:02.969367 reconcile.go:131: listener-manager DEBUG: reconciliation ready: to-be-created: 2, changed: 0, deleted: 0
    08:26:02.969407 reconcile.go:131: cluster-manager DEBUG: reconciliation ready: to-be-created: 1, changed: 0, deleted: 0
    08:26:02.969435 server.go:28: stunner INFO: listener t/udp-gateway/udp-listener: [turn-udp://10.42.0.45:3478<0:0>] (re)starting
    08:26:02.969449 server.go:45: stunner INFO: setting up UDP listener socket pool at 0.0.0.0:3478 with 16 readloop threads
    08:26:02.969759 server.go:166: stunner INFO: listener t/udp-gateway/udp-listener: TURN server running
    08:26:02.969796 server.go:28: stunner INFO: listener t/udp-gateway/dtls-listener: [turn-dtls://10.42.0.45:5349<0:0>] (re)starting
    08:26:02.969809 server.go:111: stunner DEBUG: setting up DTLS/UDP listener at 0.0.0.0:5349
    08:26:02.969971 server.go:166: stunner INFO: listener t/udp-gateway/dtls-listener: TURN server running
    08:26:02.970014 reconcile.go:176: stunner INFO: Reconciliation ready: new objects: 3, changed objects: 2, deleted objects: 0, started objects: 2, restarted objects: 0
    08:26:02.970042 reconcile.go:180: stunner INFO: New dataplane status: t/udp-gateway:{logLevel="all:DEBUG",metrics="http://:8080/metrics",health-check="http://:8086"}/static-auth:{realm="test",username="<SECRET>",password="<SECRET>"}/["t/udp-gateway/dtls-listener":{turn://10.42.0.45:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]} "t/udp-gateway/udp-listener":{turn://10.42.0.45:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]}]/["t/media-plane":{type="STATIC",protocol="UDP",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]/allocs:0/status=READY
  2. stunnerctl: stunerctl -v auth:
    11:54:44.833317 main.go:365: stunnerctl DEBUG: Searching for authentication server
    11:54:44.833870 k8s_client.go:154: auth-fwd DEBUG: Obtaining kubeconfig
    11:54:44.835094 k8s_client.go:161: auth-fwd DEBUG: Creating a Kubernetes client
    11:54:44.835708 k8s_client.go:341: auth-fwd DEBUG: Querying auth service pods in namespace "<all>" using label-selector "app=stunner-auth"
    11:54:44.843627 k8s_client.go:367: auth-fwd DEBUG: Found pod: t/stunner-auth-74f58cbbbf-2f7x7
    11:54:44.843627 k8s_client.go:376: auth-fwd DEBUG: Creating a SPDY stream to API server using URL "https://172.30.111.229:6443/api/v1/namespaces/t/pods/stunner-auth-74f58cbbbf-2f7x7/portforward"
    11:54:44.844147 k8s_client.go:384: auth-fwd DEBUG: Creating a port-forwarder to pod
    11:54:44.844147 k8s_client.go:400: auth-fwd DEBUG: Waiting for port-forwarder...
    11:54:44.854257 k8s_client.go:419: auth-fwd DEBUG: Port-forwarder connected to pod t/stunner-auth-74f58cbbbf-2f7x7 at 127.0.0.1:56962
    11:54:44.854257 main.go:395: stunnerctl DEBUG: Querying to authentication server pod t/stunner-auth-74f58cbbbf-2f7x7 at 127.0.0.1:56962 using URL "http://127.0.0.1:56962/ice?service=turn"
    {"iceServers":[{"credential":"abcdefgg12345","urls":["turn:0.0.0.0:3478?transport=udp","turns:0.0.0.0:5349?transport=udp"],"username":"media"}],"iceTransportPolicy":"all"}

stunnerctl -va config:

11:55:57.866433 main.go:151: stunnerctl DEBUG: Searching for CDS server
11:55:57.867069 k8s_client.go:154: cds-fwd DEBUG: Obtaining kubeconfig
11:55:57.868398 k8s_client.go:161: cds-fwd DEBUG: Creating a Kubernetes client
11:55:57.868914 k8s_client.go:196: cds-fwd DEBUG: Querying CDS server pods in namespace "<all>" using label-selector "stunner.l7mp.io/config-discovery-service=enabled"
11:55:57.877381 k8s_client.go:367: cds-fwd DEBUG: Found pod: t/stunner-gateway-operator-controller-manager-5f664bbb76-g2p2t
11:55:57.877381 k8s_client.go:376: cds-fwd DEBUG: Creating a SPDY stream to API server using URL "https://172.30.111.229:6443/api/v1/namespaces/t/pods/stunner-gateway-operator-controller-manager-5f664bbb76-g2p2t/portforward"
11:55:57.877923 k8s_client.go:384: cds-fwd DEBUG: Creating a port-forwarder to pod
11:55:57.878447 k8s_client.go:400: cds-fwd DEBUG: Waiting for port-forwarder...
11:55:57.891632 k8s_client.go:419: cds-fwd DEBUG: Port-forwarder connected to pod t/stunner-gateway-operator-controller-manager-5f664bbb76-g2p2t at 127.0.0.1:56994
11:55:57.891632 main.go:158: stunnerctl DEBUG: Connecting to CDS server: pod t/stunner-gateway-operator-controller-manager-5f664bbb76-g2p2t at 127.0.0.1:56994
11:55:57.892137 cds_api.go:85: cds-client DEBUG: GET: loading all configs from CDS server 127.0.0.1:56994
Gateway: t/udp-gateway (loglevel: "all:DEBUG")
Authentication type: static, username/password: media/abcdefgg12345
Listeners:
  - Name: t/udp-gateway/udp-listener
    Protocol: TURN-UDP
    Public address:port: <none>:<none>
    Routes: [t/media-plane]
    Endpoints: [10.42.0.42:<8189-8189>, 10.43.72.231:<8189-8189>]
  - Name: t/udp-gateway/dtls-listener
    Protocol: TURN-DTLS
    Public address:port: <none>:<none>
    Routes: [t/media-plane]
    Endpoints: [10.42.0.42:<8189-8189>, 10.43.72.231:<8189-8189>]

stunnerctl -va status:

11:56:33.428544 main.go:280: stunnerctl DEBUG: Searching for dataplane pods in all namespaces
11:56:33.429172 k8s_client.go:154: stunnerd-fwd DEBUG: Obtaining kubeconfig
11:56:33.431026 k8s_client.go:161: stunnerd-fwd DEBUG: Creating a Kubernetes client
11:56:33.431677 k8s_client.go:262: stunnerd-fwd DEBUG: Calling GET on api/pods using namespace "" and label selector "app=stunner"
11:56:33.439407 k8s_client.go:367: stunnerd-fwd DEBUG: Found pod: t/udp-gateway-f586b5c66-pggld
11:56:33.439912 k8s_client.go:376: stunnerd-fwd DEBUG: Creating a SPDY stream to API server using URL "https://172.30.111.229:6443/api/v1/namespaces/t/pods/udp-gateway-f586b5c66-pggld/portforward"
11:56:33.439912 k8s_client.go:384: stunnerd-fwd DEBUG: Creating a port-forwarder to pod
11:56:33.439912 k8s_client.go:400: stunnerd-fwd DEBUG: Waiting for port-forwarder...
11:56:33.451970 k8s_client.go:419: stunnerd-fwd DEBUG: Port-forwarder connected to pod t/udp-gateway-f586b5c66-pggld at 127.0.0.1:57009
11:56:33.451970 k8s_client.go:314: stunnerd-fwd DEBUG: Successfully opened 1 port-forward connections
t/udp-gateway-f586b5c66-pggld:
        t/udp-gateway:{logLevel="all:DEBUG",metrics="http://:8080/metrics",health-check="http://:8086"}
        static-auth:{realm="test",username="<SECRET>",password="<SECRET>"}
        listeners:2/clusters:1
        allocs:0/status=READY
  1. turncat targeting DTLS port

turncat -v - --insecure turn://media:abcdefgg12345@aaa.local.com:30349?transport=dtls udp://10.42.0.42:8189

NOTE: 10.42.0.42:8189 is my backend

It seems to work correctly:

11:31:59.405523 main.go:88: turncat-cli DEBUG: Starting turncat version v0.21.0-0-g5eede986 (5eede98) built on 2024-09-20T13:39:28+0000
11:31:59.406101 main.go:91: turncat-cli DEBUG: Reading STUNner config from URI "turn://media:abcdefgg12345@aaa.local.com:30349?transport=dtls"
11:32:01.086806 main.go:98: turncat-cli DEBUG: Generating STUNner authentication client
11:32:01.086806 main.go:105: turncat-cli DEBUG: Generating STUNner URI
11:32:01.086806 main.go:112: turncat-cli DEBUG: Starting turncat with STUNner URI: turns://aaa.local.com:30349?transport=udp
11:32:01.086806 turncat.go:193: turncat INFO: Client listening on file://stdin, TURN server: turns://aaa.local.com:30349?transport=udp, peer: udp:10.42.0.42:8189
11:32:01.086806 main.go:129: turncat-cli DEBUG: Entering main loop
11:32:01.086806 turncat.go:234: turncat DEBUG: New connection from client /dev/stdin
11:32:01.110264 client.go:110: turnc DEBUG: Resolved STUN server 172.30.111.229:30349 to 172.30.111.229:30349
11:32:01.110785 client.go:119: turnc DEBUG: Resolved TURN server 172.30.111.229:30349 to 172.30.111.229:30349
11:32:01.115830 udp_conn.go:66: turnc DEBUG: Initial lifetime: 600 seconds
11:32:01.116309 udp_conn.go:81: turnc DEBUG: Started refresh allocation timer
11:32:01.116309 udp_conn.go:84: turnc DEBUG: Started refresh permission timer
11:32:01.116309 turncat.go:330: turncat INFO: New connection: client-address=/dev/stdin, relayed-address=10.42.0.45:49915
hello!
11:32:04.741818 udp_conn.go:438: turnc DEBUG: Channel binding successful: 10.42.0.42:8189 16384
11:32:08.262456 turncat.go:203: turncat INFO: Closing Turncat
11:32:08.262456 turncat.go:344: turncat DEBUG: deleteConnection: cannot find client connection for file:/dev/stdin

I get some new logs from udp-gateway-* pod:

08:32:01.414274 server.go:38: turn DEBUG: Received 36 bytes of udp from 10.42.0.1:12438 on [::]:5349
08:32:01.414292 server.go:63: turn DEBUG: Handling TURN packet
08:32:01.414297 turn.go:21: turn DEBUG: Received AllocateRequest from 10.42.0.1:12438
08:32:01.414872 server.go:38: turn DEBUG: Received 164 bytes of udp from 10.42.0.1:12438 on [::]:5349
08:32:01.414889 server.go:63: turn DEBUG: Handling TURN packet
08:32:01.414894 turn.go:21: turn DEBUG: Received AllocateRequest from 10.42.0.1:12438
08:32:01.414906 handlers.go:25: stunner-auth INFO: static auth request: username="media" realm="test" srcAddr=10.42.0.1:12438
08:32:01.414926 handlers.go:30: stunner-auth DEBUG: static auth request: valid username
08:32:01.414989 allocation_manager.go:116: turn DEBUG: Listening on relay address: 10.42.0.45:49915
08:32:05.039098 server.go:38: turn DEBUG: Received 168 bytes of udp from 10.42.0.1:12438 on [::]:5349
08:32:05.039151 server.go:63: turn DEBUG: Handling TURN packet
08:32:05.039163 turn.go:220: turn DEBUG: Received CreatePermission from 10.42.0.1:12438
08:32:05.039183 handlers.go:25: stunner-auth INFO: static auth request: username="media" realm="test" srcAddr=10.42.0.1:12438
08:32:05.039194 handlers.go:30: stunner-auth DEBUG: static auth request: valid username
08:32:05.039206 handlers.go:74: stunner-auth DEBUG: permission handler for listener "t/udp-gateway/dtls-listener": client "10.42.0.1:12438", peer "10.42.0.42"
08:32:05.039216 handlers.go:84: stunner-auth INFO: permission granted on listener "t/udp-gateway/dtls-listener" for client "10.42.0.1:12438" to peer 10.42.0.42 via cluster "t/media-plane"
08:32:05.039222 turn.go:249: turn DEBUG: Adding permission for 10.42.0.42:8189
08:32:05.039905 server.go:38: turn DEBUG: Received 52 bytes of udp from 10.42.0.1:12438 on [::]:5349
08:32:05.039978 server.go:63: turn DEBUG: Handling TURN packet
08:32:05.039991 turn.go:274: turn DEBUG: Received SendIndication from 10.42.0.1:12438
08:32:05.040263 server.go:38: turn DEBUG: Received 176 bytes of udp from 10.42.0.1:12438 on [::]:5349
08:32:05.040329 server.go:63: turn DEBUG: Handling TURN packet
08:32:05.040354 turn.go:307: turn DEBUG: Received ChannelBindRequest from 10.42.0.1:12438
08:32:05.040374 handlers.go:25: stunner-auth INFO: static auth request: username="media" realm="test" srcAddr=10.42.0.1:12438
08:32:05.040385 handlers.go:30: stunner-auth DEBUG: static auth request: valid username
08:32:05.040400 handlers.go:74: stunner-auth DEBUG: permission handler for listener "t/udp-gateway/dtls-listener": client "10.42.0.1:12438", peer "10.42.0.42"
08:32:05.040411 handlers.go:84: stunner-auth INFO: permission granted on listener "t/udp-gateway/dtls-listener" for client "10.42.0.1:12438" to peer 10.42.0.42 via cluster "t/media-plane"
08:32:05.040423 turn.go:344: turn DEBUG: Binding channel 16384 to 10.42.0.42:8189

And I can see some the handshake + some data in Wireshark: image

This looks GOOD

  1. openssl s_client -debug -dtls -showcerts aaa.local.com:30349 - ok
    Connecting to 172.30.111.229
    CONNECTED(000001D0)
    write to 0x190f8e86850 [0x190f92c5670] (228 bytes => 228 (0xE4))
    0000 - 16 fe ff 00 00 00 00 00-00 00 00 00 d7 01 00 00   ................
    0010 - d0 00 00 00 00 00 00 00-cb fe fd 9f 8a 08 20 23   .............. #
    0020 - 46 14 a9 c3 b4 0f 04 ea-a3 78 b3 4f 2f 76 3d f7   F........x.O/v=.
    0030 - 43 cf 01 de d3 96 be 6c-a5 52 35 00 00 00 38 c0   C......l.R5...8.
    0040 - 2c c0 30 00 9f cc a9 cc-a8 cc aa c0 2b c0 2f 00   ,.0.........+./.
    0050 - 9e c0 24 c0 28 00 6b c0-23 c0 27 00 67 c0 0a c0   ..$.(.k.#.'.g...
    0060 - 14 00 39 c0 09 c0 13 00-33 00 9d 00 9c 00 3d 00   ..9.....3.....=.
    0070 - 3c 00 35 00 2f 00 ff 01-00 00 6e 00 00 00 12 00   <.5./.....n.....
    0080 - 10 00 00 0d 61 61 61 2e-6c 6f 63 61 6c 2e 63 6f   ....aaa.local.co
    0090 - 6d 00 0b 00 04 03 00 01-02 00 0a 00 0c 00 0a 00   m...............
    00a0 - 1d 00 17 00 1e 00 19 00-18 00 23 00 00 00 16 00   ..........#.....
    00b0 - 00 00 17 00 00 00 0d 00-30 00 2e 04 03 05 03 06   ........0.......
    00c0 - 03 08 07 08 08 08 1a 08-1b 08 1c 08 09 08 0a 08   ................
    00d0 - 0b 08 04 08 05 08 06 04-01 05 01 06 01 03 03 03   ................
    00e0 - 01 03 02 04                                       ....
    write to 0x190f8e86850 [0x190f92c5670] (30 bytes => 30 (0x1E))
    0000 - 16 fe ff 00 00 00 00 00-00 00 01 00 11 01 00 00   ................
    0010 - d0 00 00 00 00 cb 00 00-05 02 05 02 06 02         ..............
    read from 0x190f8e86850 [0x190f92ca763] (16717 bytes => -1)
    write to 0x190f8e86850 [0x190f92c5670] (228 bytes => 228 (0xE4))
    0000 - 16 fe ff 00 00 00 00 00-00 00 02 00 d7 01 00 00   ................
    0010 - d0 00 00 00 00 00 00 00-cb fe fd 9f 8a 08 20 23   .............. #
    0020 - 46 14 a9 c3 b4 0f 04 ea-a3 78 b3 4f 2f 76 3d f7   F........x.O/v=.
    0030 - 43 cf 01 de d3 96 be 6c-a5 52 35 00 00 00 38 c0   C......l.R5...8.
    0040 - 2c c0 30 00 9f cc a9 cc-a8 cc aa c0 2b c0 2f 00   ,.0.........+./.
    0050 - 9e c0 24 c0 28 00 6b c0-23 c0 27 00 67 c0 0a c0   ..$.(.k.#.'.g...
    0060 - 14 00 39 c0 09 c0 13 00-33 00 9d 00 9c 00 3d 00   ..9.....3.....=.
    0070 - 3c 00 35 00 2f 00 ff 01-00 00 6e 00 00 00 12 00   <.5./.....n.....
    0080 - 10 00 00 0d 61 61 61 2e-6c 6f 63 61 6c 2e 63 6f   ....aaa.local.co
    0090 - 6d 00 0b 00 04 03 00 01-02 00 0a 00 0c 00 0a 00   m...............
    00a0 - 1d 00 17 00 1e 00 19 00-18 00 23 00 00 00 16 00   ..........#.....
    00b0 - 00 00 17 00 00 00 0d 00-30 00 2e 04 03 05 03 06   ........0.......
    00c0 - 03 08 07 08 08 08 1a 08-1b 08 1c 08 09 08 0a 08   ................
    00d0 - 0b 08 04 08 05 08 06 04-01 05 01 06 01 03 03 03   ................
    00e0 - 01 03 02 04                                       ....
    write to 0x190f8e86850 [0x190f92c5670] (30 bytes => 30 (0x1E))
    0000 - 16 fe ff 00 00 00 00 00-00 00 03 00 11 01 00 00   ................
    0010 - d0 00 00 00 00 cb 00 00-05 02 05 02 06 02         ..............
    read from 0x190f8e86850 [0x190f92ca763] (16717 bytes => 48 (0x30))
    0000 - 16 fe fd 00 00 00 00 00-00 00 00 00 23 03 00 00   ............#...
    0010 - 17 00 00 00 00 00 00 00-17 fe fd 14 b6 29 9c 50   .............).P
    0020 - 84 85 94 92 0f 73 c9 e0-40 24 d3 3b 9f 92 39 1c   .....s..@$.;..9.
    write to 0x190f8e86850 [0x190f92c5670] (228 bytes => 228 (0xE4))
    0000 - 16 fe ff 00 00 00 00 00-00 00 04 00 d7 01 00 00   ................
    0010 - e4 00 01 00 00 00 00 00-cb fe fd 9f 8a 08 20 23   .............. #
    0020 - 46 14 a9 c3 b4 0f 04 ea-a3 78 b3 4f 2f 76 3d f7   F........x.O/v=.
    0030 - 43 cf 01 de d3 96 be 6c-a5 52 35 00 14 b6 29 9c   C......l.R5...).
    0040 - 50 84 85 94 92 0f 73 c9-e0 40 24 d3 3b 9f 92 39   P.....s..@$.;..9
    0050 - 1c 00 38 c0 2c c0 30 00-9f cc a9 cc a8 cc aa c0   ..8.,.0.........
    0060 - 2b c0 2f 00 9e c0 24 c0-28 00 6b c0 23 c0 27 00   +./...$.(.k.#.'.
    0070 - 67 c0 0a c0 14 00 39 c0-09 c0 13 00 33 00 9d 00   g.....9.....3...
    0080 - 9c 00 3d 00 3c 00 35 00-2f 00 ff 01 00 00 6e 00   ..=.<.5./.....n.
    0090 - 00 00 12 00 10 00 00 0d-61 61 61 2e 6c 6f 63 61   ........aaa.loca
    00a0 - 6c 2e 63 6f 6d 00 0b 00-04 03 00 01 02 00 0a 00   l.com...........
    00b0 - 0c 00 0a 00 1d 00 17 00-1e 00 19 00 18 00 23 00   ..............#.
    00c0 - 00 00 16 00 00 00 17 00-00 00 0d 00 30 00 2e 04   ............0...
    00d0 - 03 05 03 06 03 08 07 08-08 08 1a 08 1b 08 1c 08   ................
    00e0 - 09 08 0a 08                                       ....
    write to 0x190f8e86850 [0x190f92c5670] (50 bytes => 50 (0x32))
    0000 - 16 fe ff 00 00 00 00 00-00 00 05 00 25 01 00 00   ............%...
    0010 - e4 00 01 00 00 cb 00 00-19 0b 08 04 08 05 08 06   ................
    0020 - 04 01 05 01 06 01 03 03-03 01 03 02 04 02 05 02   ................
    0030 - 06 02                                             ..
    read from 0x190f8e86850 [0x190f92ca763] (16717 bytes => 48 (0x30))
    0000 - 16 fe fd 00 00 00 00 00-00 00 01 00 23 03 00 00   ............#...
    0010 - 17 00 00 00 00 00 00 00-17 fe fd 14 b6 29 9c 50   .............).P
    0020 - 84 85 94 92 0f 73 c9 e0-40 24 d3 3b 9f 92 39 1c   .....s..@$.;..9.
    read from 0x190f8e86850 [0x190f92ca763] (16717 bytes => 648 (0x288))
    0000 - 16 fe fd 00 00 00 00 00-00 00 02 00 43 02 00 00   ............C...
    0010 - 37 00 01 00 00 00 00 00-37 fe fd 67 01 43 46 34   7.......7..g.CF4
    0020 - 83 89 f8 47 d0 7f ca ba-82 45 5f 19 a9 a4 11 69   ...G.....E_....i
    0030 - b0 de 25 28 3e ff 53 84-ac 3e 13 00 c0 2c 00 00   ..%(>.S..>...,..
    0040 - 0f ff 01 00 01 00 00 17-00 00 00 0b 00 02 01 00   ................
    0050 - 16 fe fd 00 00 00 00 00-00 00 03 01 8b 0b 00 01   ................
    0060 - 7f 00 02 00 00 00 00 01-7f 00 01 7c 00 01 79 30   ...........|..y0
    0070 - 82 01 75 30 82 01 1b a0-03 02 01 02 02 14 3f 08   ..u0..........?.
    0080 - e9 64 09 95 08 4f ed d5-bf da 0c 70 eb c9 3e ad   .d...O.....p..>.
    0090 - c0 0d 30 0a 06 08 2a 86-48 ce 3d 04 03 02 30 10   ..0...*.H.=...0.
    00a0 - 31 0e 30 0c 06 03 55 04-03 0c 05 74 65 73 74 31   1.0...U....test1
    00b0 - 30 1e 17 0d 32 34 31 30-30 34 31 34 30 30 31 34   0...241004140014
    00c0 - 5a 17 0d 32 35 31 30 30-34 31 34 30 30 31 34 5a   Z..251004140014Z
    00d0 - 30 10 31 0e 30 0c 06 03-55 04 03 0c 05 74 65 73   0.1.0...U....tes
    00e0 - 74 31 30 59 30 13 06 07-2a 86 48 ce 3d 02 01 06   t10Y0...*.H.=...
    00f0 - 08 2a 86 48 ce 3d 03 01-07 03 42 00 04 be 77 0e   .*.H.=....B...w.
    0100 - 1a 9b 71 9c 57 92 59 9b-5b 91 92 3b 1a 33 78 5b   ..q.W.Y.[..;.3x[
    0110 - e5 e7 4b b5 60 72 23 57-55 33 c5 53 85 37 62 ab   ..K.`r#WU3.S.7b.
    0120 - 9d 0d 29 28 52 a4 51 66-95 df 70 69 5d 4e 5a 16   ..)(R.Qf..pi]NZ.
    0130 - dd be a0 8c 11 e5 40 e6-d1 36 d8 05 83 a3 53 30   ......@..6....S0
    0140 - 51 30 1d 06 03 55 1d 0e-04 16 04 14 c8 b6 94 f2   Q0...U..........
    0150 - 2e 21 b5 56 97 10 20 18-d1 57 50 4e 43 8f 46 41   .!.V.. ..WPNC.FA
    0160 - 30 1f 06 03 55 1d 23 04-18 30 16 80 14 c8 b6 94   0...U.#..0......
    0170 - f2 2e 21 b5 56 97 10 20-18 d1 57 50 4e 43 8f 46   ..!.V.. ..WPNC.F
    0180 - 41 30 0f 06 03 55 1d 13-01 01 ff 04 05 30 03 01   A0...U.......0..
    0190 - 01 ff 30 0a 06 08 2a 86-48 ce 3d 04 03 02 03 48   ..0...*.H.=....H
    01a0 - 00 30 45 02 20 25 9b b8-0c 71 5f 58 2e 14 36 ec   .0E. %...q_X..6.
    01b0 - 2a c9 2a 33 28 66 c8 e1-1b 86 a9 40 9b 7c 25 42   *.*3(f.....@.|%B
    01c0 - 51 aa a9 b9 33 02 21 00-8f e3 58 a8 17 6d f6 ac   Q...3.!...X..m..
    01d0 - 0d db 30 b1 75 82 7c f2-a4 c8 4b 21 98 ce 3b db   ..0.u.|...K!..;.
    01e0 - 8d fa bd 83 d8 12 b6 86-16 fe fd 00 00 00 00 00   ................
    01f0 - 00 00 04 00 7a 0c 00 00-6e 00 03 00 00 00 00 00   ....z...n.......
    0200 - 6e 03 00 1d 20 5d fc a3-ae 56 c6 8a 8b 9c b2 66   n... ]...V.....f
    0210 - 73 c1 6e 8f e8 39 36 ed-0f 4b a1 f2 c9 a9 1a fd   s.n..96..K......
    0220 - d8 be 6a 31 28 04 03 00-46 30 44 02 20 7a f6 5f   ..j1(...F0D. z._
    0230 - 72 63 f0 c6 18 7d 75 31-ae 59 b6 48 33 08 4b 6c   rc...}u1.Y.H3.Kl
    0240 - a1 2c df be 44 e0 57 b6-50 8e 44 a3 65 02 20 55   .,..D.W.P.D.e. U
    0250 - 81 91 dc d9 13 ea 30 77-ad 47 71 f8 8c dc 71 44   ......0w.Gq...qD
    0260 - 6e 9d 97 38 7c c3 85 21-76 19 5f 71 12 2b 22 16   n..8|..!v._q.+".
    0270 - fe fd 00 00 00 00 00 00-00 05 00 0c 0e 00 00 00   ................
    0280 - 00 04 00 00 00 00 00 00-                          ........
    depth=0 CN=test1
    verify error:num=18:self-signed certificate
    verify return:1
    depth=0 CN=test1
    verify return:1
    write to 0x190f8e86850 [0x190f92c5670] (133 bytes => 133 (0x85))
    0000 - 16 fe fd 00 00 00 00 00-00 00 06 00 2d 10 00 00   ............-...
    0010 - 21 00 02 00 00 00 00 00-21 20 6c 77 02 2c 19 91   !.......! lw.,..
    0020 - c8 1c 56 ad c9 17 01 de-05 11 1e 65 4b aa 96 f0   ..V........eK...
    0030 - 95 96 fa ff f3 e1 12 76-da 43 14 fe fd 00 00 00   .......v.C......
    0040 - 00 00 00 00 07 00 01 01-16 fe fd 00 01 00 00 00   ................
    0050 - 00 00 00 00 30 9c cc d7-48 94 58 f5 e2 97 18 1a   ....0...H.X.....
    0060 - a2 61 c6 6b 7e 01 18 ec-0a ed f7 33 39 b7 26 bd   .a.k~......39.&.
    0070 - 84 59 48 9b 23 0b 2f d3-d7 9f e1 14 dd ed a2 8f   .YH.#./.........
    0080 - e5 08 53 b2 cb                                    ..S..
    read from 0x190f8e86850 [0x190f92ca763] (16717 bytes => 75 (0x4B))
    0000 - 14 fe fd 00 00 00 00 00-00 00 06 00 01 01 16 fe   ................
    0010 - fd 00 01 00 00 00 00 00-00 00 30 86 20 47 f3 85   ..........0. G..
    0020 - 76 1b 74 26 88 2c 24 7f-20 41 2b b0 c0 97 94 2a   v.t&.,$. A+....*
    0030 - 11 0a d6 4e 56 1f bc 46-e1 e6 31 43 88 cc 04 41   ...NV..F..1C...A
    0040 - 32 ad 13 96 21 9e d1 f2-be 29 8c                  2...!....).
    ---
    Certificate chain
    0 s:CN=test1
    i:CN=test1
    a:PKEY: id-ecPublicKey, 256 (bit); sigalg: ecdsa-with-SHA256
    v:NotBefore: Oct  4 14:00:14 2024 GMT; NotAfter: Oct  4 14:00:14 2025 GMT
    -----BEGIN CERTIFICATE-----
    MIIBdTCCARugAwIBAgIUPwjpZAmVCE/t1b/aDHDryT6twA0wCgYIKoZIzj0EAwIw
    EDEOMAwGA1UEAwwFdGVzdDEwHhcNMjQxMDA0MTQwMDE0WhcNMjUxMDA0MTQwMDE0
    WjAQMQ4wDAYDVQQDDAV0ZXN0MTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL53
    DhqbcZxXklmbW5GSOxozeFvl50u1YHIjV1UzxVOFN2KrnQ0pKFKkUWaV33BpXU5a
    Ft2+oIwR5UDm0TbYBYOjUzBRMB0GA1UdDgQWBBTItpTyLiG1VpcQIBjRV1BOQ49G
    QTAfBgNVHSMEGDAWgBTItpTyLiG1VpcQIBjRV1BOQ49GQTAPBgNVHRMBAf8EBTAD
    AQH/MAoGCCqGSM49BAMCA0gAMEUCICWbuAxxX1guFDbsKskqMyhmyOEbhqlAm3wl
    QlGqqbkzAiEAj+NYqBdt9qwN2zCxdYJ88qTISyGYzjvbjfq9g9gStoY=
    -----END CERTIFICATE-----
    ---
    Server certificate
    subject=CN=test1
    issuer=CN=test1
    ---
    No client certificate CA names sent
    Peer signing digest: SHA256
    Peer signature type: ECDSA
    Server Temp Key: X25519, 253 bits
    ---
    SSL handshake has read 819 bytes and written 927 bytes
    Verification error: self-signed certificate
    ---
    New, TLSv1.2, Cipher is ECDHE-ECDSA-AES256-GCM-SHA384
    Server public key is 256 bit
    Secure Renegotiation IS supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
    Protocol  : DTLSv1.2
    Cipher    : ECDHE-ECDSA-AES256-GCM-SHA384
    Session-ID:
    Session-ID-ctx:
    Master-Key: 8522D40E150570FFAF035F51A4B29AE08A6DE87B3F86137D812310678C491B94D58210BB2661F58AC6AC8A5C2F3885C9
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1728136007
    Timeout   : 7200 (sec)
    Verify return code: 18 (self-signed certificate)
    Extended master secret: yes

I see similar DTLS handshare in Wireshark as with turncat from previous step - also look good.

  1. Now here is where Im facing an issue. I'm trying to obtain ICE candidates list and see if there's a relay one.

For this I'm using Trickle ICE website. I've downloaded their sources from here - https://github.com/webrtc/samples/tree/gh-pages/src/content/peerconnection/trickle-ice

Then I run index.html locally and here are my findings (note all the below tests have correct creds specified, the difference is basically in TURN server url\port\transport:

8.1. Using regular UDP listener: turn:aaa.local.com:30478?transport=udp - works as expected: image

I also see new logs on udp-gateway:

09:07:13.025350 server.go:38: turn DEBUG: Received 20 bytes of udp from 10.42.0.1:4745 on [::]:3478
09:07:13.025388 server.go:63: turn DEBUG: Handling TURN packet
09:07:13.025394 stun.go:12: turn DEBUG: Received BindingRequest from 10.42.0.1:4745
09:07:13.089405 server.go:38: turn DEBUG: Received 28 bytes of udp from 10.42.0.1:4745 on [::]:3478
09:07:13.089432 server.go:63: turn DEBUG: Handling TURN packet
09:07:13.089449 turn.go:21: turn DEBUG: Received AllocateRequest from 10.42.0.1:4745
09:07:13.090647 server.go:38: turn DEBUG: Received 156 bytes of udp from 10.42.0.1:4745 on [::]:3478
09:07:13.090681 server.go:63: turn DEBUG: Handling TURN packet
09:07:13.090690 turn.go:21: turn DEBUG: Received AllocateRequest from 10.42.0.1:4745
09:07:13.090701 handlers.go:25: stunner-auth INFO: static auth request: username="media" realm="test" srcAddr=10.42.0.1:4745
09:07:13.090709 handlers.go:30: stunner-auth DEBUG: static auth request: valid username
09:07:13.090758 allocation_manager.go:116: turn DEBUG: Listening on relay address: 10.42.0.45:57072
09:07:13.152926 server.go:38: turn DEBUG: Received 156 bytes of udp from 10.42.0.1:4745 on [::]:3478
09:07:13.152960 server.go:63: turn DEBUG: Handling TURN packet
09:07:13.152970 turn.go:186: turn DEBUG: Received RefreshRequest from 10.42.0.1:4745
09:07:13.152983 handlers.go:25: stunner-auth INFO: static auth request: username="media" realm="test" srcAddr=10.42.0.1:4745
09:07:13.152990 handlers.go:30: stunner-auth DEBUG: static auth request: valid username

8.2. Issue is with DTLS listener:

NOTE: I simply try different combinations of the TURN server url, maybe smth is wrong with it?

turn:aaa.local.com:30349?transport=dtls - the JS doesn't like this one, saying Error creating offer: SyntaxError: Failed to construct 'RTCPeerConnection': ICE server parsing failed: Transport parameter should always be udp or tcp.

turns:aaa.local.com:30349?transport=udp - somehow gets rewritten to tcp and if I filter the Wireshark capture I do see TCP traffic.

turn:aaa.local.com:30349?transport=udp - this seems to do smth but I end up receiving timeouts. There are NO new logs neither in stunner-auth-* not in udp-gateway-* pods. image

The Wireshark capture shows me the following: image

So it seems it keeps retrying but finally times out.

Expected behavior:

Given that:

I expect that:

Actual behavior: I cannot retrieve a list of candidates from DTLS listener.

What else I've tried?

  1. Having only single DTLS listener - no difference
  2. Chanding DTLS listener to use other internal\external ports - no difference
  3. Using cert-manager to generate a cert, tried with different self-signed CA and using RSA algorithm instead - no difference
  4. I've seen this issue - https://github.com/l7mp/stunner/issues/143 . But my understanding that if UDP listener works then DTLS should work as well, eliminating potential MTU issues (or that's wrong?). I'm not using MetalLB currently not Nginx. They will be there in the future but I expect a simpler PoC using NodePorts to work. Btw, not planning on running DTLS on 443 port so this should not conflict with Nginx serving some UI stuff.
  5. I've also seen this issue - https://github.com/l7mp/stunner/issues/126 . We're going to use Mediamtx with asymmetric ICE soon but at this point I'm simply trying to get through to the TURN server with DTLS.

Is there anything else I can try out in order to troubleshoot this?

Versions

Info

[Please copy-paste the output of the below commands and make sure to remove all sensitive information, like usernames, passwords, IP addresses, etc.]

Gateway API status

[Output of kubectl get gateways,gatewayconfigs,gatewayclasses,udproutes.stunner.l7mp.io --all-namespaces -o yaml]

apiVersion: v1
items:
- apiVersion: gateway.networking.k8s.io/v1
  kind: Gateway
  metadata:
    annotations:
      meta.helm.sh/release-name: stunner-config
      meta.helm.sh/release-namespace: t
      stunner.l7mp.io/nodeport: '{"udp-listener":30478,"dtls-listener":30349}'
      stunner.l7mp.io/service-type: NodePort
    creationTimestamp: "2024-10-03T18:36:19Z"
    generation: 6
    labels:
      app.kubernetes.io/managed-by: Helm
    name: udp-gateway
    namespace: t
    resourceVersion: "92712"
    uid: 1ed06e18-7e2a-4b27-9664-e7e8fe92de01
  spec:
    gatewayClassName: stunner-gatewayclass
    listeners:
    - allowedRoutes:
        namespaces:
          from: Same
      name: udp-listener
      port: 3478
      protocol: TURN-UDP
    - allowedRoutes:
        namespaces:
          from: Same
      name: dtls-listener
      port: 5349
      protocol: TURN-DTLS
      tls:
        certificateRefs:
        - group: ""
          kind: Secret
          name: test-tls
        mode: Terminate
  status:
    conditions:
    - lastTransitionTime: "2024-10-03T18:36:20Z"
      message: gateway accepted by controller stunner.l7mp.io/gateway-operator
      observedGeneration: 6
      reason: Accepted
      status: "True"
      type: Accepted
    - lastTransitionTime: "2024-10-05T13:55:01Z"
      message: no public address found for at least one listener
      observedGeneration: 6
      reason: AddressNotAssigned
      status: "False"
      type: Programmed
    listeners:
    - attachedRoutes: 1
      conditions:
      - lastTransitionTime: "2024-10-05T13:55:01Z"
        message: listener accepted
        observedGeneration: 6
        reason: Accepted
        status: "True"
        type: Accepted
      - lastTransitionTime: "2024-10-05T13:55:01Z"
        message: listener protocol-port available
        observedGeneration: 6
        reason: NoConflicts
        status: "False"
        type: Conflicted
      - lastTransitionTime: "2024-10-05T13:55:01Z"
        message: listener object references sucessfully resolved
        observedGeneration: 6
        reason: ResolvedRefs
        status: "True"
        type: ResolvedRefs
      name: udp-listener
      supportedKinds:
      - group: gateway.networking.k8s.io
        kind: UDPRoute
      - group: stunner.l7mp.io
        kind: UDPRoute
    - attachedRoutes: 1
      conditions:
      - lastTransitionTime: "2024-10-05T13:55:01Z"
        message: listener accepted
        observedGeneration: 6
        reason: Accepted
        status: "True"
        type: Accepted
      - lastTransitionTime: "2024-10-05T13:55:01Z"
        message: listener protocol-port available
        observedGeneration: 6
        reason: NoConflicts
        status: "False"
        type: Conflicted
      - lastTransitionTime: "2024-10-05T13:55:01Z"
        message: listener object references sucessfully resolved
        observedGeneration: 6
        reason: ResolvedRefs
        status: "True"
        type: ResolvedRefs
      name: dtls-listener
      supportedKinds:
      - group: gateway.networking.k8s.io
        kind: UDPRoute
      - group: stunner.l7mp.io
        kind: UDPRoute
- apiVersion: stunner.l7mp.io/v1
  kind: GatewayConfig
  metadata:
    annotations:
      meta.helm.sh/release-name: stunner-config
      meta.helm.sh/release-namespace: t
    creationTimestamp: "2024-10-03T18:36:19Z"
    generation: 4
    labels:
      app.kubernetes.io/managed-by: Helm
    name: stunner-gatewayconfig
    namespace: t
    resourceVersion: "86012"
    uid: 2505cc61-b654-411f-9452-3c755eb224f9
  spec:
    authRef:
      group: ""
      kind: Secret
      name: stunner-creds
      namespace: t
    authType: plaintext
    dataplane: default
    logLevel: all:DEBUG
    realm: test
- apiVersion: gateway.networking.k8s.io/v1
  kind: GatewayClass
  metadata:
    annotations:
      meta.helm.sh/release-name: stunner-config
      meta.helm.sh/release-namespace: t
    creationTimestamp: "2024-10-03T18:36:19Z"
    generation: 1
    labels:
      app.kubernetes.io/managed-by: Helm
    name: stunner-gatewayclass
    resourceVersion: "33102"
    uid: d4d6473a-b52c-4509-98d8-01f897a45c1f
  spec:
    controllerName: stunner.l7mp.io/gateway-operator
    parametersRef:
      group: stunner.l7mp.io
      kind: GatewayConfig
      name: stunner-gatewayconfig
      namespace: t
  status:
    conditions:
    - lastTransitionTime: "2024-10-03T18:36:20Z"
      message: GatewayClass is now managed by controller "stunner.l7mp.io/gateway-operator"
      observedGeneration: 1
      reason: Accepted
      status: "True"
      type: Accepted
- apiVersion: stunner.l7mp.io/v1
  kind: UDPRoute
  metadata:
    annotations:
      meta.helm.sh/release-name: stunner-config
      meta.helm.sh/release-namespace: t
    creationTimestamp: "2024-10-03T18:36:19Z"
    generation: 1
    labels:
      app.kubernetes.io/managed-by: Helm
    name: media-plane
    namespace: t
    resourceVersion: "92713"
    uid: c25423fc-374b-4763-8081-5cb5965e1799
  spec:
    parentRefs:
    - group: gateway.networking.k8s.io
      kind: Gateway
      name: udp-gateway
    rules:
    - backendRefs:
      - group: ""
        kind: Service
        name: mediamtx
        namespace: t
        port: 8189
  status:
    parents:
    - conditions:
      - lastTransitionTime: "2024-10-05T13:55:01Z"
        message: parent accepts the route
        observedGeneration: 1
        reason: Accepted
        status: "True"
        type: Accepted
      - lastTransitionTime: "2024-10-05T13:55:01Z"
        message: all backend references successfully resolved
        observedGeneration: 1
        reason: ResolvedRefs
        status: "True"
        type: ResolvedRefs
      controllerName: stunner.l7mp.io/gateway-operator
      parentRef:
        group: gateway.networking.k8s.io
        kind: Gateway
        name: udp-gateway
kind: List
metadata:
  resourceVersion: ""

Operator logs

NOTE: will post separatelly due to size limit

IvaskevychYuriy commented 1 month ago

Operator logs

[Output of kubectl -n t logs $(kubectl get pods -l control-plane=stunner-gateway-operator-controller-manager --all-namespaces -o jsonpath='{.items[0].metadata.name}')]

2024-10-05T08:22:48.465693382Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T08:22:48.465780356Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T08:22:48.715872199Z  INFO    operator        Starting new reconcile generation       {"generation": 225, "last-acked-generation": 225}
2024-10-05T08:22:48.715915141Z  INFO    renderer        Rendering configuration {"generation": 226, "event": "render: generation: 226"}
2024-10-05T08:22:48.715918456Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:22:48.715929139Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:22:48.715988836Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:22:48.716010866Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:22:48.716140476Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:22:48.71620538Z   INFO    renderer        Update queue ready      {"queue": "update (gen: 226, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:22:48.716415428Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 226, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:22:48.716448242Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 226, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"stunner.l7mp.io\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:22:48.71648734Z   INFO    cds-server      Processing config update event  {"generation": 226, "update": "update (gen: 226, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:22:48.716566034Z  INFO    updater Processing update event {"generation": 226, "update": "update (gen: 226, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:23:20.078273338Z  INFO    gateway-controller      Reconciling     {"resource": "t/udp-gateway"}
2024-10-05T08:23:20.093318603Z  INFO    gatewayconfig-controller        Reconciling     {"resource": "t/stunner-gatewayconfig"}
2024-10-05T08:23:20.32920642Z   INFO    operator        Starting new reconcile generation       {"generation": 226, "last-acked-generation": 226}
2024-10-05T08:23:20.329265503Z  INFO    renderer        Rendering configuration {"generation": 227, "event": "render: generation: 227"}
2024-10-05T08:23:20.329272808Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:23:20.329299664Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:23:20.329363121Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:23:20.329381361Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:23:20.329523927Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:23:20.329620403Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 227, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:23:20.329964238Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 227, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:23:20.330028489Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 227, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:23:20.330119703Z  INFO    cds-server      Processing config update event  {"generation": 227, "update": "update (gen: 227, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:23:20.330252169Z  INFO    updater Processing update event {"generation": 227, "update": "update (gen: 227, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:23:20.330435366Z  ERROR   cds-server      Error sending config update     {"client": "tcp:10.42.0.39:53018", "error": "writev tcp 10.42.0.19:13478->10.42.0.39:53018: writev: connection timed out"}
2024-10-05T08:25:57.088516662Z  INFO    udproute-controller     Validating backend      {"udproute": "not found"}
2024-10-05T08:25:57.102115474Z  INFO    udproute-controller     Validating backend      {"udproute": "not found"}
2024-10-05T08:25:57.210214693Z  INFO    udproute-controller     Validating backend      {"udproute": "not found"}
2024-10-05T08:26:01.576161263Z  INFO    gateway-controller      Reconciling     {"resource": "t/udp-gateway"}
2024-10-05T08:26:01.585578629Z  INFO    gateway-controller      Reconciling     {"resource": "t/udp-gateway"}
2024-10-05T08:26:01.59500281Z   INFO    gateway-controller      Reconciling     {"resource": "t/udp-gateway"}
2024-10-05T08:26:01.599571666Z  INFO    gateway-controller      Reconciling     {"resource": "t/udp-gateway"}
2024-10-05T08:26:01.826384079Z  INFO    operator        Starting new reconcile generation       {"generation": 227, "last-acked-generation": 227}
2024-10-05T08:26:01.82653707Z   INFO    renderer        Rendering configuration {"generation": 228, "event": "render: generation: 228"}
2024-10-05T08:26:01.826545816Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:26:01.826601651Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:26:01.826717235Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:26:01.826744612Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:26:01.82699445Z   INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:26:01.827143541Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 228, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:26:01.827565848Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 228, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:26:01.827659818Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 228, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:26:01.827749325Z  INFO    cds-server      Processing config update event  {"generation": 228, "update": "update (gen: 228, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:26:01.827801746Z  INFO    updater Processing update event {"generation": 228, "update": "update (gen: 228, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:26:03.102488317Z  INFO    udproute-controller     Validating backend      {"udproute": "not found"}
2024-10-05T08:26:03.110192739Z  INFO    udproute-controller     Validating backend      {"udproute": "not found"}
2024-10-05T08:26:03.123529748Z  INFO    gateway-controller      Reconciling     {"resource": "t/udp-gateway"}
2024-10-05T08:26:03.127402814Z  INFO    udproute-controller     Validating backend      {"udproute": "not found"}
2024-10-05T08:26:03.133631557Z  INFO    gateway-controller      Reconciling     {"resource": "t/udp-gateway"}
2024-10-05T08:26:03.231398356Z  INFO    udproute-controller     Validating backend      {"udproute": "not found"}
2024-10-05T08:26:03.373752527Z  INFO    operator        Starting new reconcile generation       {"generation": 228, "last-acked-generation": 228}
2024-10-05T08:26:03.373846811Z  INFO    renderer        Rendering configuration {"generation": 229, "event": "render: generation: 229"}
2024-10-05T08:26:03.373873301Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:26:03.37389111Z   INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:26:03.373963567Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:26:03.374016266Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:26:03.374214689Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:26:03.374454064Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 229, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:26:03.374835715Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 229, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:26:03.374968629Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 229, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:26:03.375064801Z  INFO    cds-server      Processing config update event  {"generation": 229, "update": "update (gen: 229, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:26:03.375089204Z  INFO    updater Processing update event {"generation": 229, "update": "update (gen: 229, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:27:54.759281198Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T08:27:54.759368244Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T08:27:55.010697995Z  INFO    operator        Starting new reconcile generation       {"generation": 229, "last-acked-generation": 229}
2024-10-05T08:27:55.010746493Z  INFO    renderer        Rendering configuration {"generation": 230, "event": "render: generation: 230"}
2024-10-05T08:27:55.010750285Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:27:55.01076142Z   INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:27:55.010805093Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:27:55.0108166Z    INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:27:55.010962401Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:27:55.011036102Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 230, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:27:55.011411052Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 230, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:27:55.011442022Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 230, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:27:55.011482632Z  INFO    cds-server      Processing config update event  {"generation": 230, "update": "update (gen: 230, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:27:55.011529038Z  INFO    updater Processing update event {"generation": 230, "update": "update (gen: 230, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:33:00.267850476Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T08:33:00.267997993Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T08:33:00.518750157Z  INFO    operator        Starting new reconcile generation       {"generation": 230, "last-acked-generation": 230}
2024-10-05T08:33:00.518812296Z  INFO    renderer        Rendering configuration {"generation": 231, "event": "render: generation: 231"}
2024-10-05T08:33:00.518815842Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:33:00.518827159Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:33:00.518901381Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:33:00.518916205Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:33:00.519054874Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:33:00.519143986Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 231, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:33:00.519485177Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 231, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:33:00.51952965Z   INFO    renderer        STUNner dataplane configuration ready   {"generation": 231, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:33:00.519620463Z  INFO    cds-server      Processing config update event  {"generation": 231, "update": "update (gen: 231, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:33:00.519638992Z  INFO    updater Processing update event {"generation": 231, "update": "update (gen: 231, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:38:06.957805532Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T08:38:06.957870882Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T08:38:07.208822083Z  INFO    operator        Starting new reconcile generation       {"generation": 231, "last-acked-generation": 231}
2024-10-05T08:38:07.208866574Z  INFO    renderer        Rendering configuration {"generation": 232, "event": "render: generation: 232"}
2024-10-05T08:38:07.208870135Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:38:07.208883994Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:38:07.208939093Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:38:07.208949437Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:38:07.209091064Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:38:07.209164144Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 232, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:38:07.209370516Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 232, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:38:07.209392897Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 232, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:38:07.209450679Z  INFO    cds-server      Processing config update event  {"generation": 232, "update": "update (gen: 232, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:38:07.209478624Z  INFO    updater Processing update event {"generation": 232, "update": "update (gen: 232, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:43:13.335429146Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T08:43:13.335507346Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T08:43:13.586270976Z  INFO    operator        Starting new reconcile generation       {"generation": 232, "last-acked-generation": 232}
2024-10-05T08:43:13.586338094Z  INFO    renderer        Rendering configuration {"generation": 233, "event": "render: generation: 233"}
2024-10-05T08:43:13.586341769Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:43:13.586352879Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:43:13.586558847Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:43:13.586581578Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:43:13.586763501Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:43:13.5868868Z    INFO    renderer        Update queue ready      {"queue": "update (gen: 233, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:43:13.587275653Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 233, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:43:13.587349033Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 233, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:43:13.587422133Z  INFO    cds-server      Processing config update event  {"generation": 233, "update": "update (gen: 233, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:43:13.587437372Z  INFO    updater Processing update event {"generation": 233, "update": "update (gen: 233, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:48:20.659011354Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T08:48:20.659112565Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T08:48:20.909655398Z  INFO    operator        Starting new reconcile generation       {"generation": 233, "last-acked-generation": 233}
2024-10-05T08:48:20.909709807Z  INFO    renderer        Rendering configuration {"generation": 234, "event": "render: generation: 234"}
2024-10-05T08:48:20.909713675Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:48:20.909724327Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:48:20.90978498Z   INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:48:20.9098226Z    INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:48:20.909950496Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:48:20.910018421Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 234, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:48:20.910197673Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 234, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:48:20.910252557Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 234, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:48:20.910297603Z  INFO    cds-server      Processing config update event  {"generation": 234, "update": "update (gen: 234, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:48:20.910349503Z  INFO    updater Processing update event {"generation": 234, "update": "update (gen: 234, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:53:25.896534357Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T08:53:25.896609271Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T08:53:26.147059032Z  INFO    operator        Starting new reconcile generation       {"generation": 234, "last-acked-generation": 234}
2024-10-05T08:53:26.147118774Z  INFO    renderer        Rendering configuration {"generation": 235, "event": "render: generation: 235"}
2024-10-05T08:53:26.147128167Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:53:26.147147045Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:53:26.147294851Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:53:26.14731821Z   INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:53:26.147580627Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:53:26.147733718Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 235, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:53:26.148092046Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 235, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:53:26.148160037Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 235, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:53:26.148251974Z  INFO    cds-server      Processing config update event  {"generation": 235, "update": "update (gen: 235, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:53:26.148325486Z  INFO    updater Processing update event {"generation": 235, "update": "update (gen: 235, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:58:31.557767458Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T08:58:31.557827295Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T08:58:31.808026493Z  INFO    operator        Starting new reconcile generation       {"generation": 235, "last-acked-generation": 235}
2024-10-05T08:58:31.80811784Z   INFO    renderer        Rendering configuration {"generation": 236, "event": "render: generation: 236"}
2024-10-05T08:58:31.808123692Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T08:58:31.808140076Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T08:58:31.808256985Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:58:31.808275122Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T08:58:31.808461532Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T08:58:31.808568445Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 236, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T08:58:31.808878239Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 236, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T08:58:31.808939035Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 236, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T08:58:31.809000644Z  INFO    cds-server      Processing config update event  {"generation": 236, "update": "update (gen: 236, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T08:58:31.80906714Z   INFO    updater Processing update event {"generation": 236, "update": "update (gen: 236, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:03:38.200500307Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T09:03:38.200623902Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T09:03:38.45150937Z   INFO    operator        Starting new reconcile generation       {"generation": 236, "last-acked-generation": 236}
2024-10-05T09:03:38.451606145Z  INFO    renderer        Rendering configuration {"generation": 237, "event": "render: generation: 237"}
2024-10-05T09:03:38.451614766Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T09:03:38.451636901Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T09:03:38.451781249Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:03:38.452096143Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:03:38.452360836Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T09:03:38.452510914Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 237, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T09:03:38.453278277Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 237, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T09:03:38.453334774Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 237, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T09:03:38.453422944Z  INFO    cds-server      Processing config update event  {"generation": 237, "update": "update (gen: 237, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:03:38.453481246Z  INFO    updater Processing update event {"generation": 237, "update": "update (gen: 237, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:08:43.856737927Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T09:08:43.857021315Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T09:08:44.108147788Z  INFO    operator        Starting new reconcile generation       {"generation": 237, "last-acked-generation": 237}
2024-10-05T09:08:44.108275132Z  INFO    renderer        Rendering configuration {"generation": 238, "event": "render: generation: 238"}
2024-10-05T09:08:44.108286022Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T09:08:44.108307576Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T09:08:44.108419635Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:08:44.10848053Z   INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:08:44.108713965Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T09:08:44.108846595Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 238, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T09:08:44.109205308Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 238, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T09:08:44.109331528Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 238, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T09:08:44.109459588Z  INFO    cds-server      Processing config update event  {"generation": 238, "update": "update (gen: 238, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:08:44.109546168Z  INFO    updater Processing update event {"generation": 238, "update": "update (gen: 238, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:13:50.807291886Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T09:13:50.807355169Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T09:13:51.057919152Z  INFO    operator        Starting new reconcile generation       {"generation": 238, "last-acked-generation": 238}
2024-10-05T09:13:51.057973079Z  INFO    renderer        Rendering configuration {"generation": 239, "event": "render: generation: 239"}
2024-10-05T09:13:51.057977199Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T09:13:51.057988511Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T09:13:51.058074976Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:13:51.058086477Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:13:51.058219619Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T09:13:51.058365577Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 239, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T09:13:51.058608343Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 239, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T09:13:51.058655511Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 239, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T09:13:51.058715561Z  INFO    cds-server      Processing config update event  {"generation": 239, "update": "update (gen: 239, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:13:51.05873847Z   INFO    updater Processing update event {"generation": 239, "update": "update (gen: 239, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:18:56.485492614Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T09:18:56.485569796Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T09:18:56.735989051Z  INFO    operator        Starting new reconcile generation       {"generation": 239, "last-acked-generation": 239}
2024-10-05T09:18:56.736061565Z  INFO    renderer        Rendering configuration {"generation": 240, "event": "render: generation: 240"}
2024-10-05T09:18:56.736066739Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T09:18:56.736083424Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T09:18:56.736153557Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:18:56.736197065Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:18:56.7363854Z    INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T09:18:56.73646973Z   INFO    renderer        Update queue ready      {"queue": "update (gen: 240, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T09:18:56.736697513Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 240, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T09:18:56.736744151Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 240, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T09:18:56.736814073Z  INFO    cds-server      Processing config update event  {"generation": 240, "update": "update (gen: 240, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:18:56.736892162Z  INFO    updater Processing update event {"generation": 240, "update": "update (gen: 240, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:24:02.834405028Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T09:24:02.834469874Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T09:24:03.085604666Z  INFO    operator        Starting new reconcile generation       {"generation": 240, "last-acked-generation": 240}
2024-10-05T09:24:03.085711129Z  INFO    renderer        Rendering configuration {"generation": 241, "event": "render: generation: 241"}
2024-10-05T09:24:03.085716431Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T09:24:03.085732017Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T09:24:03.08584877Z   INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:24:03.085881476Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:24:03.086042151Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T09:24:03.086149341Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 241, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T09:24:03.08645857Z   INFO    renderer        STUNner dataplane Deployment ready      {"generation": 241, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T09:24:03.086507531Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 241, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T09:24:03.086584522Z  INFO    cds-server      Processing config update event  {"generation": 241, "update": "update (gen: 241, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:24:03.086611949Z  INFO    updater Processing update event {"generation": 241, "update": "update (gen: 241, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:29:09.186750827Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T09:29:09.187183852Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T09:29:09.438210809Z  INFO    operator        Starting new reconcile generation       {"generation": 241, "last-acked-generation": 241}
2024-10-05T09:29:09.43837348Z   INFO    renderer        Rendering configuration {"generation": 242, "event": "render: generation: 242"}
2024-10-05T09:29:09.438380495Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T09:29:09.438398951Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T09:29:09.438492076Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:29:09.438513484Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:29:09.438744045Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T09:29:09.438851593Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 242, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T09:29:09.439261391Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 242, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T09:29:09.439334625Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 242, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T09:29:09.439415017Z  INFO    cds-server      Processing config update event  {"generation": 242, "update": "update (gen: 242, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:29:09.43946344Z   INFO    updater Processing update event {"generation": 242, "update": "update (gen: 242, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:34:14.449832275Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T09:34:14.449895517Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T09:34:14.700402917Z  INFO    operator        Starting new reconcile generation       {"generation": 242, "last-acked-generation": 242}
2024-10-05T09:34:14.700441755Z  INFO    renderer        Rendering configuration {"generation": 243, "event": "render: generation: 243"}
2024-10-05T09:34:14.700444819Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T09:34:14.700455197Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T09:34:14.700508496Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:34:14.700518657Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:34:14.700636676Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T09:34:14.700696855Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 243, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T09:34:14.700850366Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 243, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T09:34:14.700885582Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 243, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T09:34:14.700928678Z  INFO    cds-server      Processing config update event  {"generation": 243, "update": "update (gen: 243, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:34:14.700965344Z  INFO    updater Processing update event {"generation": 243, "update": "update (gen: 243, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:39:21.524212863Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T09:39:21.524335706Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T09:39:21.774386766Z  INFO    operator        Starting new reconcile generation       {"generation": 243, "last-acked-generation": 243}
2024-10-05T09:39:21.774455264Z  INFO    renderer        Rendering configuration {"generation": 244, "event": "render: generation: 244"}
2024-10-05T09:39:21.774460484Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T09:39:21.774474569Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T09:39:21.774562032Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:39:21.774574085Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:39:21.774749973Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T09:39:21.77484973Z   INFO    renderer        Update queue ready      {"queue": "update (gen: 244, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T09:39:21.775098939Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 244, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T09:39:21.775144413Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 244, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T09:39:21.775198098Z  INFO    cds-server      Processing config update event  {"generation": 244, "update": "update (gen: 244, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:39:21.775222771Z  INFO    updater Processing update event {"generation": 244, "update": "update (gen: 244, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:44:27.730059633Z  INFO    node-controller Reconciling     {"node": "/user-virtual-machine"}
2024-10-05T09:44:27.730207164Z  INFO    node-controller failed to find node with valid external address {"reason": "End of node list reached after searching through 1 node(s)"}
2024-10-05T09:44:27.981333808Z  INFO    operator        Starting new reconcile generation       {"generation": 244, "last-acked-generation": 244}
2024-10-05T09:44:27.981405554Z  INFO    renderer        Rendering configuration {"generation": 245, "event": "render: generation: 245"}
2024-10-05T09:44:27.981409062Z  INFO    renderer        Starting dataplane render       {"mode": "managed"}
2024-10-05T09:44:27.981421399Z  INFO    renderer        Rendering configuration {"gateway-class": "/stunner-gatewayclass"}
2024-10-05T09:44:27.981473354Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "udp-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:44:27.981483374Z  INFO    renderer        Could not find public adddress for listener     {"gateway": "t/udp-gateway", "listener": "dtls-listener", "error": "Could not find usable public address for listener"}
2024-10-05T09:44:27.981586903Z  INFO    renderer        Creating public service for gateway     {"service": "t/udp-gateway", "gateway": "t/udp-gateway", "service": "{\"kind\":\"Service\",\"apiVersion\":\"v1\",\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"uid\":\"50ab2949-a0f8-4e6b-a314-65d68da70687\",\"resourceVersion\":\"45468\",\"creationTimestamp\":\"2024-10-03T18:36:20Z\",\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0,\"nodePort\":30478},{\"name\":\"dtls-listener\",\"protocol\":\"UDP\",\"port\":5349,\"targetPort\":0,\"nodePort\":30349}],\"selector\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"clusterIP\":\"10.43.156.111\",\"clusterIPs\":[\"10.43.156.111\"],\"type\":\"NodePort\",\"sessionAffinity\":\"ClientIP\",\"sessionAffinityConfig\":{\"clientIP\":{\"timeoutSeconds\":10800}},\"ipFamilies\":[\"IPv4\"],\"ipFamilyPolicy\":\"SingleStack\",\"internalTrafficPolicy\":\"Cluster\"},\"status\":{\"loadBalancer\":{}}}"}
2024-10-05T09:44:27.981666135Z  INFO    renderer        Update queue ready      {"queue": "update (gen: 245, ack: false): upsert-queue: gway-cls: 0, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 0"}
2024-10-05T09:44:27.981829571Z  INFO    renderer        STUNner dataplane Deployment ready      {"generation": 245, "deployment": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"t\",\"creationTimestamp\":null,\"labels\":{\"app.kubernetes.io/managed-by\":\"Helm\",\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"meta.helm.sh/release-name\":\"stunner-config\",\"meta.helm.sh/release-namespace\":\"t\",\"stunner.l7mp.io/nodeport\":\"{\\\"udp-listener\\\":30478,\\\"dtls-listener\\\":30349}\",\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\",\"stunner.l7mp.io/service-type\":\"NodePort\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"1ed06e18-7e2a-4b27-9664-e7e8fe92de01\"}]},\"spec\":{\"replicas\":1,\"selector\":{\"matchExpressions\":[{\"key\":\"app\",\"operator\":\"In\",\"values\":[\"stunner\"]},{\"key\":\"stunner.l7mp.io/related-gateway-name\",\"operator\":\"In\",\"values\":[\"udp-gateway\"]},{\"key\":\"stunner.l7mp.io/related-gateway-namespace\",\"operator\":\"In\",\"values\":[\"t\"]}]},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"t\"},\"annotations\":{\"stunner.l7mp.io/related-gateway-name\":\"t/udp-gateway\"}},\"spec\":{\"containers\":[{\"name\":\"stunner-daemon\",\"image\":\"docker.io/l7mp/stunnerd:0.21.0\",\"command\":[\"stunnerd\"],\"args\":[\"-w\",\"--udp-thread-num=16\"],\"ports\":[{\"name\":\"metrics-port\",\"containerPort\":8080,\"protocol\":\"TCP\"}],\"env\":[{\"name\":\"STUNNER_ADDR\",\"valueFrom\":{\"fieldRef\":{\"fieldPath\":\"status.podIP\"}}},{\"name\":\"STUNNER_NAME\",\"value\":\"udp-gateway\"},{\"name\":\"STUNNER_NAMESPACE\",\"value\":\"t\"},{\"name\":\"STUNNER_CONFIG_ORIGIN\",\"value\":\"http://10.42.0.19:13478\"}],\"resources\":{\"limits\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"},\"requests\":{\"cpu\":\"100m\",\"memory\":\"128Mi\"}},\"livenessProbe\":{\"httpGet\":{\"path\":\"/live\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"readinessProbe\":{\"httpGet\":{\"path\":\"/ready\",\"port\":8086,\"scheme\":\"HTTP\"},\"timeoutSeconds\":1,\"periodSeconds\":15,\"successThreshold\":1,\"failureThreshold\":3},\"imagePullPolicy\":\"Always\"}],\"terminationGracePeriodSeconds\":600}},\"strategy\":{}},\"status\":{}}"}
2024-10-05T09:44:27.981849559Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 245, "config": "{version=\"v1\",admin:{name=\"t/udp-gateway\",logLevel=\"all:DEBUG\",metrics=\"http://:8080/metrics\",health-check=\"http://:8086\"},static-auth:{realm=\"test\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"t/udp-gateway/udp-listener\":{turn://0.0.0.0:3478,public=-:-,cert/key=-/-,routes=[t/media-plane]},\"t/udp-gateway/dtls-listener\":{turn://0.0.0.0:5349,public=-:-,cert/key=<SECRET>/<SECRET>,routes=[t/media-plane]}],clusters=[\"t/media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[10.42.0.42:<8189-8189>,10.43.72.231:<8189-8189>]}]}"}
2024-10-05T09:44:27.981893528Z  INFO    cds-server      Processing config update event  {"generation": 245, "update": "update (gen: 245, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
2024-10-05T09:44:27.98193823Z   INFO    updater Processing update event {"generation": 245, "update": "update (gen: 245, ack: true): upsert-queue: gway-cls: 1, gway: 1, route: 1, routeV1A2: 0, svc: 1, confmap: 0, dp: 1 / delete-queue: gway-cls: 0, gway: 0, route: 0, routeV1A2: 0, svc: 0, confmap: 0, dp: 0 / config-queue: 1"}
rg0now commented 1 month ago

turns:aaa.local.com:30349?transport=udp - somehow gets rewritten to tcp and if I filter the Wireshark capture I do see TCP traffic.

Well, this is weird because this is the right TURN URI. This should never be rewritten to TCP for a start. Maybe the Trickle ICE stack does not support DTLS? Hard to imagine. But whatever is the case here, this does not seem like a STUNner issue per se. Maybe you should try with another test suite?

Btw, I never know whether self-signed certs will be accepted by browsers' TURN implementations. Worth testing.

IvaskevychYuriy commented 1 month ago

@rg0now Sorry, took a bit longer to get back to this than I anticipated.

Right, so the url turns:aaa.local.com:30349?transport=udp should be correct according to RFC 7065 (which Pion and hence Stunner seem to implement). But the RFC itself is in a Proposed state so the adoption may vary.

I was wondering why does Chrome changes this url transport to TCP, and here's why: https://chromium.googlesource.com/external/webrtc/+/master/pc/ice_server_parsing.cc image

So it seems they just don't support the DTLS sadly. Firefox does not seem to override it but gives an error anyways. Also tried with GStreamer (on Windows host) with whipsink to Mediamtx behind STUNner - no luck with DTLS either.

Just wondering, do you maybe know of any existing client\tool capable of streaming (preferably with WHIP support) with TURN over DTLS?

Bottom line is, I agree with you this is not an issue with STUNner, but it's rather the issue with the client. I'm closing this issue then.

rg0now commented 1 month ago

Just wondering, do you maybe know of any existing client\tool capable of streaming (preferably with WHIP support) with TURN over DTLS?

Pion...:-)

Anyway, thanks for sharing, this was an interesting read. I was under the impression that DTLS has been generally supported for ages, surprising to learn that it isn't...

May I ask why the insistence on DTLS/UDP? I understand the UDP part, but not necessarily the *TLS part. Is (double) encryption that important, or is there any other reason?

IvaskevychYuriy commented 1 month ago

May I ask why the insistence on DTLS/UDP? I understand the UDP part, but not necessarily the *TLS part. Is (double) encryption that important, or is there any other reason?

Long story short it was a PoC due to some internal security requirements.

So yeah, the DTLS for WebRTC traffic itself is already in use (e.g. same Chrome). It's just it doesn't work if we change the TURN to DTLS over UDP instead of plain UDP.

This was an interesting journey indeed :)