►
From YouTube: Knative Demo: Transforming CloudEvents with Bumblebee
Description
On February 24, 2021 the Knative community hosted a meetup featuring a demo, "Transforming CloudEvents with Bumblebee" presented by Sebastien Goasguen, Co-founder of TriggerMesh, who introduced Bumblebee which allows people to define cloudevents transformation declaratively. Combined with knative primitives it helps build event flows that integrate separate services.
A
Okay,
so
sebastian
co-founder
of
trigger
mesh
so
bumblebee
the
transformer
all
right.
So
that's
how
we
called
the
the
transformation
engine.
The
author
actually
of
bumblebee
is
a
developer
in
our
in
our
team.
Who's
been
with
trigonometry
since
the
beginning
he's
contributed
to
k
native
timor
is
out
in
kyrgyzstan,
he's
the
main
author,
but
because
of
you
know
time
zone
differences.
He
cannot
present
so
I'll
I'll
present
bumblebee
bumblebee
is
open
source.
You
can
get
it
trigger,
slash
bumblebee.
A
Potentially
we
could
give
it
to
the
sandbox
written
in.
Go
you
deploy
it
with
ko.
It's
pretty
simple,
simple
use
case:
again,
you
have
a
source
cloud
event.
Type
fool
goes
to
a
broker.
You
wanna
transform
that
cloud
event.
So
what
you
do
is
that
you
end
up
with
two
triggers:
there
is
a
trigger
that
gets
the
type
foo
you
send
it
to
a
transformation
which
is
an
addressable
declarative.
Api
defines
how
you're
going
to
modify
the
the
attributes
and
the
payload
gets
back
to
the
broker.
A
Second
trigger
uses
the
new
type
to
actually
send
to
the
the
end
target
things
that
we
faced.
I
mean
I'm
sure.
Maybe
some
of
you
faced
it
quite
a
lot.
Is
that
if
you,
if
you're,
not
careful
with
your
types,
you
know
you
can
get
tons
of
event
loops.
So
you
know
definitely
you
need
to
be
extremely
careful.
A
The
object
looks
like
this
kind
transformation,
and
we
have
you
know
a
first
in
the
spec.
We
have
a
first
section
which
is
context,
and
that
has
to
deal
with
the
cloud
event.
You
know
I
want
to
say
attribute
so
id
source
type
things
like
this.
A
You
can
actually
store
the
you
know
the
context
of
an
incoming
cloud
event
in
variables,
but
you
can
also
add
right
or
you
know,
modify
so
if
you
want
to
modify
a
cloud
event
type
you
you
do
context
operation,
add
and
then
the
key
will
be
type
and
doing
this
you
switch
the
the
type
of
the
cloud
event
on
the
fly.
A
A
You
know
quite
quite
useful,
so
demo
demo
so
demo
a
little
bit
of
advertising
for
the
google
cloud
cloud.
Shell.
Can
you
see
this?
Yes?
Okay?
So
it's
it's
a
gke
cluster.
I
installed
kennedy
from
scratch.
You
know
latest
release
and
then
I
deployed
I
deployed
bumblebee.
A
With
ko,
so
if
you
look
at
the
tree
of
bumblebee,
you
know
it's
pretty
straightforward
and
when
you
deploy
it
with
ko,
then
you
end
up
with
you
know:
basic
transform,
controller
running
and
transformation,
namespace
right
and
you're
you're
good
to
go.
So
what
I
did
is
I
I
launched
sockeye
the
new
version.
A
And
I
lost
network.
No,
can
you
still
hear
me.
C
D
F
You
can
try
switching
to
nip.io.
I've
heard
that
maybe
that's
slightly
more
reliable,
but
it
seems
like
these
things
are.
Apparently
you
know
you
get
what
you
pay
for
slightly
less.
A
Yeah
yeah,
okay,
so
fine,
let
me
show
you
the
so
we're
gonna
go
in
the
in
the
config.
You
know:
basics
basic
samples.
You
you
in
the
bumblebee
repo
you'll,
find
the
basic
sample
with
the
the
diagram
that
I
showed.
What
I
was
going
to
show.
You
is
a
basic.
You
know
a
pink
source,
all
right,
pink
source
that
has
you
know
first
and
last
name,
alice
smith
right.
A
So
we
can,
you
know
we
can
apply
the
we
can
apply
the
source
right
and
maybe,
while
we
do
this,
so
we
can
apply
the
source.
Of
course
we
have.
You
know
a
broker
right,
that's
running
perfect
and
then,
if
we
look
at
the
triggers,
so
I
have
two
triggers
the
basic
ping
goes
to
the
transformation.
So
you
see
how
you
know
the
transformation
can
be
set
here
as
a
you
know,
subscriber
here
in
the
in
the
trigger.
A
So
it
goes
to
the
you
know:
the
transformation
service,
if
you
wish
and
then
the
the
response
comes
back
to
the
to
the
broker,
and
then
you
know
what
happens
that
you
need
the
second
trigger
to.
Actually,
you
know
send
it
to
to
sockeye
right.
I
mean
here,
it's
commented
so
that
I'm
gonna
get
all
all
events.
You
know
all
events
display
in
sokai
simultaneously,
don't
think
I,
okay,
so
they're
still
in
place,
and
now,
if
we
look
at
the
the
transformation
object
right.
A
So
the
first
transformation
that
we
can
do
you
know
is
simply
hey.
I
want
to
to
modify
the
cloud
event
type
of
the
ping
and
I
switch
to
trigger
mesh
transformation
ping
source
right.
So
it's
not
the
k
native
ping
anymore.
We
just
switch
the
cloud
event
type
and
then
we
add,
you
know
a
new
key
in
the
payload,
so
you
know
middle
the
key
will
be
middle
and
the
value
will
be
maria
all
right.
So
if
you
do
this,
then
you're
modifying
your
thing.
So
we
just
apply.
A
B
A
A
little
bit
of
luck
from
the
demo,
god
right.
So
what
should
we
see
on
the
sockeye
on
the
sockeye?
We're
going
to
see
the
two
events,
because
I
didn't,
I
didn't
remove
the
the
ping
ones
so,
every
minute
we're
going
to
see
the
the
original
ping
event
right
and
we're
going
to
see
that
type
and
we
also
should
see
a
transform
event
with
a
new
key
middle
with
the
value,
maria
and
a
new
type
right.
B
C
A
There
you
go
demo,
gods
are
with
me,
okay,
so
can
I
zoom
that
so
perfect?
You,
we
see
the
first
event:
dev
canative
sources,
ping.
You
know
that's
the
original
original
payload
alice
smith,
and
now
we
see
the
second
event.
That's
been
transformed,
key
maria
and
a
new,
a
new
type,
all
right,
so
events
being
transformed
on
the
on
the
on
the
fly.
A
Let's
look
at
a
second
transformation
this
one
again,
you
know
the
so
we
switched
the
type.
There
are
different
things
you
could
store.
You
know
the
source,
you
could
store
the
id
which
could
be
very
useful
and
so
on.
You
know
here.
Second
transformation
we're
shifting
a
key,
so
the
key,
which
is
first
in
the
payload,
becomes
k
native
right.
So
it's
going
to
be
k
native.
You
know
alice
right,
so
we
apply.
A
We
apply
that
one
and
I'm
sure
that
you
know
by
now.
You
have
you
know
you,
you
got.
You
got
the
idea
right,
so
you
know
we
need
to
wait
another
minute
and
we're
gonna
see
that
what's
that
transformation
that
I
said
so,
the
the
key
first
is
going
to
shift
to
k
native
right.
So
we're
going
to
see
k
native
alice
and
we're
going
to
still
see
last
smith
middle.
A
E
A
A
So
that's
when
a
delete.
You
know,
of
course
we
can.
We
can
delete
keys,
so
you
know
apply
I'll,
do
the
delete
and
then
one
last
one
which
is,
which
is
nice
with
the
actual
cloud
event
context.
A
A
And
this
is
useful
to
us,
because
we've
we've
developed
a
trigger
mesh,
a
set
of
event
syncs,
we
actually
call
them
targets
and
our
event.
Syncs
actually
accept
a
particular.
You
know
event
types
right,
so
you
know
if,
for
example,
we
get
github
and
we
want
to
talk
to
twilio
the
github
events
they
come
in
as
github
knativ
and.
E
A
We
need
to
send
them
to
our
target,
which
takes
in
you
know
twilio.triggermesh,
so
we
need
to
transform
the
events
and
and
set
the
type
in
addition
to
the
payload,
of
course,.
A
There
you
go,
and
now
you
see
we
have
deleted
the
key
all
right,
so
the
last
one
I
wanna
I
wanna
show
you
is
is
one
which
actually
here
we
can
store
what
an
attribute
of
an
incoming
cloud
event.
A
So
here
you
see
that
in
the
section
context
we
are
doing
a
store
operation
and
we
are
going
to
store
the
value
of
the
the
cloud
event
source
right
in
a
key
here
within
the
context
of
that
of
that
manifest
we're
going
to
set
it
as
dollar
source
right
and
then
I
further
down
here
in
the
data
section,
I
now
add
a
new
key
foo
bar
and
I
set
that
new
foo
bar
key
to
the
value
of
that.
You
know
incoming
cloud
event
source
right,
so
this
is
just
showing
that
you
can.
A
You
can
store
incoming
attributes,
which
can
be,
which
can
be
handy,
so
apply
dash,
f,
trans,
three.
A
A
A
Okay,
so,
meanwhile,
you
know
the
repo
trigger
mesh
bumblebee
open
source
apache
software
license.
Oh
no,
okay,
we
put
them
under
licenses.
Okay,
why
is
it
under
licenses?
Is
because
when
we,
when
we
try
to
get
things
certified
with
red
hat,
we
need
to
put
a
hula
and
a
license
under
licenses
directory,
but
anyway
it's
apache
software
license.
We
have
a
release
process,
so
this
gets
tagged.
You
know
automatically
when
we
release
new
software.
A
A
If
we
go
back
to
our
soca
here,
you
go
so
the
last.
You
see
that
we
now
just
added
a
key
foo
bar
and
it's
set
to
the
value
of
the
you
know
the
cloud
event
source
right.
So
you
know
all
of
this.
Hopefully
what
you're
seeing
is
you
know
it's,
it's
quite
straightforward,
but
it's
actually.
You
know,
I
find
it
extremely
neat,
actually
clever
and
super
clean.
A
You
know
basically
manipulating
cloud
events
on
the
fly
with
a
declarative
api.
All
right.
B
Wonderful,
thank
you
so
much
for
presenting
that.
There
are
a
ton
of
comments
here
on
the
chat
box
and
given
how
far
we're
into
the
meetup,
I'm
not
gonna,
go
into
breakout
rooms,
so
please
feel
free
to
mute,
starting
with
jax,
who
has
his
hundreds.
A
D
D
A
Yeah,
so
we
and-
and
you
know
I
did
it
with-
I
did
it
with
a
broker
and
so
on.
But
of
course
you
could
just
curl
straight
into
the
the
endpoint
of
the
of
the
service
right.
A
Shift
a
question
from
alex
shift:
yeah
shift
replaces
modifies
the
key.
It
keeps
the
value,
but
it
shifts
the
key
to
something
else.
A
A
F
I
think
there
were
two
more
things.
There
was
one
comment
about
testing
and
whether
there,
whether
you
had
any
patterns
for
you,
know,
as
you
start
to
build
more
complex
transformations,
making
sure
they
work
right.
A
You
know
I'm
totally
going
to
punt
on
that
one.
So
we've
worked,
I
mean
on
testing,
so
some
of
you
know
some
of
the
folks
in
the
in
the
team,
so
antoine
antoine
coten
works
for
for
trigger
mesh.
We've
done
a
lot
of
work
internally
on
using
ginkgo
ginkgo
for
end-to-end
testing,
so
we
have
end-to-end
testing
for
our
sources
and
targets
and
also
some
of
those
integrations
right,
but
we
don't
have
yet
end-to-end
testing
purely
for
bumblebee.
I
don't
think
we
do.
F
F
And
yeah,
so
that
may
be
something
that
there
may
be.
You
know:
hey
open.
A
F
I,
like
it,
oh
the
one
other
thing
I
was
going
to
point
out
was:
I
noticed
your
releases
have
the
binaries,
but
if
you
use
co-resolve,
you
can
get
a
yaml,
that's
all
of
the
config,
bundled
into
one
chunk
with
references
to
like
gcr.io.
If
that's,
where
you're,
storing
your
containers,
yeah.
E
A
A
F
I
don't
know
if
that's
a
thing
you
want
to
do,
but
I
figured
I'd
mention
that
no
we
should
we
should.
We
should
make.
A
A
Yeah
yeah
yeah
totally
totally
fair.
We
should
do
it.
That's
that's!
That's
a
new
mission.
I
actually
ran
into
a
ko
okay
problem
when
I
was
preparing
for
the
demo.
So
so
yes,
we
should
add
the
manifest
to
the
release.
C
No
yeah,
I
don't
know
if
you
have
time,
but
do
you
have
a
metrics
endpoint
or
you
push
metrics
about
getting
stats
about
transformation
that
didn't
work
errors
or
how
many
shapes
or
operations
you're
doing.
A
No,
I
don't
think
we're,
I
don't
think
we're
exposing
a
matrix
endpoint
on
that
one.
C
A
A
A
C
A
F
A
C
That
was
another
question.
Leonardo
is
asking,
I
think
the
same
question
I
asked
before
in
the
chat
about
multi-tenancy
and
he
thought
about
what
the
tenancy
of
that
of
that
controller,
maybe
isolating
that
that
store
or
that
state.
A
Or
so
we
haven't,
we
haven't
dealt
with
multi-tenancy
on
the
tr
on
the
transformation
on
bumblebee
right
now.
Actually
antoine
has
has
moved
all
our
sources
to
being
multi-tenant.
So
if
you
look
at
all
the
trigger
mesh
aws
sources,
they
are
now
all
multi-tenant,
but
we
haven't
done
it
for
we
haven't.
We
haven't
looked
at
it
for
bumblebee
yeah.
F
Namespaces
but
since
you're
using
a
creative
service,
you
know
you'd
get
small
incremental
savings.
Not
you
know
like
oh
hey.
We
have
these
pods
running
all
the
time
and
most
of
the.
C
F
Now
it
may
be
that
ibm,
you
know
running
an
enormous
cloud
actually
cares
about
saving
those.
You
know
those
pennies
from
each
namespace,
but.