►
Description
Whats this GOLANG_PROTOBUF_REGISTRATION_CONFLICT that i keep hearing about ? Lets figure it out.
protobuf: serialization/wire format -- IDL
grpc: http framework that does RPCs using protobuf
Kubernetes
CSI: native to the specification
CNI: ? not yet 2.0 ??? exec
Kubelet:
services, messages, enum
service
endpoint
watch
…
rpc Watch() returns (stream OpItem);
containerd [exec] - /opt/cni/bin/antrea - stdout , IP parsed ?
opt cni bin antrea - ( GRPC ) - antrea-agent (on a port)
pkg kubelet cmd devicemanagerd manager.go
A
C
B
This
is
gonna,
be
the
best
show
because
nobody's
here.
Okay,
oh
no,
two
people
just
joined
sorry
all
right,
yeah!
You
can
get
a
shirt
cool.
You
can
get
a
shirt
all
right,
so
this
was,
I
totally
forgot
to
announce
the
show,
so
I
just
put
it
on
twitter
like
a
minute
ago.
That's
I.
B
And
so
I
don't
know,
who's
gonna
come
so
this
might
be
a
quiet
day,
but.
B
B
B
A
I
guess
you
haven't
heard
the
switch.
What's
that
I'm
switching
I'm
going
to
a
new
bu.
Oh,
I
probably
should
I
probably
should
post
something
somewhere
where
you
hang
out.
B
You
didn't
tell
me
that
oh
pair
is
here
pear
and
jun.
Jen
is
here
okay,
so
no,
I
didn't
know
that
I
did
not
know
that
at
all.
Where
are
you
headed
vlad
cebu.
A
Yeah
well
we're
doing
some
time
good
stuff
with
with
edge
so.
D
A
B
A
B
B
Okay,
I
gave
you
the
link
if
you
want
to
join
the
stream
andrew,
so
andrew
and
some
other
people
had
mentioned
this
golang
protobuff
registration
conflict.
We
saw
this
in
kp
g
recently
and
I
realized
I
haven't
looked
at
this
protobuf
stuff
in
a
long
time,
and
I
think
the
first
thing
that
I
think
we
should
probably
talk
about
is
like
protobuf.
Where
does
protobuf
begin
and
grpc
began
right?
So.
B
Everybody
say
hi
to
amim.
You
know
he's
the
windows
tl
at
at
vmware
nowadays
for
kubernetes.
I
love
folks.
B
A
Grp
protobuf
is
the
wire
format,
it's
the
binary
wire
format
and
it's
driven
by
an
interface.
We
call
it
definition,
language,
yeah,.
A
Idea,
grpc
has
more
of
a
framework
built
on
top
of
http
that
allows
you
to
do
as
it's
in
the
name.
Remote
procedure
calls
and
the
energy,
the
interchange,
format
and
grpc
is
put
above
by
default,
but
can
be
other
wire
format,
but
most
places
use
protobuf.
A
A
But
grpc
gives
you
not
just
the
protocol
for
our
format,
but
you
not
just
the
wire
format,
but
you
have
the
rpc.
Give
you
a
whole
bunch
of
stuff.
B
A
A
Yeah,
you
definitely
can
add
extension
you
can,
you
can
have
you
can
create
what
they
call
compiler
plugins
to
extend
the
product
protocol
buffer,
compilers.
A
Yeah,
that's
that's
all
I
remember,
but
it's
it's
it's
very.
I
mean
it's.
It's
getting
to
be
super
super
popular
and
it's
not
just
in
goat
and
go
I
mean
if
you
go
in
and
like
dot
net
and
rust
and
those
guys
there
they
have
pretty
solid
grpc
implementations.
B
B
B
D
B
Navier
was
yeah
making
jokes
about
that
the
other
day;
okay,
so
I'm
not
going
to
introduce
kp.
So
where
is
our
schema?
So
jesus.
F
F
F
B
A
B
A
B
B
A
Your
services
is
a
grpc
construct.
D
A
Yeah,
that's
that's.
The
message
is
what
you
use
to
define
what
you
want
to
send.
B
A
Well,
it
still
goes
over
the
wire,
even
if
it's
wi-fi,
eventually
it'll
land
on
the
wire
somebody
you're.
A
D
H
A
B
A
D
B
B
A
Like
you
would
in
go,
or
in
you
know,
other
languages,
you
would
take
out
that
you
would
take
out
that
parameter
the
argument
list.
All
together,
you
just
remove
it,
but
not
in
not
in
idl,
for
for
the
rpc
yeah.
B
Okay,
so
okay,
cool,
okay,
so
there's
this
thing
and
it
doesn't
take
anything
so
in
this
case
global
is
so
so
then,
when
I
do
rpc,
that
means
that
when
I
do
the
generate
it's
going
to
generate
some
go
code
that
I
can
run
in
one
place.
That's.
B
A
Is
a
type
of
stream
allows?
You?
Isn't
it
very
interesting
that
in
in
grpc,
a
stream
type
allows
you
to
actually
stream
data
from
your
client?
And
this
one
is
probably
yeah?
It's.
I
think
it's
yeah
so
because
it's
a
it's
a
req,
it's
a
request
or
it's
a
it's
an
argument
stream,
because
you
can
also
have
response
stream.
A
A
D
B
A
This
is
what's
generated
for
that
for
that
for
that
service,
so
you
see
type
global
client,
online
140
and
then
all
the
the
the
rest
is
what
implements
the
what
implements
the
service.
So
you
have
the
method
watch
and
it
takes.
A
A
Yeah,
it's
it's
a
field,
but
grpc.
H
A
Take
care
of
wire,
you
know
plug
it
in
where
it
needs
to
go,
and
then
all
you
have
to
do
is
sit
there
in
your
code.
I
think
it's,
I
think
you
get
a
channel.
B
B
A
You
get
so
pro
the
remember
I
was
talking
about
compilers,
so
there
is
a
compiler,
a
printable
or
grpc,
there's
a
compiler
for
grpc
for
go
and
it
will
generate
everything
that
you
need,
including
so,
if
you're
writing
it'll
do
the
both
the
client
and
the
service.
A
A
D
A
All
right,
I'll
I'll
dump
it
into
I'll
I'll,
get
the
url
and
dump
and
send
it
to
you.
Yes,
sir.
C
A
All
right,
I'm
gonna
put
it
in,
I
guess
comments
or
private
chat,
which
one
is
better.
You
can.
A
B
B
B
B
D
B
Cool,
so
I
can
run
this
right.
B
B
B
B
A
A
Okay,
I
tried
at
one
point,
but
I
gave
up.
B
B
Right
so
I
could
buy
this
go
on
amazon,
yeah,
dot
com.
Unless
I
change
shortages,
you
could
buy
this
book
right
now:
okay,
yeah,
if
you
are
reading
this
chances,
are
you
have
some
familiarity
with
go
and
are
looking
to
start
working
with
grpc
or
maybe
you
have
been
working
with
grpc
in
a
different
language?
B
B
B
A
B
B
C
F
B
H
H
On
running
on
weblogic-
oh
my
goodness
yeah
so.
B
B
Would
access
the
european
bioinformatics
institute
instead
of
a
rest
api?
It
was
cool
because
you
could
write
a
massive
java
program.
I
I
use
that
in
grad
school
and
I
remember
I
used
to
love
soap
man.
I
don't
know
why
it
went
away,
but
you
know.
C
B
B
E
A
All
over
the
place,
no,
this
is
by
far
an
improvement
to
me.
A
B
A
A
You
know
whatever
container
types
that
you
have
in
your
language.
This
is
going
to
get
translated
to
that.
B
So
now
I
take
this
and
I
well
since
it's
an
andrea
show.
I
don't
know
if
june
jenner
or
anybody
has
any
thoughts.
I
hate
chinchi.
B
I
don't
know
whether
there's
any
attempt
anybody's
involved
in
the
attempt
to
move
cni
over
to
using
grpc,
so
it
turns
out
they're
not
there.
Yet
I
have
so
not
yet
2
2.0
right
they're,
talking
about
having
cni
providers.
B
Right
now
is
container
d,
so
when
you
do
like
c-
and
I
add
or
any
of
that
stuff
I
mean
it's
basically
running-
you
know,
opt
slash,
opt
slash,
ben
slash.
Whatever
your
cni
is
it's.
It's
literally
calling
that
as
a
binary.
A
B
Where's,
the
c
we
did
a
show
on
the
cni
specification,
so
they
have
a
spec
okay
and
I
don't
know
if
they
ever
actually
talk
about
the
exact.
B
H
A
B
That
that
calls
like
opt
c-
and
I
been-
I
don't
know
what
the
entry
or
whatever
that
is
right
and
that
that
literally
then
returns
standard
out
that
returns,
so
a
string
to
standard
out
right
and
then
the
you
know,
then
the
ip
can
be
parsed
out,
as
I
recall
pretty
sure,
that's
how
that's
working
right
now
and
then,
but
what
I
think
june
jen
is
saying,
is
opt
cni
bin,
andrea
that
talks
to
the
andrea
agent.
A
B
C
E
Go
there,
it
is
okay,
I
mean
here
we
go.
A
B
And
that's
the
same:
if
I
go
over
to
someday,
stoichis
is
going
to
work
at
vmware
and
he's
going
to
be
working
on
an
andrea
problem
with
us.
F
B
Thing
right:
you
start
this
grpc
server
up
and
we
could
see
it's
being
used,
so
I
jumped
over
to
that
because
I
I
just
kind
of
realized
we
hadn't,
we
hadn't,
really
talked
talked
much
about
how
this
applies
in
the
real
world
yet
and
some
people
might
be
wondering
like.
Why
are
we
even
talking
about
this
today?
So
so
the
cni
there's
csi,
there's
the
kublet
right
and
then
the
kubelet.
A
Not
that
I
know
of
no
okay.
A
Yeah
there's
a
gr,
I
believe
there
are
grpc
calls
in
between
some
of
the
controllers,
like
the
like
the
validation
there.
There
are
some
pieces
in
in
in
the
validation
chain
of
a
request
that
are
done
via
grpc.
If
I
remember
correctly
so.
B
A
Container
runtime
is
one
of
them.
The
we
already
said,
cri
right
csi
is
another
and
I
believe,
there's
some
places
in
between
certain
components
like
maybe
like
I
don't
know,
scheduler
and
something
else.
I
don't
know
there.
B
Might
be
other
places,
so
it
may
be
floating
around
in
different
places
right
so
yeah
so,
and
I
wonder
if
I
can
like
can
I
grip
this
out
like
if
I
go
into
the
source
for
k-8s.
B
There
we
go
cool,
so
we
actually
do
use
it
in
the
kubelet
device
manager.
So
that's
probably
one
of
the
okay
cool,
so
the
devices
when
you,
when
you
do
stuff
like
grpc
and
stuff,
like
that,
okay,
so
back
to
your
repo
here,
so
I
can,
if
I
so,
if
I
grab
this,
I
can
let's
see,
let's
let's
run
this
one
right.
So
let's
do
it.
Let's
do
the
hello
world
right.
H
B
E
A
But
it's
not
grpc,
it's
just
a
way
for
you
to
exchange
data,
those
messages,
basically
over
the
y.
B
A
Yeah,
if
you
scroll
down
so
this
is
these
are
the
types
that
got
generated
and
so
currency
got
generated
and
now
it's
being
used
so
now
we're
using
it.
So
basically
what
this
example
is
showing
you
by
generating
my
own
wire
format,
I
can
use
it
to
store
data
in
about
and
basically
in
a
file
that
stores
the
data
as
a
binary
format.
B
In
this
example,
you
take
a
csv
as
input,
and
then
you
have
you
have
a
you,
have
like
a
parser
that
you
write
yourself.
A
Right
here,
right,
yeah
yeah,
it's
basically
it's
just
reading
some
values
and
generating
the
the
value.
That's
it's
just
part
of
the
example
yeah
consequential.
A
Yeah,
that's
correct,
wow!
It's
just
that
the
data
is
coming
from
a
csv
file.
That's
all!
I
could
have
typed
it
all
manually.
So
if
you
look
at
that,
csv
file
you'll
see
that
it's
it
has.
The
data.
H
A
Yeah
read
see,
let
me
see,
because
I
got
to
remind
myself
what
read
the
edgy
content
and
return
rows
of.
Let
me
see
sorry.
A
A
The
list
was
also
generated
by
the
compiler,
and
then
I
do
that
just
so.
I
can
show
you
that
yep,
once
you
have
your
data
encoded
marshalled
as
those
types,
then
you
can
it
be.
It
is
protobuf.
Now
you
can
do
whatever
you
want.
You
can
do.
A
A
B
B
Where
was
it
this
thing?
This
is
the
original.
B
A
B
If
you
had
vlad
dot
pro
talk
there
and
then
you
have
currency
and
you
have
a
currency
list
and
now
what
you're
doing
is
you're?
Adding
this
new
thing
here,
which.
A
F
A
B
A
Well,
protocol
buffer
compiler
with
a
grpc
plug-in.
So
if
you
scroll
down
again
you
when,
on
the
page
on
the
instruction
you'll
see
when
it's
what
we're
calling
protocol
buffer
now,
we've
given
it
a
a
grpc
plug-in
and
if
you
keep
going
oh.
B
B
A
A
A
I
mean,
and
this
actually
is
the
go.
Grpc
plugin
some
other
languages
may
have
their
own
native
plug-in
as
well.
Go
is
one
of
the
few
that
I
think
has
its
own
pla
native
plug-ins.
B
A
A
B
B
We
didn't
even
have
ci
when
we
first
okay.
I
thought
I
found
an
issue
for
this.
Didn't
I
I
thought
I
found
an
issue
for
add:
make
target
for
grpc.
F
I'm
gonna
ask
me
so
you're
looking
for
the
actual
raw
photo,
not
protobuf
files,
the
raw
grpc,
like
schema.
B
A
C
B
A
B
So,
okay,
all
right:
okay,
it's
4,
50
and,
like
that's,
how
it
works
man
I
mean
this
is.
B
Where
we
landed
here,
like
we've,
been
able
to
go
through
all
this
we've
been
able
to
see
how
the
proto
buffs
so
for
for
folks
that
are
wanting
to
understand
this,
like
the
the
whole
thing
that
we've
sort
of
gone
through
today
is
the
the
proto
protobufs
as
a
serialization
format,
and
then
the
grpc
the
fact
that,
like
when
you
use
the
protobuf
compiler,
you
actually
give
it
a
plug-in
that
understands
how
to
make
take
these
basic
protocol
buffer
things
and
sort
of
like
sort
of
interpret
these
service,
this
service
stanza,
so
that
now
you
can
make.
B
Let's
see,
I'm
sure
he
pasted
it
right
so
like
now,
we
get
where's
the
generate.
What
do
we
generate
so
now?
The
go
bindings
are
well.
We
already
had
the
go
bindings,
but
now
we're
getting
get
currency
service,
server,
right.
A
Right
what
was
the
question?
I'm
sorry,
I.
B
Think
these
are
the
things.
So
if
I
look
back
here,
if
I
look
back
you
added
this
currency
request
and
currency
service
right
and
by
virtue
of
adding
those
things,
we
now
get
this
currency
service
server
generated
for
us
right.
A
All
the
types
that
you
have
in
the
idl
will
get
a
I'll
go
type.
A
B
B
So
here
we
go
so
here's
what
we've
added
right:
we've
added
now:
currency
server,
a
currency.
E
A
A
So
the
message
that
you
have
there,
those
will
get
generated
as
regular
goal
types
and
then
the
minute
you
create
a
service
you're
gonna
get
a
server
generated
for
you.
B
A
C
F
Vlad,
I
have
a
question
for
you.
What,
yes,
is
the
main
difference
between
so
grpc
versus
just
standard
like
rpc2?
It's
just
that
the
data
encoding
model
isn't
with
protobuf
anymore.
What?
What
do
you
mean
by
rpc2?
F
F
A
And
it's
you
it.
It's
always
protobuf
version
3.
I
believe,
but
there's
a
there
is
a
protobuf
version
too.
If
that's
what
you're,
referring
to
mostly.
H
A
A
It's
it's
a
little
bit
lighter
than
the
version
two.
I
haven't.
I've
seen
version
two
somewhere,
but
I
can't
remember
where,
but
I
believe
the
protocol
buffer
compiler
should
be
able
to
compile
either
one
of
them.
F
A
B
H
H
B
Is
protocol
buffers
are
generating
this.net
context
and
it's
this
and
they're
importing
them
for
us
so
that
this
file
we
can
compile
it
in
it's
going
to
import
all
the
grpc
stuff
we
want,
and
then
it's
going
to
now
give
us
this
type
of
currency
request
and
it's
going
to
give
us
all
those
functions
around
it.
B
And
then
it's
going
to
I'm
looking
for
the
server
yeah.
Yes,.
B
A
We
mean
well,
if
you
go
right
above
where
you
are,
you
see
fun,
stop
mid
mid
screen.
You
have
new
currency
service,
client
yeah,
so
this
is
the
code
that
is
generated
for
your
for
your
client.
So
if
you
wanted
to
call
that
code
across
http
wire,
you
that's
what
you
would
as
a
client.
B
H
D
A
A
A
But
yeah
it's
it's!
It's!
When
you're
building
the
connection,
you
have
to
tell
it
what
your
what
the
ip
is
and
stuff
like
that.
B
A
B
A
B
B
A
B
B
G
B
B
B
F
A
But
usually
that's
how
you
configure
the
connection
to
tell
it
how
you
wanna,
how
you
wanna
construct
the
connection
and,
if
you're,
using
tls,
if
you're
using
any
kind
of
authentication,
that's
how
you
would
do
it.
But.
C
B
Okay,
all
right
so
I'll
add
this
to
the
hack
md
and
then
vlad.
We
definitely
owe
you
one.
Today,
you
saved
you
saved
our
butts
okay,
this
was
going
to
be
the
worst
andrea
live
ever
and
you
know
it's,
I
think,
we're
somewhere
in
the
top
five.
B
G
B
B
A
E
E
A
About
another
medium
article,
I
wrote
oh
cool.