►
From YouTube: HTTP Upgrade support in GitLab Agent for Kubernetes
A
So
this
merge
request
adds
support
for
this,
this
mechanism,
so
that
we
can
support,
drop,
sockets
and
speedy
and
anything
else
in
our
kubernetes,
reverse
proxy
and
potentially
any
other
things
we
might
want
to
proxy
in
the
future.
A
A
It's
probably
not
the
most
generic
definition,
but
it's
good
enough
for
us.
So
we
define
the
request
and
the
response
and
request
consists
of
the
header
which
describes
the
requests.
Like
you
know,
the
method,
the
query
parameters,
the
rail
path,
the
headers,
some
extra,
which
is
specific
to
the
protocol,
the
endpoint
that
is
being
called.
A
We
pass
impersonation
information
here,
for
example,
then
we
add
the
upgrade
flag
if
the
client
wants
to
upgrade
and
then
after
the
header,
the
client
sends
the
body
of
the
request
and
the
trailer
to
finish
the
body
as
a
signal
that
the
body
is
ended
and
then
that's
the
new
thing.
The
upgrade
data
and.
A
Each
each
message
may
contain
one
of
these
basically
and
we
encode
the
that
here
and
the
response
is
kind
of
the
same
thing.
There's
the
only
difference
is
here.
The
header
contains
on
the
response
and
that's
it.
A
Then
we
already
have
this
generic
herpes,
the
in
in
bound
http
proxies
into
turns
and
about
http
traffic
into
hrpc
request
and
then
on
the
other
end,
we
have
this
in
boundary
pc
to
outbound
http.
This
is
what
runs
in
the
agent.
It
turns
that
grpc
stream
into
an
http
request
to
the
acupuncture
api
server.
A
A
It
delegates
to
the
http
2
jrpc
proxy
somewhere
here.
A
A
A
Basically
it
allah?
It
allows
you
to
take
full
control
over
over
an
http
of
an
incoming
http
connection
and
then
the
server
like
fully
relinquishes
control.
You
do
whatever
you
need
to
do
with
this
connection.
Server
just
pretends
it
doesn't
know
anything
about
it,
so
you
are
in
full
control
and
you
can
read
and
write
anything
that
does
need
to
be
http,
though,
so
this
is
on
the
server
and
on
the
client.
A
A
A
That's
how
things
work
here
and
everything
else
is
kind
of
plumbing
nothing
very
interesting
but
yeah.
Let's
look
at
how
it
works,
so
I
have
cass
here
running
and
agent
running.
So
I
have
plenty
of
errors
here,
because
I
don't
have
gdk
running.
I
commented
out
authentication
so
that
I
don't
need
jdk
and
my
cast
just
always
allows
the
requests
and.
A
It
can't
sense
user
statistics
because
of
that,
so
let's
try
lens
and
see
if
it
works
and
I'll
open
the
agent
logs.
But
you
can
see
that
something
is
happening
and
this
is
our
cast
cluster.
I
created
a
config
to
talk.
Let's
talk
to
cass
for
cuba,
city
or
anything
else
like
lens,
and
we
will
use
that.
As
you
can
see,
things
are
starting
here
and
you
can
see
lens
is
making
different
requests
like
fetching
services
and.
A
Establishing
watches
for
nodes
and
pods
somewhere
here.