Gitops Hands On

Brice Fernandes
Brice FernandesWeaveworks
Hands on Gitops
January 2019 – Cloud Native Wales
Brice Fernandes – @fractallambda – brice@weave.works
1
2
I’m Brice
I work for Weaveworks.
You can find Weaveworks at https://www.weave.works
or @weaveworks
Team at Weaveworks is behind the GitOps model
You can find me online at @fractallambda
3
Login to your cluster – Weave Cloud & C9
1. Go to tinyurl.com/cnw-gitops-2019
2. Add your name and email
3. You can log into your cluster using the username and password
Q: Why this talk?
4
Q: Why this talk?
5
A: New ideas. Inspire change.
What’s this Gitops business anyway?
6
7
GitOps is...
8
GitOps is...
An operation model
9
GitOps is...
An operation model
Derived from CS and operation knowledge
10
GitOps is...
An operation model
Derived from CS and operation knowledge
Technology agnostic (name notwithstanding)
11
GitOps is...
An operation model
Derived from CS and operation knowledge
Technology agnostic (name notwithstanding)
A set of principles (Why instead of How)
12
GitOps is...
An operation model
Derived from CS and operation knowledge
Technology agnostic (name notwithstanding)
A set of principles (Why instead of How)
Although
Weaveworks
can help
with how
13
GitOps is...
An operation model
Derived from CS and operation knowledge
Technology agnostic (name notwithstanding)
A set of principles (Why instead of How)
A way to speed up your team
Principles of GitOps
14
15
1 The entire system is described declaratively.
16
1 The entire system is described declaratively.
Beyond code, data ⇒
Implementation independent
Easy to abstract in simple ways
Easy to validate for correctness
Easy to generate & manipulate from code
17
1 The entire system is described declaratively.
Beyond code, data ⇒
Implementation independent
Easy to abstract in simple ways
Easy to validate for correctness
Easy to generate & manipulate from code
18
How is that different from
Infrastructure as code?
19
How is that different from
Infrastructure as code?
It’s about consistency in the
failure case.
20
It’s about consistency in the
failure case.
When imperative systems
fail, the system ends up in
an unknown, inconsistent
state.
21
fail, the system ends up in
an unknown, inconsistent
state.
Declarative changes let you
think of changes as
transactions.
22
Declarative changes let you
think of changes as
transactions.
This is a very good thing.
23
The canonical desired system state is versioned
(with Git)
2
24
The canonical desired system state is versioned
(with Git)
Canonical Source of Truth (DRY)
With declarative definition, trivialises rollbacks
Excellent security guarantees for auditing
Sophisticated approval processes (& existing workflows)
Great Software ↔ Human collaboration point
2
25
Changes to the desired state are
automatically applied to the system
3
26
Changes to the desired state are
automatically applied to the system
Significant velocity gains
Privileged operators don’t cross security boundaries
Separates What and How.
3
27
Software agents ensure correctness
and alert on divergence
4
28
Software agents ensure correctness
and alert on divergence
4
Continuously checking that desired state is met
System can self heal
Recovers from errors without intervention (PEBKAC)
It’s the control loop for your operations
29
1 The entire system is described declaratively.
2 The canonical desired system state is versioned
(with Git)
3 Changes to the desired state are
automatically applied to the system
4 Software agents ensure correctness
and alert on divergence
Gitops is Functional Reactive Programming…
...for your infrastructure.
Like React, but for servers and applications.
What should be GitOps’ed?
31
What should be GitOps’ed?
32
I’m o r
so y
33
Canonical
source of truth
People
Software
Agents
Software
Agents
34
?
Dashboards
Alerts
Playbook
Kubernetes Manifests
Application configuration
Provisioning scripts
35
Application checklists
Recording Rules
Sealed Secrets
36
Getting started with your environment
37
38
Login to your cluster – Weave Cloud & C9
1. Go to tinyurl.com/cnw-gitops-2019
2. Add your name and email
3. You can log into your cluster using the username and password
39
40
Application code
41
Cluster shell
Your Cluster
42
pod
Icon by Freepik from www.flaticon.com
Your Cluster
43
pod
Cloud Source
Repositories Container
Builder
Cloud
Registry
GitOps hands-on 1/10Kick the tires on your cluster 💻
1. Start with a simple command:
➤ kubectl version
2. Look at what’s running on the cluster with
Weave Cloud Explore
“DevOps Console”
Tooling for deployment,
visualisation and
observability
Weave Cloud
45
46
Weave Cloud Explore
47
Weave Cloud Monitor
GitOps hands-on 1/10
Ask Kubernetes what’s running on the cluster:
➤ kubectl get pods --all-namespaces
Query Kubernetes 💻
Gitops in practice
49
GitOps hands-on 4/10
[Only do this step if you didn’t do it in your cluster earlier]
Create the namespace we will use for this exercise:
kubectl create namespace dev
Shortly, the Deploy agent will notice this change, and sync the Deployment and
Service files.
Watch for this happening in Weave Cloud or via:
watch kubectl -n dev get all
Gitops Hands On 1/12 💻
GitOps hands-on 5/10
We’re going to make a code change and see it flow through CI, then
deploy that change.
Call the version endpoint on the service to see what is running:
curl podinfo.dev:9898/version
Gitops Hands On 2/12 💻
GitOps hands-on 7/10
In the editor, open podinfo/pkg/version/version.go, increment the
version number and save:
var VERSION = "0.3.1"
Commit your changes and push to master:
cd /workspace/podinfo
git pull
git add pkg/version/version.go
git commit -m "release v0.3.1 to dev"
git push
Gitops Hands On 3/12 💻
GitOps hands-on 2/10
The CI pipeline will create an image tagged the same as the git commit
Git said something like [master 89b8396]; the tag will be like
master-89b8396
Check by listing image tags (replace user with your username):
gcloud container images list-tags gcr.io/dx-training/USER-podinfo
USER should be of the form “training-user-<number>”.
Gitops Hands On 4/12 💻
GitOps hands-on 3/10
Navigate in the editor to workspace/cluster/un-workshop/dev and open
podinfo-dep.yaml.
Where it says image:
replace quay.io/stefanprodan/podinfo with gcr.io/dx-training/USER-podinfo
replace the tag 0.3.0 with your tag master-TAG
Save the file and commit your changes and push to master:
cd /workspace/cluster/un-workshop/dev
git add podinfo-dep.yaml
git commit -m "my first deploy"
git push
Gitops Hands On 5/12 💻
NO : Her co g u w ar n
GitOps hands-on 5/10
Call the version endpoint on the service to see if it changed:
curl podinfo.dev:9898/version
Gitops Hands On 6/12 💻
Editing the YAML file was tedious.
Let’s automate it!
56
GitOps hands-on 6/10
Let’s automate by adding an annotation to your deployment file:
annotations:
flux.weave.works/automated: 'true'
flux.weave.works/tag.podinfo: glob:*
Create a commit (In the control repository) and push it up to the remote to
trigger automation:
cd /worskpace/cluster/un-workshop/dev/
git add podinfo-dep.yaml
git commit -m "automate releases of podinfo"
git push
Gitops Hands On 7/12 💻
GitOps hands-on 7/10
Open podinfo/pkg/version/version.go, increment the version number
again, and save:
var VERSION = "0.3.2"
Commit your changes and push to master:
cd /workspace/podinfo
git add pkg/version.version.go
git commit -m "release v0.3.2"
git push
Gitops Hands On 8/12 💻
GitOps hands-on 8/10
Watch for the CI/CD to upgrade the app to 0.3.2:
watch curl podinfo.dev:9898/version
Gitops Hands On 9/12 💻
GitOps hands-on 8/10
Suppose we don’t like the latest version: we want to roll back.
1. Deautomate by reverting your automate commit
git revert <sha of automation commit>
2. Set the version back to the previous version
3. Check again which version is running:
watch curl podinfo.dev:9898/version
Gitops Hands On 10/12 💻
GitOps hands-on 7/10
We can flow the version number through the pipeline with a git tag, to
show more meaningful versions
Create and push a git tag:
cd /workspace/podinfo
git tag 0.3.2
git push origin 0.3.2
This will trigger another CI build, and when that is finished you should
have an image tagged 0.3.2
Gitops Hands On 11/12 💻
GitOps hands-on 7/10
All done :)
Gitops Hands On 12/12 💻
63
● Having separate pipelines for CI and CD enables better security
● It’s also easier to deal with if a deployment goes wrong
● We built a few versions of a simple app, using a demo CI pipeline
● Deployed those versions to Kubernetes using Weave Cloud
● Automated the deployment
● Deployments, rollback and lock are all done via git
● Git is our single source of truth.
Recap: GitOps CI/CD
64
Git v a
We v o
Where to find out more
65
Search for “Weaveworks GitOps” in your favourite search engine
Take a look at our opensource work on https://github.com/weaveworks
Questions?
Weaveworks
@weaveworks
https://weave.works
Brice Fernandes
@fractallambda
brice@weave.works
Supplemental slides
66
67
Declare
Implement
Monitor /
Observe
Modify
68
Declare
ImplementModify
Continuous
Deployment
Default
dashboards
Automated by
software
agents
Monitor /
Observe
69
Declare
ImplementModify
Continuous
Deployment
Default
dashboards
Automated by
software
agents
Monitor /
Observe
Software
making
commits
70
Declare
ImplementModify
Continuous
Deployment
Default
dashboards
Automated by
software
agents
Monitor /
Observe
Safe and
reversible
changes
71
Declare
ImplementModify
Continuous
Deployment
Default
dashboards
Automated by
software
agents
Monitor /
Observe
Automated,
templated
dashboards
72
Feedback loop.
This is what matters.
GitOps at Weaveworks
73
74
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
*“stress-reduced”
75
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
*“stress-reduced”
76
Dep n a
se c i h
Flu
77
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
*“stress-reduced”
78
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
*“stress-reduced”
79
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
*“stress-reduced”
80
Com n
c u t
81
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
*“stress-reduced”
82
83
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
*“stress-reduced”
84
85
86
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
*“stress-reduced”
87
88
89
90
91
92
93
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
*“stress-reduced”
94
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
*“stress-reduced”
95
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
⇒
*“stress-reduced”
96
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
⇒
< 30 minute total cluster recovery
97
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
⇒
< 30 minute total cluster recovery
Dozens of changes per day
with a very small team
98
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
⇒
< 30 minute total cluster recovery
Dozens of changes per day
with a very small team
Incredibly fast
regression response
99
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
⇒
< 30 minute total cluster recovery
Dozens of changes per day
with a very small team
Incredibly fast
regression response
Permissive approach
to production access
10
0
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
⇒
< 30 minute total cluster recovery
Dozens of changes per day
with a very small team
Incredibly fast
regression response
Permissive approach
to production access
Excellent developer experience
10
1
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
⇒
< 30 minute total cluster recovery
Dozens of changes per day
with a very small team
Incredibly fast
regression response
Permissive approach
to production access
Excellent developer experience
Stress-free on-call*
10
2
Kubernetes operator (Flux, Open Source)
Multiple clusters (staging and prod)
CD into staging
Promotion from staging to prod
Kubernetes
Automated diff tools
(*diff operators, Open Source)
Dashboard definitions in Git
(Grafanalib, Open Source)
Alert definitions in git
Read-only access to production
for all developers
Gated, PR-driven changes to
production
⇒
< 30 minute total cluster recovery
Dozens of changes per day
with a very small team
Incredibly fast
regression response
Permissive approach
to production access
Excellent developer experience
Stress-free on-call*
*“stress-reduced”
1 of 102

Recommended

GitOps w/argocd by
GitOps w/argocdGitOps w/argocd
GitOps w/argocdJean-Philippe Bélanger
303 views9 slides
Meetup 23 - 03 - Application Delivery on K8S with GitOps by
Meetup 23 - 03 - Application Delivery on K8S with GitOpsMeetup 23 - 03 - Application Delivery on K8S with GitOps
Meetup 23 - 03 - Application Delivery on K8S with GitOpsVietnam Open Infrastructure User Group
461 views30 slides
GitOps with ArgoCD by
GitOps with ArgoCDGitOps with ArgoCD
GitOps with ArgoCDCloudOps2005
3.3K views9 slides
The Power of GitOps with Flux & GitOps Toolkit by
The Power of GitOps with Flux & GitOps ToolkitThe Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps ToolkitWeaveworks
478 views10 slides
Gitops: the kubernetes way by
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes waysparkfabrik
2.1K views44 slides
Gitops: a new paradigm for software defined operations by
Gitops: a new paradigm for software defined operationsGitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operationsMariano Cunietti
593 views38 slides

More Related Content

What's hot

ArgoCD Meetup PPT final.pdf by
ArgoCD Meetup PPT final.pdfArgoCD Meetup PPT final.pdf
ArgoCD Meetup PPT final.pdfamanmakwana3
650 views14 slides
Gitlab, GitOps & ArgoCD by
Gitlab, GitOps & ArgoCDGitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCDHaggai Philip Zagury
325 views37 slides
Speeding up your team with GitOps by
Speeding up your team with GitOpsSpeeding up your team with GitOps
Speeding up your team with GitOpsBrice Fernandes
300 views88 slides
GitOps with Gitkube by
GitOps with GitkubeGitOps with Gitkube
GitOps with GitkubeTirumarai Selvan
246 views11 slides
GitOps and ArgoCD by
GitOps and ArgoCDGitOps and ArgoCD
GitOps and ArgoCDOmar Fathy
165 views25 slides
The journey to GitOps by
The journey to GitOpsThe journey to GitOps
The journey to GitOpsNicola Baldi
327 views22 slides

What's hot(20)

ArgoCD Meetup PPT final.pdf by amanmakwana3
ArgoCD Meetup PPT final.pdfArgoCD Meetup PPT final.pdf
ArgoCD Meetup PPT final.pdf
amanmakwana3650 views
Speeding up your team with GitOps by Brice Fernandes
Speeding up your team with GitOpsSpeeding up your team with GitOps
Speeding up your team with GitOps
Brice Fernandes300 views
GitOps and ArgoCD by Omar Fathy
GitOps and ArgoCDGitOps and ArgoCD
GitOps and ArgoCD
Omar Fathy165 views
The journey to GitOps by Nicola Baldi
The journey to GitOpsThe journey to GitOps
The journey to GitOps
Nicola Baldi327 views
GitOps: Git come unica fonte di verità per applicazioni e infrastruttura by sparkfabrik
GitOps: Git come unica fonte di verità per applicazioni e infrastrutturaGitOps: Git come unica fonte di verità per applicazioni e infrastruttura
GitOps: Git come unica fonte di verità per applicazioni e infrastruttura
sparkfabrik533 views
CD using ArgoCD(KnolX).pdf by Knoldus Inc.
CD using ArgoCD(KnolX).pdfCD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdf
Knoldus Inc.1.1K views
GitOps Toolkit (Cloud Native Nordics Tech Talk) by Weaveworks
GitOps Toolkit (Cloud Native Nordics Tech Talk)GitOps Toolkit (Cloud Native Nordics Tech Talk)
GitOps Toolkit (Cloud Native Nordics Tech Talk)
Weaveworks1.7K views
Cloud Native Apps with GitOps by Weaveworks
Cloud Native Apps with GitOps Cloud Native Apps with GitOps
Cloud Native Apps with GitOps
Weaveworks1.9K views
Free GitOps Workshop + Intro to Kubernetes & GitOps by Weaveworks
Free GitOps Workshop + Intro to Kubernetes & GitOpsFree GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOps
Weaveworks177 views
GitOps for Helm Users by Scott Rigby by Weaveworks
GitOps for Helm Users by Scott RigbyGitOps for Helm Users by Scott Rigby
GitOps for Helm Users by Scott Rigby
Weaveworks199 views
Intro to GitOps & Flux.pdf by Weaveworks
Intro to GitOps & Flux.pdfIntro to GitOps & Flux.pdf
Intro to GitOps & Flux.pdf
Weaveworks323 views
CI:CD in Lightspeed with kubernetes and argo cd by Billy Yuen
CI:CD in Lightspeed with kubernetes and argo cdCI:CD in Lightspeed with kubernetes and argo cd
CI:CD in Lightspeed with kubernetes and argo cd
Billy Yuen1.6K views
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk by Red Hat Developers
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech TalkArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
Red Hat Developers8.6K views
Continuous Lifecycle London 2018 Event Keynote by Weaveworks
Continuous Lifecycle London 2018 Event KeynoteContinuous Lifecycle London 2018 Event Keynote
Continuous Lifecycle London 2018 Event Keynote
Weaveworks4.1K views
Delivering Quality at Speed with GitOps by Weaveworks
Delivering Quality at Speed with GitOpsDelivering Quality at Speed with GitOps
Delivering Quality at Speed with GitOps
Weaveworks1.3K views
GitOps is the best modern practice for CD with Kubernetes by Volodymyr Shynkar
GitOps is the best modern practice for CD with KubernetesGitOps is the best modern practice for CD with Kubernetes
GitOps is the best modern practice for CD with Kubernetes

Similar to Gitops Hands On

Webinar: End to End Security & Operations with Chainguard and Weave GitOps by
Webinar: End to End Security & Operations with Chainguard and Weave GitOpsWebinar: End to End Security & Operations with Chainguard and Weave GitOps
Webinar: End to End Security & Operations with Chainguard and Weave GitOpsWeaveworks
50 views35 slides
Git & GitLab by
Git & GitLabGit & GitLab
Git & GitLabGaurav Wable
858 views34 slides
gitopsthekubernetesway-201026090439.pdf by
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfsaraichiba2
3 views44 slides
DevOps - Interview Question.pdf by
DevOps - Interview Question.pdfDevOps - Interview Question.pdf
DevOps - Interview Question.pdfMinhTrnNht7
105 views71 slides
Gitlab ci e kubernetes, build test and deploy your projects like a pro by
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a prosparkfabrik
3.2K views46 slides
Grails beginners workshop by
Grails beginners workshopGrails beginners workshop
Grails beginners workshopJacobAae
369 views68 slides

Similar to Gitops Hands On(20)

Webinar: End to End Security & Operations with Chainguard and Weave GitOps by Weaveworks
Webinar: End to End Security & Operations with Chainguard and Weave GitOpsWebinar: End to End Security & Operations with Chainguard and Weave GitOps
Webinar: End to End Security & Operations with Chainguard and Weave GitOps
Weaveworks50 views
gitopsthekubernetesway-201026090439.pdf by saraichiba2
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdf
saraichiba23 views
DevOps - Interview Question.pdf by MinhTrnNht7
DevOps - Interview Question.pdfDevOps - Interview Question.pdf
DevOps - Interview Question.pdf
MinhTrnNht7105 views
Gitlab ci e kubernetes, build test and deploy your projects like a pro by sparkfabrik
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
sparkfabrik3.2K views
Grails beginners workshop by JacobAae
Grails beginners workshopGrails beginners workshop
Grails beginners workshop
JacobAae369 views
GitOps - Modern best practices for high velocity app dev using cloud native t... by Weaveworks
GitOps - Modern best practices for high velocity app dev using cloud native t...GitOps - Modern best practices for high velocity app dev using cloud native t...
GitOps - Modern best practices for high velocity app dev using cloud native t...
Weaveworks12.1K views
GitOps Testing in Kubernetes with Flux and Testkube.pdf by Weaveworks
GitOps Testing in Kubernetes with Flux and Testkube.pdfGitOps Testing in Kubernetes with Flux and Testkube.pdf
GitOps Testing in Kubernetes with Flux and Testkube.pdf
Weaveworks120 views
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You by Weaveworks
Webinar: Capabilities, Confidence and Community – What Flux GA Means for YouWebinar: Capabilities, Confidence and Community – What Flux GA Means for You
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
Weaveworks7 views
Git for work groups ironhack talk by Tiago Ameller
Git for work groups ironhack talkGit for work groups ironhack talk
Git for work groups ironhack talk
Tiago Ameller299 views
Git essential training & sharing self by Chen-Tien Tsai
Git essential training & sharing selfGit essential training & sharing self
Git essential training & sharing self
Chen-Tien Tsai3.5K views
Introduction to git and Github by Wycliff1
Introduction to git and GithubIntroduction to git and Github
Introduction to git and Github
Wycliff1125 views
Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ... by Weaveworks
 Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ... Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
Weaveworks782 views
Introduction to Git for Network Engineers (Lab Guide) by Joel W. King
Introduction to Git for Network Engineers (Lab Guide)Introduction to Git for Network Engineers (Lab Guide)
Introduction to Git for Network Engineers (Lab Guide)
Joel W. King346 views
Using Git with Drupal by Ryan Cross
Using Git with DrupalUsing Git with Drupal
Using Git with Drupal
Ryan Cross1.3K views
DX, Guardrails, Golden Paths & Policy in Kubernetes by Weaveworks
DX, Guardrails, Golden Paths & Policy in KubernetesDX, Guardrails, Golden Paths & Policy in Kubernetes
DX, Guardrails, Golden Paths & Policy in Kubernetes
Weaveworks134 views

Recently uploaded

Voice Logger - Telephony Integration Solution at Aegis by
Voice Logger - Telephony Integration Solution at AegisVoice Logger - Telephony Integration Solution at Aegis
Voice Logger - Telephony Integration Solution at AegisNirmal Sharma
17 views1 slide
Java Platform Approach 1.0 - Picnic Meetup by
Java Platform Approach 1.0 - Picnic MeetupJava Platform Approach 1.0 - Picnic Meetup
Java Platform Approach 1.0 - Picnic MeetupRick Ossendrijver
25 views39 slides
PharoJS - Zürich Smalltalk Group Meetup November 2023 by
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023Noury Bouraqadi
120 views17 slides
ChatGPT and AI for Web Developers by
ChatGPT and AI for Web DevelopersChatGPT and AI for Web Developers
ChatGPT and AI for Web DevelopersMaximiliano Firtman
181 views82 slides
SAP Automation Using Bar Code and FIORI.pdf by
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdfVirendra Rai, PMP
19 views38 slides
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Safe Software
225 views86 slides

Recently uploaded(20)

Voice Logger - Telephony Integration Solution at Aegis by Nirmal Sharma
Voice Logger - Telephony Integration Solution at AegisVoice Logger - Telephony Integration Solution at Aegis
Voice Logger - Telephony Integration Solution at Aegis
Nirmal Sharma17 views
PharoJS - Zürich Smalltalk Group Meetup November 2023 by Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi120 views
SAP Automation Using Bar Code and FIORI.pdf by Virendra Rai, PMP
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdf
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software225 views
Understanding GenAI/LLM and What is Google Offering - Felix Goh by NUS-ISS
Understanding GenAI/LLM and What is Google Offering - Felix GohUnderstanding GenAI/LLM and What is Google Offering - Felix Goh
Understanding GenAI/LLM and What is Google Offering - Felix Goh
NUS-ISS41 views
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor... by Vadym Kazulkin
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
Vadym Kazulkin75 views
The Importance of Cybersecurity for Digital Transformation by NUS-ISS
The Importance of Cybersecurity for Digital TransformationThe Importance of Cybersecurity for Digital Transformation
The Importance of Cybersecurity for Digital Transformation
NUS-ISS27 views
Black and White Modern Science Presentation.pptx by maryamkhalid2916
Black and White Modern Science Presentation.pptxBlack and White Modern Science Presentation.pptx
Black and White Modern Science Presentation.pptx
maryamkhalid291614 views
Transcript: The Details of Description Techniques tips and tangents on altern... by BookNet Canada
Transcript: The Details of Description Techniques tips and tangents on altern...Transcript: The Details of Description Techniques tips and tangents on altern...
Transcript: The Details of Description Techniques tips and tangents on altern...
BookNet Canada130 views
Spesifikasi Lengkap ASUS Vivobook Go 14 by Dot Semarang
Spesifikasi Lengkap ASUS Vivobook Go 14Spesifikasi Lengkap ASUS Vivobook Go 14
Spesifikasi Lengkap ASUS Vivobook Go 14
Dot Semarang35 views
Web Dev - 1 PPT.pdf by gdsczhcet
Web Dev - 1 PPT.pdfWeb Dev - 1 PPT.pdf
Web Dev - 1 PPT.pdf
gdsczhcet55 views
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen... by NUS-ISS
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
NUS-ISS28 views
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze by NUS-ISS
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng TszeDigital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze
NUS-ISS19 views

Gitops Hands On

  • 1. Hands on Gitops January 2019 – Cloud Native Wales Brice Fernandes – @fractallambda – brice@weave.works 1
  • 2. 2 I’m Brice I work for Weaveworks. You can find Weaveworks at https://www.weave.works or @weaveworks Team at Weaveworks is behind the GitOps model You can find me online at @fractallambda
  • 3. 3 Login to your cluster – Weave Cloud & C9 1. Go to tinyurl.com/cnw-gitops-2019 2. Add your name and email 3. You can log into your cluster using the username and password
  • 4. Q: Why this talk? 4
  • 5. Q: Why this talk? 5 A: New ideas. Inspire change.
  • 6. What’s this Gitops business anyway? 6
  • 9. 9 GitOps is... An operation model Derived from CS and operation knowledge
  • 10. 10 GitOps is... An operation model Derived from CS and operation knowledge Technology agnostic (name notwithstanding)
  • 11. 11 GitOps is... An operation model Derived from CS and operation knowledge Technology agnostic (name notwithstanding) A set of principles (Why instead of How)
  • 12. 12 GitOps is... An operation model Derived from CS and operation knowledge Technology agnostic (name notwithstanding) A set of principles (Why instead of How) Although Weaveworks can help with how
  • 13. 13 GitOps is... An operation model Derived from CS and operation knowledge Technology agnostic (name notwithstanding) A set of principles (Why instead of How) A way to speed up your team
  • 15. 15 1 The entire system is described declaratively.
  • 16. 16 1 The entire system is described declaratively. Beyond code, data ⇒ Implementation independent Easy to abstract in simple ways Easy to validate for correctness Easy to generate & manipulate from code
  • 17. 17 1 The entire system is described declaratively. Beyond code, data ⇒ Implementation independent Easy to abstract in simple ways Easy to validate for correctness Easy to generate & manipulate from code
  • 18. 18 How is that different from Infrastructure as code?
  • 19. 19 How is that different from Infrastructure as code? It’s about consistency in the failure case.
  • 20. 20 It’s about consistency in the failure case. When imperative systems fail, the system ends up in an unknown, inconsistent state.
  • 21. 21 fail, the system ends up in an unknown, inconsistent state. Declarative changes let you think of changes as transactions.
  • 22. 22 Declarative changes let you think of changes as transactions. This is a very good thing.
  • 23. 23 The canonical desired system state is versioned (with Git) 2
  • 24. 24 The canonical desired system state is versioned (with Git) Canonical Source of Truth (DRY) With declarative definition, trivialises rollbacks Excellent security guarantees for auditing Sophisticated approval processes (& existing workflows) Great Software ↔ Human collaboration point 2
  • 25. 25 Changes to the desired state are automatically applied to the system 3
  • 26. 26 Changes to the desired state are automatically applied to the system Significant velocity gains Privileged operators don’t cross security boundaries Separates What and How. 3
  • 27. 27 Software agents ensure correctness and alert on divergence 4
  • 28. 28 Software agents ensure correctness and alert on divergence 4 Continuously checking that desired state is met System can self heal Recovers from errors without intervention (PEBKAC) It’s the control loop for your operations
  • 29. 29 1 The entire system is described declaratively. 2 The canonical desired system state is versioned (with Git) 3 Changes to the desired state are automatically applied to the system 4 Software agents ensure correctness and alert on divergence
  • 30. Gitops is Functional Reactive Programming… ...for your infrastructure. Like React, but for servers and applications.
  • 31. What should be GitOps’ed? 31
  • 32. What should be GitOps’ed? 32 I’m o r so y
  • 34. 34 ?
  • 35. Dashboards Alerts Playbook Kubernetes Manifests Application configuration Provisioning scripts 35 Application checklists Recording Rules Sealed Secrets
  • 36. 36
  • 37. Getting started with your environment 37
  • 38. 38 Login to your cluster – Weave Cloud & C9 1. Go to tinyurl.com/cnw-gitops-2019 2. Add your name and email 3. You can log into your cluster using the username and password
  • 39. 39
  • 42. Your Cluster 42 pod Icon by Freepik from www.flaticon.com
  • 43. Your Cluster 43 pod Cloud Source Repositories Container Builder Cloud Registry
  • 44. GitOps hands-on 1/10Kick the tires on your cluster 💻 1. Start with a simple command: ➤ kubectl version 2. Look at what’s running on the cluster with Weave Cloud Explore
  • 45. “DevOps Console” Tooling for deployment, visualisation and observability Weave Cloud 45
  • 48. GitOps hands-on 1/10 Ask Kubernetes what’s running on the cluster: ➤ kubectl get pods --all-namespaces Query Kubernetes 💻
  • 50. GitOps hands-on 4/10 [Only do this step if you didn’t do it in your cluster earlier] Create the namespace we will use for this exercise: kubectl create namespace dev Shortly, the Deploy agent will notice this change, and sync the Deployment and Service files. Watch for this happening in Weave Cloud or via: watch kubectl -n dev get all Gitops Hands On 1/12 💻
  • 51. GitOps hands-on 5/10 We’re going to make a code change and see it flow through CI, then deploy that change. Call the version endpoint on the service to see what is running: curl podinfo.dev:9898/version Gitops Hands On 2/12 💻
  • 52. GitOps hands-on 7/10 In the editor, open podinfo/pkg/version/version.go, increment the version number and save: var VERSION = "0.3.1" Commit your changes and push to master: cd /workspace/podinfo git pull git add pkg/version/version.go git commit -m "release v0.3.1 to dev" git push Gitops Hands On 3/12 💻
  • 53. GitOps hands-on 2/10 The CI pipeline will create an image tagged the same as the git commit Git said something like [master 89b8396]; the tag will be like master-89b8396 Check by listing image tags (replace user with your username): gcloud container images list-tags gcr.io/dx-training/USER-podinfo USER should be of the form “training-user-<number>”. Gitops Hands On 4/12 💻
  • 54. GitOps hands-on 3/10 Navigate in the editor to workspace/cluster/un-workshop/dev and open podinfo-dep.yaml. Where it says image: replace quay.io/stefanprodan/podinfo with gcr.io/dx-training/USER-podinfo replace the tag 0.3.0 with your tag master-TAG Save the file and commit your changes and push to master: cd /workspace/cluster/un-workshop/dev git add podinfo-dep.yaml git commit -m "my first deploy" git push Gitops Hands On 5/12 💻 NO : Her co g u w ar n
  • 55. GitOps hands-on 5/10 Call the version endpoint on the service to see if it changed: curl podinfo.dev:9898/version Gitops Hands On 6/12 💻
  • 56. Editing the YAML file was tedious. Let’s automate it! 56
  • 57. GitOps hands-on 6/10 Let’s automate by adding an annotation to your deployment file: annotations: flux.weave.works/automated: 'true' flux.weave.works/tag.podinfo: glob:* Create a commit (In the control repository) and push it up to the remote to trigger automation: cd /worskpace/cluster/un-workshop/dev/ git add podinfo-dep.yaml git commit -m "automate releases of podinfo" git push Gitops Hands On 7/12 💻
  • 58. GitOps hands-on 7/10 Open podinfo/pkg/version/version.go, increment the version number again, and save: var VERSION = "0.3.2" Commit your changes and push to master: cd /workspace/podinfo git add pkg/version.version.go git commit -m "release v0.3.2" git push Gitops Hands On 8/12 💻
  • 59. GitOps hands-on 8/10 Watch for the CI/CD to upgrade the app to 0.3.2: watch curl podinfo.dev:9898/version Gitops Hands On 9/12 💻
  • 60. GitOps hands-on 8/10 Suppose we don’t like the latest version: we want to roll back. 1. Deautomate by reverting your automate commit git revert <sha of automation commit> 2. Set the version back to the previous version 3. Check again which version is running: watch curl podinfo.dev:9898/version Gitops Hands On 10/12 💻
  • 61. GitOps hands-on 7/10 We can flow the version number through the pipeline with a git tag, to show more meaningful versions Create and push a git tag: cd /workspace/podinfo git tag 0.3.2 git push origin 0.3.2 This will trigger another CI build, and when that is finished you should have an image tagged 0.3.2 Gitops Hands On 11/12 💻
  • 62. GitOps hands-on 7/10 All done :) Gitops Hands On 12/12 💻
  • 63. 63 ● Having separate pipelines for CI and CD enables better security ● It’s also easier to deal with if a deployment goes wrong ● We built a few versions of a simple app, using a demo CI pipeline ● Deployed those versions to Kubernetes using Weave Cloud ● Automated the deployment ● Deployments, rollback and lock are all done via git ● Git is our single source of truth. Recap: GitOps CI/CD
  • 65. Where to find out more 65 Search for “Weaveworks GitOps” in your favourite search engine Take a look at our opensource work on https://github.com/weaveworks Questions? Weaveworks @weaveworks https://weave.works Brice Fernandes @fractallambda brice@weave.works
  • 72. 72 Feedback loop. This is what matters.
  • 74. 74 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production *“stress-reduced”
  • 75. 75 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production *“stress-reduced”
  • 76. 76 Dep n a se c i h Flu
  • 77. 77 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production *“stress-reduced”
  • 78. 78 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production *“stress-reduced”
  • 79. 79 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production *“stress-reduced”
  • 81. 81 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production *“stress-reduced”
  • 82. 82
  • 83. 83 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production *“stress-reduced”
  • 84. 84
  • 85. 85
  • 86. 86 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production *“stress-reduced”
  • 87. 87
  • 88. 88
  • 89. 89
  • 90. 90
  • 91. 91
  • 92. 92
  • 93. 93 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production *“stress-reduced”
  • 94. 94 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production *“stress-reduced”
  • 95. 95 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production ⇒ *“stress-reduced”
  • 96. 96 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production ⇒ < 30 minute total cluster recovery
  • 97. 97 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production ⇒ < 30 minute total cluster recovery Dozens of changes per day with a very small team
  • 98. 98 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production ⇒ < 30 minute total cluster recovery Dozens of changes per day with a very small team Incredibly fast regression response
  • 99. 99 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production ⇒ < 30 minute total cluster recovery Dozens of changes per day with a very small team Incredibly fast regression response Permissive approach to production access
  • 100. 10 0 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production ⇒ < 30 minute total cluster recovery Dozens of changes per day with a very small team Incredibly fast regression response Permissive approach to production access Excellent developer experience
  • 101. 10 1 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production ⇒ < 30 minute total cluster recovery Dozens of changes per day with a very small team Incredibly fast regression response Permissive approach to production access Excellent developer experience Stress-free on-call*
  • 102. 10 2 Kubernetes operator (Flux, Open Source) Multiple clusters (staging and prod) CD into staging Promotion from staging to prod Kubernetes Automated diff tools (*diff operators, Open Source) Dashboard definitions in Git (Grafanalib, Open Source) Alert definitions in git Read-only access to production for all developers Gated, PR-driven changes to production ⇒ < 30 minute total cluster recovery Dozens of changes per day with a very small team Incredibly fast regression response Permissive approach to production access Excellent developer experience Stress-free on-call* *“stress-reduced”