►
From YouTube: /lgtm with Linkerd
Description
No description was provided for this meeting.
If this is YOUR meeting, an easy way to fix this is to add a description to your video, wherever mtngs.io found it (probably YouTube).
A
A
A
And
ask
her
that
that
was
that's
great
anyway.
Sorry
professional
me
welcome
to
lgtm.
This
is
cloud
native
tv.
This
is
a
show
where
we
will
focus
on
showing
you
how
you
can
contribute
to
cloud
native
projects.
Today
we
are
taking
a
look
at
linker
d
from
buoyant
and
I
am
fortunate
enough
to
be
joined
by
mitti
david
from
the
buoyant
team,
who
is
also
a
linkard
d
maintainer
before
we
speak
to
mate.
A
B
Yeah,
hello,
I
am
fine,
you
know
a
bit
nervous
to
be
here,
but
I'm
also
glad
to
finally
be
able
to
show
people
a
bit
more
about
linker
d,
we're
always
excited
about
new
contributors
and
yeah.
We're
excited
about
new
adopters
as
well.
So
hello,
everyone
and
yeah
glad
to
be
here.
B
What's
mattel
about
so
yeah?
I'm
a
software
engineer
my
name's
mate.
I
work
at
buoyant,
as
you
can
see
from
my
branded
hoodie
a
nice
idea.
Yeah
I
I
know
I
actually
love
it.
It's
it's
one
of
my
favorites
at
the
moment,
but
yeah.
B
Engineer
at
buend
and
I'm
working
full-time
on
linkedin,
so
I'm
fortunate
enough
to
work
full-time
in
open
source.
I
graduated
university.
One
year
ago
I've
been
working
at
buoyant
for
about
four
months.
I
think
time
flies
by
pretty
fast
now,
but
about
four
months,
but
I've
been
a
liquidity
contributor
for
well
over
a
year
now
I
started
as
a
student
and
yeah.
Now,
I'm
doing
it
full-time,
which
is
awesome.
A
A
B
Yeah,
and
actually
I
love
sharing
the
story
because
to
me
it
kind
of
brings
out
that
perseverance
is
key
and
you
know
working
hard
does
get
you
places
and
I
think
it
also
attests
to
how
inclusive
the
linkery
community
is
because
they've
all
been
super
welcoming.
I
think
that
they've
been
very
supportive
for
my
entire
time
there
but
yeah.
I
started
out
as
a
student.
I
knew
about
linker
d
from
a
previous
internship,
but
I
didn't
really
know
what
it
does.
B
I
knew
about
service
methods
in
general,
but
you
know
I
knew
about
the
term,
but
hopefully
we'll
get
to
demystify
it
a
bit,
but
it
was
still
a
bit
confusing
to
me
and
at
the
time
I
was
actually
looking
for
a
summer
internship
and
I
was
thinking
of
breaking
into
open
source.
I
had
a
couple
of
contributions
before
then,
but
it
was
nothing
major
and
I
sort
of
by
mistake
found
linkery.
B
You
know
I
kind
of
associated
it
with
with
the
lingerie
that
I
heard
of,
and
I
was
like
well,
this
might
be
cool
to
work
on
it's
in
go.
I
I
don't
have
to
learn
a
new
language,
so
I
might
as
well-
and
I
was
looking
for
issues
to
contribute
to
and
everything
seemed
super
scary,
so
it
actually
took
me
about
two
weeks
of
overthinking
before
I
you
know
just
went
straight
in
for
it,
but
yeah.
I
had
my
first
contribution.
I
had
a
blast.
B
Everyone
was
super
welcoming,
like
I
said
previously,
and
then
I
decided
you
know
what
I
actually
had
a
lot
of
fun.
I
got
a
lot
of
great
feedback.
Why
don't
I
try
to
get
an
internship
with
them
over
the
summer,
because
that
you
know
would
be
ideal.
I
can
work
from
home.
You
know
the
pandemic.
Wasn't
a
thing
back
then.
So
in
my
mind
I
could
have
worked
from
home,
could
have
had
my
my
holiday
and
everything
in
between
so
I
actually
applied
for
an
internship
sponsored
by
google.
B
They
have
kind
of
like
this
summer
of
code
thing
where
they
sponsor
people
to
work
on
open
source,
but
my
initial
proposal
was
rejected
and
I
didn't
put
a
lot
of
effort
into
it.
Come
to
think
of
it
now.
I
think
I
was
also
limited
on
time,
not
to
say
that
I
didn't
put
a
lot
of
effort,
but
I
think
it's
not
the
kind
of
proposal
that
I
would
have
been
extremely
proud
of.
B
So
I
was
rejected
the
first
time
around
and
I
said
you
know
what
I
don't
care
if
I'm
rejected
I
I
still
want
to
work
with
these
people,
because
I
I
started
to
like
the
project
by
this
time.
I
already
had
my
second
contribution.
You
know
attended
a
community
meeting
so
on
and
so
forth.
So
you
know,
I
don't
want
to
tell
you
my
entire
life
story,
but
long
story
short.
I
submitted
another
proposal
to
a
program
ran
by
cncf,
which
is
called
lfx.
B
Mentorship
got
accepted,
got
paired
up
with
a
mentor
from
the
linkery
team
and
I
worked
on
liquidity
over
the
summer
as
an
intern,
and
you
know
since
the
summer
I
entered
the
industry
after
university.
I
worked
for
a
different
company,
but
I
kept
contributing
to
linker
d
and
you
know
I've
been
a
big
advocate
of
the
project
so
far
and
after
a
while
you
know
I,
like
the
team,
the
team
liked
me.
So
we
said
you
know,
let's,
let's
just
work
something
out
and
now
I'm
here.
B
Yeah,
it
was
an
uninstall
command
for
the
cli,
which
is
why
I
was
so
confused
about
everything
you
know,
because
I
saw
all
of
these
issues
that
people
picked
up
and
they
seemed
relatively
easy
and
then
the
only
one
that
was
available
was
this
uninstall
command
and
I
was
like
damn
like
what
am
I
gonna
do
I.
A
Nice
and
I'm
curious
about
your
your
programming
experience
prior
to
that,
I'm
assuming
your
contribution
was
in
the
go.
Cli
right
had
you
written,
go
before.
B
Yes,
I
did
write
go
before
at
my
previous
workplace.
I
had
an
internship
like
I
said
I
didn't
know
a
lot
of
go
at
the
time,
but
I
did
have
experienced
it
experience
with
it
before,
but
before
I
started
contributing
to
linkedin.
I
would
have
labeled
myself
as
a
java
developer.
If
you
can
actually
wow.
B
Yeah,
I
know
I'm
surprised
too,
but
that's
how
it
is.
You
grow
up
and
you
you
cringe
at
yourself.
A
A
Okay,
so,
let's
edge
I
mean
really
cool
story,
and
I
think
you
know
you
know
I'm
going
to
introduce
you
to
pop.
I
think
it
would
be
great
to
do
that
student
journey,
but
can
you
just
maybe
give
unless
he's
unscripted?
I'm
sorry
if
I'm
putting
you
on
the
spot,
but
do
you
have
any
advice
for
people
that
we're
in
that
position
that
our
students
are
looking
to
ensure
internships
or
want
to
contribute
to
open
source.
B
Well,
I
I
do
have
a
couple
of
pieces
of
advice,
let's
say,
and
I
know
they
can
be
cliches,
but
all
of
them
revolve
around
communication
and
interest
if
you're
interested
in
something
you
have
to
understand
that
open
source
communities
in
general
are
very
welcoming,
especially
the
cncf
as
a
whole.
The
cncf
landscape
is
very
welcoming.
I
think,
if
you'd
like
to
be
a
contributor
in
the
space,
you've
definitely
made
the
right
decision,
because
all
of
the
interactions
that
I've
had
so
far
were
great,
so
yeah.
B
I
know
it's
going
to
sound
a
bit
like
a
cliche,
but
my
advice
is
communicate.
Get
involved
in
you
know
the
communication
channels
that
the
project
you
want
to
get
involved
with
has
say
hello
to
people
and
always
ask
for
help.
I
think
that's
been
one
of
my
keys
to
success.
I've
been
asking
for
help
whenever
I'm
blocked.
You
know
I
let
my
team
know
and
I'm
I'm
not
embarrassed
to
fail.
I
think
failing
is
very
normal.
I
think
we
should
normalize
it,
especially
for
students.
You
know
you
don't
have
any
prior
experience.
B
A
You
know
what
I
can
agree
more.
In
fact,
I'm
sure
people
are
fed
up
with
me
saying
this,
but
I
always
always
say
my
super
power
is
that
I
don't
mind
asking
stupid
questions
or
looking
silly
like
you
know,
it's
all
in
the
name
of
experience
and
learning
and
that's
what
helps
us
grow
and
become
better
in
this
industry.
It's
almost
a
failure
that
we
really
do
adapt
and
learn
so
yeah,
fantastic.
B
A
A
B
Yeah
yeah:
let's,
let's
get
the
first
question.
A
All
right
so
import
human
says
hello,
looking
to
contribute
to
link
id,
but
I'm
unclear
about
service
meshes
site
cars
and
connected
services.
A
B
Does
it
does
because
that's
the
that's
the
starting
point
that
I
had
in
mind.
So
you
know
one
of
the
things
like
I
like.
I
previously
said
when,
when
I
heard
about
linguisti,
was
that
it's
a
service
mesh
and
I
was
a
bit
confused
as
to
what
the
term
implies.
So,
first
of
all,
hello
welcome
to
the
stream
and,
second
of
all,
to
answer
your
question.
A
service
mesh
is
what
we
call
a
tool
that
you
kind
of
use
at
a
platform
level.
B
This
is
not
necessarily
about
that,
but
a
service
mesh
helps
you
achieve
a
couple
of
things
at
that
platform
level,
so
you
can
get
security
observability
and
that
kind
of
stuff
at
a
platform
level,
rather
than
doing
it
at
an
application
level,
and
the
second
part
about
your
question
with
sidecars
and
the
way
that
services
connect
to
each
other
and
talk
to
each
other.
That's
kind
of
an
implementation
detail
about
service
meshes
because
with
linker
d1,
for
example,
it
wasn't
working
with
a
sidecar
pattern
and
by
the
way
we're
talking
about
linker
d2.
B
Today
we
also
have
a
link
rd1
version
written
on
the
jvm.
You
know
speaking
about
java
developers,
but
those
sidecar
patterns
are
a
way
to
run
your
service
mesh
and
why
don't?
I
just
actually
go
to
the
docs
so
we're
on
the
lingerie
website
now
and
I'm
still
going
to
answer
your
question.
Don't
worry,
but
I
just
want
to
go
to
to
this
reference
page,
because
we
have
an
architecture
diagram
and
I
think
it's
going
to
help
exemplify
everything
a
bit
better.
B
So
the
way
link
rd
works
as
a
service
mesh
is
that
it's
split
into
two
parts.
It
has
a
control
plane
and
a
data
pin-
and
you
can
see
this
over
here-
the
control
plane
are
a
set
of
components
that
we
use
to
make
some
informed
decisions.
For
example,
we
have
a
destination
service
that
we
use
to
kind
of
resolve
destination
targets,
and
don't
worry
I'm
going
to
get
to
that
part
in
a
second,
we
have
an
identity
component
to
manage
certificates
and
stuff,
like
that.
B
The
real
magic
in
a
service
mesh
and
certainly
in
in
linkery's
case,
comes
from
the
data
plane.
So
we
have
what's
called
a
proxy
that
you
can
kind
of
inject
next
to
your
container,
so
in
kubernetes
a
pod
can
have
any
number
of
containers.
B
It's
not
restricted
to
just
one
container
where
your
application
runs
so
a
side.
Current
pattern
essentially
means
we
add
another
container
with
this
proxient
that
will
be
responsible
for
handling
all
of
your
network
calls.
So
if,
before
your
application
would
talk
directly
to
a
service
now
the
proxy
will
pick
up
that
network
communication
and
forward
it
on
your
behalf,
and
this
allows
us
to
do
a
bunch
of
stuff
such
as
encrypting
your
calls,
because
now
your
connection
goes
in
the
same
container
while
in
the
same
pod
it
goes
to
a
different
container.
B
B
It
also
allows
you
to
pull
metrics,
because
now
you
can
kind
of
have
that
control
over
the
networking
calls
and
a
bunch
of
stuff
around
it,
such
as
load,
balancing
and
other
nice
things
like
that
and
for
load,
balancing
and
all
of
the
added
functionality
we
use
the
control
plane.
Like
I
said
before,
so
you
know
you
want
to
talk
to
a
service.
The
proxy
first
looks
at
the
network
request
and
it's
like
okay.
Well,
where
do
we
need
to
go?
We
need
to
go
to
service
b.
B
Do
we
know
anything
about
service
b's
endpoints?
So
it
goes
to
the
destination
service,
fetches.
All
of
that
data
and
then
makes
an
informed
decision
so
yeah,
I
don't
know
if
it's,
if
it's
a
complicated
view
on
things
david,
let
me
know
if
I
should
simplify
it
a
bit
but
in
a
nutshell,
that's
kind
of
what
it
means
we
take
over
your
network
connections.
We
forward
them
for
you
and
in
the
process
we
make
everything
better.
We
give
you
observability
reliability
and
security.
A
A
Import
human
is
in
the
chat,
saying
thanks
that
helps
a
lot
so
there
you
go
perfect
all
right
so
and
jason
morgan's
in
the
chat
as
well
sounds
like
a
pretty
good
explanation
to
me.
There
everyone's
happy:
do
you
want
to
jump
into
the
github
page
and
let's
take
a
look
at
the
link
of
the
repository.
B
Yes,
for
sure,
so
let's
take
a
look
at
the
org
first
of
all,
so
we
have
a
couple
of
repositories
here.
Could.
B
Cool,
so
this
is
the
link
red
organization.
You
can
find
us
on
github.com
and
then
here
we
have
a
couple
of
repositories
that
we
use
the
most
three
important
ones
for
new
contributors,
I
think
are
the
ones
at
the
top.
Coincidentally,
the
website,
where
we
usually
have
documentation
updates,
so
most
of
our
documentation,
is
hosted
on
the
website.
That's
why
I
wanted
to
start
with
the
website
and
we
absolutely
love
documentation
contributions,
and
I
can't
actually
stress
that
enough.
B
If
you
are
a
new
starter,
it
doesn't
matter
if
you're
a
contributor
or
an
adopter-
and
something
is
not
clear
or
you
know
you,
you
want
to
add
something
to
the
documentation,
definitely
get
an
issue
and
a
pr.
We
love
that
we'll
really
appreciate
you
and
then
we
have
these
two
repositories:
linker
d2
and
the
link
review
2
proxy,
which
is
written
in
in
rust,
so
linker
d2
is
where
we
do
all
of
the
issue
triaging
and
where
the
control
plane
code
lives
so
yeah.
B
As
you
can
see,
we
we
have
a
common
go
package
structure,
I'm
going
to
go
through
all
of
these
shortly,
but
yeah
you're
greeted
with
the
with
the
readme.
We
have
a
complete
list
of
all
of
the
repos
that
we
manage
quick,
start
and
documentation.
B
B
Yeah
good
glad
that
you
asked
that
it's
a
it's
a
very
good
question,
so
everything
all
of
the
major
components
are
going
to
be
in
this
kind
of
controller
directory.
But
before
that
I
want
to
say
that,
prior
to
the
version
that
we're
running
now,
thank
you
2.10.
B
We
used
to
have
a
let's
say,
a
more
full
control
plane
that
doesn't
sound
correct,
but
our
control
plane
was
made
up
of
more
components,
so
it
included
the
observability
stack
such
as
prometheus
and
grafana
the
destination
service
that
I
mentioned
earlier
and
so
on.
But
we
actually
moved
to
an
extension
format
now,
where
we
kind
of
eliminated
everything
out
of
the
control
plane.
That
is
not
necessarily
important
to
get
linkery
up
and
running
so
that
the
control
plane
is
just
a
bit
lighter
and
users
can
opt
into
what
functionality
they
need.
B
So
I
said
that
because
we
have
a
couple
of
components
here
that
don't
have
anything
to
do
with
the
with
the
core
installation.
So
one
of
the
example
is
the
the
vis
extension
everything
related
to
our
observability
stack,
such
as
our
prometheus
instance
and
rafana,
and
you
know
the
metrics
api,
so
you
can
see
everything
in
the
dashboard
lives
in
this
viz
extension.
B
We
also
do
multi-cluster
as
part
of
linkerd.
This
lives
in
its
own
extension
directory.
Here
we
also
have
a
jager
extension
and
you
kind
of
get
the
point.
There
are
a
couple
of
directories
here
that
have
to
do
specifically
with
extensions,
but
then
for
the
core
control
plane.
We
actually
don't
have
a
lot
of
stuff
in
at
the
moment.
So
what
we're
left
with
is
a
proxy
injector.
This
is
what
we
use
to
inject
proxies
as
a
sidecar
into
your
application.
B
So
when
you
install
linker
d,
you
install
the
control
plane
and
everything
is
nice.
Linkery
can
you
know
function
properly,
but
when
you
want
to
add
it
to
your
application,
we
need
to
inject
the
sidecar.
That's
what
we
call
it
and
you
can
do
this
on
your
own,
but
it's
generally
kind
of
kind
of
a
lot
of
yaml
files
to
write,
and
you
know
the
less
yaml
we
write.
I
think
the
better
we
are
off
so
we
provide
automatic
injection.
B
You
put
an
annotation
on
your
kubernetes
object
and
you
say:
okay,
I
want
this
to
be
injected
with
the
linkard
data
plane
and
the
proxy
injector
will
do
that
for
you
and
for
those
that
are
interested
under
the
hood.
It's
a
kubernetes
mutating
web
hook.
So
it's
a
web
hook
server
and
it
ties
in
with
the
kubernetes
web
hooks
system.
B
Then
we
have
an
identity
component.
The
identity
component
is
used
to
issue
certificates
to
the
proxies.
So
the
way
we
install
inquiry
usually
is
we
have
two
certificates.
We
have
a
root,
trust
certificate
that
should,
ideally,
you
know,
not
change
very
often,
and
then
we
have
an
issuer
certificate.
That's
used
to
sign
other
certificates,
and
you
know
the
whole
pki
kind
of
aspect
of
it
is
a
bit
confusing.
B
But
what
you
need
to
know
is
that
every
proxy
will
get
its
own
certificate
every
24
hours
and
it
will
use
the
certificate
to
encrypt
your
connections
to
have
mtls
and
the
identity
service
is
responsible
for
scoping
those
certificates
to
be
24
hours
and
when
they
expire
to
reissue
them.
B
So
yeah,
that's
the
second
part,
and
finally,
probably
the
component
that
I
worked
with
most
it's
the
destination
service.
So
you
can
actually
see
me,
I'm
the
last
one
who
committed
code
here.
The
destination
service
is
how
we
kind
of
manage
service
discovery
in
kubernetes.
So
I
previously
said
that
you
know
we
do
some
service
discovery
up
to
a
certain
point,
so
we
can
do
a
lot
balancing
and
you
know,
provide
retries
and
timeouts
and
all
of
that
stuff.
So
everything
related
to
that
is
in
this
destination
component
and
that's
it.
A
Awesome
so
that
was
that
I
think
that's
a
pretty
good
overview
of
the
repository
now
you
know
putting
my
new
contributor
hat
on.
You
know
they
want.
You
know
they're
stole,
like
there's,
you've
described
service
messed
up
when
that
sounds
cool.
Okay.
I
understand
the
layout
of
the
code
and
where
the
components
are
like
what
is
the
best
way
for
them
to
find
an
issue
to
get
involved
with
the
project.
B
Right
so
again
glad
you
asked
that
we
have
issues
here,
so
we
do
most
of
our
communication
on
github
everything,
so
even
us,
the
maintainers.
We
generally
try
to
be
very
transparent,
with
what
we're
working
on
so
every
single
issue
that
we
can
think
of
is
filed
here
and
we
tend
to
have
discussions
in
the
actual
issues
themselves.
B
So,
as
you
can
see,
we
currently
have
a
couple
of
things
in
the
backlog.
I
usually
break
down
issues
in
the
backlog
in
three
categories
based
on,
so
this
is
based
on
what
I've
I've
I've
observed
so
far
by
by
working
on
it,
but
we
have
issues
where
linkard
is
not
working
properly.
For
example,
here
you
know
you
drain
a
single
node
and
a
reboot
causes
failure.
So
in
this
case
something
is
going
on
with
linker
d
same
with
this
one.
B
B
Then
we
have
feature,
requests
and
bug
fixes
and
those
are
usually
labels
with
help
wanted
not
all
of
the
time,
but
we
we
try
to
label
them
as
much
as
we
can.
So
just
because
you
said
you
put
your
new
contributor
hat
on.
I
want
to
dive
into
the
labels
that
are
very
applicable
for
new
contributors.
So
usually
it's
it's
a
good
idea
to
filter
everything
by
labels,
because
it
makes
everything
just
a
bit
easier
to
see,
but
we
have
different
areas
depending
on
which
component
that
you
want
to
work
with.
B
I
usually
suggest
that
your
contributors
start
either
with
cli
or
with
tests,
because
these
require
generally
the
least
context.
So
it's
it's
much
easier
to
hack,
something
together
and
then
we
also
have
labels
for
new
contributors
specifically.
So
we
have
good
first
issue
which,
if
we
apply
we'll
see
we,
we
have
a
couple
of
good
first
issues
here.
I
think
some
of
them
are
currently
taken
but
yeah
if
you're
curious
about
contributing,
definitely
have
a
look
for
these
and
we
also
have
help
wanted
so
help.
B
One
pit
is
generally
a
label
that
we
put
so
we
can
advertise
an
issue
to
external
contributors
and
be
like
okay.
If
you
want
to
work
on
this
feel
free
to
just
take
it,
you
know
just
just
work
on
it.
It
doesn't
necessarily
mean
that
it's
a
good
first
issue,
but
it
can
be.
It
usually
means
that
it
has
a
bit
more
context
to
it.
So
if
you,
if
you
take
a
health,
wanted
issue,
that's
also
not
a
good
first
issue.
B
You
just
might
have
to
do
a
bit
more
research,
but
we
we
generally
keep
it
very
simple.
You
have
this
good
first
issue
I
hope
wanted,
but
if
you're
an
external
contributor,
it's
not
a
requirement
for
the
issue
to
have
the
help
wanted
label
on
it.
So
if
you
just
find
something
in
the
backlog
that
you
think
sounds
cool
and
you'd
like
to
work
on
it
generally,
you
know
open
the
issue
up.
Look
at
the
comments.
If
there's
nobody
working
on
it
just
write
a
comment.
Yeah
I
want
to
work
on
this.
A
B
No,
thankfully,
you
do
not
need
a
jpm,
so
when
you're
a
new
contributor,
what
we
generally
tend
to
recommend
is
you
fork
the
repository?
So
you
have
this
button
here
fork.
You
click
it
well,
I'm
already
forked.
So
I
can't
actually
do
it
to
show
you,
but
you've
worked
the
repository.
This
is
going
to
create
your
own
repository
clone
that
you
can
kind
of
play
with.
You
can
commit
domain.
You
can
commit,
you
know
any
anywhere.
B
You
want,
and
it's
not
going
to
impact
anything
once
you
have
that
you
usually
just
have
to
clone
it
and
I'm
just
going
to
switch
over
to
my
terminal
just
to
go
through
all
of
the
build
things
and
you
know
show
you
how
to
get
link
ready
up
and
running
in
a
cluster.
B
So
just
let
me
find
the
window
so
right
now,
I'm
in
this
lgtm
directory,
but
I'm
going
to
go
to
link3d.
So
normally
you
know,
I
said
you
fork
the
repository
and
everything
and
then
you
just
get
one.
B
This
is
actually
a
fork
from
somebody's
pr
that
I
reviewed,
so
you
clone
it.
You
go
into
the
repository
and
from
there
you
read
it
with
all
of
the
the
go
files
now
getting
started
is
actually
quite
easy,
because
simplicity
is
kind
of
key
with
everything
that
we
do
with
link
rd.
So
we
don't
like
configuration.
We
don't
like
huge
build
processes.
We
we
really
want
to
keep
everything
simple.
So
to
do
that
we
actually
have
a
couple
of
scripts
that
we
have
available.
B
One
thing
that
I
want
to
note
before
I
go
any
further:
is
that
with
link
rd,
you
generally
need
a
kubernetes
environment
and
seeing
it
in
action
is
also
a
bit
difficult,
because
you
need
an
application
that
can
send
traffic
right
because
it's
a
service
mesh.
You
want
to
see
how
it
handles
all
of
the
metrics,
how
it
handles
traffic
so
on
and
so
forth.
But
don't
worry,
we
got
your
back
covered.
What
we
tend
to
do
because
we're
an
open
source
project.
B
We
tend
to
do
all
of
the
the
environments
locally
and
we
use
k3d
for
that
or
kind.
Those
are
two
projects
that
are
really
cool.
They
allow
you
to
run
kubernetes
in
docker
containers
on
in
your
on
your
machine.
B
So
that's
what
I'm
using
I'm
using
k3d
if
you're
using
mini
cube
or
anything
else,
that's
also
fine.
It's
not
it's
not
really
a
requirement,
but
it's
definitely
helpful
and
I
think
in
bin
we
have
a
k3b
script.
So
if
you
don't
want
to
download
the
q3d
binary,
you
can
also
just
use
this
script
straight
away
to
create
a
cluster.
B
So
I'm
just
going
to
create
a
clustered
demo
right
now,
and
this
hopefully
will
not
take
long,
and
while
this
is
underway,
I'm
just
going
to
go
over
to
this
getting
started
page
on
the
website
because
generally,
if
you're
a
contributor,
if
you're
a
new
contributor
or
an
adopter,
this
is
the
page
that
I
always
suggest
that
you
follow
and
you
can
take
my
word
for
it.
B
I've
done
a
lot
of
slack
support,
so
it's
it's
really
really
helpful
to
go
through
this
getting
started
guide
because
it
kind
of
helps
you
get
linkery
up
and
running
and
it
might
explain
a
few
things
in
more
detail
than
I'm
explaining.
But
this
is
the
the
step
that
I'm
I
wanted
to
highlight.
We
want
to
install
the
cli,
so
with
linker
d,
we
allow
you
to
install
linker
d,
either
through
elm
or
through
the
cli,
I'm
a
cli
kind
of
person.
So
I'm
just
going
to
use
this.
B
I
already
have
it
installed,
so
this
won't
actually
do
much,
but
essentially
it's
just
a
script
that
downloads
the
linker
d
binary
and
just
installs
it.
So
if
we
do
link
any
version,
we'll
see
that
we
we
have
this
client
version,
but
we
don't
have
a
server
version
because
it's
unavailable,
so
the
next
step
is
to
actually
get
linkedin
deployed
onto
your
cluster.
To
kind
of
have
a
look
at
everything,
and
that's
actually
kind
of
easy
to
do.
B
All
you
have
to
do
is
say,
link
reinstall,
I'm
not
going
to
apply
it
yet
because
I
want
to
show
you
how
it
looks
like
and
what
we
do
is
we
just
render
some
manifests
for
you
for
the
control
thing.
These
are
all
deployments
services
service
accounts
so
on
and
so
forth.
It's
nothing
special.
It
just
renders
everything
so
normally
what
we
do
is
once
we
install,
we
type
this
to
cube,
ctl
and
we
say
just
apply
all
of
these
manifests
and
create
the
classroom.
B
Sorry
create
the
link,
ready,
control
thing
now.
I
actually
already
have
a
glossary
of
the
up
and
running
just
so
I
can
save
time
and
if
we
have
a
look
at
the
main
spaces,
I
have
also
installed
with
this
extension
and
just
to
show
you
how
easy
it
is
to
install
that
through.
You
just
do,
link
review
this
install
and
then
you
apply
it.
It's
kind
of
the
same
principle
as
the
main
control
thing.
B
Let's
see
did
I
miss
anything
so
far,
so
we
can
get
the
main
space.
Oh
and
now,
if
we
view
link
of
the
version,
we'll
see
that
the
server
version
of
the
client
versions
match
now,
once
you're
done
with
your
changes,
and
you
want
to
test
that
everything
works,
we
also
have
a
bunch
of
scripts
to
do
integration
tests
to
build
the
binaries
and
and
everything
you
can
think
of.
B
We
have
a
build.md
file
where
we
go
into
depth
when
it
comes
to
this
and
kind
of
show
you
what
the
repo
layout
is,
how
you
can
build
each
single
component
and
so
on.
But
what
I
usually
tend
to
do
is
just
execute
this
bin
docker
build
this
will
package
well.
This
will
build
all
of
the
docker
images
and
tag
them
with
the
current
git
version.
So
I'll
just
show
you
an
example.
B
B
So
I
realize
this
might
not
make
a
lot
of
sense
now,
but
I
already
prepared
an
issue
for
us
to
work
on.
So
maybe
if
we
go
through
that
one,
we
can
see
at
the
end
exactly
how
everything
works
out
in
practice.
B
So
I
am
again
over
here
in
the
repository
and
I
already
picked
up
an
issue
yesterday.
This
already
had
the
help
wanted
tag,
so
it
happens
that
if
I
wouldn't
have
picked
it
you
could
have
worked
on
this,
but
I
guess
you
know
I'm
going
to
do
it
now
cool.
So
what
I
want
to
do
here
is
kind
of
not
just
work
on
the
issue
but
explain
my
thought
process
and
how
I
usually
approach
these
kind
of
things,
and
you
know
again
going
back
to
my
experience
when
I
first
started.
B
I
saw
the
issue,
you
know
it
had
all
of
that
text.
I
didn't
have
the
context
and
I
was
like
well
now.
I
just
need
to
learn
everything
there
is
to
know
about
service
meshes,
but
that's
not
actually
necessary
and
in
a
lot
of
the
cases
you
need
a
tiny
bit
of
context,
so
you
can
get
the
job
done
and
it's
usually
enough
to
just
read
whatever
the
issue
says
and
just
you
know
dive
in
straight
into
the
code
and
everything
will
make
sense.
B
I
promise
you,
but
in
this
case
jason,
who
is
actually
watching
the
stream
now
hello
jason,
he
he
raised
a
feature
request
and
the
feature
request
is
pretty
simple:
I'd
like
to
see
linker
d
metrics
for
replica
sets.
So
at
the
moment
in
the
ui
linkrd
doesn't
report
metrics
for
replica
sets
and
there's
a
reason
for
it.
B
We
generally
only
report
metrics
for
the
root
object
of
a
pod,
and
that
sounds
a
bit
complicated.
So
let
me
remind
when
you
deploy
your
pods
into
into
a
kubernetes
cluster
and
you
inject
lingerie
with
it.
Linkrd
will
start
reporting
metrics
for
these
pods
and
you'll
be
able
to
see
them
in
dui.
So
actually,
why
don't?
I
just
show
you
how
that
looks
right
now.
B
B
So
over
here
I
have
an
example:
application
installed
called
the
moji
photo
and
it's
just
a
series
of
deployments
that
all
communicate
to
each
other,
and
if
we
look
we
we
first
have
this
topology
graph,
where
we
see
exactly
how
components
talk
to
each
other,
and
then
we
also
get
some
metrics
for
for
the
deployment
stem
cells.
We
get
a
success
rate
request
per
second,
so
on
and
so
forth,
and
then
we
also
get
metrics
for
the
pods
themselves.
B
If
we
scroll
over
to
replica
sets,
we
don't
have
any
metrics,
and
this
is
fine,
because
replica
sets
and
kubernetes
are
usually
managed
by
the
deployment.
So
there's
no
reason
to
you
know:
report
metrics
in
two
places
for
replica
sets
and
deployments
just
report
them
for
deployments.
It's
the
you
know
it's
the
authority
in
this
case
it's
the
topmost
object,
so
to
go
back
to
the
issue
again.
The
problem
is
that
we'd
like
to
see
liquidity
metrics
for
replica
sets,
and
you
know
an
obvious
question
now-
is
why
why
do
we?
B
Why
do
we
want
to
do
this
and
it
turns
out
it's
because
it's
linked
to
to
another
issue,
about
argo,
rollout
deployments
being
invisible,
and
what
jason
says
here
is
that
when
we
have
an
argo
rollout,
we
can't
actually
get
any
metrics
from
it,
because
we
don't
handle
that
object
type.
B
It's
it's
invisible
and
that's
true,
because
argo
rollout,
so
I'm
not
awfully
familiar
with
argo
rollouts
by
the
way
I
literally
googled
it
for
15
minutes
yesterday,
when
I
first
saw
the
issue
and
all
we
need
to
know
about
it-
is
that
an
argo
rollout
replaces
a
deployment,
that's
it
and
because
it
replaces
a
deployment,
linker
d
kind
of
gets
a
reference
to
this
rollout
object
type
and
it
doesn't
know
how
to
handle
it.
It's
kind
of
scratching
it
said.
B
Well,
what
do
I
do
with
it
and
because
it
doesn't
know
what
to
do
with
it?
It
just
drops
the
metrics
completely,
and
this
is
what
jason
is
saying:
hey,
let's
add
in
metrics,
for
replica
sets
so
that
when
we
do
have
an
object,
type
that
we
do
not
recognize,
we
can
just
get
metrics
directly
for
that
replica
set.
B
So
we
at
least
have
something
in
and
then
the
next
step
that
I
do
after
I
understand
the
problem
is:
go
through
the
conversation
because
usually
the
the
most
recent
comments
give
you
the
most
context
in
this
case.
So
we
can
see
that
alejandro
one
of
my
colleagues
and
linker
demon
maintainer
really
pinpoints
the
problem
to
being
in
this
specific
function.
He
says
when
we
inject
the
pod
and
we
talked
a
bit
about
pot
injection
and
you
know
how
it
adds
those
proxies
to
it.
B
B
B
B
So
hopefully,
if
you've
stuck
with
me
so
far,
this
all
essentially
means
that
we
need
to
change
the
code
so
that
when
a
replica
setparent
is
invalid,
we
just
return
the
replica
set
itself,
and
this
is
all
handled
in
this.
Get
owner.
Kinda
name
function,
so
we
don't
have
to
do
much,
we'll
just
look
at
where
this
file
lives.
B
It's
in
controller
k8
api
dot
go
so
I
think
we're
pretty
ready
to
dive
in.
A
Yeah
I've
got
to
say
when
you
first
pulled
up
this
issue.
I
was
like
crap.
How
are
we
going
to
fix
that
and
the
time
that
we
have?
But
you
know
just
by
you
know
going
through
the
conversation
and
talking
about
what,
like
the
problem
space
is
like,
I
think,
by
like
the
third
or
fourth
comment.
When
you
go
down
to
oliver's,
I
was
like
oh
like
this
is
probably
a
two-line
change
and
that
all
came
from
your
narrative
and
those
those
comments
and
conversation.
B
You
know,
of
course,
there
are
exceptions
to
this,
but
usually
when
you're,
a
new
contributor
you're,
not
gonna
dive
into
you,
know
the
most
complex
proxy
changes
either
so
cool,
but
the
next
thing
that
I
usually
do
when,
when
I
have
one
of
these
examples
well,
one
of
these
issues
to
work
on
is
exemplified.
B
I
first
want
to
see
how
everything
behaves
normally
and
then
I
want
to
see
what
happens
when
you
know.
We
have
an
invalid
parent
in
this
case,
like
what
what
does
the
dashboard
show
and
we
already
went
through
the
happy
path
with
the
example
app
so
oops,
so
instead,
let's
apply
a
rollout
so,
like
I
previously
said,
I
do
not
know
much
about
rollouts,
so
I
actually
made
a
script
called,
create
rollout
that
will
just
apply
argo
rollouts
into
our
cluster.
B
It
will
install
it
and
then
it
will
also
apply
this
spot
info
manifest.
So,
first
I'm
going
to
create
to
kick
this
off
and,
while
that's
handling,
let's
have
a
look
at
what
we're
actually
applying
into
our
cluster.
We're
gonna
see
a
bunch
of
stuff
here,
it's
not
all
very
important
to
understand
what
we're
doing
the
main
key
here
is
that
we
have
free
deployments.
This
is
one
it's
a
front
end
and
then
we'll
have
another
deployment
which
we
call
a
generator.
B
This
will
send
data
to
our
front
end
and
then
the
final
piece
is
we'll
have
a
rollout.
So
this
is
what
replaces
our
deployment,
and
this
will
be
a
back
end,
so
the
generator
will
send
stuff
to
the
front
end,
which
will
then
send
stuff
to
the
back
end
and
if
right
now,
you're
thinking,
okay.
Well,
you
know
what
you're
doing
you
have
this
rollout
object.
You've
worked
with
link
ready
for
a
while.
B
So
if
you
go
through
the
integration
tests,
for
example,
you'll
see
that
a
lot
of
the
applications
that
we
use
are
publicly
hosted
on
github
such
as
emoji
photo,
which
we
also
use
in
the
getting
started
guide,
and
I
I
just
test
with
those
most
of
the
times
when
I,
whenever
I
have
a
change
that
I
want
to
test,
I
just
apply
those
manifests,
and
you
know,
they're
super
easy
to
get
emoji
photo
is
like
a
curl
away,
so
yeah,
don't
don't
be
discouraged
by
this
is
what
I'm
trying
to
say
and
yeah.
B
So
we
we
apply
this
rollout.
Let's
see
how
it
works
in
practice
when
we
go
over
to
the
dashboard,
so
we're
gonna
switch
our
namespace
the
new,
manifest
that
we
applied
created
a
new
namespace
and
we'll
see
that
we
have
a
generator
that
sends
data
to
a
front
end,
and
we
look
at
the
deployments.
We'd
expect
to
see
field
deployments
right
because
we
have
a
front
end,
a
generator
and
a
back
end.
B
We
only
see
two
of
them,
which
is
fine
so
far,
but
then,
as
we
scroll
down,
we
notice
there's
no
table
for
argo
rollouts
and
that's
because
we
naturally
don't
support
it.
So
the
next
next
best
thing
the
next
best
thing
would
be
to
see
all
of
the
of
the
stats
here
in
the
replica
set
like
we
don't
have
a
deployment
fine,
but
let's
at
least
get
something
in
the
replica
set
here.
So
that's
what
our
issue
will
do
after
we
fix
this
we'll
see.
B
I
generally
use
cloud
instance
to
do
all
of
my
programming,
so
I
don't
program
on
my
mac,
because
if
I
do
it's
just
gonna
take
off
or
if
it's
gonna
sound
like
it's
gonna
take
off
and
what
I
did
is
I
opened
this
api.go
file
in
controller
gate,
and
this
is
exactly
what
alejandro
pointed
to
in
the
comment,
so
I
didn't
really
have
to
do
much.
I
just
hit
command
p
controller
package
controller
api.
It
doesn't
show
up
here,
unfortunately
now
so,
but
yeah
just
take
my
word
for
it.
B
Cool
yeah,
I
I
hope
so
at
least
but
let's,
let's
try
a
bit
for
this
function.
So
let's
get
owner
kind
of
name,
returns
a
pods
owner
and
well
a
pods
owner's
kind,
the
name!
It's
pretty
self-referential
in
this
case
and
what
the
method
does
is.
It
accepts
the
context,
we're
not
bothered
with
this.
We
don't
actually
need
to
work
with
it.
It
then
takes
in
a
pod.
B
It
has
a
retry
bullying,
you
don't
need
to
be
bothered
with
a
cedar
and
then
it
returns
two
strings.
The
kind
and
the
name
like
the
comment
says
by
the
way,
we're
big
fans
of
comments
at
times.
I
think
it
definitely
helps
give
a
lot
of
context
to
an
open
source
project,
but
anyway
I
won't
get
sidetracked.
B
What
we're
doing
first
is
we're
getting
the
pod
owner
references,
so
this
comes
from
clientgo,
the
kubernetes
library
that
most
of
us
use
in
go.
If
we
don't
have
any
owner
references,
then
the
pod
doesn't
have
a
parent.
If
it's
more
than
one
reference,
then
something's
gone
wrong.
So
again
we
just
return
the
pod
and
then
what
we
want
to
do
is
we
want
to
get
the
pods
parent
and
look
if
there's
an
object
that
manages
that
parent
there's
a
grandparent
for
our
pond.
B
So
there
are
two
situations
where
we
have
a
parent
that
might
have
a
grandparent.
That's
a
job,
as
you
can
see
here
and
roughly
that
said,
so,
if
you're,
relatively
new
to
kubernetes
replica
sets,
are
native
objects
that
help
your
pods
well
help
keep
the
number
of
your
pods
stable
in
a
cluster.
So
it's
the
thing
that
you
know
when
you
say
I
want
free
replicas
of
an
application
running
is
the
thing
that
ensures
you
have
free
replicas
of
that
pod
running.
B
But
generally
we
don't
use
replica
sets
by
themselves.
We
use
them
with
another
object
like
a
deployment
that
kind
of
manages
everything
around
it
and
does
everything
a
bit
better
so
to
speak,
but
yeah.
What
we're
doing
here
is
we're
declaring
a
parent
object,
which
is
a
client,
go
type
object.
B
B
We
overwrite
this
variable
and
then
at
the
end
we
have
another
check
if
this
parent
object
also
has
a
reference,
then
return
the
grandparent,
otherwise
just
return
the
parent.
So
if
this
job
would
be
owned
by
something
else,
we
would
return
that
something
else.
Otherwise
we
would
just
return
the
job
here
and
for
the
replica
set
if
you've
been
faster
than
me
here.
B
B
If
it
is
then
overwrite,
the
parent
object,
otherwise
just
return.
The
parent
find
a
name
and
again
parent
refers
to
the
pod's
parent
here,
so
I'm
just
gonna
do
that
so,
okay,
so
far
so
good.
This
will
really,
like
you
said,
be
a
two-liner.
I'm
going
to
start
with
an
if
statement
here
and
say
if
we
have
a
boolean
that
comes
from
is
valid,
replicated
parent
and
this
balloon
is
false,
so
it's
not
valid.
B
B
B
We
know
we're
going
to
take
in
a
replica
set
and
I'm
going
to
cheat
here.
I
already
know
what
the
type
is,
because
I've
been
working
with
this
for
a
while.
It's
all
client
specific.
So
if
you
don't
understand
it,
much
don't
worry.
Neither
do
I
it's
client
go.
We
all
have
we
all
struggle
with
it,
but
here
we'll
basically
have
this
replica
set
object,
and
the
first
thing
that
we
want
to
do
is
notice.
B
B
B
The
next
thing
that
we
want
to
do
is
check
all
of
the
valid
kinds
that
we
have
so
one
way
that
I
would
do
this.
I'm
not
saying
it's
the
correct
way
to
do
this.
I'd
probably
have
something
like
this
valid,
and
this
would
be
first
fingering
and
in
here,
we'd
use
some
constants
that
we
have
to
say
all
of
the
valid
deployment
valid.
Let
me
change
this
to
valid,
so
we
know
a
deployment
is
that
nearby
current
staple
set
is
definitely
a
valid
parent.
B
We
require
a
bit
of
research
here,
but
it
wouldn't
be
too
hard
to
figure
out
just
a
couple
of
clicks
in
the
kubernetes
stocks
page
and
finally,
what
we
want
to
do
is
say:
well,
I
guess
we
want
at
first
to
get
the
actual
owner
references,
so
we'll
say
owner
is
get
owner.
References.
B
B
Oh
perfect
and
that's
it
so
now
we
should
be
good
to
get
everything
going.
I
don't
think
I
have
any
errors
here.
I
guess
we'll
find
out
soon
enough.
B
I
lost
the
connection
to
the
pod
here.
That's
not
sure.
What's
going
on,
let's
see
so
like
I
previously
said
what
we
normally
do.
Is
we
build
the
docker
images?
So
let's
make
some
changes
we're
going
to
build
these
docker
images,
we're
going
to
load
these
images
up
in
the
cluster,
we're
going
to
upgrade
our
control
plane
because
right
now
we're
running
a
different
version,
we're
going
to
have
a
new
version
and
we're
just
going
to
test
everything
works
out
any
questions
so
far.
A
No
I'm
right
here
with
you.
I'm
following
I've
got
to
say,
though,
like
you
know,
you
said
it
at
the
start.
This
is
your
first
stream
and
you've
came
in
you've,
explained
service
mesh
for
a
start.
You've
introduced
this
lingerie
d.
Did
a
code.
Walkthrough
walked
us
through
issue
labels
and
done
a
little
bit
of
live
coding.
Super
impressive.
B
Thank
you
very
much
I'd
like
to
think
it's
all
of
the
slack
experience
that
I'm
getting.
We
do
a
lot
of
support
for
our
users.
So
that's
one
of
the
cool
things
about
linkerd.
B
B
We
like
to
help
each
other
out
a
lot,
and
it's
not
just
me
here
or
the
maintainers,
it's
community
members
helping
each
other
out
as
well.
So
it's
really
really
cool
and
on
that
topic
I
have
a
bit
of
a
well-kept
secret.
It's
not
really
a
secret,
but
I
just
realized
a
lot
of
people.
Don't
do
it.
We
have
a
slack
channel
that
a
slack
workspace
that
you
can
join,
but
we
are
also
running
discord,
server
and
usually
the
dev
team.
The
maintainer
team
keeps
things
transparent
on
discord.
B
We
have
a
deaf
channel
where
we
talk
about
issues.
We
talk
about
potential
fixes.
You
know
when
I
have
city
questions,
that's
where
I
go
and
ask
them
so
you
can
enter
that
channel
and
you
can
sort
of
spy
on
us
or
ask
your
own
questions.
It's
really.
It's
a
transparent
forum
for
development
work
on
the
kerdi,
so
if
you
can
definitely
check
it
out,
I
think
it
would
be
helpful
all
right
yeah,
so
these
builds
don't
usually
take
a
long
time.
B
I
mean
I'm
saying
that,
but
it's
still
building,
maybe
five
minutes.
A
It
looks
like
jason
tried
to
give
you
some
collapse
in
the
chat
and,
unfortunately,
our
moderation
bot
caught
it
as
spam.
Sorry,
jason.
A
B
Exactly
the
rollout
is
already
in
there,
so
what
we're
I'm
gonna,
basically
just
restart
everything,
so
it
gets
injected
all
over
again.
That'll
pick
up
our
new
changes
and
it
will
hopefully
work
I've
taken
a
bit
of
time
explaining
this.
So,
let's
see
if
this
will
drag
on
building,
because
otherwise
we
can
also
talk
a
bit
about
the
review
process,
which
is
my
favorite
thing
about
linkerid.
A
B
A
B
It's
a
dream
so
coming
off
working
on
a
macbook
air
as
a
student
2017
edition,
where
you
know
I
always
had
to
just
run
one
browser
tab.
Otherwise
everything
would
just
crash
to
having
my
own
cloud
instance
it
just
it
makes
everything
such
a
breeze.
I
yeah.
I
recommend
it.
If
you
have
the
opportunity
to
play
around
with
it,
definitely
definitely
give
it
a
try
cool,
but
what
I'm
going
to
do
now
so
oops?
B
What
I'm
going
to
do
now
is
you'll
notice
that
our
build
completed
and,
like
I
said
this,
will
put
in
a
like
a
git
tag,
get
hash
or
whatever
as
a
version,
but
this
is
not
in
in
our
in
our
cluster
right
now
and
since
we
don't
want
to
push
it
into
a
repository,
we're
just
going
to
load
it
directly
into
k3d.
B
So
again
we
have
a
script.
It's
called
image
load.
This
is
also
documented
in
test
or
build.md.
I
believe,
I'm
not
sure.
Honestly.
It
has
been
a
long
time
since
I
looked
at
those
at
those
stocks,
but
it's
documented
somewhere.
So
if
you
don't
remember
it,
don't
worry
you're
definitely
going
to
come
across
it.
B
This
didn't
take
too
long.
So
now
we
have
the
new
images
in
and
the
docker
image.
Actually
the
docker
build
script.
Sorry
also
build
a
linker
definery,
which
we
have
a
script
for
to
reach,
so
we
don't
have
to
go
to
the
actual,
build
output
directory
and
everything.
So,
basically,
here
it's
easier
to
show
if
you
do
lingerie
version
you'll
see
that
the
binary
runs
new
version
that
we've
just
built,
but
the
server
still
runs
the
old
version.
B
So
naturally
the
next
step
is
to
upgrade
the
control
plane.
So
this
is
done
through
our
upgrade
command
and
then
there's
also
this
prone
kind
of
argument
that
we
use
for
cubectl.
So
this
is
cube.
Cpl,
I'm
sorry,
I'm
using
aliases,
honestly,
I'm
not
sure
what
prune
does
I
never
really
understood
it,
but
I
always
use
it.
So
you
know
at
this
point
it's
one
of
these
things
that
I
don't
question
yeah.
So,
let's
see
how
our
control
plane
is
doing,
it's
already
running
sick.
B
So
the
next
thing
is
the
seal
of
pods
in
pot
info.
So.
A
B
B
Now,
what
I'm
going
to
do
is
delete
all
of
the
pods
in
pot
info,
so
this
is
the
rollout
that
we
had
and
I'm
deleting
them,
because
we
want
everything
to
be
injected
again
right.
So
we've
made
changes
to
this
api
function.
This
api
function
is
going
to
be
used
by
the
injector
and
these
pods
were
already
injected.
So
what
we
want
is
we
want
to
force
them
to
go
back
through
the
injection
cycle
and
hopefully,
when
they
come
back
up,
we'll
see
metric
metrics
for
replica
sets.
B
B
It's
okay:
let's
just
go
directly
to
the
dashboard.
B
You
know
what,
if
this
doesn't
work,
there's
another
thing:
we
can
do
so
everything
that
you
see
in
the
dashboard-
and
this
is
actually
a
good
one.
Everything
you
see
in
the
dashboard
is
also
available
through
the
cli.
So
if
we
do
this
help
we'll
see
that
we
have
a
couple
of
command
the
one
that
we're
interested
in
right
now
is
the
stat
resource.
This
displays
traffic
stats
and
again
that's
kind
of
what
we're
looking
for.
So,
if
we
do,
linker
d
is
stat
replica
sets
in
the
pod
name
space
all.
A
B
Zoom
in
we're
going
to
see
that,
just
as
before
we
have
free
replica
sets,
we
have
front
end
generator
and
pod
info
pod
info
is
now
getting
metrics,
because
its
parent
is
not
valid.
The
other
two
are
not
getting
any
metrics,
so
we
can
also
verify
they
are
getting
metrics
through
their
deployment
by
doing
deploy
spot
info
and
we'll
see
that
they're
getting
metrics
for
their
deployments.
B
Yeah,
exactly
exactly
gotta,
you
know
think
outside
the
box.
You
know
I
was
actually
talking
to
a
colleague
about
it.
I
don't
use
the
dashboard
very
often
it's
always
cli.
There's
one
last
step
that
I
want
to
do
two
last
steps.
First,
I'm
going
to
make
sure
everything
cuts
out
well
and
while
that
takes
its
time,
I'm
going
to
commit
our
changes.
B
So
first
we
add
the
file
and
then
we
say
git
commit
minus
s.
The
s
here
is
important
because
we
want
our
commit
to
be
signed
off.
We
have
a
pco
check
which
basically
checks
that
you're,
okay
with
making
this
change-
and
you
know
you're
making
a
lot
of
free
will
and
everything
else,
don't
take
legal
advice
from
me
please,
but
basically
this
will
just
introduce
this
signed
off
thing
here.
A
B
B
If
your
pr
is
about
changing
a
dependency
where
you're
like
okay,
I'm
going
to
increment
something
or
we
need
a
new
version,
because
what
we're
trying
to
do
is
not
supported,
then
yes
definitely
committed.
Otherwise,
I
think
it's
best
to
keep
those
lock
files
and
mod
files,
as
they
are
because
they
kind
of
guarantee
integrity
when
it
comes
to
dependencies.
B
A
B
Jvm,
you
know
some
of
the
java
projects
I
had
to
run
were
all
red
because
of
dependencies,
so
yeah
have
a
strong
preference
there.
So
I
think
we
failed
here
we
might
be
missing
a
type
for
that.
We
that
we
didn't
really
account
for,
and
I
can't
remember
what
the
type
would
be
so
we'd
probably
have
to
look.
This
is
a
bit
besides
the
point.
So,
first
off,
let
me
show
you
what
I
would
do
when
I
do
have
a
test
failure.
First,
I
would
commit
the
work
that
I've
done
so
far.
B
So
normally
the
way
we
like
it
in
liquidity
is
to
have
a
subject.
You
start
your
commit
with
a
subject.
The
subject
starts
with
a
verb
present
tense
and
it's
about
kind
of
what
you
have
done,
rather
than
the
result
of
what
you
have
done.
So
I'm
just
going
to
say,
add
parent
object,
validation
or
sense.
B
B
We
cannot
get
any
metrics.
For
example,
using
rollout
will
not
report
any
metrics
higher
than
obviously
you
usually
have
a
bit
more
time
to
finesse
through
these
commit.
B
Then
I
think
the
next
thing
that
we
usually
do
is
say
what
the
solution
is.
The
fix,
add
validation
for
replica
owners.
If
it's
a
valid
parent.
B
B
Now,
with
this
thing,
I
think
I'm
missing
something
obvious
here,
but
I
cannot
remember
what
it
was.
So
I'm
going
to
show
you
exactly
what
I
would
do
when
this
happens.
First,
I
would
go
to
my
get
owner
kind
of
wrong
one.
I
would
go
to
my
good
owner
kind
function
and
see
exactly
where
it's
being
used.
So
let
me
just
search
it.
B
Get
owner
name
and
timer,
or
something
like
that.
I
already
forgot
yeah
there
you
go,
I
would
go
to
references
and
I
try
to
see
the
one
that
applies
to
what
we're
trying
to
do
right
now.
So
we
talked
about
the
proxy
injector
and
how
this
is
used
in
the
proxy
injector.
So
this
is
probably
the
file
that
we
would
like
to
snoop
in
and
over
here.
I'd
expect
somewhere
to
see
some
types
for
an
object.
There
we
go.
B
We
have
replica,
sets
replication
controller,
daemon
sets
stateful
sets,
and
what
do
we
have
in
get
owner
in
kind
when
we
validate.
A
B
Yeah,
it's
a
demon
set,
I
think
and
yeah,
let's
see
if
this
fix
requests,
I'm
hopeful
it
did
because
otherwise
I'm
gonna
run
out
of
ideas,
but
while
that
completes,
there
are
also
two
other
functions
that
well
two
other
scripts,
that
I
recommend
you
run
before.
You
actually
push
your
changes
and
that's
been
lent.
This
will
tell
you
if
you
have
lint
failures
when
it
comes
to
go
so
limit.
Failures
are
generally
kind
of,
like
stylistic,
choices
that
you
make.
B
For
example,
it's
not
necessarily
stylistic,
but
the
example
that
I
have
in
mind.
Is
you
declare
a
constant
and
that
constant
is
not
used
anywhere?
You
would
not
want
that
in
so
expected
it
to
be
deployment,
and
it's
a
replica
set.
B
Okay
and
the
next
one
right
before
I
dive
right
back
into
changes
is
then
format
which
will
check
for
any
formatting
values.
I
keep
missing
this
like
transition,
but
here
we
have
deployment
and
it
would
have
expected
it
to
be
a
deployment.
So,
let's
see
exactly
what's
happening,
might
be
a
bit
beyond
the
scope
of
the
stream
yeah.
A
We
can
always
move
towards
the
review
process
like
and
you
can
you
can
fix
this
in
your
own
time.
I
don't
think
we
I
mean
if
you
want
to
debug
it
of
course
feel
free,
but
you
know
no
pressure.
B
Let's,
let's
quickly
go
to,
I
want
to
see
if
we
can
quickly
now
this.
So
if
we
have
the
parent
name
and
apparent
kind.
Oh,
where
is
this
y?
B
I
think
it's
expecting
a
deployment
and
it
got
a
replica
set
over
here,
so
this
wouldn't
necessarily
happen
like.
I
wouldn't
expect
this
to
happen.
So
that's
why
I'm
a
let.
A
B
B
A
B
Let's,
let's
see
so
assuming
all
of
our
tests
are
are
passing.
We
now
have
our
commit
there.
I
should
probably
branch
out.
I
should
have
done
that
before
the
maintainer
team,
usually
prefixes
the
branches
with
their
name,
I'm
gonna,
say,
fix
replica
set,
not
very
intuitive
but
yeah.
Whatever
we
can
see
again,
our
branch
has
the
latest
commit
in
the
log.
B
Normally
you
would
push
this
to
your
fork.
I
will
use
my
privilege
to
push
it
directly
to
the
repository
and
then
we're
just
going
to
go
on
the
website,
and
here
we
are.
This
will
open
up
a
request
if
you
are
working
through
for
a
fork.
B
You'll
typically
still
get
the
same
kind
of
thing,
except
that,
instead
of
merging
it
into
your
4q1
emergent
at
a
you
know
main
repository
base,
so
yeah
this
is
kind
of
it.
I'm
a
big
fan
of
writing
very,
very
detailed
pull,
request
messages
this
time,
I'm
just
going
to
let
it
take
what's
whatever
is
from
whatever's
kind
of
populated
in
the
commit
message
and
you'll
see
that
this
is
the
actual
issue
that
we
have
the
solution
and
the
validation
I'm
going
to
create.
B
This
and
then
I'm
just
going
to
wait
for
somebody
to
tell
me
my
tests
are
failing.
The
tests
are
going
to
run
again
here,
so
if,
for
some
reason
you
forgot
to
run
the
integration
test
like
I
just
did
or
if
you
forgot
to
run
the
unit
tests,
this
will
also
run
in
the
actual
get
repository.
B
B
A
101
comment,
like
I
said
we
like
to
be
really
thorough
and
this
to
be
honest
in
my
defense,
this
was
also
a
proof
of
concept,
so
it
was
a
lot
of
really
trying
things
out
at
first
and
you
know
a
lot
of
updates
on
my
side.
Like
half
of
these
comments
are
mine,
I
think
but
yeah.
This
is
how
I
normally
write
my
my
pro
request
messages.
B
I
simply
use
a
what
how
and
why
you
know
what's
happening.
Why
are
we
doing
this
change?
How
are
we
doing
this
change
and
then
how
did
I
test
it?
So,
in
this
case
we're
trying
to
change
the
api
to
allow
for
stateful
sets
to
remove
the
cluster.
It's
a
bit
beyond
the
scope,
but
just
to
show
you.
B
I
typically
write
updates
after
every
single
commit
that
I
push
you'll,
also
notice
that
I
do
not
squash
my
commits
after
I've
opened
the
pull
request,
and
this
is
something
that
I
personally
appreciate
as
a
reviewer.
If
you
know
I
have
a
bunch
of
commits
before
I
open
the
pull
request,
it's
okay
to
squash
them
and
have
just
one
commit
because
it
makes
it
easier
to
visualize,
but
once
you
open
the
request,
it's
very
helpful
for
the
person
that
reviews
to
see
the
entire
kid
history.
B
You
know
if
you
have
10
other
commits
that
you
push
onto
this
branch
and
it
goes
into
the
pull
request.
It's
very
helpful
for
us
to
see
how
you
went
from
point
a
to
point
b
and
everything
that
happened
in
between.
Otherwise,
sometimes
you
can
miss
out
on
context.
So
it's
not
it's
not
a
strong
preference,
but
for
me
it
is
a
preference
either
way
it
doesn't
matter
how
you
do
it.
It's
not
wrong,
it's
just
if
you
can
not
squash
them.
That
would
be
perfect
and
then
yeah.
B
It's
a
big,
basically
a
lot
of
back
and
forth
about
how
everything
is
supposed
to
work.
You
know
ideas,
we
bounce
ideas
off
of
each
other.
If
something
doesn't
work,
you
know
you
kind
of
get
your
attention
drawn
to
it.
There
are
also
code
comments.
I
think
at
this
point
we
were
a
bit
too
early
for
code
comments,
but
you
know
the
more
we
kind
of
look
through
here.
The
more
we'll
find
like
here,
for
example,
you
know,
can
you
point
to
where
we
hit
a
mill
pointer
here?
B
B
Is
that
again,
if
you're
a
new
contributor,
I
think
it's
very
helpful
to
contribute
to
a
project
like
languardy,
because
it
really
gives
you
a
lot
of
help
from
people
who
have
been
around
the
industry
for
such
a
long
time
and
who
have
seen
so
many
things
as
far
as
engineering
goes
and
not
just
those
kind
of
people
like
you
get
people
from
different
backgrounds.
Reviewing
your
code,
giving
you
advice,
and
you
know
pointing
things
out
that
you
know-
might
happen
in
your
changes.
B
A
That's
kind
of
it
all
right.
Thank
you
for
guiding
us
through
all
of
that
there
there
was
a
lot.
B
Yeah,
I
I
know
it's
a
it's
a
bit
to
take
in
but
yeah.
Hopefully
everyone
could
follow.
If
you
have
any
questions,
you
can
find
me
on
the
discord
and
slack
channels
so
always
feel
free
to
reach
out
to
me
I'll
make
time
to
answer
them,
especially
if
you
leave,
but
I'm
a
new
contributor,
if
you
lead
with
that
I'll
I'll
make
extra
time
just
for
you.
So
you
know.
A
Yeah
this
this
was
perfect,
like
this
is
just
a
canonical
reference
now
for
anyone
who
wants
to
come
along
and
understand
the
kitty
and
start
to
contribute
patches
to.
I
think
you
just
covered
so
much
so
many
important
parts
here
about
how
to
work
with
lingard
d,
how
to
modify
the
code
the
test,
and
then
you
know,
liquidity
is
one
of
those
projects
that
you
do
need
to
kind
of
run
it
in
a
kubernetes
environment
and
just
seeing
how
those
build
scripts
are
all
there
and
and
the
documentation
looked
fantastic
throughout
as
well.
A
I
think
it's
just
great
that
you
managed
to
share
your
story
as
well
of
getting
started,
contributing
and
now
working
at
that
point,
which
is
hopefully
gives
a
lot
of
other
people
that
were
in
your
position.
Something
to
look
forward
to
themselves
and
get
involved
like
contributing
to
open
source
can
lead
to
wonderful
things
and.
A
That
was
very
brave
people,
struggle
with
live
coding
and
you
handle
that
effortlessly.
So
you
know
great
well.
B
You
know
we're
still
failing
the
test,
so
you
know
be
sure
to
check
in
in
an
hour
from
now
when
I
start
getting
growth
from.