►
Description
At our Community Meeting on July 15, Carvel maintainers, Eli Wrenn and Daniel Helfand, walked through the latest release of kapp-controller.
You can find more details about this release within the release notes: https://github.com/vmware-tanzu/carvel-kapp-controller/releases/tag/v0.20.0
A
So
next
we
have
the
package
management,
api
intro,
the
demo,
for
the
release.
Regarding
cap
controller,
I
will
stop
sharing
my
screen.
B
Cool
so
yeah
up
to
this
point,
our
discussions
about
packaging
stuff
have
been
very
hand
wavy
and
descriptive.
Instead
of
concrete
with
actual
examples,
so
dan
and
I
threw
together
a
little
demo
to
hopefully
solidify
everyone's
understanding
of
how
it
works,
what
it's
doing
and
hopefully
show
some
of
the
value
in
it.
B
What
specific
deployment
tool
to
use!
So
all
that
to
say
I'm
starting
with
an
app
and
it's
pretty
simple:
it's
got
a
service
and
a
deployment
and
just
prints
out
a
little
hello
message
when
somebody
connects
to
it
from
or
connects
to
the
service,
and
then
it
has
some
configurable
values.
So
you
can
configure
what
port
the
service
will
listen
on
and
then
you
can
also
configure
part
of
the
hello
message
that
will
be
displayed
to
users.
B
So,
in
order
to
package
this
up,
I
need
to
first
create,
what's
called
the
package.
Contents
bundle.
So
for
this
we're
using
an
image
package
bundle,
it
will
store
our
application
configuration
and
any
references
to
images
used
by
that
application.
In
this
case
the
kate,
simple,
app
docker
image.
B
So
I'll
start
by
sort
of
creating
that
directory
structure
for
that
file
or
directory
or
bundle
and
then
moving
over
my
manifests
to
that
directory.
B
So
now,
if
we
take
a
look
at
package
contents,
you
can
see,
we've
got
this
config
directory
where
our
config
is
stored,
and
then,
since
this
is
an
image
package
bundle,
we
also
need
some
of
the
image
package
metadata
files
in
the
dot
image
package
directory,
so
I'll
make
that
and
also
populate
them.
And
to
do
this
we
want
to
create.
B
And
you
can
see
here,
we
have
a
record
that
this
bundle
references,
the
kate,
simple,
app
docker
image.
So
now,
whenever
somebody
moves
this
bundle
around
image
package
will
be
smart
enough
to
also
copy
any
docker
images.
It
relies
on
as
well
and
now
that
all
of
that
is
where
it
needs
to
be.
We
can
just
push
this
up
into
our
registry.
B
B
B
And
then,
as
we
get
down
to
the
actual
package
definition
where
it
instructs
cap
controller
like
where
to
fetch
the
configuration
from
so
here
we're
using
that
package
contents
bundle.
We
just
pushed
that
stores.
All
of
our
configuration
we're
telling
cap
controller
that
you
then
need
to
template
it
using
ytt,
which
will
render
all
of
our
manifests
run
it
through
k,
build
to
sort
of
replace
any
image
references
that
may
have
changed
throughout
the
relocation
process
and
then
deploy
it.
Finally,
using
cap.
B
B
B
We
also
need
to
make
sure
that
the
package
repository
is
able
to
reference
all
the
package
content
bundles
that
we
previously
created
so
that
the
fetch
stages
of
the
package
are
able
to
succeed
so
we'll
again
create
this
images
lock
file
inside
of
the
package
repository,
and
if
we
look
at
this
again,
we
see
that
we
now
have
a
reference
to
that
demo.
App
package
contents
bundle
that
we
had
created
at
the
start
of
the
demo
and
then
finally,
we
can
push
this
repository
to
an
oci
registry.
C
So
our
expectation
here
is
when
I
create
this
package
repository.
What
I
should
see
is
that
I
have
packages
available
on
my
cluster,
so
in
order
to
do
that,
I'm
going
to
come
out
to
my
terminal
and
I'm
going
to
really
quickly
run
this
command
here
with
cap,
and
so
what
we
should
expect
after
we
run.
C
So
if
I
go
ahead
and
click
yes
here,
we
get
this
confirmation
message
just
basically
saying
that
the
package
repository
is
being
created
and
if
I
just
create
a
quick
watch
here,
what
we
should
be
able
to
see
is
that
the
package
repository
is
in
this
state
of
reconciliation
and
basically,
what
that
means
is
that
this
package
repository
is
a
request
to
cap
controller,
to
basically
go
ahead
and
take
everything.
That's
in
the
image
package,
bundle
definition
associated
with
it
and
create
those
packages
on
my
cluster.
C
So
if
I
do
a
control
c
here
and
then
I
just
do
a
k
get
packages,
what
we
see
is
that
I
have
this
package
definition
that
eli
just
created,
but
it's
now
actually
living
on
my
cluster
in
such
a
way
that
it's
easy
to
find.
We
can
see
that
the
actual
version
of
it
is
1.0,
and
so
this
we
can
expect
to
be
the
1.0
version
that
eli
just
created
the
next
thing
that
we'd
want
to
do
as
far
as
this
process
of
discovering
packages
is
figure
out.
C
You
know
what
are
some
configurable
aspects
of
this
package.
So
if
I
go
ahead
and
just
take
a
quick
look
at
the
package
definition,
what
I
can
see
is
the
value
schema
here
and
the
properties
that
are
associated
with
it.
So,
from
my
perspective,
as
a
consumer,
I'm
using
this
value
I
can
configure,
and
one
of
the
properties
that
looks
interesting
to
me.
Is
this
hello
message
property,
so
the
description
of
it
says
name
used
in
hello
message
from
app
when
app
is
pinged.
C
C
So
this
is
basically
a
request
that
can
be
made
to
cap
controller
to
specify
what
package
you
want
that's
available
on
the
cluster
and
to
have
it
actually
deployed
out
to
a
particular
name
space
on
your
cluster
and
then
what
version
of
that
package
you'll
also
see
some
commented
out
information
here
and
we'll
discuss
that
a
little
bit
later
in
the
demo.
But
for
now
what
you
can
focus
on
is
the
spec
of
the
package
install
which
defines
a
service
account.
A
C
So
you'll
note
notice
here
that
this
service
account
name
is
needed
for
the
package
install
because
we
are
actually
going
to
create
resources
on
our
cluster
that
are
defined
in
the
package
itself,
which,
if
you'll
remember
back
to
the
beginning
of
our
demo,
was
the
deployment
and
the
service
associated
with
this
package,
so
we're
basically
defining
the
appropriate
level
of
our
back
that
this
package
install
needs
to
have
to
create
things
on
our
cluster.
C
And
if
I
go
out
now,
I
can
see
some
basic
information
about
the
package
install
itself
and,
if
you're
confused
by
package,
I
there
it's
just
basically
a
shorthand
of
saying
package
install
with
cube
control.
So
I
see
that
I
have
a
package
install
created
called
package
demo.
It
corresponds
to
the
correct
package
name
and
the
version
that
we
expect
and
now,
if
I
do
acute
control
get
all
again,
I
have
this
deployment.
I
have
this
pod
created
and
I
also
have
an
associated
service.
C
C
I
get
back
this
confirmation
message
here
that
says
hello,
stranger,
so
we've
been
able
to
through
this
request
of
a
packaging
install
actually
have
this
software
running
on
our
cluster.
That's
defined
by
this
package
definition,
but
one
thing
we
also
mentioned
is
that
this
package
install
is
this
way
to
configure
these
values.
C
C
If
I
now
go
ahead
and
rerun
this
command
to
create
the
package,
install
you'll
see
that
we
have
this
update,
that's
going
to
take
place
for
the
package
install
and
we're
going
to
create
the
secret
I'll
go
ahead
and
create
this
now
and
we'll
just
make
sure
to
see
that
it
finishes
reconciling
and
picks
up
our
update.
C
So
there
it's
gone
through
and
we
can
see
that
everything
should
be
running
successfully
now.
So,
if
I
come
back-
and
I
do
my
port
forward
again,
my
expectation
is
that
I
get
this
hello,
carmel
community
message
back.
So
one
of
the
things
that
we
can
do
here
is
not
only
highlight
a
lot
of
the
aspects
of
you
know
the
configuration
and
how
we
deploy
things
out
to
our
cluster.
We
can
also
make
it
really
simple
to
configure
these
values
in
such
a
way.
C
So
this
concludes
our
demo
from
a
package
author
and
package
consumption
standpoint
and
learning
about
these
package
management
apis
that
cap
controller
introduces
for
anyone
who
is
interested
in
more
information
on
the
work
that
we're
doing
on
cap
controller.
We
have
this
whole
website
here
and
it's
got
tons
of
information
on
cap
controller.