Cloud Native CI/CD with
“GitOps”
DevOpsDays Copenhagen 2019
Kasper Nissen, Cloud Architect/SRE @lunarway
kni@lunarway.com @phennex
$ whoami
Kasper Nissen (@phennex)
● Cloud Architect / Site Reliability Engineer @lunarway
● Organizer and Co-Founder at Cloud Native Aarhus
● Founder of Cloud Native Nordics Slack Community
● Blogger at kubecloud.io
@phennex
What is Lunar Way?
Our vision is to rethink the interaction with
money.
Live in Sweden, Norway, and Denmark
3 Kubernetes clusters in AWS
80+ microservices in production
@phennex
Continuous integration is a development practice that
requires developers to integrate code into a shared
repository several times a day. Each check-in is then
verified by an automated build, allowing teams to detect
problems early.
- - -
Continuous delivery is the ability to get changes of all
types - including new features, configuration changes,
bug fixes and experiments - into production, or into the
hands of users, safely and quickly in a sustainable way.
@phennex
This sounds like two
different concerns?
… aren’t we all about decomposing, into smaller
components with single responsibility?
@phennex
?
CI/CD
do we trust this guy with
everything related to our
pipeline, and basically with
access to all our
environments?
CI CD
Separating CI/CD into separate
concerns as per the definition
The monolith Single Responsibility
(microservices?)
@phennex
GitOps is an extension of infrastructure as code that
can be applied to Kubernetes workloads.
Configuration of applications is stored in Git that can be
deployed automatically from Git and left untouched by
manual operator intervention.
The term was coined by Alexis Richardson and the great folks at weaveworks
Introducing GitOps
@phennex
CI/CD at Lunar Way (before)
@phennex
Problems?
● Long change lead time - because of multiple builds
● Building images for each branch is not feasible
● Jenkins has R/W access to the Kubernetes cluster
● No audit trail of deployments
● Branching hell
git checkout dev && git pull origin dev && git merge master && git push origin dev
&& git checkout staging && git pull origin staging && git merge dev && git push
origin staging && git checkout prod && git pull origin prod && git merge staging &&
git push origin prod && git checkout master
“Awesome” promote command to all environments
@phennex
Problems?
● No “source of truth” of what is running making it hard in a disaster recovery situation
@phennex
Separation of concerns
@phennex
Cots vs custom
@phennex
The responsibility of Continuous Integration is to ensure quality by executing test,
checks, and scans of the code before handing it over.
Continuous Integration
shuttle run build
shuttle run push tag=tag https://github.com/lunarway/shuttle
Minimize groovy code to allow for easy migration
@phennex
A build artifact is a JSON-blob that follows all builds
from the CI pipeline. It contains all relevant information
about the build.
Build Artifacts
● Shuttle plan information
● CI info and links
● Stage information
○ Test information
○ Security Scan information
@phennex
The responsibility of Release Manager is to control promotion of artifacts between
environments, and enable developers/operators to easily operate their services.
Release Manager
● Listen for changes in a git repository, e.g. in /builds
● Move files between folders (environments)
● Report state changes back to clients
@phennex
The responsibility of Release Operator is to ensure that the environment is
synchronized with the configuration repository
Release Operator
● Weaveworks flux (OSS)
● Listens for changes and applies kubernetes yaml in
the cluster it is deployed
@phennex
The responsibility of the Release Daemon is to communicate changes in the
environment back to the release manager. Both successful releases and failures.
Release Daemon
● Listens for changes in the kubernetes environment it is
running in
● Reports the state back, and extract relevant information
@phennex
The goal is to provide our developers with the information and
tooling they need. Minimizing the feedback loop.
Developer Workflow
Slack Integration CLI
@phennex
Adopting a modified GitOps pattern has improved a lot of the previous pain points
Wrapping up, what did we get?
● Faster lead time to production
● Promotion of artifacts instead of code (reproducible builds)
● Current state of the cluster is always stored in git and can easily be
recreated
@phennex
Continued
Wrapping up, what did we get?
● Minimizing the need for developer access to the environments (minimize
the risk of exposing credentials and human errors)
● CI no longer have access to the cluster, minimizing the surface of attack
● Audit trail of changes
@phennex
Thank You!we are hiring https://jobs.lunarway.com/

More Related Content

PPSX
GitOps and Kubernetes: a radical idea
PDF
GitOps - Operation By Pull Request
PDF
Docker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
PDF
5 Habits of High-Velocity Teams Using Kubernetes
PDF
Kubecon seattle 2018 workshop slides
PDF
Openshift argo cd_v1_2
PDF
GitOps Toolkit (Cloud Native Nordics Tech Talk)
PDF
KubeCon EU 2016 Keynote: Kubernetes State of the Union
GitOps and Kubernetes: a radical idea
GitOps - Operation By Pull Request
Docker New York City: From GitOps to a scalable CI/CD Pattern for Kubernetes
5 Habits of High-Velocity Teams Using Kubernetes
Kubecon seattle 2018 workshop slides
Openshift argo cd_v1_2
GitOps Toolkit (Cloud Native Nordics Tech Talk)
KubeCon EU 2016 Keynote: Kubernetes State of the Union

What's hot (20)

PDF
GitOps for Helm Users by Scott Rigby
PDF
GitOps A/B testing with Istio and Helm
PDF
Continuous Lifecycle London 2018 Event Keynote
PPTX
Cloud Native Apps with GitOps
PDF
DevOps Fest 2020. Дмитрий Кудрявцев. Реализация GitOps на Kubernetes. ArgoCD
PDF
How to Become DevOps
PDF
The Power of GitOps with Flux & GitOps Toolkit
PPTX
Kubernetes Helm: Why It Matters
PPTX
Cloud native fundamentals
PDF
Intro to the CNCF Research User Group
PPTX
Continuous Delivery to Kubernetes Using Helm
PPTX
Docker Enterprise Workshop - Technical
PPTX
GitOps - Modern best practices for high velocity app dev using cloud native t...
PPTX
Why observability matters - now and in the future (w/guest Grafana)
PPTX
Devoxx 2015 - Web Application Development using Grails and Docker
PDF
Should developers care about dockerfiles and kubernetes resources
PPTX
Cloud foundry: The Platform for Forging Cloud Native Applications
PDF
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
PPTX
Continuous Delivery the Hard Way with Kubernetes
PDF
Intro to GKE and app deployment with Kubernetes
GitOps for Helm Users by Scott Rigby
GitOps A/B testing with Istio and Helm
Continuous Lifecycle London 2018 Event Keynote
Cloud Native Apps with GitOps
DevOps Fest 2020. Дмитрий Кудрявцев. Реализация GitOps на Kubernetes. ArgoCD
How to Become DevOps
The Power of GitOps with Flux & GitOps Toolkit
Kubernetes Helm: Why It Matters
Cloud native fundamentals
Intro to the CNCF Research User Group
Continuous Delivery to Kubernetes Using Helm
Docker Enterprise Workshop - Technical
GitOps - Modern best practices for high velocity app dev using cloud native t...
Why observability matters - now and in the future (w/guest Grafana)
Devoxx 2015 - Web Application Development using Grails and Docker
Should developers care about dockerfiles and kubernetes resources
Cloud foundry: The Platform for Forging Cloud Native Applications
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
Continuous Delivery the Hard Way with Kubernetes
Intro to GKE and app deployment with Kubernetes
Ad

Similar to Cloud Native CI/CD with GitOps (20)

PPTX
Jenkins as a Service
PDF
Tekton_ArgoCD-_KCD_Taiwan-cicd-openshift
PDF
PuppetConf 2016: Using Puppet with Kubernetes and OpenShift – Diane Mueller, ...
PDF
Free GitOps Workshop
PDF
Achieving Full Stack DevOps at Colonial Life
PPTX
CI/CD Development in Kubernetes - Skaffold
PDF
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
PDF
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
PDF
Lunar Way and the Cloud Native "stack"
PDF
Robust Network Security and Observability with GitOps and Cilium
PDF
Continuous Delivery With Containers
PDF
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
PDF
Migrating from Self-Managed Kubernetes on EC2 to a GitOps Enabled EKS
PDF
給 RD 的 Kubernetes 初體驗
PDF
Orchestrating VM & Container Deployments
DOCX
kishore_Nokia
PPTX
Devops CI-CD pipeline with Containers
PDF
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PPTX
Containers: DevOp Enablers of Technical Solutions
PPTX
[Devopsdays2021] Roll Your Product with Kaizen Culture
Jenkins as a Service
Tekton_ArgoCD-_KCD_Taiwan-cicd-openshift
PuppetConf 2016: Using Puppet with Kubernetes and OpenShift – Diane Mueller, ...
Free GitOps Workshop
Achieving Full Stack DevOps at Colonial Life
CI/CD Development in Kubernetes - Skaffold
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Lunar Way and the Cloud Native "stack"
Robust Network Security and Observability with GitOps and Cilium
Continuous Delivery With Containers
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
Migrating from Self-Managed Kubernetes on EC2 to a GitOps Enabled EKS
給 RD 的 Kubernetes 初體驗
Orchestrating VM & Container Deployments
kishore_Nokia
Devops CI-CD pipeline with Containers
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
Containers: DevOp Enablers of Technical Solutions
[Devopsdays2021] Roll Your Product with Kaizen Culture
Ad

More from Kasper Nissen (8)

PDF
Two Years In Production With Kubernetes - An Experience Report
PDF
Cloud native aarhus #5
PDF
Kubernetes Kops - Automation Night
PDF
Container orchestration on_aws
PDF
Monitoring with prometheus
PDF
IT Minds Mindblown Networking Event 2016
PDF
Google Cloud Platform and Kubernetes
PDF
Let's tak Productivity (Let's talk Apple #4)
Two Years In Production With Kubernetes - An Experience Report
Cloud native aarhus #5
Kubernetes Kops - Automation Night
Container orchestration on_aws
Monitoring with prometheus
IT Minds Mindblown Networking Event 2016
Google Cloud Platform and Kubernetes
Let's tak Productivity (Let's talk Apple #4)

Recently uploaded (20)

PDF
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
PDF
giants, standing on the shoulders of - by Daniel Stenberg
PPTX
Module 1 Introduction to Web Programming .pptx
PPTX
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
PDF
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
PDF
Dell Pro Micro: Speed customer interactions, patient processing, and learning...
PPTX
Internet of Everything -Basic concepts details
PDF
Electrocardiogram sequences data analytics and classification using unsupervi...
PDF
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
PDF
Connector Corner: Transform Unstructured Documents with Agentic Automation
PDF
Early detection and classification of bone marrow changes in lumbar vertebrae...
PDF
Decision Optimization - From Theory to Practice
PPTX
Build automations faster and more reliably with UiPath ScreenPlay
PDF
Human Computer Interaction Miterm Lesson
PDF
Altius execution marketplace concept.pdf
PDF
The AI Revolution in Customer Service - 2025
PDF
Co-training pseudo-labeling for text classification with support vector machi...
PDF
Data Virtualization in Action: Scaling APIs and Apps with FME
PDF
NewMind AI Weekly Chronicles – August ’25 Week IV
PDF
Transform-Quality-Engineering-with-AI-A-60-Day-Blueprint-for-Digital-Success.pdf
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
giants, standing on the shoulders of - by Daniel Stenberg
Module 1 Introduction to Web Programming .pptx
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
Dell Pro Micro: Speed customer interactions, patient processing, and learning...
Internet of Everything -Basic concepts details
Electrocardiogram sequences data analytics and classification using unsupervi...
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
Connector Corner: Transform Unstructured Documents with Agentic Automation
Early detection and classification of bone marrow changes in lumbar vertebrae...
Decision Optimization - From Theory to Practice
Build automations faster and more reliably with UiPath ScreenPlay
Human Computer Interaction Miterm Lesson
Altius execution marketplace concept.pdf
The AI Revolution in Customer Service - 2025
Co-training pseudo-labeling for text classification with support vector machi...
Data Virtualization in Action: Scaling APIs and Apps with FME
NewMind AI Weekly Chronicles – August ’25 Week IV
Transform-Quality-Engineering-with-AI-A-60-Day-Blueprint-for-Digital-Success.pdf

Cloud Native CI/CD with GitOps

  • 1. Cloud Native CI/CD with “GitOps” DevOpsDays Copenhagen 2019 Kasper Nissen, Cloud Architect/SRE @lunarway [email protected] @phennex
  • 2. $ whoami Kasper Nissen (@phennex) ● Cloud Architect / Site Reliability Engineer @lunarway ● Organizer and Co-Founder at Cloud Native Aarhus ● Founder of Cloud Native Nordics Slack Community ● Blogger at kubecloud.io @phennex
  • 3. What is Lunar Way? Our vision is to rethink the interaction with money. Live in Sweden, Norway, and Denmark 3 Kubernetes clusters in AWS 80+ microservices in production @phennex
  • 4. Continuous integration is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. - - - Continuous delivery is the ability to get changes of all types - including new features, configuration changes, bug fixes and experiments - into production, or into the hands of users, safely and quickly in a sustainable way. @phennex
  • 5. This sounds like two different concerns? … aren’t we all about decomposing, into smaller components with single responsibility? @phennex
  • 6. ? CI/CD do we trust this guy with everything related to our pipeline, and basically with access to all our environments? CI CD Separating CI/CD into separate concerns as per the definition The monolith Single Responsibility (microservices?) @phennex
  • 7. GitOps is an extension of infrastructure as code that can be applied to Kubernetes workloads. Configuration of applications is stored in Git that can be deployed automatically from Git and left untouched by manual operator intervention. The term was coined by Alexis Richardson and the great folks at weaveworks Introducing GitOps @phennex
  • 8. CI/CD at Lunar Way (before) @phennex
  • 9. Problems? ● Long change lead time - because of multiple builds ● Building images for each branch is not feasible ● Jenkins has R/W access to the Kubernetes cluster ● No audit trail of deployments ● Branching hell git checkout dev && git pull origin dev && git merge master && git push origin dev && git checkout staging && git pull origin staging && git merge dev && git push origin staging && git checkout prod && git pull origin prod && git merge staging && git push origin prod && git checkout master “Awesome” promote command to all environments @phennex
  • 10. Problems? ● No “source of truth” of what is running making it hard in a disaster recovery situation @phennex
  • 13. The responsibility of Continuous Integration is to ensure quality by executing test, checks, and scans of the code before handing it over. Continuous Integration shuttle run build shuttle run push tag=tag https://github.com/lunarway/shuttle Minimize groovy code to allow for easy migration @phennex
  • 14. A build artifact is a JSON-blob that follows all builds from the CI pipeline. It contains all relevant information about the build. Build Artifacts ● Shuttle plan information ● CI info and links ● Stage information ○ Test information ○ Security Scan information @phennex
  • 15. The responsibility of Release Manager is to control promotion of artifacts between environments, and enable developers/operators to easily operate their services. Release Manager ● Listen for changes in a git repository, e.g. in /builds ● Move files between folders (environments) ● Report state changes back to clients @phennex
  • 16. The responsibility of Release Operator is to ensure that the environment is synchronized with the configuration repository Release Operator ● Weaveworks flux (OSS) ● Listens for changes and applies kubernetes yaml in the cluster it is deployed @phennex
  • 17. The responsibility of the Release Daemon is to communicate changes in the environment back to the release manager. Both successful releases and failures. Release Daemon ● Listens for changes in the kubernetes environment it is running in ● Reports the state back, and extract relevant information @phennex
  • 18. The goal is to provide our developers with the information and tooling they need. Minimizing the feedback loop. Developer Workflow Slack Integration CLI @phennex
  • 19. Adopting a modified GitOps pattern has improved a lot of the previous pain points Wrapping up, what did we get? ● Faster lead time to production ● Promotion of artifacts instead of code (reproducible builds) ● Current state of the cluster is always stored in git and can easily be recreated @phennex
  • 20. Continued Wrapping up, what did we get? ● Minimizing the need for developer access to the environments (minimize the risk of exposing credentials and human errors) ● CI no longer have access to the cluster, minimizing the surface of attack ● Audit trail of changes @phennex Thank You!we are hiring https://jobs.lunarway.com/