SlideShare a Scribd company logo
1 of 102
Download to read offline
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”

More Related Content

What's hot

The Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps ToolkitThe Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps ToolkitWeaveworks
 
Free GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOpsFree GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOpsWeaveworks
 
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...
GitOps - Modern best practices for high velocity app dev using cloud native t...Weaveworks
 
GitOps is the best modern practice for CD with Kubernetes
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 KubernetesVolodymyr Shynkar
 
CD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdfCD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdfKnoldus Inc.
 
The journey to GitOps
The journey to GitOpsThe journey to GitOps
The journey to GitOpsNicola Baldi
 
GitOps: Git come unica fonte di verità per applicazioni e infrastruttura
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 infrastrutturasparkfabrik
 
CI:CD in Lightspeed with kubernetes and argo cd
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 cdBilly Yuen
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
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
 
GitOps 101 Presentation.pdf
GitOps 101 Presentation.pdfGitOps 101 Presentation.pdf
GitOps 101 Presentation.pdfssuser31375f
 
Devops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabDevops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabFilipa Lacerda
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDSunnyvale
 
Designing a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd productsDesigning a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd productsJulian Mazzitelli
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub ActionsKnoldus Inc.
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub ActionsBo-Yi Wu
 
CI with Gitlab & Docker
CI with Gitlab & DockerCI with Gitlab & Docker
CI with Gitlab & DockerJoerg Henning
 

What's hot (20)

The Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps ToolkitThe Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps Toolkit
 
GitOps w/argocd
GitOps w/argocdGitOps w/argocd
GitOps w/argocd
 
Free GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOpsFree GitOps Workshop + Intro to Kubernetes & GitOps
Free GitOps Workshop + Intro to Kubernetes & GitOps
 
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...
GitOps - Modern best practices for high velocity app dev using cloud native t...
 
GitOps with Gitkube
GitOps with GitkubeGitOps with Gitkube
GitOps with Gitkube
 
GitOps is the best modern practice for CD with Kubernetes
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
 
CD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdfCD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdf
 
The journey to GitOps
The journey to GitOpsThe journey to GitOps
The journey to GitOps
 
GitOps: Git come unica fonte di verità per applicazioni e infrastruttura
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
 
CI:CD in Lightspeed with kubernetes and argo cd
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
 
Openshift argo cd_v1_2
Openshift argo cd_v1_2Openshift argo cd_v1_2
Openshift argo cd_v1_2
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
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
 
GitOps 101 Presentation.pdf
GitOps 101 Presentation.pdfGitOps 101 Presentation.pdf
GitOps 101 Presentation.pdf
 
Devops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabDevops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at Gitlab
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
 
Designing a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd productsDesigning a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd products
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
CI/CD with GitHub Actions
CI/CD with GitHub ActionsCI/CD with GitHub Actions
CI/CD with GitHub Actions
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
CI with Gitlab & Docker
CI with Gitlab & DockerCI with Gitlab & Docker
CI with Gitlab & Docker
 

Similar to Gitops Hands On

Speeding up your team with GitOps
Speeding up your team with GitOpsSpeeding up your team with GitOps
Speeding up your team with GitOpsBrice Fernandes
 
Webinar: End to End Security & Operations with Chainguard and Weave GitOps
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
 
gitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfsaraichiba2
 
Free GitOps Workshop
Free GitOps WorkshopFree GitOps Workshop
Free GitOps WorkshopWeaveworks
 
Continuous Lifecycle London 2018 Event Keynote
Continuous Lifecycle London 2018 Event KeynoteContinuous Lifecycle London 2018 Event Keynote
Continuous Lifecycle London 2018 Event KeynoteWeaveworks
 
Cloud Native Apps with GitOps
Cloud Native Apps with GitOps Cloud Native Apps with GitOps
Cloud Native Apps with GitOps Weaveworks
 
DevOps - Interview Question.pdf
DevOps - Interview Question.pdfDevOps - Interview Question.pdf
DevOps - Interview Question.pdfMinhTrnNht7
 
Grails beginners workshop
Grails beginners workshopGrails beginners workshop
Grails beginners workshopJacobAae
 
Delivering Quality at Speed with GitOps
Delivering Quality at Speed with GitOpsDelivering Quality at Speed with GitOps
Delivering Quality at Speed with GitOpsWeaveworks
 
GitOps Testing in Kubernetes with Flux and Testkube.pdf
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.pdfWeaveworks
 
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
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 YouWeaveworks
 
Free GitOps Workshop (with Intro to Kubernetes & GitOps)
Free GitOps Workshop (with Intro to Kubernetes & GitOps)Free GitOps Workshop (with Intro to Kubernetes & GitOps)
Free GitOps Workshop (with Intro to Kubernetes & GitOps)Weaveworks
 
Git for work groups ironhack talk
Git for work groups ironhack talkGit for work groups ironhack talk
Git for work groups ironhack talkTiago Ameller
 
Git essential training & sharing self
Git essential training & sharing selfGit essential training & sharing self
Git essential training & sharing selfChen-Tien Tsai
 
Introduction to git and Github
Introduction to git and GithubIntroduction to git and Github
Introduction to git and GithubWycliff1
 
Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
 Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ... Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...Weaveworks
 
Git Tutorial A Comprehensive Guide for Beginners.pdf
Git Tutorial A Comprehensive Guide for Beginners.pdfGit Tutorial A Comprehensive Guide for Beginners.pdf
Git Tutorial A Comprehensive Guide for Beginners.pdfuzair
 

Similar to Gitops Hands On (20)

Speeding up your team with GitOps
Speeding up your team with GitOpsSpeeding up your team with GitOps
Speeding up your team with GitOps
 
Webinar: End to End Security & Operations with Chainguard and Weave GitOps
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
 
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
 
gitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdf
 
Free GitOps Workshop
Free GitOps WorkshopFree GitOps Workshop
Free GitOps Workshop
 
Continuous Lifecycle London 2018 Event Keynote
Continuous Lifecycle London 2018 Event KeynoteContinuous Lifecycle London 2018 Event Keynote
Continuous Lifecycle London 2018 Event Keynote
 
Cloud Native Apps with GitOps
Cloud Native Apps with GitOps Cloud Native Apps with GitOps
Cloud Native Apps with GitOps
 
DevOps - Interview Question.pdf
DevOps - Interview Question.pdfDevOps - Interview Question.pdf
DevOps - Interview Question.pdf
 
Grails beginners workshop
Grails beginners workshopGrails beginners workshop
Grails beginners workshop
 
Delivering Quality at Speed with GitOps
Delivering Quality at Speed with GitOpsDelivering Quality at Speed with GitOps
Delivering Quality at Speed with GitOps
 
GitOps Testing in Kubernetes with Flux and Testkube.pdf
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
 
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
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
 
Free GitOps Workshop (with Intro to Kubernetes & GitOps)
Free GitOps Workshop (with Intro to Kubernetes & GitOps)Free GitOps Workshop (with Intro to Kubernetes & GitOps)
Free GitOps Workshop (with Intro to Kubernetes & GitOps)
 
Git for work groups ironhack talk
Git for work groups ironhack talkGit for work groups ironhack talk
Git for work groups ironhack talk
 
Git essential training & sharing self
Git essential training & sharing selfGit essential training & sharing self
Git essential training & sharing self
 
Introduction to git and Github
Introduction to git and GithubIntroduction to git and Github
Introduction to git and Github
 
DCVCS using GIT
DCVCS using GITDCVCS using GIT
DCVCS using GIT
 
Introduction to git & github
Introduction to git & githubIntroduction to git & github
Introduction to git & github
 
Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
 Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ... Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
Cloud Native Transformation (Alexis Richardson) - Continuous Lifecycle 2018 ...
 
Git Tutorial A Comprehensive Guide for Beginners.pdf
Git Tutorial A Comprehensive Guide for Beginners.pdfGit Tutorial A Comprehensive Guide for Beginners.pdf
Git Tutorial A Comprehensive Guide for Beginners.pdf
 

Recently uploaded

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 

Recently uploaded (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 

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”