►
Description
Meeting of Kubernetes Storage Special-Interest-Group (SIG) Volume Populator Design Meeting - 20 October 2020
Meeting Notes/Agenda: -
Find out more about the Storage SIG here: https://github.com/kubernetes/community/tree/master/sig-storage
B
Oh
there,
it
is
okay,
get
my
little
window
open
all
right.
So
welcome
guys.
Thank
you
for
joining
and
sorry
for
the
relatively
late
notice
for
the
meeting.
I
was
trying
to
figure
out
how
to
set
this
up
correctly
and
ended
up
waiting
until
the
last
minute
to
do
that.
So
I
I
have
been
talking
in
various
venues
about
the
the
volume
populators
work
that
I've
been
doing.
B
So
I
wanted
to
start
off
with
having
like
some
weekly
meetings,
just
to
get
some
work
done
and
figure
out
who
you
know
wants
to
be
contributing
to
this
effort
and
try
to
collect
feedback
on
the
cap.
The
the
cap
update
is
still
not
merged
yet,
which
is,
which
is
fine,
because
the
feature
will
remain
alpha
for
this
release.
B
But
I'd
like
to
wrap
up
loose
ends
around
the
cap
and
then
figure
out
the
the
steps
to
get
work
for
this
done
for
the
120
release,
so
that
going
into
121
we
can
have
a
serious
shot
at
going
to
beta
and
we'll
talk
about
the
details
of
that
so
yeah.
Let
me
so.
I
have
a
in
the
invite
you
should
see.
I
started
a
agenda
doc
in
the
form
that
we
have
for
all
of
our
other
meetings,
and
I
put
some
agenda
items
on
here
to
to
discuss.
B
B
B
And
at
that
time
the
only
work
that
was
done
was
to
basically
add
a
new
feature,
gate
which,
if
enabled
it
would
turn
off
the
validation
of
the
data
source
field
for
pvcs.
So.
B
So,
with
this
feature,
gate
starting
in
118,
if
you
turn
it
on
it,
just
stops
the
validation
of
that
field
and
lets
you
put
whatever
you
want
in
there.
I
do
think
there's
a
limitation
where
it
won't.
Let
you
put
a
core
kubernetes
object
in
there
other
than
a
pvc,
but
but
any
cr
could
be
put
in
there,
whether
it's
a
valid
cr
or
an
invalid
cr,
whether
it
exists
or
not
any
kind
is
allowed,
and
the
idea
was
doing.
This
would
allow
us
to
then
go
develop
data
populators
and
later
later
on.
B
C
B
No
no
just
like
like,
if
you
put
like
a
pod
or
a
or
a
config
map,
or
something
that's
like
core
kubernetes
api
type.
Basically
with
a
with
an
api
group
of
empty
string,
you
know
it
doesn't
work,
I
think
so.
But
if
the
api
group
is
anything
other
than
the
empty
string,
then
the
validator
will
allow
it
through
and
that's
just
because
we
know
that
there's
no
other
core
kubernetes
object
other
than
a
pvc
that
you
would
like
to
be
able
to
be
the
data
source
of
a
of
a
new
pvc.
C
What
could
this
change
in
the
future?
I'm
thinking
right.
B
B
This
change
was,
we
want
to
enable
the
development
of
populators
outside
the
tree,
so
so
when,
before
we
had
any
data
sources
at
all,
the
very
first
one
to
go
in
was,
I
believe,
pvc
cloning,
and
so
we
changed.
You
know
the
validator
to
allow
pvcs
and
then
later
we
added
snapshots,
and
there
was
another
change.
The
snapshot.
C
C
B
C
B
But
if
it's,
if
it's
not
a
core
api,
it
allows
it
so
so,
like
I
was
saying,
the
whole
idea
here
was
to
allow
development
of
populators
and
other
data
sources
for
pvcs
outside
of
the
cour
tree
of
kubernetes,
so
so
that
the
problem
was
you
know
for
for
pvcs
and
for
snapshots,
getting
them
in
required,
changes
to
cube
api
server
to
allow
them-
and
we
didn't
want.
You
know
the
third
one
and
the
fourth
one
and
the
fifth
one
to
have
to
go
down
the
same
path
because
it's
slow
and
it's
annoying
and.
C
C
But
I
thought
there's
anything
that
any
water
gas
was
meaning
anything.
B
B
Yeah
there
was
an
iteration
of
my
change
that
literally
allowed
anything,
and
then
someone
said
I
forget
who
suggested
you
know?
Maybe
we
shouldn't
allow
core
data
types
here.
I
totally
agreed,
and
so
I
put
that
because
that
check
was
part
of
the
pre-existing
code
of
117,
and
so
I
just
put
that
check
back
in,
but
that's
that's
a
very,
very
minor
detail.
B
The
the
whole
point
was,
you
know,
get
get
the
the
core
kubernetes
project
out
of
the
out
of
the
development
loop
before
adding
new
things
like
this,
and
so
with
this
feature
gate
you
know,
all
of
the
validation
will
be
moved
to
this
move
to
something
else,
and
then
we
had
left
off
what
that
something
else
was
during
the
118
release
to
try
to
figure
out
what
it
would
be.
B
I
unfortunately
didn't
spend
any
time
on
it
during
119
other
than
thinking
about
it,
but
now
I
really
want
to
move
it
forward
during
120..
So
the
idea
that
we
had
was
we'll
have
a
validating
web
hook.
That
will
that
you
know
we
would
expect
distros
to
install
at
the
same
time
that
they
flip
the
feature
gate
on.
So
whenever
the
feature
goes.
B
Beta
basically
you'll
want
to
have
this
validating
web
hook
be
part
of
your
kubernetes
distribution
and
I'm
hoping
that's
121
but
we'll
see,
and
then
the
idea
is
we
can
control
what
is
and
is
not
a
valid
data
source
type
through
the
the
web
hook
instead
of
the
core
kubernetes
api
and
we,
the
goal
was
to
make
it
extensible
and
something
that's
very
easy
to
experiment
with
and
expand
over
time
without
code
changes
being
required.
B
So
we
do
want
it
to
be
administrator
controlled
so
that
arbitrary
users
can't
just
create
their
own
data
source
types
and
and
install
populators
in
the
cluster
and
then
start
doing
weird
things.
It
would
have
to
be
something
the
administrator
enabled.
But,
aside
from
that,
we
want
to
sort
of
open
the
doors
to
experimentation.
B
So
in
any
case,
what
I
was
trying
to
say
about
the
kepp
was
in
118.
We
did
all
the
work
for
this
feature:
gate
that
relaxed
the
validation
and
that's
where
it
stops
for
120.
The
things
I've
added
to
the
cap
are
I'll,
go
find
it
here
specifically.
B
So
we
added
this,
this
volume
populator,
I'm
sorry
it's
it
looks
it's
rendering
light
gray
on
my
screen
for
some
reason:
volume,
populator
crd,
which
is
a
new
cr,
which
we
hope
will
be-
which
I
hope
will
be
standardized
and
basically
allows
you
to
register
a
a
group
in
kind
as
a
valid
source.
B
And
so
so
these
things
are
very
simple.
It's
basically
it's
an
object,
has
a
name,
and
then
it
has
a
source
in
kind
and
you
you
know
when
you
install
a
populator,
including
all
of
its
associated
controllers
and
crds,
that
represent
you
know
the
the
things
that
will
be
data
sources.
You
create
an
instance
of
a
volume
populator
cr
that
refers
to
that
group
in
kind
and
then
the
validating
web
hook
will
say:
oh
okay.
B
Now
this
is
a
valid
data
source
and
if
you
don't
create
one
of
these
attempts
to
create
a
pvc
that
refer
to
to
a
crd
that
doesn't
have
one
of
these
will
will
get
rejected
and
you'll
get
the
regular.
You
know.
Actually
I
don't
know
what
the
error
code
is.
You
get
back
from
cube
api
server,
but
it
will.
It
will
reject
the
the
object
creation
entirely
and
you
won't
get
a
pvc
until
the
populator
is
installed,
so
so
so
this
is.
B
B
So
when
I
install
my
hello
world
populator
I'll
install
the
associated
crd
called
hello
and
the
controller
that
knows
how
to
populate
volumes
from
these
hello
objects
and
then
additionally
I'll
have
an
instance
of
a
volume
populator
cr
that
says
you
know
kind
hello,
so
that
when
I
create
a
pvc
that
points
to
one
of
these
hello
objects
it
will
it
will
let
it
go
through.
B
Basically,
if
I
don't
have,
if
I
don't
have
to
today
today,
if
I
just
install
that
controller
and
the
crd-
and
I
flip
the
feature
gate
on
it'll,
let
anything
through
so
I
could.
I
could
just
put
a
hello
in
my
data
source
of
a
pvc
and
it'll,
be
fine.
Popular
can
do
its
job.
The
problem
is,
is
if
I,
if
I
misspell
hello
and
put
like
hello
in
there
or
something
bizarre
like
it'll,
just
go
in
and
you
it
will
be
accepted
and
you'll
get.
B
No
error
messages
and
nothing
will
happen
and
you'll
just
be
confused,
you'll
be
like.
Why
am
I?
Why
aren't
I
getting
anything
so
so?
The
point
here
is
to
validate
the
data
as
it
goes
in,
so
that
things
that
are
never
going
to
get
fulfilled,
get
rejected
immediately
and
then
for
things
that
that
are
allowed.
B
The
the
assumption
is,
if
I
create
an
instance
of
a
volume
populator,
it
is
an
indication
to
kubernetes
that
there
is
a
controller,
that's
responsible
for
these
things
and
we'll
be
watching
for
them
to
be
created
and
any
user
feedback
that
is
required
will
be
implemented
by
that
controller
that
registered
this
cr
for
the.
C
B
B
Yeah
yeah
you
can
have,
you
can
have
as
many
of
these
as
you
want,
and
one
of
the
things
I
wanted
to
discuss
later
was
right.
Now,
there's
no
way
to
prevent
multiple
populator
instances
from
referring
to
the
same
group
in
kind,
and
that
seems
like
a
problem,
but
we
can
talk
about
that
later,
but
but
yeah,
the
idea
is,
you
can
have
as
many
of
these
as
you
want
they're,
just
it's
just
a
cr.
It
only
has
two
fields.
B
Every
time
you
install
some
sort
of
populator,
you
can
install
as
many
of
these
as
you
want,
and
it
just
basically
tells
the
the
validating
web
hook
that
don't
reject
this
data
source,
because
because
I'm
something
something
else
will
provide
feedback
about
pvcs
with
that
data
source
that
that's
what
this
that's.
What
the
cr
supposed
to
indicate
is
that
there
is
something
else
in
the
system
responsible
for
watching
these.
E
Okay-
and
I
think
what
I
just
wanted
to
clarify-
was
basically
crd
versus
cr,
so
you're
introducing
a
new
crd,
which
is
volume
populator
yeah
and
your
validation
web
hook
will
verify
that
that
crd
exists
and
then
it
also
verifies
that
the
crd
that
the
volume
populator
instance
the
cr,
is
pointing
to
also
is
installed.
B
Yes,
yes,
so
so
I
I
was
going
to
go
over
the
the
code
later,
because
I
have
a
prototype
that
actually
works
but
yeah.
Well,
basically,
every
time
you
get
a
a
new
pvc
with
a
not
with
an
on
empty
data
source.
The
validating
web
hook
looks
at
the
the
group
in
kind
and
then
goes
and
tries
to
find
a
cr
that
matches
that
group
in
kind
before
allowing
it
and.
E
B
Yeah,
so
so
so
that
that
was
a
sticking
point
and
that
came
up
in
my
earlier
discussion
with
elliot
and
alexi
so
to
the
the
current
design
does
not
enable
that.
But
but
but
similarly,
the
status
quo
does
not
enable
that
either.
If,
if
I,
if
today,
I
create
a
pvc
with
a
data
source,
it's
just
going
to
get
zeroed
out
and
I'm
going
to
get
an
empty
volume.
And
then,
even
if
I
install
a
populator
later,
that
would
have
populated
that
data
source.
B
Yeah,
so
so
I'm
sorry,
if
that
wasn't
clear
yeah
the
only
the
only
thing
the
web
hook
cares
about.
Is
the
volume
populator
crs
the
the
fact
that
they
refer
to
a
crd?
It's
just
it's
going
to
string,
compare
those
it
doesn't
actually
go,
look
and
see
if
that
crd
is
really
there.
So,
yes,
you
could.
B
As
the
a
hello
volume
populator
cr
that
says
yes,
hello,
objects
are
valid
sources,
but
I
may
have
not
created
the
hello
crd
yet
or
installed
any
of
the
associated
controllers
and
the
the
web
hook
will
allow
that
pvc
to
get
created.
But
of
course
nothing
will
happen.
D
B
This
so
so
well,
I
heard
him
say
that
it
it
would
do
that,
but
but
we
could
we
could
consider
the
alternative,
which
is
actually
let
the
pvc
get
created
with
with
the
data
source
field
populated,
even
though
it
points
to
something
that
isn't
valid
yet
the
the
issue
there
is,
if
we
want
to
provide
any
kind
of
reasonable
feedback
when,
when
the
populator
either
isn't
installed
yet
or
will
never
be
installed
like
a
validating
web
hook,
isn't
the
right
way
to
do
that
anymore?
B
At
that
point,
you
need
a
full-blown
controller
that
is
watching
for
pvcs
and
generating
events
as
it
sees
them,
and
that
was
actually
my.
My
first
thought.
Like
a
couple
months
ago,
I
was
like.
Oh,
we
just
need
to
have
a
controller.
That
watches
for
pvcs
looks
at
the
data
source
checks
to
see
if
the
data
source
refers
to
something
that
has
been
registered
as
a
populator
and
if
not
just
generates
an
event
and
says
hey.
This
looks
bogus
it
might
never
get
fulfilled
and
then
and
then
leave
it.
B
And
then
I
think
it
was
shing
suggested
that
we,
you
know,
follow
the
model
that
we
have
for
snapshots
and
actually
have
a
validating
web
hook,
that
that
can
prevent
the
object
creation
from
going
through
altogether.
B
I
don't
know,
I
think,
maybe
it's
a
little
bit
more
expensive
because
you
have
to
install
a
whole
kubernetes
controller.
I.
D
Think
the
drawback
could
be
that
events
will
go
out
of
order.
So
in
case,
if
you
like,
if
controller
sees
that
there
is
no
populator,
but
at
the
same
time
you
are
deploying
the
populator
and
populator
will
kind
of
emit
event
working
on
it
and
then
controller
will
emit
the
event
that
there
is
nobody
working
on
it.
So
these
events
may
go
out
of
order.
I
guess
I
mean
that
kind.
B
Okay,
well
yeah,
so
so
I
mean
aside
from
the
extra
heavy
weightness
of
a
full-blown
controller.
I
I
can't
see
any
downsides
to
that
approach.
E
I
mean,
if
we're
talking
about
it,
doesn't
actually
validate
like
the
custom.
Crds
right
and
the
only
cr
that
it
really
needs
to
know
about.
Is
the
volume
populator
populator
and
that
one
should
be
pre-installed.
B
D
B
D
Yeah
we
we
discussed
this
briefly
with
ben.
I
was
also
like
I
was
trying
to
maybe
to
make
some
an
analogy
to
do:
storage
class
like
what
would
happen
if
pvc
is
creating
referring
to
a
storage
class
which
doesn't
exist
yet
so
what's
right,
right.
B
I
I
couldn't
answer
that
either,
so
that
would
be
an
interesting
research
project.
So
so
I
I
am
open
to
changing
this
to
to
a
full-blown
controller
that
just
provides
advisory
events
instead
of
denying
object
creation.
I
think
that
that's
a
reasonable
approach
I'll
have
to
rewrite
some
of
the
stuff
in
the
in
the
cab,
but
that's
no
big
deal.
I
guess
the
question
at
that
point
would
be
which
controller
so
you're
proposing
something
in
tree.
E
We
might
run
into
a
wall
there,
so
I
remember
when
we
tried
to
do
the
csi
driver
as
a
crd
object,
and
we
wanted
to
make
the
entry
controllers
aware
of
that
object.
The
machinery
just
did
not
exist
to
be
able
to
bundle
crds
with
the
core
kubernetes
installation.
D
E
The
controllers
themselves
were
not
allowed
to
do
the
installation
themselves,
and
so
eventually
the
sig
architecture
said:
okay,
fine,
we'll
let
you
make
an
exception
here
and
add
it
to
the
core
and
we'll
look
into
how
to
do
this
properly
in
the
future.
So
this
could
be
another
one
of
those
things
where
we
go
to
sig
architecture
and
say:
hey:
we've
got
a
use
case.
E
C
So
I
I
think
we
can
actually
add
this
to
the
csf
provisioner,
because
css
provisioner
today
is
already
checking
the
data
source.
It's
checking
one
snapshot
and
the
pvc
for
cloning
already.
So
I
think
we
can
just
add
this
one
as
well,
why
you
don't
think
that's
sufficient.
C
B
So
that
was
my
first
idea
was,
was
don't
add
it
to
something?
That's
in
tree.
Add
it
to
the
external
provisioner
so
that
it
will
be
handled
on
a
per
csi
plug-in
basis.
So
each
csi
plug-in
will
have
to
have
its
own
external
provisioner
and
will
only
emit
events
for
pvcs
that
that
provisioner
would
have
been
responsible
for.
C
E
I
think
what
we're
trying
to
do
is
come
up
with
a
new
generic
kind
of
data
populator
mechanism.
Right
and
ideally
you
know,
if
snapshot
and
pvc
did
not
exist,
they
would
also
follow
this
model.
Yeah.
D
D
B
Yeah,
so
so
we
could
do
something
like
we've
done
for
snapshots,
where
we
have
in
this
external
snapshot
of
repo.
We
have
a
sidecar
and
a
controller,
and
the
understanding
is
the
controller
is
sort
of
a
centralized
thing,
that's
installed
by
the
distros
and
the
sidecar,
something
that's
installed
by
the
csi
plug-ins
and
then
just
add,
like
a
pvc
populator
controller
to
the
external
provisional
repo.
That
would
follow
the
same
model
yeah.
I.
E
Think
that
would
be
a
perfectly
fine
model
to
follow.
I
would
still
like
to
go
after
sig
architecture
and
see
if
they
fix
this
issue
that
we
complained
about
a
long
time
ago,
but
yeah.
This
would
be
a
good
backup.
B
Okay,
okay,
all
right
well,
so
so
that
actually
alleviates
a
lot
of
concerns
and
obviates
the
need
to
go
over
the
existing
prototype
because
it
makes
this
obsolete.
B
So
I'm
just
trying
to
think
of
if
there
was
any
other
gotchas
with
this
design.
B
If
what
you're
doing
looks
like
it's
not
going
to
result
in
something
good
and
that
way,
if,
if
you
either
haven't
installed
a
populator
yet
or
you
know,
or
the
populator
never
will
be
installed,
you
at
least
get
a
note
from
the
system
saying
why
your
pvc
is
not
binding
and
then,
of
course,
if
if
if
later,
the
populator
gets
installed
and
your
pvc
is
just
sitting
there,
there's
nothing
stopping
it
from
binding
at
that
time
and
then
you're
back
in
business
and
as
long
as
you
have
the
the
feature
gate
turn.
So
so.
B
Actually,
I
wonder
if
this
changes
the
the
speed
at
which
we
could
get
to
a
beta
if
we
don't
need
the
populator
to
or
the
sorry
the
the
the
validating
web
hook
to
be
installed
for
correct
behavior,
and
it's
just
a
matter
of
enabling
the
feature
gate
and
well.
I
guess
you
still
need
to
have
the
if
you
enable
the
feature
gate
without
this
controller
being
installed,
what
you
lose
out
on
is
user
feedback.
B
You'll
get
you
know,
people
will
create
pvcs
that
never
go
anywhere
and
they
will
never
find
out.
Why?
B
If
that
happened.
In
this
case,
I
guess
things
would
just
kind
of
work,
but
you
wouldn't
get
warning
messages
which
well
and
also
you
wouldn't
the
the
installation
process
for
the
populators
would
fail
to
create
an
instance
of
the
volume
populator,
because
the
crd
itself
might
not
be
there
yet
because
someone
forgot
to
include
it
with
the
distro.
B
But
as
long
as
as
long
as
installations
were
resilient
to
that
that
particular
error
data
publishers
could
actually
work
whether
this
feature
was
installed,
whether
this
controller
was
installed
or
not.
D
Double
check
your
you,
you
were
in
the
very
beginning,
you,
you
were
mentioning
the
logic
where
you
specify
unknown
source
and
that
is
just
getting
ignored
and
just
empty
pvc
is
getting
created.
B
B
The
object
goes
through
and
gets
created,
as
the
user
specifies,
but
then
what
happens
is
when
the
external
provisioner
sidecar
that
is
responsible
for
that
or
or
if
it's
entry
you
know
whatever
would
be
creating
that
that
volume
it
looks
the
data
source
and
it
says
you
know,
is
it
a
pvc,
because
I
know
how
to
clone
things?
Is
it
a
snapshot
because
I
know
how
to
clone
those?
B
Is
it
empty
because
I
know
how
to
create
an
empty
volume,
but
if
it's
something
else,
the
way
that
the
that
the
sidecar
works
today
is
that
it
just
drops
the
request
and
doesn't
do
anything
which,
which
is
which
is
the
desired
behavior
and
we'll
get
into
why
that
is
when
we
talk
about
the
mechanics
of
an
actual
populator,
but
I
think
I
think
it's
a
good
situation
so
that
yeah
you
can
create
volumes
and
whether
the
population
is
installed
or
not.
B
D
So
what
you're
saying
is
that
logic
which
creates
like
blank
pvcs
if
it
doesn't
if
the
source
is
unknown,
this
logic
will
will
will
go
away,
so
it's
not
going
to
be
there
so
we'll
replace
it
with
our
logic.
So
it's
in
the
external.
B
Printer,
that's
what
the
existing
there's
there's
a
feature
gate
today.
I
added
in
118
called
any
volume
data
source
it
defaults
to
off
because
it's
alpha,
but
when
you
turn
it
on
yeah,
it
just
removes
that
validation
and,
let's,
let's
unknown
data
sources,
go
through
so
and.
B
B
Provision
error.
No,
no!
It's
part
of
cube
api
server.
It's
in
the
it's
one
of
the
admission
controllers.
I
think.
B
Well,
starting
with
118.,
it's
right
there:
okay,
okay!
Thank
you!
Thank
you,
okay,
so
so
I'm
liking
this
plan.
So
the
the
the
next
thing
on
my
agenda
for
today,
I
don't
we
don't
need
to
go
over
the
rest
of
the
cab
because
I'm
going
to
have
to
rewrite
pieces
of
this.
B
What
happened
to
my
other
web
browser
yeah,
the
other
things
I
want
to
talk
about
were
metrics
because
they
came
up
in
the
kep
review.
We
don't
need
to
talk
about
validation.
Well,
we
could
so
so
assuming
we
add
these
yeah.
Let's
talk
about
this
one,
assuming
we
add
the
volume
populator
crd,
whether
it's
a
core
object
or
or
an
external
object.
B
We
do
have
the
problem
where,
like
you,
can
have
multiple
instances
of
this
object
that
refer
to
the
same
group
in
kind,
and
what
does
that
mean
because
all
that
the,
although
the
controller
cares
about
is,
is
there
acr
that
mentions
the
group
in
kind?
It's
not
going
to
do
anything
with
that.
Cr!
There's
no
instructions
in
here
other
than
just
basically
saying
hey.
B
D
B
That
that
was
the
that
was
the
the
proposal
that
came
out
last
week
or
two
weeks
ago.
I
forget
so
do.
D
B
Yeah,
well
I
don't
I
don't
know,
I
don't
know
how
how
parallel
requests
are
handled
by
validating
web
hooks
and
if,
if
you
have,
if
they
both
landed,
a
cube
api
server
at
around
the
same
time,
and
both
the
validation
requests
were
in
flight
at
their
at
the
same
time,
if
it
was
possible
for
them
to
both
succeed
and
for
both
the
objects
to
get
created
just
because
of
a
very
tight
race.
B
You
could
do
that.
I
I
don't
know
if
it
makes
sense
to
write
a
whole
validating
web
hook
and
require
users
to
install
it.
Just
to
prevent
this
weird
corner
case
of
two
volume
populators
with
the
same
group
in
kind.
B
E
E
B
B
E
Actually,
yes,
so
if
you
mark
two
storage
classes
as
default
today,
there's
no
api
time
creation.
Time.
Validation!
That's
done!
Instead,
when
you
go
to
use
one
of
these
storage
classes,
the
provisioner
throws
up
and
starts
spewing
events.
Saying
hey,
there's
two
defaults:
I
don't
know
which
one
to
use.
Sorry,
okay,
so.
A
B
Yeah
yeah,
I
bet
we
could
so
so
what
would
happen
then?
I
guess
is:
if
there
was
one
instance
of
the
cr,
the
controller
would
emit
no
messages.
If
there
were
zero
instances
of
the
cr,
it
would
say:
hey
nothing
is
going
to
respond.
B
You
know
so
just
be
aware
that
your
pvc
might
not
bind,
but
if
there
were
two
we
could
implement,
we
could
emit
a
different
message
that
says:
hey
there,
there's
two
instances
of
this
of
this
populator
cr
and
we
don't
know
what
the
heck
is
going
to
happen
exactly:
okay,
that
that
seems
reasonable
and
yeah.
That
gets
us
off
the
hook
from
having
to
write
a
whole
other
validator
just
for
this
populator
crd
okay.
B
So
I
like
that
I'll
put
that
in
the
notes
and
and
by
the
way,
I'm
going
to
try
to
type
up
the
notes
afterwards
from
memory,
because
I'm.
B
E
Recording
should
be
able
to
grab.
B
Yeah
yeah
shing
is
doing
the
recording,
but
I
I
I
like
to
have
the
notes.
I
don't
have
to
listen
to
myself.
Talk
for
a
whole
hour
to
see
what
makes
sense.
I
want
to
talk
about
metrics
briefly
before
we
go
to
other
things.
So
as
part
of
the
I
don't
know
what
we're
calling
this.
This
new
process,
the
prr
process,
product
readiness
review
or
something
they're
very
interested
in
metrics,
around
new
features-
and
I
don't
know
anything
about
metrics
and
kubernetes.
B
So
I
was
hoping
that
someone
could
help
me
figure
out.
What
kind
of
metrics
would
make
sense
for
this
kind
of
feature.
E
So
in
general,
the
way
that
it
works
is
every
component
is
expected
to
have
a
prometheus
metrics
endpoint
and
on
that
end
point
it
can
emit
whatever
metrics
make
sense
for
that
component
in
general.
These
metrics
are
the
counts
and
latencies.
So
you
could
have
you
know,
number
of
requests.
I
got
number
of
errors.
I
got.
E
D
B
Then,
basically,
it
would
be
in
a
position
to
count
up
how
many
requests
of
various
data
sources
had
come
through
and
how
many
valid
ones
there
were
and
how
many
invalid
ones
there
were
and
tell
someone
about
that.
And
then
I
guess
the
stuff
that
the
prr
people
care
about
is
like.
D
B
D
B
B
So
so
I
guess
what
my
question
is
is
like:
could
you
suss
out
that
kind
of
information
from
any
other
existing
metrics
like,
like
the
events,
are
there
to
go
look
at
if
you
want
to
just
peruse
the
events
like?
Is
that
not
how
they
want
to
solve
these
kinds
of
problems?
They
want
to
have
dedicated
metrics,
to
tell
you
what's
going
on.
E
B
Oh
okay,
okay!
So
so
some
guy,
whose
job
it
is
to
just
keep
an
eye
on
the
infrastructure,
yeah
and
look
for
anomalies
right,
okay,
okay,
so
so
yeah
I
can,
I
guess,
propose
some
metrics
in
the
updated
kep
along
those
lines
and
then
and
then
so.
The
this
new
controller
would
be
the
the
kubernetes
or
sorry
the
prometheus
endpoint
like
it
would
just
be
built
into
the
controller.
E
Yeah
exactly
so,
there's
a
prometheus
library
that
you
can
import
and
I
think
there's
a
kubernetes
wrapper
around
that
library
and
at
runtime
you
can
say:
okay,
I
want
to
start
the
prometheus
endpoint
at
you
know
such
and
such
port
and
whatever
and
that's
basically
it
and
then
you
can
start
emitting
those
metrics
as
part
of
your
controller.
B
C
E
Yeah,
so
for
the
sidecars
I
actually,
instead
of
going
through
and
adding
the
same
metric
and
all
the
different
side,
cars
I
created
a
library
and
that
library
is
imported
in
all
the
side,
cars
and
it
lives
in
csi
libya
tills.
If
you
go
to
csi
libya
till
slash,
metrics
you'll
find
the
library
there
and
then
you
can
see
all
the
side
cars
imported
and
how
they
implement
it.
B
B
C
B
Okay,
so
so
I
should
throw
out
the
question
real,
quick.
It
did
come
up
before
like
should
this
thing
live
in
a
separate
repo,
or
can
we
reuse
the
external
provisioner
repo
for
this
kind
of
feature
like
I,
I
hate
creating
new
repos
just
because
of
the
amount
of
work
involved,
but
I
also
hate
having
multiple
things
live
in
the
same
repo,
so
yeah.
E
I
think
we've
seen
this
time
and
time
again
with
like
the
old
external
storage
repo,
where
we
had
tons
of
projects
and
a
single
repo
and
then
with
the
volume
snapshot
where
we
had
the
core
controller
and
the
sidecar
living
in
the
same
repo.
So
I
would
suggest,
starting
with
a
separate
repo,
if
we
decide
that
we're
going
to
do
a
standalone
controller
right.
B
C
It's
not
in
a
separate
repo,
yet
I
just
because
one
problem
of
spitting
out
is
then
you
know
releasing
them
in
your
testing
and
all
of
that
you
have
other
issues
right.
So
there's
pros
and
cons.
C
Yeah,
that's
awesome
so
having
them
together,
you
can
always
test
them
together.
That's
the
yeah.
Surrender
now
like
the
apis,
actually
is
in
a
different
goal
package.
So
that's
a
separate
kind
of
separate
and
then
controllers
and
side
cars.
They
are
built
separately,
but
yeah
I
mean
yeah.
I
haven't
seen
any
I
mean
we
can
if
it's
really
really
absolutely
necessary.
I
haven't
seen.
B
B
E
I
think
that
makes
sense,
and
I
think
I
can
be
convinced
of
that-
I'm
just
going
to
play
devil's
advocate
for
a
little
bit.
I
guess
the
weird
thing
is
the
csi
external
provisioner
repo
is
dedicated
to
csi
drivers,
and
this
controller,
we're
talking
about,
is
kind
of
more
generic
and
applies
to
non-csi
as
well.
B
E
Okay,
I
can
buy
that
logic
and
I
know
in
general,
we
want
to
move
to
a
mono
repo.
I
think
this
is
one
of
those
where
the
pendulum
swings
right.
We
start
with
one
extreme.
We
find
out
how
painful
it
is
and
we
swing
to
the
other
extreme
and
go
back
and
forth.
So
I
think
the
direction
the
sig
wants
to
move
is
like
collapsing,
all
the
all
the
csi
side,
cars
into
a
single
repo
into
actually
a
single
binary.
If
possible,
oh
yeah,.
C
C
F
B
E
B
E
Yeah,
it
becomes
a
trade-off
between
developer,
velocity
and
kind
of
integration
velocity
if
that
makes
sense,
and
in
the
beginning
we
wanted
to
optimize
for
developer
velocity,
because
there
were
so
many
moving
parts,
and
we
were
so.
E
You
know
quickly
developing
things
that
there
were
new
side.
Cars
and
new
features
popping
up
all
the
time,
and
I
guess
the
feeling
now
is
that
it's
a
little
bit
more
stable
and
now
there's
more
pain
on
the
integrator
side,
where
the
integrators
are
trying
to
manage.
You
know
four
or
five
different
versions
of
side,
cars
and
all
the
different
versions
and
trying
to
figure
out.
B
I'm
just
trying
to
imagine
that,
because
you
know
netapp
our
our
plug-in,
like
we
support
all
the
way
back
to
kubernetes
113.
so
and
actually
maybe
further.
Now
I
don't
even
know
but
like
so
so
when
this
new
mono
sidecar
comes
along
like
we're.
Gonna
have
to
support
that
and
the
old
way
at
the
same
time,
which
might
be
even
worse
than
either
alternative.
E
B
I
understand
the
principle
and
so
okay,
I
guess,
then
I
will
proceed
with
the
assumption
that
sharing
the
external
provisioner
repo
for
now
is
is
acceptable,
which
is
what
I
was
doing,
anyways
for
the
validating
web
hook.
So
I'll
just
do
the
same
thing
for
this
controller,
and
this
year,
yeah.
E
E
So
supposedly
I
think
we've
extracted
a
lot
of
that
out
into
a
common
release
tools,
repo.
B
D
B
End
of
the
world,
but
yeah
all
the
other
things
you
mentioned.
I
hadn't
even
thought
about
so
plenty
of
reasons
not
to
not
to
go
with
another
repo,
okay,
so
we're
close
to
the
top
of
the
hour
and
there's
not
really
enough
time
to
delve
into
the
mechanics
of
populations
themselves.
So
we
can
put
that
off
for
another
week.
I
I
want
to
use
the
last
few
minutes
basically
to
talk
about
what
the
plan
is
going
forward
and
answer
any
other
questions.
B
People
have
so
I
I
would
like
to
keep
this
as
a
weekly
for
at
least
the
next
few
weeks.
Hopefully
a
lot
of
decisions
will
get
made
and
the
cap
will
get
merged
and
we
can
you
know-
maybe
not
have
these
meetings
every
week
or
cancel
the
series
entirely,
but
is
everyone
cool
with
keeping
this
on
a
weekly.
B
Okay,
all
right,
so
then
did
anyone
have
any
anything
else
you
wanted
to
add.
You
know
ask
questions
if
you
have
other
topics
to
discuss,
please
just
direct
the
agenda.
Doc
is
editable
by
anyone,
so
I'm
going
to
create
a
bullet
for
next
week
and
you
can
just
throw
stuff
on
there.
If
you
want
to
talk
about
it,
I
will
write
down
the
notes
from
this
meeting
today,
while
they're
still
in
my
brain.