INFRASTRUCTURE
CHANGES & DEPLOYMENTS
IN ONE FLOW
September 2020
With ArgoCD & Helm
ABOUT ME
• Software developer for 10+ years in various teams
• 6 years at Riskified
• 2 years as a cloud platform developer
• Design of the developers experience
• Leads the DevOps Culture
• Argo community member
AGENDA
Deployment vs Infrastructure
ArgoCD - Change process
Helm - Learning curve
ArgoCD & Helm
The unified process
Knowledge sharing
DEPLOYMENT VS INFRASTRUCTURE
DEPLOY INFRASTRUCTURE
Owner Developers Operations
DEPLOY INFRASTRUCTURE
Owner Developers Operations
Process GitOps ClickOps, ScriptOps
Versions Supported -
Rollback Supported ?
DEPLOY INFRASTRUCTURE
Owner Developers Operations
Process GitOps ClickOps, ScriptOps
Versions Supported -
Rollback Supported ?
Trusted process Untrusted process
FROM
UNTRUSTED
TO TRUSTED
PROCESS
Better Process
● Understand the changes
● Monitor
● Versioned
● Rollback
Knowledge
● Reduce the learning curve
● Provide resources for advance learning
● A sharing process (training, paring)
Approved
Customer
places an order
Payment
gateway
authorization
Riskified’s
fraud review
Capture funds
& fulfill order
Chargeback
Declined
Riskified develops powerful machine-learning algorithms
that recognize legitimate customers
Recover Auth Rate
Optimization
Bank
Relationships
DecoAccount
Protection
Chargeback
Guarantee
Representment
Fraud ReviewCheckout Authorization Capture/DeclineLogin
END-TO-END SOLUTION
AGENDA
Deployment vs Infrastructure
ArgoCD - Change process
Helm - Learning curve
ArgoCD & Helm
The unified process
Knowledge sharing
ARGOCD
• GitOps continuous
delivery tool
• CNCF Incubating
Project
• Controller / git watcher
• Supports multiple
templating tools
User-declared
desired state
K8s clusterArgoCD
Git repo
$ helm
template
Templated
yamls Compare
$ kubectl
apply
Observe
DEMO
ARGOCD IN DEPTH
Application CRD
Application metadata
01 02 Project CRD
Group applications
ArgoCD instances
One / Multiple
03 04 App of Apps
Design Pattern
01
APPLICATION
CRD
02
PROJECT CRD
• Group applications
• RBAC
• One per namesapce
Application
Project = Namespace
02
PROJECT CRD
• Group applications
• RBAC
• One per namesapce
Application
Project = Namespace
03
ARGOCD
INSTANCES
Resource overhead
Isolations - different
environments
One Per Cluster
Different application per cluster
Easier permissions management
One For All / One Per Environment
04
App of Apps
• Declarative application
and projects
• GitOps to the whole
cluster
• One health status for
the whole cluster
AGENDA
Deployment vs Infrastructure
ArgoCD - Change process
Helm - Learning curve
ArgoCD & Helm
The unified process
Knowledge sharing
LEARNING CURVE - THE PROBLEM
LEARNING
CURVE -
THE PROBLEM
Deployment
● Liveness
● Readiness
● Strategy
● Node affinity
Service
Service account
Secret
Volume
PDB
HPA
VPA
Ingress
...
Helm is a package manager
● Template yaml
● Manage applications
CNCF graduated project
helm.sh
HELM
HELM CHART
Template YAMLs
Values files
HELM
ABSTRACT
CHART
Internal helm charts
● Template the common use case
● Reduce the learning curve
● Clear extension point
● Platform API
HELM ABSTRACT CHART
HELM ABSTRACT CHART
Mandatory value
HELM ABSTRACT CHART
Mandatory value
Default value
HELM ABSTRACT CHART - USE CASE
chart.yaml
HELM ABSTRACT CHART - USE CASE
chart.yaml
Require our chart
HELM ABSTRACT CHART - USE CASE
values.yamlchart.yaml
HELM ABSTRACT CHART - USE CASE
values.yaml Extensiblechart.yaml
A MORE
COMPLICATED
EXAMPLE
Vault is a secrete manger
● Environment variables
● Files
● In-cluster service with admission
webhook
HashiCorp
vaultproject.io
VAULT - A MORE COMPLICATED EXAMPLE
VAULT - A MORE COMPLICATED EXAMPLE
For The user - 2 lines
VAULT - A MORE COMPLICATED EXAMPLE
values.yaml
• Semantic versioning
• Change Log
1 . 2 . 3
● One every quarter
● Change Instructions
ABSTRACT
CHARTS IS THE
PLATFORM API
Major
incompatible API changes
Minor
New features
Patch
Bug fix
• Semantic versioning
• Change Log
01 New objects should be added only when absolutely
necessary by more than one consumer
02 Variable name should be in camelCase
ABSTRACT
CHARTS IS THE
PLATFORM API
• Guidelines
AGENDA
Deployment vs Infrastructure
ArgoCD - Change process
Helm - Learning curve
ArgoCD & Helm
The unified process
Knowledge sharing
One application for all the application
APP OF APPS
One application for all the application
APPS OF APPS
GLOBAL
PARAMETERS
• Template cluster /
environment
parameters
• Examples: cluster
name, security groups
application.yaml
values-staging.yamlIn the abstract Helm chart
AGENDA
Deployment vs Infrastructure
ArgoCD - Change process
Helm - Learning curve
ArgoCD & Helm
The unified process
Knowledge sharing
THE UNIFIED PROCESS
CI
Merge code
to main
CI
Trigger Build & Publish
Force Sync02
Pull
View Diff &
Sync
02
Apply
Unified
Process
03
Update the
tag value
Infrastructure
Change
Merge code
to main
01
01
AGENDA
Deployment vs Infrastructure
ArgoCD - Change process
Helm - Learning curve
ArgoCD & Helm
The unified process
Knowledge sharing
Knowledge
sharing process
Workshop
Create and deploy a new
service
101 Sessions
First training for all teams
Communication
New features and releases,
and how developers can use
them
Paring
1X1 time. Answer questions,
help make the application
cloud native
Slack
Create community with
dedicated channels
DEPLOYMENT VS INFRASTRUCTURE
DEPLOY INFRASTRUCTURE
Owner Developers Developers
Process GitOps GitOps
Versions Supported Supported
Rollback Supported Supported
Trusted process Trusted process
Thank you
for your time!
Omer Kahani
Twitter: @OmerKahani
Email: omer@riskified.com
DevOps World (September 23)
https://tinyurl.com/yxl2xwpx
Find out more
https://medium.com/@kahaniomer
https://medium.com/riskified-technology

A Unified Process for Code and Configuration in Kubernetes