►
From YouTube: Knative tech talk - Serving and Eventing 101
Description
This tech talk gives a brief introduction of Serving and Eventing project in Knative.
Serving is presented by Dan Gerdesmeier from Google.
Eventing is presented by Carlos Santana from IBM.
A
B
B
So
let's
get
started,
this
is
the
first
one.
So
it's
okay
to
start
a
little
bit
late
and
mechanic.
So
welcome
to
the
first
day
native
Tech
Talk.
This
should
be
a
short
and
very
precise
technical
talk,
I'll
be
covering
eventing
and
then
after
me,
there
will
be
another
talk
about
serving
and
being
the
first
one.
We
are
going
to
talk
about
how
the
introduction
so
and
we'll
be
doing
these
regularly.
So
if
you
missed
it
live
you
can
watch
it
on
YouTube.
So
have
some
feedback.
Somebody
commute
echo
okay.
B
So
if
you
want
to
get
to
know
the
canary
project
you
can
go
to
our
website
is
located
on
K
native
deaf
today
I'm
going
to
talk
about
eventing.
If
you
go
to
the
to
the
docs,
you
can
find
an
introduction
on
eventing,
so
there
we
have
built
serving
and
eventing.
If
you
go
I
think
already
have
it
open,
you
can
go
to
eventing
and
then
of
their
say
top
components
and
then
I'll
be
talking
today
about
different
sources
that
we
have.
B
Let's
do
a
quick
slides
before
we
go
down
into
the
to
the
code
so
Kennedy,
preventing
it,
allows
you
or
us
to
build
K
native
eventing
event-driven
applications
I,
try
to
break
it
down
into
four
components
that
you
will
need
to
have
for
an
event
event
application.
So
you
have
your
emitting
component,
which
could
be
things
like
databases,
storage,
web
hooks
strings
things
that
are
emitting
events
in
Canada.
We
use
the
standard
of
our
cloud
cloud
events
from
car
events
to
Rio.
We
just
aspect
to
as
the
event
mechanism.
B
For
those
events,
we
have
K
native
sources
and
we'll
go
deeper
a
little
bit
onto
that.
It
some
examples.
Basically
does
the
components
are
the
discipline
of
listening
to
events,
and
this
could
be
receiving
events
or
pulling
for
events
and
in
those
events
are
composed
with
different
resources
like
KTM
channels
and
Canada
subscriptions
today.
The
latest
version
of
K
native
is
event
in
is
0.4
and
we
have
channels
and
subscriptions.
B
The
next
version,
hopefully,
will
be
next
week
and
if
you
have
something
some
new
resources
that
we
can
talk
at
another
Tech
Talk,
which
a
broker
and
triggers
and
all
that
is
to
compose
applications
with
those
events
coming
in
and
to
pipes
and
composing
applications
that,
at
the
end
of
the
day,
they're
targeting
a
computer
resource.
In
this
case,
we
are
referring
to
Canada
free
service
but
it'll
also
any
type
of
compute
resource.
For
example,
we
support
a
DNS
entry.
B
Think
it
was
me
that
had
to
echo
sorry
about
that
where
I
was
serving
different
applications.
The
first
example
is
the
very
simple
example
to
get
started
with.
Aventine
is
source
to
service.
Basically,
you
create
a
llamó
file
which
defines
the
kubernetes
resource.
It's
the
the
kind
will
be
the
different
type
of
resources
in
this
case
I'm,
showing
the
the
most
simple
one
that
we
have
in
the
indicate
repo,
which
is
the
a
cron
job
or
interval.
B
This
is
an
example
of
running
a
scheduled
job
that
it
would
have
meet
in
advance
every
minute,
but
you
can
change
it
and
this
would
sink
into
a
service.
In
this
case,
I
can
sync
to
a
DNS
entry.
I
can
sink
into
a
service,
so
I
have
here
an
event
process.
We
also
have
an
event
display
and
again
people
say
it's
very
convenient
for
for
debugging,
so
this
is
going
directly
from
source
to
service.
As
you
can
see,
I
was
not
using
the
compositions
things
like
research
channels
and
subscriptions.
If
you
want
to
get
started.
B
B
This
is
this
is
an
example:
I
don't
have
to
create
a
channel
just
going
directly
from
source
to
service.
So,
let's
see
if
I
can
deploy
this
I'm
using
a
kubernetes
terminal.
Ui
is
a
nice
UI
that
give
me
some
color.
So
if
I
do
cube,
Cpl
I
get
sources,
I
can
verify
that
I
don't
have
any
any
sources
in
this
case
is
Kenny
Kay
native
sources.
B
So
this
one
basically,
is
the
schedule
and
the
data
I'm
going
to
be
sending
to
that
to
that
service,
which
is
hello
from
canada,
source
to
service
and
the
sink,
which
is
my
service.
My
event
process
and
I
already
have
some
some
resources-
some
creative
services,
it's
already
deployed
so
in
UK
get
service
and
I
have
to
there
in
the
repo
I
have
one.
That
is
you
guys.
You
can
see
that,
but
I
have
one
that
is
like
a
dump
of
the
message
event
display.
This
is
one
in
go.
B
B
And
I
can
see
it
there
if
I
want
to
inspect
it
like
with
the
oh
yeah,
MO
and
I
can
also
do
that
and
see
that
is
that
is
deployed,
and
then,
after
a
minute
it
will
start
emitting
events
into
my
full
share
of
my
service.
So
it's
deployed
ready,
sync
provided,
and
it's
very
scheduled
so
now
I
am
using
a
tool
which
I
really
like
for
communities
is
stirred,
so
I
hung
around
around
stern
I
can
finally
start
mixing.
B
B
So,
as
you
can
see
this,
you
can
get
the
headers
and
put
in
the
headers
and
the
body,
so
that's
kind
of
like
getting
started
with
the
with
the
one
that
I
show
the
most
simple
one
source
to
service,
so
basically
you're
going
from
a
source
to
a
sink,
in
this
case,
a
service.
And
if
you
look
at
the
docks,
I
think
I
was
showing
previously
there's
the
commentation
here.
That
shows
different
type
of
event
sources.
B
We
have
some
for
AWS
heartbeat,
we
have
one
for
we
have
DCP
pops
up
and
and
if
you
are
creating
one,
go
ahead
and
submit
a
pull
request
to
update
this
documentation,
basically
is
in
this
skinny
that
ducks
people
and
you
can
click
on,
submit
a
PR
and
update
that
table.
If
I
can
find
it
here,
I
think
it's
this
table
yeah,
so
the
next.
B
The
next
example
before
we
run
it
at
a
time
and
if
my
other
person
present
is
source
to
channel
and
then
that
channel
goes,
you
can
hook
it
up
to
a
service
and
to
a
subscription
so
we'll
be
using
the
same
example
KF
source.
It
could
be
a
database
change
if
I'll
obvious
file
uploaded
to
some
cloud
object.
Storage.
It
goes
to
a
channel
and
then
somebody
will
subscribe
to
events
coming
into
that
channel
through
a
resource
call
subscription.
So
in
here
have
the
channel
up
D,
creating
a
channel
there's
different
type
of
channel
parishioners.
B
So
in
this
case
is
in
memory,
but
we
have
also
have
Kafka
and
we
have
other
types
of
channels
which
are
in
the
documentation.
So
in
this
case,
for
for
demo
purposes,
you
usually
will
use
take
memory
one.
So
you
would
create
in
this
channel
that
the
events
were
coming
in
same
thing
as
before,
I'll
be
creating
a
I
cron
job
source.
B
But
in
this
case
the
sink
is
not
a
service,
it's
a
channel,
so
it
will
go
to
this
channel
name
cj1
and
then
I'll
create
a
subscription
that
subscribes
the
channel
anything
that
comes
into
this
channel
to
this
service
through
a
subscriber,
so
I
have
the
representation
here.
If
you
want
to,
let's
go
it
and
deploy
this,
let
me
on
deploy
the
other
one.
So
I
can
do.
Okay,
really,
since
sometimes
useful,
for
people
to
see
some
ties
are
getting
started
and
doesn't
know
the
mechanics
on
this
type
of
thing.
B
So
how
do
you
get
it
get
horses?
They
should
be
gone.
Forget
them
I'll,
be
doing
the
chrome
eventing
crown
channel.
So,
as
you
can
see,
it
has
the
channel
in
one
JAMA
file.
You
can
have
different
resources,
there's
something
that
I
learned.
I
didn't
know
before,
so
you
can
have
a
camera
with
different
camel
pieces,
so
I'm
defining
the
channel
in
that
demo
file
the
current
job
and
this
description
we
can
see
one
of
those
I
think
I
showed
in
this
the
slide.
So
it's
not
going
to
shown
in
and
shown
it
again.
B
So
that's
just
the
after
deployment.
So
let's
deploy
this
scale.
Okay,
so
you
can
see
this
a
bit.
Bigger,
okay,
apply,
minus
F,
a
venting
to
your
channel
and
in
this
case,
is
I
deploy
fittings
the
channel
the
cron
job
source.
So
the
source
could
be
like
I
said
before,
something
that
is
going
to
a
database
and
checking
for
changes.
Sorter
out
the
storage
receiving
web
hooks,
for
example,
github
or
some
pops
up,
that
is
sending
events
or
maybe
Kafka
recently
it
in
this
week
we
merged
a
calf
calves
in
source.
B
B
So
I
think
it
should
be
deployed
conditions,
yeah,
Chris,
deploy.
It
should
be
meeting
a
message
cloud
event
every
one
minute:
let's
go
to
stern
to
see
and
since
I'm
I
can
do
subscription.
Let
me
double
check
you
pump
in
event
display,
for
the
other
one
I'm
using
I'm.
Doing
okay
subscriptions
type
yeah.
This
guy
is
the
description
and
I
want
to
see
it.
Show
me
the
raw
will
show
me
the
conditions.
B
So
this
is
the
the
wrong
information
of
that
I
guess:
I
do
all
the
ammo,
so
it's
sending
into
a
burn
process.
So
it's
the
same,
the
same
service,
so
you
should
come
in.
It
should
be
coming
in
pretty
clear
or
just
to
offer
and
run
and
again
I'll
be
getting
those
messages
every
every
minute,
but
this
time
running
through
a
channel.
So
if
I
have
it's
a
second
or
third
service,
a
function
that
I
want
to
tap
and
also
receive
those
events,
I
can
create
another
description.
B
Another
subscription
for
each
of
those
services,
so
I
could
have
multiple
subscriptions
in
there
and
lastly,
I
want
to
show
another
example
which
is
source
to
channel
a
channel
to
a
service
like
we
have
before.
But
in
this
case
the
service
is
replying
back
with
a
with
a
cloud
event
and
it
could
be
a
mutating
event
or
just
creating
a
nuclear
event
from
scratch.
For
example,
it
could
be
that
an
example
of
a
use
case
or
an
application.
B
It
could
be
like
if
you
have
an
application
that
is
dealing
with
a
a
dealership
right
cars
and
as
new
cars
come
I,
get
inserted
into
the
database
through
the
admin
upload
a
picture
and
a
description
of
the
of
the
car
that
would
emit
an
event
from
the
database.
It
will
go
to
a
channel
where
it
gets
processed
and
then
the
channel
can
the
service
can
reply
back
with
notifications
and
then
those
notifications
queue
into
a
channel
for
different
types
of
notifications.
B
So
you
want
one
subscription
could
be
subscribing
to
send
to
that
same
message
to
send
an
email.
Another
one
could
be
sending
a
slack
message.
Another
one
could
be
sending
a
push
notification
or
a
Twitter
DM,
so
that
would
be
an
example
of
that
and
and
uyama
for
that
looks
like
this
basically
you're
composing,
that
in
Djamel
hopefully
do
be
high
level
abstraction
tools
that
will
have
your
association
and
editing
tools
from
that.
But
in
this
case
I'm
creating
a
show.
B
This
is
a
little
bit
larger,
so
I'm
creating
a
channel
a
channel
B
as
before
this
case
I
instead
of
a
database
I'm
just
using
the
example,
the
cron
job
but
I
have
a
subscription.
That
is
one
subscription
to
process
the
event
that
knows
about
cars
in
the
database,
the
Chinese
Change
event
and
then
a
meeting
looking
for
who
are
the
people
that
wants
to
get
messages
or
notify
what
a
new
car
or
gets
inserted
with
a
certain
criteria.
B
And
then
that
would
produce
a
notification
to
channel
B
and
then
you
we
could
have
a
so.
It
would
reply
back
with
to
the
channel
B
and
then
there
could
be
another
subscription
which
channel
be
listening
for
for
car
events
about
notifications
and
the
only
job
of
that
service
or
for
us
is
to
send
an
email.
Basically,
so
there's
a
separation
of
concerns,
one
function
to
process
the
message
and
another
question
deals
with
sending
emails
out.
That's
just
just
an
example.
I
said
as
a
real
use
case
as
you
can
relate
to
that.
B
Creating
an
event-driven
application.
So
there's
no
service
to
service
HTTP
calls
you
go
through
recomposition
type
of
Q,
for
example:
Kafka
is
one
one
popular
one,
I
think
that's
all
I
have
I,
don't
know
if
there's
questions
or
we
just
move
to
the
next
one
I
want
it
to
be
very
quickly
because
just
go
over
one
one.
One
small
topic
of
these
multiple
tech
talks,
I'll
be
doing.
B
B
I
think,
there's
questions
in
the
slacks
and
to
be
recorded,
yeah,
so
being
recorded.
We
struck
here
the
ripple.
Somebody
already
did.
What
is
the
name
of
the
plug-in
that
you're
using
to
interact
with
keeps
detail
all
just
cuy?
It's
a
it's.
A
project
that
is
going
to
be
added
to
the
keep
CTL
6c
alive
from
kubernetes
is
called
ke.
Why
somebody
posted
is
the
replace
under
IBM,
but
it's
going
to
be
more
hunter.
B
The
kubernetes
sick,
like
augment
the
the
CLI
with
and
customize,
and
all
these
new
fittings
for
people
that
they
want
to
have
a
like
a
terminal
plus
plus
like
UI
interaction,
but
it's
the
same
thing
as
skip
CTL
I.
Think
that
that's
it
any
other
questions
from
the
YouTube
channel
I
could
check
digital
channels
or
SAP
that
sad
faces
in
here.
There's
no
Sun
on
YouTube
Drive
I
only
see
the
same
slide.
Nothing
I
also
said.
We
need
to
fix
that
I.
Think
I'm
done.
Only
somebody
wants
to
see
something
else.
A
So
I'm
going
to
go
ahead
and
find
about
a
native
serving
I
have
API
here,
but
really
kind
of
covers
a
lot
of
the
serving
surface.
It
is
a
101
I've
seen
a
lot
of
familiar
names
on
the
on
the
hangout,
so
it
might
be
some
preview
for
you,
but
hopefully
you'll
take
away
something.
If
you
don't
know
much
about
serving
today.
My
name.
C
A
Curtis
Mayer
I
am
a
software
engineer
at
Google,
working
on
K
native
and
I.
Don't
have
a
demo
like
Carlos,
so
maybe
next
time,
I'll
prepare
something
every
the
most.
What
I
have
is
just
slides,
so
I
wanted
to
start
a
little
bit
talking
about
problem
statement
and
problem
stated
kind
of
covers
a
lot
of
K
native,
but
you
know
a
lot
of
this
focused
on
serving
here,
but
you
know
really.
Today
you
have
a
lot
of
complexity
in
developing
an
application
going
from
developing
to
delivering
that
application
to
an
end
user.
A
You
got
a
select
interpreter
service.
You
got
a
cell
phone
os.
You
gotta
figure
out
how
can
Tanner
eyes
it
you're
all
you're
gonna
do
networking
or
never
overlays
that
you
want
to
do
making
sure
it's
secure,
orchestrate
containers
make
sure
you
have
good
utilization,
monitor
them
and
then
you
know,
collect
our
gate
logs
and
make
them
easy
to
display
and
you
have
to
control
deployment
of
you
know.
A
How
are
you
rolling
out
your
application
when
you're
updating
your
software
and
how
are
you
like
splitting
that
traffic
across
requests-
and
you
know
what
this
ends
up
being?
Is
you
end
up
having
to
learn
a
lot
of
tools
here?
You
know,
whichever
solution
you
choose
in
any
of
these
green
boxes,
you're
going
to
have
to
learn,
you
know
what
customizations
are
possible
in
the
OS.
What
can
timer
you
to
choose?
A
You
can
build
either
with
can
ADA
or
you
can
bring
your
own
build
infrastructure,
and
then
you
can
deploy
a
kanay
t'v
service
that
can
aid
of
service
animals,
the
monitoring
of
logging
and
everything
else
for
you
and
the
goal
here
is
not
to
choose
everything
for
you
like
this
previous
slide
had.
But
the
goal
is
really
to
provide
a
set
of
pluggable
options
behind
a
common
abstraction,
so
as
a
developer
I'm
not
dealing
with
an
abstraction
of
sto
and
kubernetes
and
Prometheus,
and
everything
else
that
goes
along
I'm.
A
Just
dealing
with
a
single
of
abstraction
for
my
application
and
the
rest
of
the
details
are
behind
so
to
do
this,
can
you
start
with
a
set
of
design
goals
and
the
design
goals
are
listed
here?
You
know
we.
Kubernetes
is
a
very
popular
platform
nowadays
for
running
applications,
and
from
that
standpoint
you
know
most
developers
are
familiar
with
it
or
are
starting
to
become
familiar
with
it.
A
So
as
far
as
choosing
a
base,
the
declarative
API
has
some
really
nice
properties
and
so
to
meet
developers
where
they
are
K
native
it
can
of
serving,
has
sort
of
this
declarative
API.
We
have
the
second
thing
it's
loosely
coupled
to
the
top
and
pluggable
at
the
bottom.
You
know
you
just
saw
Carlos
present
on
eventing,
and
you
saw
that
you
know
I
think
and
talk
to
serving,
but
you
don't
necessarily
need
to
use
both.
A
You
can
build
using
K
native
build
or
you
can
just
use
K
native
serving,
and
so
you
have
these
three
projects
that
are
loosely
coupled.
If
you
use
all
of
them
like
the
experience
is
integrated,
but
you
don't
have
to
use
all
of
them
and
pluggable
at
the
bottom
is
what
I
was
kind
of
just
talking
about
earlier.
You
know
we
provide
these
solutions
like
Prometheus,
like
fluent
D,
like
you
know,
stalker,
underneath
the
abstraction
okay
native,
like
you,
can
plug
in
different
implementations
to
O's
interface.
So
the
u.s.
A
application
developer
aren't
dealing
with
the
single
interface
same
ap,
hiding
in
up
with
obligations
and
functions.
Like
we've
seen,
you
know
the
functions
as
a
service
offerings
and
the
platform
is
operating.
Someone
diverge
as
a
user
experience,
and
so
you
have
to
really
decide
at
beginning.
Am
I
going
to
develop
this
as
an
application,
or
am
I
going
to
built
this
as
a
function,
and
is
it
it's
an
entire
paradigm
shift?
A
And
you
know
we
really
didn't
think
that
you
should
have
to
make
that
decision
up
front
and
that
there
is
nothing
really
inherent
to
the
API
service.
They
should
make
you
choose
between
an
application
or
a
function,
simple
enough
to
get
started
in
scales
to
handle
complex
use
cases
I'll
get
into
this
in
a
little
bit,
but
I
think
this
is
probably
one
of
the
hardest
goals
that
we
have.
A
A
A
The
declarative,
syntax
is
really
great
from
a
CI
and
CD
tooling
perspective,
as
well
as
from
a
git
ops
perspective.
So
you
know
it
really
helps
people
develop
into
a
production
practice
and
then
reused
for
possible.
You
know
we're
not
looking
to
reinvent
the
wheel,
we're
really
looking
to
provide
a
common
API,
and
so
you
know
if
there
are
ways
where
we
can
avoid
having
to
re-implement
and
that's
honestly,
better,
so
the
Kinyon
of
serving
challenge.
This
is
sort
of
talking
about
with
simple
enough
to
get
started
but
scaled
to
handle
complex
use
cases.
A
You
know
we're
looking
to
provide
source
deployment,
container
deployment
and
function
deployment.
You
know
where
functions
wrapped
up
in
a
container
as
well
as
being
able
to
offer
diverse
set
of
roll-off
strategies
to
meet
whatever
business
needs.
You
so
maybe
you're
at
the
point
where
you're
testing
it
out
and
you
always
want
to
have
the
latest
version
running,
maybe
you're,
trying
to
release
slowly
over
multiple
days.
A
Maybe
you're
trying
to
you
know,
have
separate
staging
endpoints,
so
you're
running
Canaries
or
integration
tests
against
a
separate,
endpoint
or
even
multiple
endpoints,
maybe
you're
running
a
long
term
experiment
over
multiple
days,
and
you
want
to
see
metrics
from
both
experiments
or
maybe
you're,
trying
to
do
a
coordinated
rollout
of
multiple
micro
services.
You
have
a
schema
change
in
a
micro
service
in
the
backend
and
you
want
to
you
know,
be
able
to
update
this
in
a
safe
way.
A
So
that's
sort
of
the
problem
they're
trying
to
solve
and
that's
what,
how
we're
trying
to
solve
it.
The
next
thing
is
really
taking
a
look
at
where
we
are
today
and
so
I'm,
going
to
dive
first
into
the
components
which
is
going
to
be
the
things
that
run
in
your
kubernetes
cluster
to
run
connait
of
surveying
and
then
we'll
go
into
the
resource
types,
which
are
the
resources
that
you
interact
with
the
used
cañedo
of
survey
and
then
we'll
talk
about
the
dependencies
that
we
have
on
other
pieces
of
software.
So
first
serving
components.
A
We
have
five
of
them
that
we
install
into
your
cluster
I,
have
them
color-coded
here,
the
top
two
are
yellow
and
the
bottom
three
are
green
for
a
reason,
which
is
that
the
controller
and
the
web
hook
are
things
that
are
in
the
API
path.
So
there,
when
you
are
making
an
API
call.
This
is
where
all
that
logic
lives
and
the
bottom
three
are
really
in
the
request
path,
and
so
you
want
to
think
about
it
as
a
control.
Plane
is
yellow
and
the
data
plan
is
green.
A
A
A
Server
it
gets
hit
by
the
handler.
Does
the
authentication
authorization
your
service
account
that
you
have
in
your
cluster
and
then
it
gets
passed
criminal
past
this
off
to
the
web
book
that
we
have
registered,
which
is
a
mutating
web
code.
So
this
allows
us
to
set
defaults
and
do
validation,
and
then
it
gets
passed
to
us
super
validation
to
make
sure
that
everything
looks
good
after
we
set
the
defaults,
it
goes
to
any
validating
admission
of
books
that
you
have
on
your
cluster.
A
Kubernetes
has
a
shared
informer
model,
there's
a
bunch
of
blog
post
about
the
and
formal
model
that
you
can
read
from,
but
the
short
story
of
it
is
the
shared
informer
watches
for
changes
on
the
at
CD
database
and
from
it
it
populates
a
queue
of
work,
so
things
have
changed
and
our
controllers
look
at
everything.
That's
changed
for
objects
that
it
cares
about,
and
it
looks
to
see
what
is
essentially.
A
Looking
at
the
data
play
inside
for
requests
to
Kenya,
one
thing
we
offer
today,
which
is
a
scale
to
zero
functionality,
which
I
think
is
fairly
unique
to
our
offering
on
top
of
kubernetes.
So
to
do
this,
we
leverage
sto
and
we
have
this
concept
of
the
Canon
of
ingress
gateway.
So
your
request
comes
in
to
the
ingress
gateway,
which
is
this
easy
way
to
think
about.
It
is
a
low
bouncer
and
that
is
going
to
route
the
request
to
one
of
two
places.
This
place
the
changes
depending
on.
A
If
you
your
container,
is
running
or
if
it's
scaled
to
zero.
If
it's
scale
to
zero,
it
will
go
through
this
bottom
path
here
and
it
will
go
down
the
arrow,
its
activator
and
the
activator
will
look
at
the
information
on
the
request
and
trying
to
figure
out
what
container
needs
to
be
launched
and
where
should
I
send
this,
so
it
will
go
ahead
and
launch
that
pod,
which
is
the
circle
surrounding
the
queue
poxy
cube
proxy
in
the
user
container
and
then
forward
the
request
accordingly
to
be
handled.
A
If
the
container
is
already
scaled
up,
the
ingress
gateway
will
instead
route
it
to
one
of
the
scale-up
pods
and
will
go
directly
to
the
cube
proxy
and
to
the
user
container.
The
cube
proxy
has
a
few
purposes,
but
one
of
the
main
purposes
is
to
write
metrics
to
the
autoscaler
and
so
that
the
autoscaler
can
keep
the
appropriate
number
of
pods
around.
A
So
that's
really
it
for
the
components
we
are
constantly
iterating,
and
so
you
know
we
expect
them
to
change
slightly
over
time.
If
you
have
any
detailed
questions
about
them,
you
can
hop
on
slack
and
hop
into
a
channel
hashtag
API,
it's
great.
If
you
have
questions
about
the
control,
plane
and
hashtag.
Networking
is
great.
If
you
have
questions
about
the
data
player
stack
sure,
so
people
would
be
happy
to
answer
more
details.
A
So
the
next
thing
to
look
at
is
like
what
our
users
is
actually
interacting
with
through
our
developers
actually
interacting
with
when
they're
doing
connait
observing
and
they
are
interacting.
With
these
four
resources,
we
have
a
service,
a
route
configuration
and
a
revision
and
there's
a
diagram
of
the
top
corner
here
that
shows
the
relationship
two
of
them.
These
are
created
as
custom,
resource
definitions
and
kubernetes,
which
is
an
extension
for
the
kubernetes
offers
to
allow
us
to
create
new
objects
within
its
API
space.
A
The
configuration
object
you
can
think
of
as
a
sort
of
a
ahead
over
time,
and
so,
as
the
configuration
object
changes,
it
will
stamp
out
near
immutable
revision
objects,
and
what
this
gives
you
is
that
you
can
roll
back
to
previous
points
of
time,
and
you
can
serve
multiple
revisions
at
once,
so
you
don't
have
to
roll
over
a
hundred
percent.
You
can
easily
roll
back
to
a
previous
revision
and
you
can
target
multiple
revisions
at
once,
which
represent
different
states
of
time
and
can
look
a
little
closer
into
what
these
resources
look
like.
A
A
I
was
talking
about
on
a
previous
slide
and
injects
containers
to
do
networking,
logging
and
monitoring
and
again
these
containers
are
pluggable
based
on
your
install
of
que
natives,
so
you
can
configure
it
as
appropriate,
and
you
know
it
really
lives
in
three
states
which
is
active,
reserve
and
retired,
and
so
these
states
allow
it
to
to
essentially
you
either
a
serving
traffic
or
your
your
routable,
but
your
your
scale
to
0
or
you've.
You
know
got
rid
of
the
revision
on
the
right.
A
So
a
configuration
is
is,
unlike
the
revision,
is
a
mutable
object.
It
encapsulates
you
know
all
your
information
I
don't
have
build
here
for
the
sake
of
space,
but
it
encapsulates
your
build
information
and
all
your
container
information.
So
in
this
spec
you
provide
a
revision
template
and
that
revision
template
is
what's
going
to
get
stamped
out
in
your
revision,
so
you
can
give
it
all
the
container.
You
want
to
run
any
secrets
or
config
maps
that
you
need
container
currency,
which
is
how
many
requests
this
container
can
process
at
once.
How
long?
A
A
There
is
a
config
map
that
we
provide
for
Canada
that
you
can
configure
at
the
cluster
level
that
allows
you
to
say
you
know
how
many
revisions
you
want
to
round
after
how
many
days
of
being
unreferenced
you
should
they
be
kept
around
for
it
I
think
one
more
setting,
so
it
gives
you
some
granular
control
over
how
long
you
want
to
keep
revisions.
The
goal
is
to
keep
enough
revisions
that
you
can
safely
rollback,
but
to
not
kind
of
make
your
sed
database
bloat.
A
C
A
And
you
can
either
provide
the
configuration
name
which
will
attract
the
latest
created
revision
or
you
can
provide
a
revision
name
which
will
target
a
specific
revision.
You
can
give
it
a
name
which
I'll
the
name
allows
it
to
be
accessed
independently
as
a
as
a
sub
domain
or
a
sub
route,
and
then
the
percent
is
when
you
hit
the
the
base
domain,
how
much
traffic
is
going
to
go
to
each?
So
you
know
if
I
were
to
hit
this
route
at
its
domain
name.
A
So
kind
of
putting
this
all
together,
how
this
boils
up
to
service
is
a
service,
is
really
trying
to
provide
an
abstraction
that
makes
it
easier
for
users
to
create
routes,
figuration
or
revisions.
This
is
our
service,
as
it
looks
like
today
and
b1
alpha
1,
we
are,
you,
know,
constantly
iterating
here
to
try
to
strike
the
right
balance
of
keeping
it
simple
of,
while
also
providing
enough
functionality.
So
you
know,
might
evolve
here
and
future
releases,
but
taking
a
look
at
it
is
today
cannon
of
service.
A
We
have
a
service
object
which
today
you
provide
run
latest
and
if
you
provide
run
latest,
this
will
create
a
route
for
you,
which
takes
the
configuration
name,
which
is
from
the
service
name
and
just
routes
all
the
traffic
to
whatever
the
latest
created
revision
is
and
then
my
configuration
you
provide
that
revision
template
the
revision.
Template
is
used
to
step
out
a
configuration
that
configuration
then
stamps
out
a
revision.
A
What
happens
is
how
this
gets
processed
is
we
have
the
controller
and
when
the
controller
sees
that
the
service
has
changed,
it
will
go
ahead
and
stamp
out
the
route,
configuration
and
revision,
and
then
once
the
revision
has
been
stamped
out,
that
will
then
notify
the
controller
that
it
should
update
the
status
of
the
configuration
status
of
the
service
and
this
all
from
the
sub
out
objects.
So
to
go
back
and
forth
cuz
I,
don't
think
I'm
doing
a
good
job
of
explaining
it
right
now.
A
Today
we
have
three
modes
of
running
service.
That
last
example
showed
run
latest,
which
is
just
run
all
your
traffic
against,
whatever
the
later
created
configuration
is,
and
so
that
will
just
get
stamped
out
pretty
straightforward.
The
second
mode
we
have
is
release,
and
this
allows
you
to
update
your
application
over
time
without
going
just
straight
to
the
next
as
well.
Does
that
allows
you
to
pick
a
specific
revision
that
you
want
to
target?
A
So
here
you
give
it
a
list
of
one
or
two
revisions,
as
well
as
a
rollout
percent,
and
this
real
one
percent
is
how
much
traffic
do
I
want
to
give
to
the
second
revision
in
this
list,
and
so
you
can
essentially
start
with
the
first
revision
and
then
over
time
you
can
roll
up.
You
can
add
the
second
one
and
slowly
rule
out
the
percent
traffic
to
allow
you
to
do
a
multi-day,
rollout
or
multi-hour
rollout
or
whatever.
Your
your
cadence
is
release
mode,
also
provides
some
nice
handy
functionality
where
you
can.
A
You
have
these
sub
routes
that
are
created
for
you,
and
so
you
can
access.
Whatever
revision
is
in
the
first
index
at
subdomain
of
current,
you
can
access
the
1r
in
the
second
position.
With
the
subdomain
of
candidate,
you
can
access
whatever
the
latest
created.
Revision
is
with
a
with
latest,
and
so
it
kind
of
provides
a
nice
as
a
stepping
stone
here,
but
I.
Imagine
that
a
lot
of
people
will
kind
of
fall
into
this
bucket.
A
But
you
know
it's
a
it's
a
balance
between
giving
you
the
full
functionality
of
route
and
configuration,
and
you
just
always
running
the
latest,
like
the
run
latest
service
mode.
Does
the
last
service
mode
is
a
it's
called
a
manual
mode?
It
essentially
is
for
when
you
want
something
with
more
than
a
two
way:
traffic
split
or
you
want
some
customs
of
route
names,
and
this
essentially
disables
the
service
for
doing
any
sort
of
reconciliation.
A
So
then
you're
free
to
manipulate
the
configuration
and
route
objects
directly
and
so
I'm
going
to
I
see
some
new
questions
in
chat.
So
I
pause
here
for
a
second
answer.
Those
is
there
a
way
to
order
revisions
chronologically,
so
revisions
are
stamped
out
with
they're,
given
a
generation
name,
and
so
these
generation
names
these
generation
fields
are
numerically
increasing.
They
you
know
because
of
race
conditions
and
optimistic
and
currency.
A
They
may
not
be
chronological
if
you're
sending
it
from
multiple
clients,
but
in
general
you
know,
as
the
generation
goes
up,
that
will
be
considered
a
newer
revision,
and
that
is
what
we
are
when
we
say
run
latest.
It
is
going
to
be
the
latest
generation
that
was
created
and
how
can
we
manage
multi
DC
service
technical
declaration,
I.
A
You
know
I
think
that
we,
we
don't
have
a
lot
of
experience
today,
doing
multi
cluster
deployments,
so
I
don't
have
any
good
advice
on
that
today
on
how
to
manage
it,
but
it
is
something
that
we're
keeping
in
mind
and
developing.
As
far
as
having
a
cluster
of
span,
multiple
data,
centers
I,
don't
think
you'll
necessarily
have
any
problems,
just
using
whatever
doing
whatever
you
do
today.
A
So
here's
an
example
of
some
rap
flexibility
that
you
might
want
to
do
for
manual
modes.
So
let's
say
I
have
a
domain.
Example.Com
is
my
route
and
that
route
I
want
to
point
to
for
different
revisions.
I
want
to
point
two
percent
of
traffic
to
whatever
the
latest
is
created
to
kind
of
get
an
idea.
If
that
latest
one
is
good.
I
want
to
point,
then
49
percent
of
traffic
to
revision,
749
percent
of
traffic
to
revision.
A
Six
and
I
want
revision,
five
to
still
be
accessible,
but
not
on
the
base
domain,
so
I
can
access
it
at
old
example
comm.
But
if
someone
hits
just
example.com
traffic
won't
be
served,
and
so
this
is
something
that
you
could
set
up
through
route,
but
it
doesn't
necessarily
exist
the
functionality
of
run
latest
or
release
load
today,
and
so
for
that
you
can
use
the
manual
mode
to
then
directly
access
the
route
object
and
set
this
up
yourself.
A
Last
word
on
dependencies,
so
we
really
said
on
top
how
about
kubernetes,
and
so
it's
a
hard
dependency
for
us
and
today,
I
would
say:
sto
is
largely
a
hard
dependency.
We
need
it,
for
it
provides
the
ingress
gateway
in
the
match.
We
do
need
an
ingress
gateway
for
tentative
survey.
We
do
have
some
other
options
that
are
in
progress
from
other
vendors,
so
you
can
swap
out
sto
if
you
prefer
to
use
something
else.
A
We
have
some
sort
of
soft
dependencies
on
some
monitoring
stacks
that
aren't
listed
here.
But
again
those
are
pluggable
at
the
bottom,
so
you
can
choose
to
not
run
them
or
you
could
choose
to
run
a
different
monitoring
stack
and
that's
all
I
had
for
today,
I'm
happy
to
answer
any
questions
that
you
have
and
if
you
don't
want
to
ask
them
here,
just
hop
on
to
slack
half
day
general
or
API
or
networking
are
all
good
places
to
ask
questions.
I.
D
A
So
today
we
have
essentially
on
the
configuration
object-
it's
not
pictured
here
but
under
the
spec,
and
you
can
view
the
the
full
spec
canada's
serving
repo
under
Doc's
spec
spec
md.
But
there
is
essentially
there's
some
examples
as
well
in
the
can
aid
of
documentation.
But
you
can
provide
build
input
here,
underneath
the
spec,
and
so
you
can
use
k
native
build
so
that
every
time
you
produce
a
bill
create
a
new
revision
from
that
build.
Then
you
can
use
the
service
functionalities
to
control.
How
you
want
to
roll
out
that
new
revision.