►
Description
Join Christian Hernandez, GitOps Extraordinaire, for a journey through how to achieve GitOps in any number of ways. The occasional Red Hatters and special guest will join us too.
A
B
B
We're
only
we're
only
a
few
weeks
in
or
it
feels
like
a
few
weeks.
It's
actually
only
the
second
week,
but.
B
I
mean
I'm
doing
doing
well
doing
well
everything
hope
everyone
else
is
doing
there
doing
well
out
there
you're
staying,
safe
and
and
yeah
so
before
before
we
get
started.
I
actually
do
want
to
do
a
quick
shout
out
right,
so
I
think-
and
I
think
I
kind
of
want
to
do
more
of
these
right
kind
of
just
give
a
general
a
view
of
gitop's
land
right.
B
So
a
few,
a
few
of
my
a
couple
of
my
colleagues,
are
doing
a
a
talk
right,
so
they're
doing
they're,
doing
joint
talk,
red
hat
and
git
lab
gitlab's
one
of
our
partners
right.
So
we
do
a
lot
of
work
with
them
at
worldwide
technologies.
They're
actually
going
to
do
a
kind
of
devops
kind
of
doing
a
devops
get
ups
talk
there
I'll
put
the
link
in
the
chat
right
there
it's
on!
B
A
You
can
get
on
the
stream,
hey
yeah,
I
gotta
open
in
my
calendar.
I
might.
B
Yeah
see
there,
you
go
yeah
yeah,
so
it's
yeah.
I
do
too
so
it's
kind
of
like
hey.
You
know,
it'd
be
a
good
thing
to
to
check
out
there,
so
so
yeah.
So
today
I
kind
of
want
to
talk
about
you
know
originally,
or
you
know,
past
episodes
I
kind
of
talked
about
get
up
in
general
right
today.
I'm
gonna
talk
about
argos
specifically
because
there
are
some
tools
and
some
features
of
argo
cd.
B
That
I
think
are
very
helpful,
especially
when,
when
trying
to
kind
of
get
some
of
your
brownfield
applications
to
get
optimal
right,
so
I'm
gonna
turn
get
up
since
from
a
noun
subverb
get
observable
right,
so
I'll
be
talking
about.
So
let
me
share
my
screen
real
quick
here.
B
I
don't
want
to
inundate
anyone
with
with
slides
here,
but
where
did
my
button
go
there?
We
go.
I
changed
my
setup
so
like
now.
A
B
Yeah
so
so
let
me
do
you
see
that
my
presentation,
myself.
B
Yeah,
so
the
slides
are
available,
so
go
so
feel
free
to
take
a
look
at
that
afterwards.
If
you
want
a
copy
of
those,
so
I'm
gonna
talk
about
things
like
sync
waves
and
hooks
right,
so
sync
waves
and
hooks.
So
this
is
what
I
like
to
call
controlling
non-declarative
things
declaratively
right
so.
B
In
you
know
not
every
application,
not
every
infrastructure
stack,
can
be
described.
Declaratively
right,
that's
just
the
nature
of
the
beast
right,
that's
whether
it's
through
just
kind
of
like
you
know
any
number
of
snowflake
applications
that
you
may
have,
or
the
fact
that
you
know
you're
used
to
doing
like
waterfall
or
some
other
process
and
you're
trying
to
you
know,
go
through
the
the
the
tribulations
of
getting
this
in
a
kubernetes
environment.
There
are
just
there's
just
instances
where
you
need
to
deploy
something
that
you
just
can't.
B
Do
it
in
a
declarative
way
right
and
I
and
I
call
it
you
see
the
slide
there
get
up,
seeing
the
unget
optimal.
B
We're
talking
about
square
peg
round
hole
in
this
episode,
so
sort
of
sort
of
thing
right
so
and
just
kind
of
just
some
of
the
some
of
the
things
that
that
are
that
are
difficult
to
do
in
a
declarative
way
right
so
like
when
an
application
when
it's
a
point
of
your
application
needs
to
do
some
sort
of
either
scaffolding
or
some
sort
of
process
in
order
to
get
up
and
running
right,
like
so
like
when
you
first
deploy
an
application,
you
want
to
make
sure
your
your
database
tables
like
you,
want
to
either
you're
doing
a
schema,
change
or
you're
creating
tables,
or
you
know,
you're
doing
something
with
a
database.
B
You
want
to
like
do
a
do,
a
backup
or
something
that's
just
one
thing
right
and
really.
How
do
you
do
that?
Declaratively?
You
need
to
create
directory
structures,
right,
health
checks
to
other
systems
or
any
other
custom
scripts
right
like
there
are.
I
did
a
talk
once
at
dev
conf
by
the
way
def
conf
also
now
virtual,
we're
just
talking
about
virtual
yeah
sessions,
but
devconf
search
last
time
I
was
at
dev
conference
was
in
brno
right
in
czech
republic.
I
met
a
bunch
of
great
people.
B
I
got
people
walking
up
to
me.
I
did
a
get
up
session
there
walking
up
to
me.
He
goes
well.
I
have
this
process
and
they
they
they
ended
up,
describing
this
process,
I'm
like.
Oh,
my
god,
people
have
just
like
these
weird
setups
we're
there
and
it's
like
not
through
the
faults
of
their
own,
but
just
kind
of
just
like
they
get
tech
dead
right.
They
have
some
stuff.
B
They
inherited
some
systems
like
or
like
they
have
a
system.
That's
like
hey,
it's
always
been
there.
It's
already
been
humming
running,
we
don't
want
to
get
off
of
it
or
we
can't
get
off
of
it.
So
you
know
that's
just
kind
of
some
of
the
things
that
are
that
just
happened
right.
You
just
have
a
deployment
process
right
or
you
have
like
a
maintenance
right.
You
do
like
database
backup
block
rotating.
B
You
know
you
need
to
do
some
sort
of
some
sort
of
maintenance
right.
B
Just
just
something
you
know
you
have
to,
you
know,
make
sure
you're
splitting
the
plates
in
the
right
directions
and
making
sure
you
do
the
sacrifices
just
right
in
order
to
get
your
application
deployed
right
so
right,
so
in
general,
you
know
you
want
to
use
as
much
kubernetes
primitives
as
possible
right,
it's
like,
especially
if
you're
moving
over
to
like
a
cloud
native,
a
way
of
deploying
applications.
If
you're
looking
into
get
ops
to
you
know
accelerate
that
process.
B
There
are
things
like
init
containers
right,
so
init
containers.
If
you
guys
don't
know
a
pod,
is
a
representation
of
one
or
many
containers
right.
So
a
pod
in
itself
can
have
one
or
you
know,
hundreds
of
containers
right,
it
just
depends
yeah,
it's
a
it's.
An
atomic
unit
right
and
part
of
that
part
of
those
containers
is
there's
something
called
an
init
container
that
runs
before
your
actual
container
runs
right.
B
So
it's
something
that
runs
in
a
pod
that
does
something
and
then
goes
away
before
your
your
actual
container
runs
right,
so
example,
if
there's
a
directory
structure
that
needs
to
be
created
right
right
before
or
you
need
to
download
something
that
needs
to
be
local
whatever
right,
you
can
use
an
init
container
for
that
for
your
application,
so
other
than
that.
There's
jobs
right,
so
jobs
are
kind
of
like
a
batch
process
right,
so
jobs
is
essentially
a
separate
pod.
B
So
now
we're
taught
you
know
we
go
from
in
pod
maintenance
or
setup
to
outside
a
pod.
There's
like
a
separate
pod
that
runs.
That
does
something
right
that
connects
to
an
external
system
that
does
some
garbage
collection.
Maybe
it'll
mount
a
file
system
and
do
it
does
a
backup
whatever
right
and
then.
A
A
I'm
sorry
it
was
it's
funny
because
we
had
one
of
my
first
jobs
out
of
the
air
force
in
tech.
We
had
this
entire
fleet
of
servers
for
quote
batch
processing
and
it's.
B
B
B
I
think
it's
perfect
for
this
right
so
like
especially
if
you're
already
using
ansible,
it
just
makes
sense
right
put
in
an
operator
and
just
you
know
off
you
go
so
I
think
endable
operators
also
is
another
way
to
do
this
right.
You
can
have
an
operator
that
spins
up
and
does
some
ansible
process
whatever
you
want
to
do.
B
That.
Does
that
right?
So
so
in
general,
you,
you
want
to
use
some
of
these
primitives
right
to
go
along
right,
so,
but
argo
cd
has
also
tool
sets
right.
So
I
say
argo
cd
to
the
rescue
right.
It's
not
just
argo
cd
right,
like
a
a
lot
of
sync
tools,
have
this
here,
but
we're
talking
about
argo
here
specifically
in
this
use
case
right,
so
argo
cd
does.
B
B
So
these
phases
also
have
hooks
right
so
they're
they're.
So
let's
just
kind
of
break
this
down
a
little
bit.
So
there's
this
three
basic
phases
right,
so
there's
the!
So
if
you
take
this
little
thought
experiment.
It's
like
you,
have
a
yam
all
right,
so
you
have
something
simple,
pod
service
route,
right,
so
kind
of
or
deployment
service
routes.
It's
something
dead,
simple
right!
That's
your!
That's!
What
you
want
to
sync
there's
a
pre-sync
phase
right!
B
So
pre-sync
phase
is
stuff
that
happens
before
those
three
yamo
manifest
gets
applied
so
things
it
could
be
any
kubernetes
resource.
But
you
know
nine
times
out
of
ten.
It's
usually
like
a
job.
A
B
That
does
something
right,
so
you
can
have
precinct
so
before
you
sync
my
manifest.
Do
these
steps
right
and
then
there
is
the
sync
phase,
which
is
what
you
would
normally
would
see
in
in
argo,
is
you're,
taking
the
manifest
and
applying
it
right,
so
you're
making
sure
they're
in
sync.
What
you
have
in
get
is
in
sync
with
what
you
have
in
on
your
cluster
so
and
then
there's
the
post
sync
right.
B
So
the
post
sync,
as
the
name
implies
syncs
after
your
sync
process,
has
happened
right
so
this
this
and
all
these
processes
process
processes,
people
pronounce
it
different.
I
guess
processes
processes
wait
for
the
other
one
to
finish
successfully
before
the
other
one.
So,
like
precinct
happens,
waits
for
everything
go
healthy,
then
sync
happens,
wait
for
everything
goes
healthy
and
then,
once
everything
is
healthy,
the
post
sync
runs
right
and
then
and
then
your
application
will
report.
B
Okay,
you
know
everything
ran
just
fine
right,
so
some
of
the
sample
use
cases
right
so
like
the
pre-sync
function
can
perform
things
like
a
database
schema
migration
right
or
before
deploying
a
new
version
of
your
application.
You
have
something
that
happens
before
that
that
your
your
application
does
like
a
deployment
of
a
new
version
right
so
right,
the
sync
hook,
you
know,
can
be
used.
B
That
hook
say:
okay!
Well,
you
know
once
the
pre-sync
happens.
I
need
some
something
something
to
happen.
That's
kind
of
more
sophisticated
than
the
rolling
update
strategy
right,
because
the
way
kubernetes
deploys
your
application
and,
by
extension,
openshift,
is
that
it'll
spin
up
the
new
pod,
add
it
to
the
the
services
endpoint,
and
then
it
will
just
delete
the
other
pod
right
so
kind
of
like
a
rolling
update
and
some
applications
require
something
a
little
bit
more
sophisticated
than
that
so
yeah.
B
So
it's
just
it
not
all
applications,
just
plain
and
simple
right.
So.
B
So
the
post
sync
hook
can
be
used
to
run
like
integration,
chess
or
just
kind
of
check
the
overall
health
of
your
deployment
right.
So
so
part
of
hooks
right.
So
if
you
are
running
things
in
hooks
you
can
you
can
delete
them
right
so
like
if
you
have
a
job
that
does
like
one
task,
then
you
need
to
come
up,
run
a
task
and
then
go
away.
You
don't
want
it
lingering
you
can.
B
You
can
delete
that
job
right
so
phrase,
for
instance,
if
it,
if
you
send
like
a
slack
a
slack
hook
right
or
slack
message
right
here,
saying:
hey
you
know
after
this
hook,
succeeded
just
delete
it.
I
don't
need
it
hanging
around
yeah,
get
it
out
of
here.
You
can
also
have
it
something
failed
right.
So
if
something
failed,
maybe
you
do
want
to
get
notified
right.
So
if
something
failed,
you
could
have
a
job.
B
You
know
spin
up
and
and
notify
you
and
then
delete
deleted
right
so
and
then
there's
something
else
called
before
hook.
Creation
right
so
it'll
delete
the
previous
one
so
that
maybe
you
do
want
a
hanging
around
right.
You
want
a
job
hanging
around,
so
you
can
look
at
the
logs,
but
you
want
to
delete
it
when
the
new
one
runs
right.
So
that's
another
before
before
hook
creation.
So
so
that's
kind
of
the
the
idea
behind
sync
right:
sync:
sync
phases
and
hooks
right.
B
So
there's
another
mechanism:
right
is
what
we
call
sync
waves
right,
so
so
sync
waves
along
with
the
hooks
sync
hooks,
the
waves
is
just
kind
of
just
put
it
simply
the
order
in
which
manifest
gets
applied
within
that
phase
right
right.
So
it's
ordered
by
number
right
so
like
in
your
precinct,
if
you
have
like
one,
if
you
have
three
jobs,
you
can
have
zero
run
and
then,
when
that's
finished,
then
number
one
runs
and
then,
when
that
finished
number
two
runs
so
it's
kind
of
it.
B
Essentially
it's
an
order
of
operations
right
and
they're,
and
each
wave
is
within
each
phase
right.
So
if
I
go
back
so
you
have
a
precinct
right
that
has
zero
one,
two,
a
sink
that
has
zero
one.
Two
and
post
sync
has
zero
one.
Two
and
it'll
run
in
that
order
right
so
if
without
specifying
the
default
value
is
zero,
meaning
that,
if
you
don't
specify
it
at
all,
everything
gets
applied
at
the
same
time
right
so
which
you
may
you
may
not
want
right.
B
So,
for
example,
if
I
am
deploying
you
know
a
front
end
web
and
a
database,
I
want
the
database
up
even
before
the
web
gets
spun
up
right.
So
if
I
have
an
application
that
I
haven't
written
that
wait,
you
know
because
some
application
you
can
write
to
where
it'll
wait
until
the
database
is
up
before
it'll
come
up.
This
is
a
way
to
actually
make
sure
the
the
manifest
gets
applied
in
the
order
that
you
want
right.
B
So
you
want
database
to
come
up
and
then
the
front
end
database,
maybe
manifests,
have
a
value
of
zero
and
then
the
front
end
has
a
value
of
one
right.
So
then
right
and
then
your
job
has
a
value
of
two
right
so
like
you,
then
you
can
have
it.
B
Run
in
that
order,
you
can
also
have
negative
right
so
like
if
you
want,
if
you
want
something
like
if
you
deployed
something
that
zero
one
two
and
then
you
need
to
deploy
something
else,
you're
like
oh
crap.
This
actually
needs
to
run
before
zero.
Oh.
A
So
go
negative,
three
and
you
know
make.
B
Like
one
two
yeah
yeah,
exactly
yeah
or
negative,
ten
right
or
whatever
so
there's
there's
a
lot
of
ways
to
say
this
yeah
some
people
do
it
like
10
base
right,
yeah,.
A
A
B
B
So
it's
just
an
integer
right,
so
it's
you
know
whatever
whatever
makes
sense
to
you,
so
that's
that's
another!
That's
another
way
to
do
it
right.
So
question
is:
how
does
this
work
right
so
like
you're,
yeah.
B
Watching
if
you're
watching
this,
it's
like,
okay,
so
all
right.
So
how
do
I
put
this
together?
So
so?
First,
when
argo
starts
a
sync,
it
orders
the
resources
in
a
particular
way
right.
So
first
it'll
order
them
by
phase
right.
So
it'll
take
all
your
manifest
and
okay
it'll.
Look
at
it.
Okay,
I'm
gonna,
put
all
the
precincts
in
one
batch.
B
I'm
gonna
put
all
the
sinks
in
another
batch
and
I'm
gonna
put
the
postsync
in
another
batch
right
so
once
it
does
that
so
it'll
sort
them
that
way
and
then
within
each
phase,
it'll
sort
them
by
the
way
that
they're
in
right,
so
it'll
start
from
the
lowest
number
and
then
it'll
apply
it
going
to
the
highest
number
in
the
precinct
and
then
it'll
do
that
for
the
sink
and
then
so
that's
how
it'll
order
the
ammo
and
then
it'll
order
it
by
kind
right.
B
B
So
then
it'll
do
an
alphabetical
sorting
of
the
things
right
so
even
before,
even
before
it
even
starts
the
the
sync
process,
it
has
to
order
them,
and
this
is
like
the
process
it
uses
to
order
those
manifests
and
then
and
then
argo
determines
which
number
of
the
next
wave
to
apply
right.
So
it'll
it'll
do
the
phase
it'll
look
at
the
wave
and
I'll
say:
okay,
I'll
apply,
0
1,
2,
3
right
it'll
apply
it
only
to
anything
that
it
notes
that
it's
that
it's
out
of
sync
or.
B
Yeah,
so
it
doesn't
like
reapply
things.
It
just
only
applies
what
it
sees
that
is
out
of
sync
right
and
then,
and
then
it'll
apply
those
resources
right,
so
it'll
check
to
see
what's
out
of
sync
and
it'll
apply
to
those
resources,
and
then
it
basically
repeats
this
until
everything's
healthy
right.
B
B
You
want
to
make
sure
that
when
you're
writing
a
job
that
you're
writing
the
the
logic
right
in
the
the
job,
because
the
job
could
be
anything
right,
it
could
be,
it
could
be
a
an
enhanceable
playbook.
It
could
be
a
script
right.
You're
writing
the
logic
to
where,
if
you
don't
care,
if
it
fails,
you
may
want
to
make
it
report
healthy.
Even
though
you
know
it
failed
right.
So
so
just
just
note
that
any
phase
it
could,
if
it
fails
any
at
any
point,
it'll
mark.
A
A
B
Just
keep
going
so
you
kind
of
want
to
just
keep
that
in
mind
that
within
all
these
phases,
you
just
want
to
make
sure
you
want
to
report
healthy
when
you
know,
because
sometimes
you
know,
errors
are
okay,
so.
A
B
You
need
to
program
that
in
right,
so
argo
assumes
you
know
what
you're
doing.
So
that's
the
good
and
bad
right
so.
B
B
Yeah
so
we'll
go
through
a
simple
use
case
right,
so
so
this
arrow
going
from
left
to
right
depicts
the
passage
of
time
right
so
and
in
each
phase.
B
This
is
how
the
phases
happen
right.
So
you
get
the
the
pre-sync
sync
and
post
sync
right.
So
let's
just
take
a
simple
use
case
and
let's
say
you
have
a
job
right
so
job
this
job
manifest
runs
in
your
precinct
and
and
you'll
see
in
the
demo
right
we'll
I'll
walk
you
through
kind
of
an
example
that
I
have
you'll
see
that
each
hook
has
an
anchor
notation
to
it.
So
you
know
it's
a
hook.
Instead
of
an
actual
manifest,
you
want
to
apply.
So
that's
how
it
differentiates
right.
B
So
first
phase
happens:
you
apply
the
job.
Little
hook
comes
up
and
then
it'll
report
green
right.
Okay,
so
that
that
succeeds
so
once
presync
happens,
then
the
actual
sync
happens
right.
So
I
want
to
have
a
deployment,
a
service
and
a
route,
and
then
maybe
I
have
a
in
this
sync
in
this.
B
In
the
sync
phase,
and
also
in
the
sync
face,
I
have
a
hook
that
runs
a
job
right,
so
so
I
have
here
a
wave
right,
so
the
sink
wave
here
is
a
zero
one,
two
three
right,
so
I
so
like
I,
so
it
basically
orders
them
this
way
right.
So
what
ends
up
happening
is
that
first,
the
deployment
runs
and
that
turns
green
and
then
the
service
gets
applied,
and
that
turns
green
right.
B
So,
as
you
can
see,
and
then
that
number
two
comes
along
right,
so
since
service
turned
green
now
the
route
turns
green
and
then,
finally,
since
I
have
my
job
set
at
three,
it
runs
that
last
right.
So
if
I
back
up
a
little
bit,
you'll
see
that
it'll
apply
it
in
that
order
all
right
since
this
job,
I
didn't
annotate
it
with
anything.
B
It'll
it'll,
stick
around
after
after
the
sync
finished.
Okay.
So
after
the
sync
finishes
now
we
have
the
post
sync
right,
this
post
sync:
I
have
a
job
that
does
something
right
and.
B
Yeah
clean
up,
maybe
send
us
a
slack
message
which
is
kind
of
like
the
demo.
B
I
have
a
slack
message
or
whatever
right,
whatever
you
want.
Is
there
just
you
know
in
the
end
they're
just
you
know.
B
Give
me
anything
you
want
this
particular
job
has
a
hook,
but
it,
but
it
also
has
an
annotation
called
delete
on
success,
meaning
when
I
run
I
want
it
to
run,
do
something
and
then
delete
itself
right,
so
it'll
then
run
successfully
and
at
the
end,
it'll
delete
itself
right.
So
pretty
simple,
pretty
straightforward!
B
This
is
how
argo
applies
its
manifest
right
and-
and
you
can
see
how
this,
how
this
works
right.
So
so
I
I
do
have
some
hacking
to
do
so
right
before
we
get
to
some
heckery
some
hackery
right
or
our
keyboard
time
or
is
like
to
say
hacking
away
until
it
works
right.
I
don't
see.
I
ever
seen
the
those
o'reilly
books,
those
fake
o'reilly
books,
that
people
make
oh
yeah.
I've
got
a
good
one.
B
Yeah,
there's
there's
a
few
of
them.
There's
one
my
favorite
one
there
I
I
like
two
of
them.
One
of
them
says
trying
things
until
it
works
by
o'reilly
or
copying
pasting
from
stack
overflow.
A
Yes,
that's
a
great
one.
Let
me
I'll
I'll
get
mine
shared
out
and
I'll
share
the
link
in
a
second
here.
B
Yes,
it's
pretty
it's
pretty,
which
is
funny
because
we've
all
done
those
things,
especially
the
copy
and
paste,
is
like
copy
paste
change
the
parameters.
Oh,
it
does
work,
okay,
cool
right,
so
so
I
do
have
a
quick
example,
but
before
we
get
to
that
example,
here
there
was
kind
of
like
a
a
lively
conversation
right.
B
So,
as
as
I've
said
before,
there's
like
the
the
argo
user
groups
within
red
hat
right,
we
have
like
a
little
what
I
like
to
call
the
argonauts
that
we
kind
of
had
a
lively
conversation.
It's
like
shouldn't.
Some
of
this
stuff
happen
in
ci
and
not
in
cd
right.
B
So
stuff
like
precinct
like,
like
you
know
or
like
a
sync
process
or
a
posting
process,
it
was
really
more
the
precinct
right
so
like
if
I
have
a
job
that
does
a
database
backup
or
database
maintenance
shouldn't
that
happen
in
ci.
So
that's
a
very
interesting
conversation.
I
would
would
I'd
be
interested
in
like
what
other
users
have.
You
know
feel
free
to.
You
know
either
chat
it
up
or
hit
me
up
on
on
twitter.
Talk
about
the
experiences
right.
B
I
think,
there's
a
case
to
be
there's
a
case
to
be
made
to
have
things
done
in
ci
versus
cd
right,
because,
remember,
argo
cd
is
a
it's.
A
cd
processor,
delivery
tool,
stuff
like
maintenance
and
things
kind
of
almost
seems
like
a
ci
process.
So
still
you
can
do
a
lot
of
things.
I
I
am
of
the
opinion
that,
if
you're
doing
maintenance
you
might
want
to
put
like
an
under
construction
page
up
or
something
or.
B
B
To
do
you
have
to
do
it
the
the
dumb
way
right
so,
like
I,
I've
been
there
before
I've
been
an
admin.
I
know
chris
you've
been
there
before
it's
just
sometimes
you
inherit,
and
it's
like
people
walk
in
and
go
this.
This
is
dumb
and
I
go
yes,
it
is,
but
we
are.
We
have
tech
debt
like.
What
do
you
want
me
to
do
like
right?
I
agree
with
you,
but
we
have
to
do
it
this
way.
A
Yeah
and
that
very
much
has
to
do
with
the
the
fake
o'reilly
cover
I
sent
so.
B
Yeah,
what
what
is
this
pile
I
just
run
into
so
so
yeah?
So
you
know,
if
you
guys
have
opinions
yeah
feel
free
to
reach
out
put
in
the
chat.
I
would
love
to
hear
what
you
guys
experience
out
there
in
terms
of
like.
Where
should
this
happen
in
the
process?
Right,
especially
especially
git
ops
is
so
like.
You
know
we're
still
in
that
an
exploring
phase
with
get
ups
that
I'd
be
interested
in
where
we
end
up
in
terms
of
where
should
some
of
these
things
happen
so
cool.
A
B
It's
one
of
those
things.
What
about
you
chris,
like
you,
wrote
once
a
long
time
ago
and
you
can
just
use
the
crown
you're.
B
Yeah
yeah,
so
a
simple
credit
application,
but
I
think
it
illustrates
the
point
here,
so
I
have
an
application
here,
a
simple
crud
application
right.
I
have
some
entries
in
the
database
right.
It's
a
functioning
app
right
like
they
even
have
the
the
chris
short
t-shirt
right,
so
get
it.
While
you
still
can
it's.
B
Yeah,
like
ipad,
you
know
a
cool
tablet,
15
bucks
or
140
whatever
right
right.
So
I
can,
you
know,
use
this
application
here.
So
so
I
have
this
app
synced
with
argo
right,
yeah
right
so.
A
B
B
Well,
and
also
it,
I
think
it
illustrates
the
point
of
the
power
of
kubernetes
right,
because
right
I
with
two
manifests,
I
declaratively
say
you
know
it
sets
up
the
networking
for
me,
it
sets
up
the
the
ports.
For
me,
it
sets
up
the
the
dns.
For
me
it
sets
up
the
the
the
url
and
you
know
like
it.
You
know
with.
A
B
Yeah
so
so
cool,
so
I
have
this
application
right.
So
then
I
have
again
here
I'm
using
again
octatree
pretty
cool.
B
A
B
Without
this
tool,
so
I
have
a
this
application.
This
customization
file
right.
So
I
have
my
resources
synced
up
right,
so
I'm
actually
pulling
in
the
manifest
the
the
actual
application
from
another
repo.
So
that's
another
cool
thing
from
customize
I
can.
I
can
pull
the
manifest
from
wherever
I
want
right
so,
and
this
is
I'm
like
okay,
cool
I'll
just
take
an
application.
I
already
have,
but
there's
a
few
things
that
happen
right.
So
I
have
a
a
precinct
job
right.
B
So
if
I
look
at
that
precinct
job
you'll
note
that
here
line
10.
I
have
sorry
here
to
start
at
eight
right,
so
I
have
post
sync
right
is
this?
Oh
there's
a
posting
where's,
my
precinct
precinct.
Sorry
yeah.
B
Not
the
right
order,
yeah
exactly
so.
I
have
a
presync
right.
So
this
is
this
job
is
going
to
happen
to
presync
right.
It's
the
first
thing
that's
going
to
happen
in
this
wave
because
I
set
it
to
zero
and
it's
going
to
delete
itself
once
it
succeeded
right
and
what
it's
doing,
it's
just
a
maintenance
script
right
so
part
of
the
maintenance
script
is
like
I'm
going
to
throw
up
a
a
banner
saying
that
this
application
is
going
to
come
under
maintenance
right.
So
so
that's
just
one
right.
B
So
then
the
next
thing
that
happens
is
that
I
have
a
db
backup
right.
So
that's
my
database
backup
happens
in
the
presync
phase
and
wave
one
right.
So
it'll
happen
after
the
maintenance,
script,
fires
that'll
finish,
it'll
run
this
one
and
and
then
after
it's
done,
it'll
delete
right.
So
this
deletion
policy
is
hook,
succeeded
once
once
it
once
it
succeeds,
get
rid
of
it.
I
don't
want
to
hang
it
around
and
then.
B
Finally,
in
the
last
thing
in
the
precinct,
since
it's
number
two
it'll
happen,
third
is
a
log
rotating
right.
So
I
have
a
script.
That'll
rotate.
The
logs
for
me
and
then
again
hook
succeeded
it'll
delete
right.
So
that's
the
precinct
phase.
B
I
have
this
application
right,
so
it'll,
so
it'll
pull
in
all
the
manifest
from
this
repo
right
and
if
you
look
in
this
repo,
if
it
exists.
B
A
B
There
it
is
so,
if
I
look
at
here
this
application
is
this
actually
has
a
sync
wave
applied
to
it
right,
so
so
it'll
actually
deploy
in
the
order
of,
I
think,
first,
the
db
service.
No,
no!
Actually
the
quota
gets
deployed.
First,
no,
I'm
dumb.
Obviously
the
namespace
needs
to
be
cut.
That's
first,
then,
the
quota
all
right,
because
namespace
always
has
to
go
first,
but
I
have
the
this
application
itself
in
another
repo
has
the
sink
waves
right,
so
so
you
take
that
in
into
account
right.
B
B
Yeah,
what
someone
I
know,
someone
actually
or
one
of
the
kind
of
not
too
much
of
a
side.
Note
right
like
I,
I
work
on
this
project.
You
know
chris
called
helper
node
right
right
and
we're
in
the
process
of
rewriting
it
and
golang,
and
one
of
the
one
of
the
guys
you
know
we
have
you
know:
bi-weekly
sink
calls
about
it.
One
of
the
guys
actually
has
a
white
board
in
his
office
at
home.
His
home
office
has
a
white
board.
B
A
A
B
What
we
need,
I
know
we
discussed
this
before
is
we
need
the
light
board?
I
think
I
think,
there's
one
in
the
box.
B
Yeah,
if
anyone
wants
to
send
us,
send
chris
one
feel
free
to.
A
B
So
yeah,
so
I'm
pulling
this
in
and
this
repo
has
its
own
sync
wave
so
that
that'll
and
you'll
see
the
example
it'll
it'll
get
deployed
in
such
a
way.
If
I
look
at
the,
where
is
my
post
sync,
so
then
I
have
a
posting
job
right,
so
posting
job,
it
runs
post,
sync,
zero,
there's
nothing
else
running
it,
so
I
could
probably
left
that
out
and
it'll
delete
and
hook
succeeded
and
this
post
job
all
it
does
is
it'll.
B
Send
us
a
slack
web
hook
right
telling
the
the
deployment's
done
right
and
I
have
a
secret
there
and
actually,
if
you
want
to
take
a
look
at
the
secret
you
can,
where
is
where's
my
secret
essay?
I
wish
I
would
have
named
these
consistently
here
hold
on
you
still.
A
A
B
There
it
is,
it's
actually
a
sealed
secret,
so
I'm
kind
of
using
because
I
don't
want
random
people
posting
to
the
red
hat
slack,
what
really
yeah.
So
I
have
so
I'm
using
multiple
technologies.
So
by
the
way,
so
I
I
do.
I
do
dog
food
so
but
it
does
send
a
slack
hook
right
here,
so
so
yeah
so
it'll
happen
in
this
order
right.
So
let's
fire
this
off
here.
Is
there
any
way
to
move
this?
I
know
you
don't
see
it
in
your
screen.
B
You
know
the
the
the
zoom
the
bar
yeah,
I
don't
want.
I
don't
want
to
accidentally
close
it.
A
B
Oh
perfect
cool,
although
now
this
thing:
okay,
there
we
go
all
right,
let's
fire
this
off.
So
let's,
let's
click
sync
here,
I'm
gonna,
sync,
everything
so
fair
warning!
You
know,
since
I'm
doing
like
maintenance
and
stuff
like
that,
this
is
gonna,
be
a
lot
of
watching
paint
dry,
but
you'll
see
here
that
there's
a
precinct
that
fires
off
right.
So
you
see
the
little.
I
don't
know
if
you
can
see
it.
Let
me
know
if
you
needed
to
get
bigger,
but
there's.
B
So
there's
a
little
little
anchor
that
denotes
that
it's
it's
a
hook
right
so
right
now
it's
in
the
pre-sync
phase
and
it's
launching
this
pod.
That's
doing
that
maintenance
script
right
so
part
of
that
maintenance
script.
As
you
see
here,
it
launches
it
launches
a
pod
here
and
it'll
put
this
under
maintenance
mode
right.
So
I
have
this
under
construction
page
right.
So
it's.
B
Yeah
so,
like
I
have
this
under
yeah
exactly
my
app
is
not
working
right
now,
because
I
just
it's
under
maintenance
mode
right.
So
then,
here
this
little
hook
here
it
does
a
database
backup
right.
So
as
as
that's
running
my
application,
construction.
B
A
People
writing
tables
writing
to
something.
That's
unreadable
bad
yeah.
How
would
you
solve
that
in
a
more
production
environment,
though,
would
you
have
like
some
kind
of
proxy
or
cash
just
to
like
yeah.
B
Right
say:
it's
always
a
problem
yeah,
so
a
christian
poster
right.
He
he
he,
he
wrote
a
microservices
book
and
he
does
microservices
talk
and
he
always
says
the
issue
always
comes
down
to
your
state.
That's
going
to
be
your
biggest
problem
right.
So.
B
Yeah
exactly
so
once
yeah,
so
once
now
I
have
a
post
sync
here.
This
post
sync
is
actually.
If
I
go
here
it'll,
I
have
this
little
channel
here
that
I
created
for
you
and
me
chris
you're
part
of
it
see
so
now
you
see
here
that
it
just
came
up.
Deployment
was
successful
right,
so
it
was
just.
I
actually
do.
Have
you
have
you?
Have
you
added?
Did
you
really
yeah
nice?
It
says
you're
on.
I
don't
know,
I'm.
B
B
That
the
deployment
was
successful
right.
So
at
the
end
I
send
a
slack
message
and
then
those
go.
Then
they
go
away
as
you
see
here
in
in
argo,
the
the
the
jobs
not
only
came,
but
they
left
right.
So
if
I
actually
drop
down
here,
if
I
do
oc
get
pods
under
price
list
right,
none
of
the
pods
lingered
right
except
the
post,
deploy
because
the
post
deploy
I
have
it
set
to.
I
don't
have
it
annotated
right.
So,
let's
look
at
back.
B
Yeah
post
deploy-
I
just
have
it
a
sync
way,
but
I
don't
have
it
deleted
right.
So
that's
the
only
one
that
sticks
around.
If
I
do
oc
get
jobs,
there's
only
one
job
instead
of
the
the
three
or
four
that
I
that
I
that
are
deployed
there,
so
so
yeah.
So
that's
right.
B
B
So
ibm
also
uses
slack
right.
They
have
the
little
that
made
that
big
slack
deal.
We
still
can't
talk
to
each
other,
but
there
we
go.
You.
A
B
What's
what's
really
cool,
is
you
can
invite
other
slack
channels
in
specific
channels
right?
So
I
know
the
the
ansible
slack
yeah.
So
ansible
has
yes,
they
have
their
own
sac.
Oh
yes,
us.
B
Yeah
yeah
well
and
also
the
core
os
slack
right,
so
our
openshift
slack,
the
one
we're
on
we.
B
Own
account,
so
it's
so
don't
don't
act,
so
surprised,
you'll
be
more
surprised
finding
out
how
actually
we
have
it
set
up.
B
B
So
yeah,
so
I
have
so
yes,
as
you
can
see
some
of
the
you
know
you
can
use
like
sync
waves
and
and
and
and
phases
to
do
a
lot
of
things
I
actually
use
it
for
a
little
bit
more
complex
setup.
So
if
I
go
to
what
is
this
here,.
B
Cluster
config
yeah,
so
I
actually
use
so
here.
Let
me
go
here
manifest
there
you
go
so
deploying
the
efk
stack
actually
gets
kind
of
complex
right.
B
So
I
actually
have
you
know
a
sync
wave,
so
you
know
kind
of
airing
a
little
bit
of
a
little
bit
of
dirty
laundry
in
terms
of
operators.
So
the
operator
lifecycle
management.
B
Isn't
it's
one
of
those
cases
where
it's
not
get
ops
friendly
and
it's
it's
not
a
knock
on
olm.
A
lot
of
things
aren't
getups
friendly
right.
Oh.
B
Yeah
yeah,
which
is
a
reason
why
they're
sync
waves
right:
it's
it's
not
just
because
get
ops
is
so
so
new,
like
it's
obviously
not
friendly.
I
was
running
into
an
issue
where
I
am
trying
to
deploy
our
logging
stack
and
for
those
of
you
who
haven't
deployed
our
longing
stack,
our
logging
stack
is
actually
a
meta
operator.
It's
an
operator
that
launches
three
other
operators
right,
and
so
I
got
into
this
kind
of
limbo
where
it
was
trying
to
apply
a
manifest
for
a
crd
that
doesn't
exist
yet
right.
B
So
just
because
you
create
the
crd,
it
takes
a
while
for
the
cluster
to
to
see
that
crd
right
and
I
think
the
crd
and
the
cr
get
applied
at
the
same
time.
You'll
get
an
error,
and
that's
just
just
in
general,
just
in
kubernetes
in
general,
and
so
I
basically
came
up-
and
this
is
another
shout
out
to
the
canadians
right.
They
gave
me
this
idea
where
basically,
I'm
doing
an
oc
weight
right
for
the
crd
to
exist,
essentially
right.
B
B
That
that
resource
exists
right
so
even
in
a
even
in
kubernetes,
you
run
into
race
conditions
right.
So
I'm
basically
saying
until
this
this
crd
exists.
I'm
just
going
to
wait
right
and
then
I'll
sleep.
You
know
seconds
or
whatever,
and
I
just
keep
just
still
waiting
and
then,
when
it's
done
cool,
it's
done.
This
job
goes
away.
Well,
it
doesn't
go
away,
sticks
around
so
I
can
see
the
logs
but
six
runs
and
then
seven
will
run
right,
which
seven,
I
think
it's
this
yes.
B
So
then
I
can
create
my
cr
right,
so
this
step
six
waits
for
the
crd
to
get
defined
in
the
job
step.
Seven
says:
okay
now
create
the
custom
resource
against
this.
The
create
the
upper
and
right
from
this
operator,
and
so-
and
I
used
to
have
this
because
so
this
here,
here's
another
another
cool
option.
This
is
a
sync
option.
Some
of
the
little
known
sync
options
right.
So
since
we're
talking
about
sync
waves,
argo
does
a
kind
of
sanity
check.
B
B
So
so
I
say:
hey
you
know
when
you
do
your
dry
run,
skip
dry
run
on
missing
resource
when
you
do
dry,
run
kind
of
just
skip
kind
of
ignore
this,
so
you're
kind
of
telling
it
I
kind
of
know
what
I'm
doing
ignore
it
for
now
right,
because
I'm
going
to
fix
it
later
right,
I'll
fix
it
like
they
say
I'll
fix
it
in
post-production,
I'll
fix
it
with
sync
waves
right
I'll
I'll
write
a
job
for
it.
B
So
that's
another
thing
you
need
to
look
out
for
is
argo,
does
kind
of
like
a
dry
run
of
everything
before
does
something,
and
you
can
actually
with
this
annotation,
you
can
make
this
a
little
bigger
with
this
annotation
here
you
can,
you
can
tell
it
to
skip
that
on
dryer
run
so
just
took
another
another
another
tip.
B
B
I
saw
this
kubecon
talk
given
by.
I
forget
the
name
of
the
gentleman
he's
from
from
google.
He
says
I
want
everything
to
be
a
crd
like
pods,
like
I.
B
So
I
I
want
that
to
be
a
crd
and
I
like
that's,
I
think
that's
very
interesting
at
that
point.
Kubernetes
just
becomes
an
api
like
an
object,
management
kind
of
tool.
I
don't
know
kubernetes
kind
of
just
then
will
like
evolve
into.
Who
knows
what
right,
like
you
just
have
kubernetes
and
you
have
a
bunch
of
crds
that
do
maybe
don't
even
manage
pods.
It's
just
gonna,
be
so
that
that'll
be
interesting
to
to
to
have
that
to
have
that
unfold
here,
so
so
cool.
B
So
last
ten
minutes
here
I
don't
have
anything
else.
I
don't
know
if
there's
been,
I
know
you've
been
oh.
A
A
So
I'm
looking
at,
I
guess
the
I
guess
the
fedora
community
is
trying
to
move
over
to
a
matrix
based
tool
and
it
looks
like
it's
called
element,
so
yeah
I'll
have
to
check
this
out.
B
That
reminds
me
of
of
this.
Yes,.
B
B
Yeah
well,
yeah,
look
you
did.
You
did
put
it
in
chat,
so
I'm
sorry.
I
missed
that.
But
you
did.
You
said
where's
that
xkcd
I'll
put
that
in
chat
so
like
these
other
guys
can
laugh
at
it.
But.
B
Yeah,
well,
it's
it's
just
funny
how
we
I
like
this,
my
git
commit
shout
out
to
the
to
the
canadian
guys
my
game
commit
is
gerald's,
always
right,
so
that's
kind
of
like
an
inside
joke.
B
Gerald's
a
an
architect
in
in
in
our
in
our
canada
team,
and
we
have
this
inside
joke,
they
always
say
well.
What
does
gerald
think
and
like?
Well,
I
mean
you
know
nine
times
out
of
ten
whatever
he
says
I
go,
oh
yeah.
Maybe
I
should
have
done
it
that
way.
So
it's
kind
of
like
an
inside
joke.
B
Yeah,
so
it's
just
funny
how
we,
you
know
we
as
engineers
we
as
architects,
we're
always
trying
to
push
like
our
client
base
like
we're,
trying
to
push
them
forward.
Push
them
forward
like
try,
try
the
new
and
better
thing,
but
yet
us
we
stick
to
irc.
So
it's
just
kind
of
weird:
it's.
B
No,
like
you
know,
I'm
I'm
holding
on
to
this
irc
I
mean
I
do
it
too,
like
I've
been
trying
to
use
vs
code
but
like
I
just
have
them
set
up
so
like
just
the
way
I
like
it.
You.
B
Yeah,
that's
it.
It
is
really
nice
and
the
vs
code
does
have
some
of
these
plugins
where
it's
like.
Oh
that's,
that's
neat.
So
I've
been
trying
to
use
it
right
like
I've
been,
but
I've
been
a
vin
guy
like
most
of
my
career
and.
B
B
Yeah,
do
your
best
yeah,
you
can
ask
for
yeah.
So
just
just
some
of
the
things
cause
I
use
buffers
in
vim
like
I'm,
probably
like
a.
A
B
People
right
like
I,
I
have
a
buffer.
I
loaded
it.
You
know
loaded
in
memory.
I
can
jump
into
another
file
open
that
buffer,
like
some
of
those
things
just
it's
hard
to
replicate
right
with
the
plugins
right
with
the
vs
code,
plugins
like.
B
And
they
do
plug-ins
mostly
work
but
yeah.
So
there's
more.
A
B
So
I'm
even
so
my
only
point
is
I've
even
guilty
of
like
holding
on
to
technologies
right
like
irc,
though
yeah.
B
A
B
Yeah,
so
so
I'm
trying
to
think
some
of
those.
So
some
of
the
use
cases
that
that
I
thought
of
are
the
ones
that
that
I
presented
right.
That's
like
clean
up.
You
know
tagging
certain
images,
I'm
trying
to
think
of
doing
something
with
storage.
I
would
imagine
doing
some
storage
cleanup
or
like
mounting
some
file
systems.
B
A
B
B
Yeah
yeah
definitely
yeah
you
can.
You
can,
and
you
know,
throw
up
tagging
images
right
like
working
with
images,
I
think
is,
is
a
lot.
You
can
do
a
lot
with
image
maintenance
image
maintenance
on
the
for
your
images
on
a
precinct
phase.
B
Right
so,
like
you
have
like
a
version
yeah
database
migration
is
like
probably
the
most
clear-cut
yeah,
so,
like
migrations
is
probably
the
most
clear-cut
way
of
doing
doing
this
right
and
also
especially,
if
you're,
using
like
an
external
load
balancer,
you
can
do
like,
like
blue-green
sort.
B
I
mean
our
argo
does
have
a
maybe
this
is
something
we
can.
B
We
can
talk
about
in
a
future
episode
with
argo,
yeah,
doing
blue
green
with
argo.
They
have
argo
rollouts
right
that
dudes
nice.
They
do
some
of
this
stuff
right.
I
do
some
of
this
blue
green
for
you,
but
I
can
see
blue
green
happening
also
with
like
a
pre-sync
phase.
Right
like
you,
you
know
deploy
a
new
version
right.
You
connect
to
your
load,
balancer.
You
know
you
make
you
know,
or
you
know
you.
B
You
apply
some
some
sort
of
virtual
service
rules
or
something
like
if
you're
using
istio
or
some
sort
of
service
mesh.
I
can
see
like
trying
to
do
blue
green
with
pre
and
pro
sync
right.
So.
A
Yeah
someone
says
they're
using
everything
is
latest
for
them
and
it's
like.
B
B
Yeah
yeah,
so
actually
yeah
image
management
is
definitely
like.
Tagging
images
like
production
and
stuff
like
that
right
so
is
like
one
of
the
biggest
things
right.
I
can
see
right
because,
like
in
development,
you'll
probably
have
it
tagged
as
dev
right
and
then
in
production
you'll.
Have
it
tagged
as
prod.
B
They're
the
same,
sometimes
they
differ,
but
you
know
you
you
want
to
make
sure,
because
you
know
that's
part
of
my
maintenance.
The
way
I
put
up
the
maintenance
page,
I
just
tag
my
my
production
image.
B
B
Well,
and
that
that's
actually
glad
glad
you
brought
up
helm's
an
episode,
I'm
gonna,
do
it
in
a
later
show
how
to
work
with
argo,
because
here,
before
we've
just
been
working
with
static,
yaml.
B
You
can
actually
use
helm
in
the
background
for
some
of
this
stuff,
so
there's
in
some
helm,
charts
you're
able
to
supply
which
version
of
the
image
you
want
to
use.
So
that's.
B
A
B
A
Go
meetings
right,
yeah,
a
meeting
meeting
meeting
everywhere
so
yeah
thanks
for
thanks
for
joining
us
today,
everybody
thanks
for
your
engagement
in
chat,
we
always
enjoy.
You
know,
hearing
your
stories
and
everything,
and
we
look
forward
to
seeing
you
next
time
here
on
the
get
ops
happy
hour.