Skip to content

Support websocket protocol negotation with k8s 1.30

Timo Furrer requested to merge support-websocket-negotation into master
  • Support websocket protocol negotation with k8s 1.30

Kubernetes 1.30 supports websocket connections instead of SPDY (they call it the remote command protocol v5). The negotiation roughly works like this:

  • Trying to establish websocket connection (GET upgrade request)
  • If it fails try to establish a SPDY connection (POST upgrade request)

The websocket connection negotiation will fail when for example trying to establish it from a kubectl v1.30 to a Kube API v1.29 which doesn't support websockets. The observed status code returned by that Kube API is a 403 FORBIDDEN. I assume that this is because a GET route is simply not supported on this endpoint in that version.

This change set simply ignored the status code returned by an upgrade request and will always early exit - no matter what status code we get.

Changelog: fixed

Closes #562 (closed)

Test Protocol

I've manually tested this against an agentk running in a v1.29.2 and v1.30.0 kind cluster using both KUBECTL_REMOTE_COMMAND_WEBSOCKETS set to false (for SPDY) and true for websockets. I've used kubectl v1.30.0 for these tests. All four combinations worked fine:

Kubernetes v1.29.2 with SPDY (expand for logs)
I0429 09:39:23.684150   37777 round_trippers.go:466] curl -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: kubectl/v1.30.0 (darwin/arm64) kubernetes/7c48c2b" -H "Authorization: Bearer <masked>" 'https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx'
I0429 09:39:23.687001   37777 round_trippers.go:495] HTTP Trace: DNS Lookup for kas.gdk.test resolved to [{172.16.123.1 }]
I0429 09:39:23.687635   37777 round_trippers.go:510] HTTP Trace: Dial to tcp:172.16.123.1:3443 succeed
I0429 09:39:23.706620   37777 round_trippers.go:553] GET https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx 200 OK in 22 milliseconds
I0429 09:39:23.706648   37777 round_trippers.go:570] HTTP Statistics: DNSLookup 2 ms Dial 0 ms TLSHandshake 9 ms ServerProcessing 9 ms Duration 22 ms
I0429 09:39:23.706653   37777 round_trippers.go:577] Response Headers:
I0429 09:39:23.706660   37777 round_trippers.go:580]     Server: nginx/1.25.4
I0429 09:39:23.706664   37777 round_trippers.go:580]     Content-Type: application/json
I0429 09:39:23.706666   37777 round_trippers.go:580]     Content-Length: 4096
I0429 09:39:23.706668   37777 round_trippers.go:580]     Audit-Id: 4630b594-ae3a-4410-acd7-8c4d907f48be
I0429 09:39:23.706671   37777 round_trippers.go:580]     Cache-Control: no-cache, private
I0429 09:39:23.706673   37777 round_trippers.go:580]     Date: Mon, 29 Apr 2024 07:39:23 GMT
I0429 09:39:23.706675   37777 round_trippers.go:580]     Via: 2.0 gitlab-agent/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:39:23.706677   37777 round_trippers.go:580]     Via: gRPC/1.0 gitlab-kas/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:39:23.706678   37777 round_trippers.go:580]     X-Kubernetes-Pf-Flowschema-Uid: 9f6cad0a-737b-4168-9fc9-1f160d53db4b
I0429 09:39:23.706680   37777 round_trippers.go:580]     X-Kubernetes-Pf-Prioritylevel-Uid: 3b74e976-f4b5-4f16-970c-1d85574fe992
I0429 09:39:23.706796   37777 request.go:1212] Response Body: {"kind":"Pod","apiVersion":"v1","metadata":{"name":"my-nginx","namespace":"default","uid":"1104d156-48fc-4b08-a49a-72ac00862291","resourceVersion":"1291503","creationTimestamp":"2024-04-26T08:13:41Z","labels":{"run":"my-nginx"},"managedFields":[{"manager":"kubectl-run","operation":"Update","apiVersion":"v1","time":"2024-04-26T08:13:41Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:labels":{".":{},"f:run":{}}},"f:spec":{"f:containers":{"k:{\"name\":\"my-nginx\"}":{".":{},"f:image":{},"f:imagePullPolicy":{},"f:name":{},"f:ports":{".":{},"k:{\"containerPort\":80,\"protocol\":\"TCP\"}":{".":{},"f:containerPort":{},"f:protocol":{}}},"f:resources":{},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{},"f:terminationGracePeriodSeconds":{}}}},{"manager":"kubelet","operation":"Update","apiVersion":"v1","time":"2024-04-26T08:13:49Z","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"10.244.0.13\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"subresource":"status"}]},"spec":{"volumes":[{"name":"kube-api-access-dqjtj","projected":{"sources":[{"serviceAccountToken":{"expirationSeconds":3607,"path":"token"}},{"configMap":{"name":"kube-root-ca.crt","items":[{"key":"ca.crt","path":"ca.crt"}]}},{"downwardAPI":{"items":[{"path":"namespace","fieldRef":{"apiVersion":"v1","fieldPath":"metadata.namespace"}}]}}],"defaultMode":420}}],"containers":[{"name":"my-nginx","image":"nginx","ports":[{"containerPort":80,"protocol":"TCP"}],"resources":{},"volumeMounts":[{"name":"kube-api-access-dqjtj","readOnly":true,"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount"}],"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","imagePullPolicy":"Always"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst","serviceAccountName":"default","serviceAccount":"default","nodeName":"gitlab-agent-dev-control-plane","securityContext":{},"schedulerName":"default-scheduler","tolerations":[{"key":"node.kubernetes.io/not-ready","operator":"Exists","effect":"NoExecute","tolerationSeconds":300},{"key":"node.kubernetes.io/unreachable","operator":"Exists","effect":"NoExecute","tolerationSeconds":300}],"priority":0,"enableServiceLinks":true,"preemptionPolicy":"PreemptLowerPriority"},"status":{"phase":"Running","conditions":[{"type":"PodReadyToStartContainers","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-26T08:13:49Z"},{"type":"Initialized","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-26T08:13:41Z"},{"type":"Ready","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-26T08:13:49Z"},{"type":"ContainersReady","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-26T08:13:49Z"},{"type":"PodScheduled","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-26T08:13:41Z"}],"hostIP":"172.18.0.2","hostIPs":[{"ip":"172.18.0.2"}],"podIP":"10.244.0.13","podIPs":[{"ip":"10.244.0.13"}],"startTime":"2024-04-26T08:13:41Z","containerStatuses":[{"name":"my-nginx","state":{"running":{"startedAt":"2024-04-26T08:13:48Z"}},"lastState":{},"ready":true,"restartCount":0,"image":"docker.io/library/nginx:latest","imageID":"docker.io/library/nginx@sha256:ed6d2c43c8fbcd3eaa44c9dab6d94cb346234476230dc1681227aa72d07181ee","containerID":"containerd://da76c734030ed193b6c5564262e1d0d6cf9c8336000f92f34f9cafb65f4999cf","started":true}],"qosClass":"BestEffort"}}
I0429 09:39:23.708169   37777 podcmd.go:88] Defaulting container name to my-nginx
I0429 09:39:23.708233   37777 round_trippers.go:466] curl -v -XPOST  -H "X-Stream-Protocol-Version: v5.channel.k8s.io" -H "X-Stream-Protocol-Version: v4.channel.k8s.io" -H "X-Stream-Protocol-Version: v3.channel.k8s.io" -H "X-Stream-Protocol-Version: v2.channel.k8s.io" -H "X-Stream-Protocol-Version: channel.k8s.io" -H "User-Agent: kubectl/v1.30.0 (darwin/arm64) kubernetes/7c48c2b" -H "Authorization: Bearer <masked>" 'https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx/exec?command=ls&command=-l&container=my-nginx&stderr=true&stdout=true'
I0429 09:39:23.709716   37777 round_trippers.go:495] HTTP Trace: DNS Lookup for kas.gdk.test resolved to [{172.16.123.1 }]
I0429 09:39:23.710231   37777 round_trippers.go:510] HTTP Trace: Dial to tcp:172.16.123.1:3443 succeed
I0429 09:39:23.734329   37777 round_trippers.go:553] POST https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx/exec?command=ls&command=-l&container=my-nginx&stderr=true&stdout=true 101 Switching Protocols in 26 milliseconds
I0429 09:39:23.734347   37777 round_trippers.go:570] HTTP Statistics: DNSLookup 1 ms Dial 0 ms TLSHandshake 0 ms Duration 26 ms
I0429 09:39:23.734351   37777 round_trippers.go:577] Response Headers:
I0429 09:39:23.734355   37777 round_trippers.go:580]     Via: 1.1 gitlab-agent/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:39:23.734358   37777 round_trippers.go:580]     Via: gRPC/1.0 gitlab-kas/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:39:23.734360   37777 round_trippers.go:580]     X-Stream-Protocol-Version: v4.channel.k8s.io
I0429 09:39:23.734362   37777 round_trippers.go:580]     Server: nginx/1.25.4
I0429 09:39:23.734364   37777 round_trippers.go:580]     Date: Mon, 29 Apr 2024 07:39:23 GMT
I0429 09:39:23.734367   37777 round_trippers.go:580]     Connection: upgrade
I0429 09:39:23.734392   37777 round_trippers.go:580]     Upgrade: SPDY/3.1
total 72
lrwxrwxrwx   1 root root    7 Apr 23 15:00 bin -> usr/bin
drwxr-xr-x   2 root root 4096 Jan 28 21:20 boot
drwxr-xr-x   5 root root  360 Apr 26 08:13 dev
drwxr-xr-x   1 root root 4096 Apr 25 07:36 docker-entrypoint.d
-rwxr-xr-x   1 root root 1620 Apr 24 02:21 docker-entrypoint.sh
drwxr-xr-x   1 root root 4096 Apr 26 08:13 etc
drwxr-xr-x   2 root root 4096 Jan 28 21:20 home
lrwxrwxrwx   1 root root    7 Apr 23 15:00 lib -> usr/lib
drwxr-xr-x   2 root root 4096 Apr 23 15:00 media
drwxr-xr-x   2 root root 4096 Apr 23 15:00 mnt
drwxr-xr-x   2 root root 4096 Apr 23 15:00 opt
dr-xr-xr-x 281 root root    0 Apr 26 08:13 proc
-rw-r--r--   1 root root    5 Apr 26 08:13 product_name
-rw-r--r--   1 root root   37 Apr 26 08:13 product_uuid
drwx------   1 root root 4096 Apr 26 08:13 root
drwxr-xr-x   1 root root 4096 Apr 26 08:13 run
lrwxrwxrwx   1 root root    8 Apr 23 15:00 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Apr 23 15:00 srv
dr-xr-xr-x  13 root root    0 Apr 26 08:13 sys
drwxrwxrwt   2 root root 4096 Apr 23 15:00 tmp
drwxr-xr-x   1 root root 4096 Apr 23 15:00 usr
drwxr-xr-x   1 root root 4096 Apr 23 15:00 var
Kubernetes v1.29.2 with websocket support enabled, but fallback to SPDY (expand for logs)
I0429 09:40:04.330019   37912 round_trippers.go:466] curl -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: kubectl/v1.30.0 (darwin/arm64) kubernetes/7c48c2b" -H "Authorization: Bearer <masked>" 'https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx'
I0429 09:40:04.333159   37912 round_trippers.go:495] HTTP Trace: DNS Lookup for kas.gdk.test resolved to [{172.16.123.1 }]
I0429 09:40:04.334162   37912 round_trippers.go:510] HTTP Trace: Dial to tcp:172.16.123.1:3443 succeed
I0429 09:40:04.350107   37912 round_trippers.go:553] GET https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx 200 OK in 20 milliseconds
I0429 09:40:04.350126   37912 round_trippers.go:570] HTTP Statistics: DNSLookup 3 ms Dial 0 ms TLSHandshake 9 ms ServerProcessing 6 ms Duration 20 ms
I0429 09:40:04.350130   37912 round_trippers.go:577] Response Headers:
I0429 09:40:04.350134   37912 round_trippers.go:580]     Date: Mon, 29 Apr 2024 07:40:04 GMT
I0429 09:40:04.350136   37912 round_trippers.go:580]     Content-Type: application/json
I0429 09:40:04.350138   37912 round_trippers.go:580]     Content-Length: 4096
I0429 09:40:04.350139   37912 round_trippers.go:580]     Audit-Id: 5f8ddbb5-a8c3-49f6-a40e-c0238c44f257
I0429 09:40:04.350141   37912 round_trippers.go:580]     X-Kubernetes-Pf-Flowschema-Uid: 9f6cad0a-737b-4168-9fc9-1f160d53db4b
I0429 09:40:04.350142   37912 round_trippers.go:580]     X-Kubernetes-Pf-Prioritylevel-Uid: 3b74e976-f4b5-4f16-970c-1d85574fe992
I0429 09:40:04.350143   37912 round_trippers.go:580]     Server: nginx/1.25.4
I0429 09:40:04.350145   37912 round_trippers.go:580]     Via: 2.0 gitlab-agent/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:40:04.350146   37912 round_trippers.go:580]     Via: gRPC/1.0 gitlab-kas/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:40:04.350148   37912 round_trippers.go:580]     Cache-Control: no-cache, private
I0429 09:40:04.350271   37912 request.go:1212] Response Body: {"kind":"Pod","apiVersion":"v1","metadata":{"name":"my-nginx","namespace":"default","uid":"1104d156-48fc-4b08-a49a-72ac00862291","resourceVersion":"1291503","creationTimestamp":"2024-04-26T08:13:41Z","labels":{"run":"my-nginx"},"managedFields":[{"manager":"kubectl-run","operation":"Update","apiVersion":"v1","time":"2024-04-26T08:13:41Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:labels":{".":{},"f:run":{}}},"f:spec":{"f:containers":{"k:{\"name\":\"my-nginx\"}":{".":{},"f:image":{},"f:imagePullPolicy":{},"f:name":{},"f:ports":{".":{},"k:{\"containerPort\":80,\"protocol\":\"TCP\"}":{".":{},"f:containerPort":{},"f:protocol":{}}},"f:resources":{},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{},"f:terminationGracePeriodSeconds":{}}}},{"manager":"kubelet","operation":"Update","apiVersion":"v1","time":"2024-04-26T08:13:49Z","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"10.244.0.13\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"subresource":"status"}]},"spec":{"volumes":[{"name":"kube-api-access-dqjtj","projected":{"sources":[{"serviceAccountToken":{"expirationSeconds":3607,"path":"token"}},{"configMap":{"name":"kube-root-ca.crt","items":[{"key":"ca.crt","path":"ca.crt"}]}},{"downwardAPI":{"items":[{"path":"namespace","fieldRef":{"apiVersion":"v1","fieldPath":"metadata.namespace"}}]}}],"defaultMode":420}}],"containers":[{"name":"my-nginx","image":"nginx","ports":[{"containerPort":80,"protocol":"TCP"}],"resources":{},"volumeMounts":[{"name":"kube-api-access-dqjtj","readOnly":true,"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount"}],"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","imagePullPolicy":"Always"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst","serviceAccountName":"default","serviceAccount":"default","nodeName":"gitlab-agent-dev-control-plane","securityContext":{},"schedulerName":"default-scheduler","tolerations":[{"key":"node.kubernetes.io/not-ready","operator":"Exists","effect":"NoExecute","tolerationSeconds":300},{"key":"node.kubernetes.io/unreachable","operator":"Exists","effect":"NoExecute","tolerationSeconds":300}],"priority":0,"enableServiceLinks":true,"preemptionPolicy":"PreemptLowerPriority"},"status":{"phase":"Running","conditions":[{"type":"PodReadyToStartContainers","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-26T08:13:49Z"},{"type":"Initialized","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-26T08:13:41Z"},{"type":"Ready","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-26T08:13:49Z"},{"type":"ContainersReady","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-26T08:13:49Z"},{"type":"PodScheduled","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-26T08:13:41Z"}],"hostIP":"172.18.0.2","hostIPs":[{"ip":"172.18.0.2"}],"podIP":"10.244.0.13","podIPs":[{"ip":"10.244.0.13"}],"startTime":"2024-04-26T08:13:41Z","containerStatuses":[{"name":"my-nginx","state":{"running":{"startedAt":"2024-04-26T08:13:48Z"}},"lastState":{},"ready":true,"restartCount":0,"image":"docker.io/library/nginx:latest","imageID":"docker.io/library/nginx@sha256:ed6d2c43c8fbcd3eaa44c9dab6d94cb346234476230dc1681227aa72d07181ee","containerID":"containerd://da76c734030ed193b6c5564262e1d0d6cf9c8336000f92f34f9cafb65f4999cf","started":true}],"qosClass":"BestEffort"}}
I0429 09:40:04.351761   37912 podcmd.go:88] Defaulting container name to my-nginx
I0429 09:40:04.351811   37912 round_trippers.go:466] curl -v -XGET  -H "User-Agent: kubectl/v1.30.0 (darwin/arm64) kubernetes/7c48c2b" -H "Authorization: Bearer <masked>" -H "Sec-Websocket-Protocol: v5.channel.k8s.io" 'https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx/exec?command=ls&command=-l&container=my-nginx&stderr=true&stdout=true'
I0429 09:40:04.353293   37912 round_trippers.go:495] HTTP Trace: DNS Lookup for kas.gdk.test resolved to [{172.16.123.1 }]
I0429 09:40:04.353607   37912 round_trippers.go:510] HTTP Trace: Dial to tcp:172.16.123.1:3443 succeed
I0429 09:40:04.375219   37912 round_trippers.go:553] GET https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx/exec?command=ls&command=-l&container=my-nginx&stderr=true&stdout=true  in 23 milliseconds
I0429 09:40:04.375233   37912 round_trippers.go:570] HTTP Statistics: DNSLookup 1 ms Dial 0 ms TLSHandshake 2 ms ServerProcessing 19 ms Duration 23 ms
I0429 09:40:04.375237   37912 round_trippers.go:577] Response Headers:
I0429 09:40:04.375264   37912 round_trippers.go:466] curl -v -XPOST  -H "X-Stream-Protocol-Version: v5.channel.k8s.io" -H "X-Stream-Protocol-Version: v4.channel.k8s.io" -H "X-Stream-Protocol-Version: v3.channel.k8s.io" -H "X-Stream-Protocol-Version: v2.channel.k8s.io" -H "X-Stream-Protocol-Version: channel.k8s.io" -H "User-Agent: kubectl/v1.30.0 (darwin/arm64) kubernetes/7c48c2b" -H "Authorization: Bearer <masked>" 'https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx/exec?command=ls&command=-l&container=my-nginx&stderr=true&stdout=true'
I0429 09:40:04.376496   37912 round_trippers.go:495] HTTP Trace: DNS Lookup for kas.gdk.test resolved to [{172.16.123.1 }]
I0429 09:40:04.376790   37912 round_trippers.go:510] HTTP Trace: Dial to tcp:172.16.123.1:3443 succeed
I0429 09:40:04.399223   37912 round_trippers.go:553] POST https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx/exec?command=ls&command=-l&container=my-nginx&stderr=true&stdout=true 101 Switching Protocols in 23 milliseconds
I0429 09:40:04.399243   37912 round_trippers.go:570] HTTP Statistics: DNSLookup 1 ms Dial 0 ms TLSHandshake 0 ms Duration 23 ms
I0429 09:40:04.399247   37912 round_trippers.go:577] Response Headers:
I0429 09:40:04.399256   37912 round_trippers.go:580]     Upgrade: SPDY/3.1
I0429 09:40:04.399259   37912 round_trippers.go:580]     Via: 1.1 gitlab-agent/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:40:04.399261   37912 round_trippers.go:580]     Via: gRPC/1.0 gitlab-kas/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:40:04.399263   37912 round_trippers.go:580]     X-Stream-Protocol-Version: v4.channel.k8s.io
I0429 09:40:04.399264   37912 round_trippers.go:580]     Server: nginx/1.25.4
I0429 09:40:04.399266   37912 round_trippers.go:580]     Date: Mon, 29 Apr 2024 07:40:04 GMT
I0429 09:40:04.399457   37912 round_trippers.go:580]     Connection: upgrade
total 72
lrwxrwxrwx   1 root root    7 Apr 23 15:00 bin -> usr/bin
drwxr-xr-x   2 root root 4096 Jan 28 21:20 boot
drwxr-xr-x   5 root root  360 Apr 26 08:13 dev
drwxr-xr-x   1 root root 4096 Apr 25 07:36 docker-entrypoint.d
-rwxr-xr-x   1 root root 1620 Apr 24 02:21 docker-entrypoint.sh
drwxr-xr-x   1 root root 4096 Apr 26 08:13 etc
drwxr-xr-x   2 root root 4096 Jan 28 21:20 home
lrwxrwxrwx   1 root root    7 Apr 23 15:00 lib -> usr/lib
drwxr-xr-x   2 root root 4096 Apr 23 15:00 media
drwxr-xr-x   2 root root 4096 Apr 23 15:00 mnt
drwxr-xr-x   2 root root 4096 Apr 23 15:00 opt
dr-xr-xr-x 281 root root    0 Apr 26 08:13 proc
-rw-r--r--   1 root root    5 Apr 26 08:13 product_name
-rw-r--r--   1 root root   37 Apr 26 08:13 product_uuid
drwx------   1 root root 4096 Apr 26 08:13 root
drwxr-xr-x   1 root root 4096 Apr 26 08:13 run
lrwxrwxrwx   1 root root    8 Apr 23 15:00 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Apr 23 15:00 srv
dr-xr-xr-x  13 root root    0 Apr 26 08:13 sys
drwxrwxrwt   2 root root 4096 Apr 23 15:00 tmp
drwxr-xr-x   1 root root 4096 Apr 23 15:00 usr
drwxr-xr-x   1 root root 4096 Apr 23 15:00 var
Kubernetes v1.30.0 with SPDY (expand for logs)
I0429 09:36:40.861152   37134 round_trippers.go:466] curl -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: kubectl/v1.30.0 (darwin/arm64) kubernetes/7c48c2b" -H "Authorization: Bearer <masked>" 'https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx'
I0429 09:36:40.866270   37134 round_trippers.go:495] HTTP Trace: DNS Lookup for kas.gdk.test resolved to [{172.16.123.1 }]
I0429 09:36:40.867086   37134 round_trippers.go:510] HTTP Trace: Dial to tcp:172.16.123.1:3443 succeed
I0429 09:36:40.928774   37134 round_trippers.go:553] GET https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx 200 OK in 67 milliseconds
I0429 09:36:40.928791   37134 round_trippers.go:570] HTTP Statistics: DNSLookup 5 ms Dial 0 ms TLSHandshake 10 ms ServerProcessing 50 ms Duration 67 ms
I0429 09:36:40.928795   37134 round_trippers.go:577] Response Headers:
I0429 09:36:40.928800   37134 round_trippers.go:580]     Server: nginx/1.25.4
I0429 09:36:40.928802   37134 round_trippers.go:580]     Cache-Control: no-cache, private
I0429 09:36:40.928804   37134 round_trippers.go:580]     X-Kubernetes-Pf-Flowschema-Uid: 27ecacc7-a30a-49cb-bda4-c851899e7c91
I0429 09:36:40.928806   37134 round_trippers.go:580]     X-Kubernetes-Pf-Prioritylevel-Uid: f2110336-6c00-44e0-94b8-d85271158b6c
I0429 09:36:40.928807   37134 round_trippers.go:580]     Date: Mon, 29 Apr 2024 07:36:40 GMT
I0429 09:36:40.928809   37134 round_trippers.go:580]     Content-Type: application/json
I0429 09:36:40.928810   37134 round_trippers.go:580]     Audit-Id: 1501c078-16ac-4816-8cc1-75e53fa393a8
I0429 09:36:40.928838   37134 round_trippers.go:580]     Via: 2.0 gitlab-agent/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:36:40.928840   37134 round_trippers.go:580]     Via: gRPC/1.0 gitlab-kas/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:36:40.928903   37134 request.go:1212] Response Body: {"kind":"Pod","apiVersion":"v1","metadata":{"name":"my-nginx","namespace":"default","uid":"b32bc102-5167-4843-8de4-eebf9c912cac","resourceVersion":"1102","creationTimestamp":"2024-04-29T07:33:38Z","annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"v1\",\"kind\":\"Pod\",\"metadata\":{\"annotations\":{},\"name\":\"my-nginx\",\"namespace\":\"default\"},\"spec\":{\"containers\":[{\"image\":\"nginx:1.14.2\",\"name\":\"nginx\",\"ports\":[{\"containerPort\":80}]}]}}\n"},"managedFields":[{"manager":"kubectl-client-side-apply","operation":"Update","apiVersion":"v1","time":"2024-04-29T07:33:38Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{}}},"f:spec":{"f:containers":{"k:{\"name\":\"nginx\"}":{".":{},"f:image":{},"f:imagePullPolicy":{},"f:name":{},"f:ports":{".":{},"k:{\"containerPort\":80,\"protocol\":\"TCP\"}":{".":{},"f:containerPort":{},"f:protocol":{}}},"f:resources":{},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{},"f:terminationGracePeriodSeconds":{}}}},{"manager":"kubelet","operation":"Update","apiVersion":"v1","time":"2024-04-29T07:33:40Z","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"10.244.1.3\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"subresource":"status"}]},"spec":{"volumes":[{"name":"kube-api-access-qlgts","projected":{"sources":[{"serviceAccountToken":{"expirationSeconds":3607,"path":"token"}},{"configMap":{"name":"kube-root-ca.crt","items":[{"key":"ca.crt","path":"ca.crt"}]}},{"downwardAPI":{"items":[{"path":"namespace","fieldRef":{"apiVersion":"v1","fieldPath":"metadata.namespace"}}]}}],"defaultMode":420}}],"containers":[{"name":"nginx","image":"nginx:1.14.2","ports":[{"containerPort":80,"protocol":"TCP"}],"resources":{},"volumeMounts":[{"name":"kube-api-access-qlgts","readOnly":true,"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount"}],"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst","serviceAccountName":"default","serviceAccount":"default","nodeName":"gitlab-agent-dev-1.30-worker","securityContext":{},"schedulerName":"default-scheduler","tolerations":[{"key":"node.kubernetes.io/not-ready","operator":"Exists","effect":"NoExecute","tolerationSeconds":300},{"key":"node.kubernetes.io/unreachable","operator":"Exists","effect":"NoExecute","tolerationSeconds":300}],"priority":0,"enableServiceLinks":true,"preemptionPolicy":"PreemptLowerPriority"},"status":{"phase":"Running","conditions":[{"type":"PodReadyToStartContainers","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-29T07:33:40Z"},{"type":"Initialized","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-29T07:33:38Z"},{"type":"Ready","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-29T07:33:40Z"},{"type":"ContainersReady","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-29T07:33:40Z"},{"type":"PodScheduled","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-29T07:33:38Z"}],"hostIP":"172.18.0.3","hostIPs":[{"ip":"172.18.0.3"}],"podIP":"10.244.1.3","podIPs":[{"ip":"10.244.1.3"}],"startTime":"2024-04-29T07:33:38Z","containerStatuses":[{"name":"nginx","state":{"running":{"startedAt":"2024-04-29T07:33:39Z"}},"lastState":{},"ready":true,"restartCount":0,"image":"docker.io/library/nginx:1.14.2","imageID":"docker.io/library/nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d","containerID":"containerd://6d17c82811b1ac6afce3d95afda2f4977d2932f77c5711bc2aa255fd41a2b85a","started":true}],"qosClass":"BestEffort"}}
I0429 09:36:40.930235   37134 podcmd.go:88] Defaulting container name to nginx
I0429 09:36:40.930282   37134 round_trippers.go:466] curl -v -XPOST  -H "User-Agent: kubectl/v1.30.0 (darwin/arm64) kubernetes/7c48c2b" -H "X-Stream-Protocol-Version: v5.channel.k8s.io" -H "X-Stream-Protocol-Version: v4.channel.k8s.io" -H "X-Stream-Protocol-Version: v3.channel.k8s.io" -H "X-Stream-Protocol-Version: v2.channel.k8s.io" -H "X-Stream-Protocol-Version: channel.k8s.io" -H "Authorization: Bearer <masked>" 'https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx/exec?command=ls&command=-l&container=nginx&stderr=true&stdout=true'
I0429 09:36:40.931738   37134 round_trippers.go:495] HTTP Trace: DNS Lookup for kas.gdk.test resolved to [{172.16.123.1 }]
I0429 09:36:40.932059   37134 round_trippers.go:510] HTTP Trace: Dial to tcp:172.16.123.1:3443 succeed
I0429 09:36:40.951676   37134 round_trippers.go:553] POST https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx/exec?command=ls&command=-l&container=nginx&stderr=true&stdout=true 101 Switching Protocols in 21 milliseconds
I0429 09:36:40.951695   37134 round_trippers.go:570] HTTP Statistics: DNSLookup 1 ms Dial 0 ms TLSHandshake 0 ms Duration 21 ms
I0429 09:36:40.951699   37134 round_trippers.go:577] Response Headers:
I0429 09:36:40.951703   37134 round_trippers.go:580]     Via: 1.1 gitlab-agent/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:36:40.951706   37134 round_trippers.go:580]     Via: gRPC/1.0 gitlab-kas/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:36:40.951708   37134 round_trippers.go:580]     X-Stream-Protocol-Version: v4.channel.k8s.io
I0429 09:36:40.951710   37134 round_trippers.go:580]     Server: nginx/1.25.4
I0429 09:36:40.951711   37134 round_trippers.go:580]     Date: Mon, 29 Apr 2024 07:36:40 GMT
I0429 09:36:40.951712   37134 round_trippers.go:580]     Connection: upgrade
I0429 09:36:40.951742   37134 round_trippers.go:580]     Upgrade: SPDY/3.1
total 72
drwxr-xr-x   1 root root 4096 Mar 27  2019 bin
drwxr-xr-x   2 root root 4096 Feb  3  2019 boot
drwxr-xr-x   5 root root  360 Apr 29 07:33 dev
drwxr-xr-x   1 root root 4096 Apr 29 07:33 etc
drwxr-xr-x   2 root root 4096 Feb  3  2019 home
drwxr-xr-x   1 root root 4096 Mar 27  2019 lib
drwxr-xr-x   2 root root 4096 Mar 26  2019 media
drwxr-xr-x   2 root root 4096 Mar 26  2019 mnt
drwxr-xr-x   2 root root 4096 Mar 26  2019 opt
dr-xr-xr-x 286 root root    0 Apr 29 07:33 proc
-rw-r--r--   1 root root    5 Apr 29 07:33 product_name
-rw-r--r--   1 root root   37 Apr 29 07:33 product_uuid
drwx------   2 root root 4096 Mar 26  2019 root
drwxr-xr-x   1 root root 4096 Apr 29 07:33 run
drwxr-xr-x   2 root root 4096 Mar 26  2019 sbin
drwxr-xr-x   2 root root 4096 Mar 26  2019 srv
dr-xr-xr-x  13 root root    0 Apr 29 07:33 sys
drwxrwxrwt   1 root root 4096 Mar 27  2019 tmp
drwxr-xr-x   1 root root 4096 Mar 26  2019 usr
drwxr-xr-x   1 root root 4096 Mar 26  2019 var
Kubernetes v1.30.0 with websockets (expand for logs)
I0429 09:38:00.050461   37356 round_trippers.go:466] curl -v -XGET  -H "User-Agent: kubectl/v1.30.0 (darwin/arm64) kubernetes/7c48c2b" -H "Accept: application/json, */*" -H "Authorization: Bearer <masked>" 'https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx'
I0429 09:38:00.053710   37356 round_trippers.go:495] HTTP Trace: DNS Lookup for kas.gdk.test resolved to [{172.16.123.1 }]
I0429 09:38:00.054855   37356 round_trippers.go:510] HTTP Trace: Dial to tcp:172.16.123.1:3443 succeed
I0429 09:38:00.071757   37356 round_trippers.go:553] GET https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx 200 OK in 21 milliseconds
I0429 09:38:00.071778   37356 round_trippers.go:570] HTTP Statistics: DNSLookup 3 ms Dial 1 ms TLSHandshake 10 ms ServerProcessing 6 ms Duration 21 ms
I0429 09:38:00.071785   37356 round_trippers.go:577] Response Headers:
I0429 09:38:00.071791   37356 round_trippers.go:580]     Date: Mon, 29 Apr 2024 07:38:00 GMT
I0429 09:38:00.071793   37356 round_trippers.go:580]     Content-Type: application/json
I0429 09:38:00.071796   37356 round_trippers.go:580]     Audit-Id: 0901843e-4cbc-432f-9567-e78135ea5e1c
I0429 09:38:00.071799   37356 round_trippers.go:580]     X-Kubernetes-Pf-Prioritylevel-Uid: f2110336-6c00-44e0-94b8-d85271158b6c
I0429 09:38:00.071801   37356 round_trippers.go:580]     Server: nginx/1.25.4
I0429 09:38:00.071804   37356 round_trippers.go:580]     Cache-Control: no-cache, private
I0429 09:38:00.071807   37356 round_trippers.go:580]     Via: 2.0 gitlab-agent/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:38:00.071809   37356 round_trippers.go:580]     Via: gRPC/1.0 gitlab-kas/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:38:00.071810   37356 round_trippers.go:580]     X-Kubernetes-Pf-Flowschema-Uid: 27ecacc7-a30a-49cb-bda4-c851899e7c91
I0429 09:38:00.071852   37356 request.go:1212] Response Body: {"kind":"Pod","apiVersion":"v1","metadata":{"name":"my-nginx","namespace":"default","uid":"b32bc102-5167-4843-8de4-eebf9c912cac","resourceVersion":"1102","creationTimestamp":"2024-04-29T07:33:38Z","annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"v1\",\"kind\":\"Pod\",\"metadata\":{\"annotations\":{},\"name\":\"my-nginx\",\"namespace\":\"default\"},\"spec\":{\"containers\":[{\"image\":\"nginx:1.14.2\",\"name\":\"nginx\",\"ports\":[{\"containerPort\":80}]}]}}\n"},"managedFields":[{"manager":"kubectl-client-side-apply","operation":"Update","apiVersion":"v1","time":"2024-04-29T07:33:38Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{}}},"f:spec":{"f:containers":{"k:{\"name\":\"nginx\"}":{".":{},"f:image":{},"f:imagePullPolicy":{},"f:name":{},"f:ports":{".":{},"k:{\"containerPort\":80,\"protocol\":\"TCP\"}":{".":{},"f:containerPort":{},"f:protocol":{}}},"f:resources":{},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{},"f:terminationGracePeriodSeconds":{}}}},{"manager":"kubelet","operation":"Update","apiVersion":"v1","time":"2024-04-29T07:33:40Z","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:conditions":{"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"PodReadyToStartContainers\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:hostIPs":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"10.244.1.3\"}":{".":{},"f:ip":{}}},"f:startTime":{}}},"subresource":"status"}]},"spec":{"volumes":[{"name":"kube-api-access-qlgts","projected":{"sources":[{"serviceAccountToken":{"expirationSeconds":3607,"path":"token"}},{"configMap":{"name":"kube-root-ca.crt","items":[{"key":"ca.crt","path":"ca.crt"}]}},{"downwardAPI":{"items":[{"path":"namespace","fieldRef":{"apiVersion":"v1","fieldPath":"metadata.namespace"}}]}}],"defaultMode":420}}],"containers":[{"name":"nginx","image":"nginx:1.14.2","ports":[{"containerPort":80,"protocol":"TCP"}],"resources":{},"volumeMounts":[{"name":"kube-api-access-qlgts","readOnly":true,"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount"}],"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","imagePullPolicy":"IfNotPresent"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst","serviceAccountName":"default","serviceAccount":"default","nodeName":"gitlab-agent-dev-1.30-worker","securityContext":{},"schedulerName":"default-scheduler","tolerations":[{"key":"node.kubernetes.io/not-ready","operator":"Exists","effect":"NoExecute","tolerationSeconds":300},{"key":"node.kubernetes.io/unreachable","operator":"Exists","effect":"NoExecute","tolerationSeconds":300}],"priority":0,"enableServiceLinks":true,"preemptionPolicy":"PreemptLowerPriority"},"status":{"phase":"Running","conditions":[{"type":"PodReadyToStartContainers","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-29T07:33:40Z"},{"type":"Initialized","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-29T07:33:38Z"},{"type":"Ready","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-29T07:33:40Z"},{"type":"ContainersReady","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-29T07:33:40Z"},{"type":"PodScheduled","status":"True","lastProbeTime":null,"lastTransitionTime":"2024-04-29T07:33:38Z"}],"hostIP":"172.18.0.3","hostIPs":[{"ip":"172.18.0.3"}],"podIP":"10.244.1.3","podIPs":[{"ip":"10.244.1.3"}],"startTime":"2024-04-29T07:33:38Z","containerStatuses":[{"name":"nginx","state":{"running":{"startedAt":"2024-04-29T07:33:39Z"}},"lastState":{},"ready":true,"restartCount":0,"image":"docker.io/library/nginx:1.14.2","imageID":"docker.io/library/nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d","containerID":"containerd://6d17c82811b1ac6afce3d95afda2f4977d2932f77c5711bc2aa255fd41a2b85a","started":true}],"qosClass":"BestEffort"}}
I0429 09:38:00.073387   37356 podcmd.go:88] Defaulting container name to nginx
I0429 09:38:00.073436   37356 round_trippers.go:466] curl -v -XGET  -H "Sec-Websocket-Protocol: v5.channel.k8s.io" -H "User-Agent: kubectl/v1.30.0 (darwin/arm64) kubernetes/7c48c2b" -H "Authorization: Bearer <masked>" 'https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx/exec?command=ls&command=-l&container=nginx&stderr=true&stdout=true'
I0429 09:38:00.077336   37356 round_trippers.go:495] HTTP Trace: DNS Lookup for kas.gdk.test resolved to [{172.16.123.1 }]
I0429 09:38:00.078240   37356 round_trippers.go:510] HTTP Trace: Dial to tcp:172.16.123.1:3443 succeed
I0429 09:38:00.092619   37356 round_trippers.go:553] GET https://kas.gdk.test:3443/-/k8s-proxy/api/v1/namespaces/default/pods/my-nginx/exec?command=ls&command=-l&container=nginx&stderr=true&stdout=true 101 Switching Protocols in 19 milliseconds
I0429 09:38:00.092638   37356 round_trippers.go:570] HTTP Statistics: DNSLookup 3 ms Dial 0 ms TLSHandshake 2 ms ServerProcessing 12 ms Duration 19 ms
I0429 09:38:00.092642   37356 round_trippers.go:577] Response Headers:
I0429 09:38:00.092647   37356 round_trippers.go:580]     Server: nginx/1.25.4
I0429 09:38:00.092650   37356 round_trippers.go:580]     Date: Mon, 29 Apr 2024 07:38:00 GMT
I0429 09:38:00.092652   37356 round_trippers.go:580]     Connection: upgrade
I0429 09:38:00.092655   37356 round_trippers.go:580]     Sec-Websocket-Accept: jwxSymJmEArH6/jLS14PdptKhxg=
I0429 09:38:00.092657   37356 round_trippers.go:580]     Sec-Websocket-Protocol: v5.channel.k8s.io
I0429 09:38:00.092660   37356 round_trippers.go:580]     Upgrade: websocket
I0429 09:38:00.092661   37356 round_trippers.go:580]     Via: 1.1 gitlab-agent/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:38:00.092714   37356 round_trippers.go:580]     Via: gRPC/1.0 gitlab-kas/v17.0.0-rc1-21-g5a1145c3/5a1145c3
I0429 09:38:00.092733   37356 websocket.go:133] The subprotocol is v5.channel.k8s.io
total 72
drwxr-xr-x   1 root root 4096 Mar 27  2019 bin
drwxr-xr-x   2 root root 4096 Feb  3  2019 boot
drwxr-xr-x   5 root root  360 Apr 29 07:33 dev
drwxr-xr-x   1 root root 4096 Apr 29 07:33 etc
drwxr-xr-x   2 root root 4096 Feb  3  2019 home
drwxr-xr-x   1 root root 4096 Mar 27  2019 lib
drwxr-xr-x   2 root root 4096 Mar 26  2019 media
drwxr-xr-x   2 root root 4096 Mar 26  2019 mnt
drwxr-xr-x   2 root root 4096 Mar 26  2019 opt
dr-xr-xr-x 286 root root    0 Apr 29 07:33 proc
-rw-r--r--   1 root root    5 Apr 29 07:33 product_name
-rw-r--r--   1 root root   37 Apr 29 07:33 product_uuid
drwx------   2 root root 4096 Mar 26  2019 root
drwxr-xr-x   1 root root 4096 Apr 29 07:33 run
drwxr-xr-x   2 root root 4096 Mar 26  2019 sbin
drwxr-xr-x   2 root root 4096 Mar 26  2019 srv
dr-xr-xr-x  13 root root    0 Apr 29 07:33 sys
drwxrwxrwt   1 root root 4096 Mar 27  2019 tmp
drwxr-xr-x   1 root root 4096 Mar 26  2019 usr
drwxr-xr-x   1 root root 4096 Mar 26  2019 var
I0429 09:38:00.153362   37356 websocket.go:490] closed channel--returning
Edited by Timo Furrer

Merge request reports