►
From YouTube: Kubernetes SIG Apps 20190624
Description
Led by Janet, Co-hosts(s): Adnan
Announcements:
* Kubernetes 1.15 is out. Supported versions of Kubernetes are 1.13 - 1.15
* New Subproject: https://github.com/kubernetes-sigs/execution-hook
Discussion Topic:
* [Stateful Application Data Management API KEP] https://github.com/kubernetes/enhancements/pull/1051 (@liyinan926)
* Sidecars KEP implementable https://github.com/kubernetes/enhancements/pull/1109
A
B
All
right
so
well,
so,
basically,
this
repo
is
for
a
sub
project
for
running
arbitrary
hooks
in
your
containers
like,
for
example,
you
can
actually
use
this
for
running
quiescing
on
Christine
cooks,
for
you
know
supporting
snapshots.
So
basically
you
take.
You
run
the
freeze
commands
doctor
freeze
application
before
you
take
a
snapshot,
and
then
you
run
the
freeze
commence,
who
owned?
Freeze
an
application
post?
You
know
the
snapshot,
so
this
is
the
primary
go
off
this
sub
project,
but
you
can
also
use
this
to
run
outer.
B
You
know
under
kinds
of
arbitrary
comments
if
you
want
so
the
designs,
basically
I
like
having
some
CRTs
for
modeling
execution
cloak
and
also
hook,
actions,
that's
or
or
the
commands
you
want
to
run,
then
the
controller
will
be
responsible
for
running
the
hooks
for
you
as
service
the
status
of
the
hook
execution
through.
You
know
the
status
section
of
the
xq2
hook,
CR
so
yeah.
Let
us
know
if
you
have
any
question
regarding
this
new
sub
project
and
new
ripple
yeah.
A
B
Okay,
so
Jenny,
maybe
you
can
also
on
opened
the
cap.
A
B
Okay
cool,
so
basically,
this
cap
is
for
proposing
a
new
API.
We
call
stateful
application,
so
the
idea
is
actually
to
use
this
new
API
to
support
data
management
semantics
for
stay
for
application,
so
basic
application.
That
meant
in
you
know
some
persistent
states
through
persistent
volumes.
So
the
idea
is
that
we
can
actually
use
this
API
to
support
snapshot,
backup
cloning,
restoration
and
rollback
operations
declaratively
well,
mostly.
Actually
so
this
API
structure,
let
me
see
if
I,
can
naturally
pull
this
out.
B
B
If
application,
which
is
sort
of
like
an
extension
to
the
application
CRD
that
you
can
not
only
you-
can
actually
describe
because
your
metadata,
but
also
you
can
actually
use
this
as
a
bridge
to
do
you
know,
data
management
tasks,
and
so
we
have
C
RDS,
called
application,
snapshot
and
application
bag,
backup
for
supporting
a
snapshot
and
backup
operations
and
there's
also
a
dedicated
Ciardi
called
a
picture
rollback
for
supporting
in
place
rollback
of
an
application.
So
the
the
dotted
lines
here
means
basically
like
the
direction
that
you
can
actually
take.
B
But,
for
example,
you
can
actually
take
a
snapshot
of
an
application
or
you
can
also
to
a
import
of
a
backup
into
a
snapshot
on
the
other
direction.
You
can
do
applicator
restoration
by
creating
a
stateful
application
that
has
a
source
that
points
to
a
snapshot,
for
example,
or
you
can
also
restore
an
application
from
a
backup
directly
by
pointing
your
state
of
application
to
a
backup
resource
and
rollback
works.
B
Similarly,
so
you
can
do
a
rollback
to
us
to
a
state
capturing
a
snapshot
for
application
or
you
can
actually
restore
to
the
state
capturing
a
backup.
So
we
try
to
make
this
API
kind
of
like
having
a
symmetric
structure
so
that
you
can
do
different
kinds
of
operations
depending
on
the
source
of
your
operation,
and
so
any
questions
so
far.
B
Okay,
so
we
have
a
lot
of
details,
inner
inner
caps.
So
if
you
you
know,
if
you're
interested
definitely
check
out
the
cap
and
see
all
the
details
about
this
new
API,
so
I
won't
jump.
You
know
into
the
details
of,
however,
every
C
or
D,
but
yeah.
Definitely,
if
you're
interested,
take
a
look.
The
the
cap
so
I
guess
now,
I'm
gonna
to
we're
gonna
show
a
demo
of
this
nuke
some
implantation
of
this
new
API.
B
So
so
the
example
I'm
gonna
use
is
a
MongoDB.
So
basically
assuming
like
a
new,
a
MongoDB
application
running
somewhere,
you
want
to
take
a
snapshot
of
this
MongoDB
application.
So
me
show
you
first
I'm,
gonna
use
some
gke
for
this
example
and
also
I
already
have
two
GCE
CSI
driver,
pcpd's,
etc.
Installs
I'm,
gonna
use
a
GC
EPDs
that
persistent
storage
for
so
or
to
have
an
application
running
here.
So
the
is
already
running
on
its
run
by
a
stateful
set
was
two
replicas.
B
This
is
how
the
application
snapshot
CR
looks
like
so
you
can
see
it
has
a
reference
to
the
class
or
application
snapshot
class.
So
an
application
snapshot
class
basically
defines
common
parameters
used
about
a
snapshot
or
for
a
cause
of
applications,
and
it
also
defines
who's
the
snapshot
or
for
this
particular
application.
So
only
a
snapshot
or
with
a
matching
name
can
really
handle
this
application
snapshot
request
so
basic
outer,
you
know,
controllers
or
snapchatters.
B
They
will
basic
ignore
this
if
they
are
not
the
one
that
should
be
responsible
for
this,
so
we
also
have
a
stateful
application
CR
here,
which
represents
the
mungo
stateful
application.
So
you
can
see
it's
actually
pretty
simple,
so
it
basically
has
a
a
reference
to
an
application
CR
which
describes
the
application
metadata
about
this
MongoDB
instance
through
this
application
name
field
and
another
interesting
thing
here
is
the
sourcing.
The
application
snapshot
object.
So
you
can
see
this
the
type
of
the
source
in
the
application.
B
That
means
I
want
to
take
a
snapshot
of
an
application,
and
here
the
application
name
actually
points
to
the
name
of
the
state
for
application,
which
you
know
represents
the
stateful
application
that
I
wrote.
I
want
to
take
a
snapshot
for
so
let
me
show
you
the
class,
so
the
class
basically
defines
are
fusing
like
what
I
said.
Like
you
know,
first
of
all,
it
defines
who's
the
snapshot
or
for
this
particular
class
of
application,
and
also
it
defines
the
quiescent
quiescent
hooks
here.
B
You
can
see
the
pre
hooked
or
quiescent
hooked,
em
finishes
and
also
post
or
unclear
seing
folk
definitions
and
there's
also
something
called
elation
policy
which
it
defines
what
happens
when
you
delete
an
application
start
out?
What
are
you
want
to
keep
the
snapshot
Iran
and
or
you
also
want
underline,
snapshot
to
be
removed
as
well
as
well.
So
any
questions
so
far.
B
Okay,
so
here
the
for
the
protocol
consists
basically
running
a
Mongol,
lock
command
and
for
the
quiescent
codes,
just
you
know
basically
unlock
in
the
table
a
lock
in
the
database.
So
the
first
thing
we're
gonna
do
is
actually
to
create
this.
B
So
you
can
see
here
we
have
a
bunch
of
events
that
shows
what
happened
you
know
during
the
process.
So,
first
of
all,
we
retrieved
and
persisted
the
application
metadata,
which
means
like
basically,
the
set
of
coronated
resources
that
make
up
the
application.
In
this
case
we
have
a
MongoDB
stay
for
set.
We
also
have
got
a
service.
That's
gonna
capture,
there's
also
a
application
CR
that
also
captures
as
part
of
this
snapshot,
and
then,
after
that
we
run
the
pre-hook.
B
So
you
can
see
we
actually
execute
it,
one
pre-hook
and
then
after
that,
so
once
the
application
is
freezed,
then
we
start
the
wall
and
stand
trial
process.
So
the
one
impressed.
So
here
we
got
two
replicas,
so
we
actually
have
two
PVCs
to
a
snapshot.
So
that's
why
here
you
know
we
basically
created
two
wall
and
snapshots
for
the
two
PVCs
and
then
we
have
something
called
application
snapshot
content,
which
is
a
non
namespace
resource
that
basically
capture
information
about
the
underlying
snapshot,
so
yeah.
So
once
both
one
and
snapshots
become
ready.
B
That
means
they
are,
you
know,
they're
done,
then
we
run
the
post
hook
to
unfreeze.
The
application-
and
then
we
call
the
po
process
done
so
you
can
see
notice
that
the
status
of
this
that
traffic
becomes
a
pond
the
means
it's
usable,
so
you
can
actually
use
that
to
do
application,
cloning
or
restauration
those
kind
of
things.
A
B
So
this
is
the
original
definition
of
the
application,
so
you
can
see
that
it
has
a
got
a
application
CR,
which
also
specify
the
component
kinds
of
this
application.
They
got
one
service
and
once
they
Fassett,
which
is
you
know
basically,
so
we
use
this
label
on
the
sap
label,
to
you
know,
group
all
the
components
together
so
now
what
I'm
gonna
show
is,
after
to
to
use
this
snapshot
to
do
a
restoration
or
clump
whatever
you
want
to
call
it.
So
this
is
what
I'm
gonna
do
as
before.
B
Actually
so,
I
do
that
I
want
to
clean
up
their
existing
app
so
because
otherwise,
I
might
not
even
have
the
enough
resources
to
run
new
callin
apps.
What
I'm
gonna
do
delete
this
existing.
B
Instance,
and
after
that,
I'm
gonna
do
a
restoration
of
app
into
the
names
same
namespace
before
I.
Do
that
this
is
how
to
with
see
ours
for
the
cloning
operation
look
like,
so
what
I'm
doing
here
is
basically
having
another
stateful
application,
but
this
time
you
can
see
extra
has
a
source
field
which
points
the
snapshot
I
just
created
and
there's
also
something
we
call
ladder
substitution
rules
which
you
allow
you
to
specify
things
that
you
want
to
replace.
B
This
basically
creates
the
State
for
application
object
and
then
triggers
a
restoration
operation.
So
this
will
go
back
to
so.
You
can
see
this
new
clone
application
was
created
because
of
this
you
know
restoration
operation
and
if
we
actually
jump
into
the
details
of
that,
you
can
see
all
the
labels
are
also
renamed.
So
the
old
labels
used
and
now
the
new
labels
all
become
Kong,
and
if
we
further
go
down
into
an
integrative
pod,
you
can
also
see
that
we
actually
also
renamed
like
the
wonnum
yeah.
B
B
B
B
C
B
So
actually,
by
default
we
just
persist.
The
application
can
fake
information
onto
a
persistent
one
and
attach
to
the
controller.
So
basically
by
default,
you
know
just
persisted
the
application
config
to
disk
I,
see
ok
yeah,
but
API
also
supports
outer
kind
of
storage
options
that
people
connector
just
extend.
B
D
A
A
A
Okay,
so
think
we
can
end
today's
meeting
earlier
and
thanks
everyone
for
coming
see
you
next
week.