SlideShare a Scribd company logo
GitOps ⚙
Recipes 🍱 With a
Spice 🌶 of
Security 🔐
Julian Mazzitelli - @thejmazz, CIO
BioBox(.io)
What is GitOps?
https://www.weave.works/blog/automate-kubernetes-with-gitops
https://www.weave.works/technologies/gitops/
How ArgoCD Performs the GitOps Reconciliation Loop
Monorepo or Polyrepo?
● Simplicity vs. Scale
● 🌶 Branch Protections and PR Approvals 🔜
Image Updater
● FluxCD has this built in
● argocd-image-updater is v0.12.2, works for
Kustomize and Helm
● Changes image tags in manifests when new
images are pushed
● Last resort: write your own git bot script! Easy to
replace values in yaml with dasel
Image Updates at BioBox
● Monorepo
● Pushes build images, write back from a bot into
Git, updating images in bx.application.yaml
● PRs with “env” label, kubectl apply current
bx.application.yaml for dev/QA environments
● Prod release updates/hotfixes are made manually
via PR on deployments repo
● Beyond images: other configuration values,
database migration targets
Branches or Directories?
(for environments - base vs dev vs staging vs prod)
Branches or Directories?
(for environments - base vs dev vs staging vs prod)
Directories.
Branches or Directories?
(for environments - base vs dev vs staging vs prod)
Directories. Nobody likes purple ketchup.
Branches or Directories?
(for environments - base vs dev vs staging vs prod)
Directories. Nobody likes purple ketchup, especially Git.
App of Apps vs. Giant Application
● Application: A single repo+path+revision watched by the
GitOps controller
● A single application may start off simple, but will grow
complex quickly!
○ Every resource must be checked each sync (though ArgoCD has an
option to only sync out-of-sync resources)
○ Overwhelming amount of resources in dashboard, combining
unrelated resources
○ Limits use of hooks (PreSync, PostSync)
● So, app-of-apps? “Deployments” repo consists purely of
Application.argoproj.io CRDs, who reference the
“templates” repo
● 🚧 Beware of multi-cluster complications
○ E.g. “templates” render out Applications
○ Central GitOps -> app-of-apps needs to have children destination
in-cluster (cannot mix ad-hoc K8s resources with children apps!)
○ GitOps-per-cluster -> Could mix applications with resources
Render Templates - Ahead of Time or Live?
● Should your repo contain un-rendered Helm/Kustomize/x templates, or should
you render everything into yaml?
Ahead Live
✅ No surprises, review resources as they will end
up
✅ 100% Declarative
❌ More copy-pasting, management of your
templates (Kustomize overlays can help, so much)
✅🌶 Ability to run thorough CI checks (kubelinter -
e.g. enforce no root, Security is 😁)
🔸 Can make monorepo tamable?
(name.resource.namespace.yaml)
✅ Better diffing (can sort keys deterministically)
✅ Ability to provide “last-mile” configurations (e.g.
requests, replicas)
❌ Only “semi” declarative
✅ Simpler, up and running faster
❌ Limited CI (unless you render out in CI?)
● Use both techniques! Depending on situation: semi-declarative on dev (+flexibility), full
declarative on prod. Platform, database fully declarative, stateless apps semi-declarative
🌶 Compliance
● Polyrepo
○ Assign specific teams to specific repositories
○ Can probably get away with branch protections requiring one review
○ ✅ Simpler change management controls
○ 🔐 Map repository teams directly to Kubernetes RBAC
○ ❌ Polyrepo management and complexity
● Monorepo
○ Developers and Operations belong to the same repo - how to avoid stepping on each other’s
toes?
○ Write a CI script that checks for reviews from specific individuals based on contents of change
■ No ingress, platform, storage class changes? Allow developer to approve, otherwise
operations must approve.
🔏 “Provide the list of users who can view/edit/delete the
in-scope production applications”
🚧 Multi-Git Source Applications!? 🔧
Thank you!
Julian Mazzitelli
@thejmazz
BioBox.io

More Related Content

Similar to GitOps ⚙️⎈ Recipes 🍱 With a Spice 🌶️ of Security 🔐

Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
Erich Beyrent
 
Serverless? How (not) to develop, deploy and operate serverless applications.
Serverless? How (not) to develop, deploy and operate serverless applications.Serverless? How (not) to develop, deploy and operate serverless applications.
Serverless? How (not) to develop, deploy and operate serverless applications.
gjdevos
 
Advanced Configuration Management with Config Split et al.
Advanced Configuration Management with Config Split et al.Advanced Configuration Management with Config Split et al.
Advanced Configuration Management with Config Split et al.
Nuvole
 
Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...
Aleksey Tkachenko
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Dmitri Shiryaev
 
Head first android apps dev tools
Head first android apps dev toolsHead first android apps dev tools
Head first android apps dev tools
Shaka Huang
 
There is something about serverless
There is something about serverlessThere is something about serverless
There is something about serverless
gjdevos
 
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
Oleg Shalygin
 
Next Level DevOps Implementation with GitOps
Next Level DevOps Implementation with GitOpsNext Level DevOps Implementation with GitOps
Next Level DevOps Implementation with GitOps
Ramadoni Ashudi
 
Merge hells - Feature Toggles to the rescue
Merge hells - Feature Toggles to the rescueMerge hells - Feature Toggles to the rescue
Merge hells - Feature Toggles to the rescue
Leena N
 
Serverless Computing with Google Cloud
Serverless Computing with Google CloudServerless Computing with Google Cloud
Serverless Computing with Google Cloud
wesley chun
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andev
Mike Nakhimovich
 
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
William Caban
 
Easy path to machine learning (Spring 2020)
Easy path to machine learning (Spring 2020)Easy path to machine learning (Spring 2020)
Easy path to machine learning (Spring 2020)
wesley chun
 
Drupal performance and scalability
Drupal performance and scalabilityDrupal performance and scalability
Drupal performance and scalability
Twinbit
 
Mete Atamel "Resilient microservices with kubernetes"
Mete Atamel "Resilient microservices with kubernetes"Mete Atamel "Resilient microservices with kubernetes"
Mete Atamel "Resilient microservices with kubernetes"
IT Event
 
Frontend microservices: architectures and solutions
Frontend microservices: architectures and solutionsFrontend microservices: architectures and solutions
Frontend microservices: architectures and solutions
Mikhail Kuznetcov
 
gitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdf
saraichiba2
 
Gitops: the kubernetes way
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes way
sparkfabrik
 
Trunk based development
Trunk based developmentTrunk based development
Trunk based development
go_oh
 

Similar to GitOps ⚙️⎈ Recipes 🍱 With a Spice 🌶️ of Security 🔐 (20)

Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
 
Serverless? How (not) to develop, deploy and operate serverless applications.
Serverless? How (not) to develop, deploy and operate serverless applications.Serverless? How (not) to develop, deploy and operate serverless applications.
Serverless? How (not) to develop, deploy and operate serverless applications.
 
Advanced Configuration Management with Config Split et al.
Advanced Configuration Management with Config Split et al.Advanced Configuration Management with Config Split et al.
Advanced Configuration Management with Config Split et al.
 
Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
 
Head first android apps dev tools
Head first android apps dev toolsHead first android apps dev tools
Head first android apps dev tools
 
There is something about serverless
There is something about serverlessThere is something about serverless
There is something about serverless
 
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
 
Next Level DevOps Implementation with GitOps
Next Level DevOps Implementation with GitOpsNext Level DevOps Implementation with GitOps
Next Level DevOps Implementation with GitOps
 
Merge hells - Feature Toggles to the rescue
Merge hells - Feature Toggles to the rescueMerge hells - Feature Toggles to the rescue
Merge hells - Feature Toggles to the rescue
 
Serverless Computing with Google Cloud
Serverless Computing with Google CloudServerless Computing with Google Cloud
Serverless Computing with Google Cloud
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andev
 
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
GitOps, Driving NGN Operations Teams 211127 #kcdgt 2021
 
Easy path to machine learning (Spring 2020)
Easy path to machine learning (Spring 2020)Easy path to machine learning (Spring 2020)
Easy path to machine learning (Spring 2020)
 
Drupal performance and scalability
Drupal performance and scalabilityDrupal performance and scalability
Drupal performance and scalability
 
Mete Atamel "Resilient microservices with kubernetes"
Mete Atamel "Resilient microservices with kubernetes"Mete Atamel "Resilient microservices with kubernetes"
Mete Atamel "Resilient microservices with kubernetes"
 
Frontend microservices: architectures and solutions
Frontend microservices: architectures and solutionsFrontend microservices: architectures and solutions
Frontend microservices: architectures and solutions
 
gitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdf
 
Gitops: the kubernetes way
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes way
 
Trunk based development
Trunk based developmentTrunk based development
Trunk based development
 

Recently uploaded

Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 

Recently uploaded (20)

Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 

GitOps ⚙️⎈ Recipes 🍱 With a Spice 🌶️ of Security 🔐

  • 1. GitOps ⚙ Recipes 🍱 With a Spice 🌶 of Security 🔐 Julian Mazzitelli - @thejmazz, CIO BioBox(.io)
  • 3. How ArgoCD Performs the GitOps Reconciliation Loop
  • 4. Monorepo or Polyrepo? ● Simplicity vs. Scale ● 🌶 Branch Protections and PR Approvals 🔜
  • 5. Image Updater ● FluxCD has this built in ● argocd-image-updater is v0.12.2, works for Kustomize and Helm ● Changes image tags in manifests when new images are pushed ● Last resort: write your own git bot script! Easy to replace values in yaml with dasel
  • 6. Image Updates at BioBox ● Monorepo ● Pushes build images, write back from a bot into Git, updating images in bx.application.yaml ● PRs with “env” label, kubectl apply current bx.application.yaml for dev/QA environments ● Prod release updates/hotfixes are made manually via PR on deployments repo ● Beyond images: other configuration values, database migration targets
  • 7. Branches or Directories? (for environments - base vs dev vs staging vs prod)
  • 8. Branches or Directories? (for environments - base vs dev vs staging vs prod) Directories.
  • 9. Branches or Directories? (for environments - base vs dev vs staging vs prod) Directories. Nobody likes purple ketchup.
  • 10. Branches or Directories? (for environments - base vs dev vs staging vs prod) Directories. Nobody likes purple ketchup, especially Git.
  • 11. App of Apps vs. Giant Application ● Application: A single repo+path+revision watched by the GitOps controller ● A single application may start off simple, but will grow complex quickly! ○ Every resource must be checked each sync (though ArgoCD has an option to only sync out-of-sync resources) ○ Overwhelming amount of resources in dashboard, combining unrelated resources ○ Limits use of hooks (PreSync, PostSync) ● So, app-of-apps? “Deployments” repo consists purely of Application.argoproj.io CRDs, who reference the “templates” repo ● 🚧 Beware of multi-cluster complications ○ E.g. “templates” render out Applications ○ Central GitOps -> app-of-apps needs to have children destination in-cluster (cannot mix ad-hoc K8s resources with children apps!) ○ GitOps-per-cluster -> Could mix applications with resources
  • 12. Render Templates - Ahead of Time or Live? ● Should your repo contain un-rendered Helm/Kustomize/x templates, or should you render everything into yaml? Ahead Live ✅ No surprises, review resources as they will end up ✅ 100% Declarative ❌ More copy-pasting, management of your templates (Kustomize overlays can help, so much) ✅🌶 Ability to run thorough CI checks (kubelinter - e.g. enforce no root, Security is 😁) 🔸 Can make monorepo tamable? (name.resource.namespace.yaml) ✅ Better diffing (can sort keys deterministically) ✅ Ability to provide “last-mile” configurations (e.g. requests, replicas) ❌ Only “semi” declarative ✅ Simpler, up and running faster ❌ Limited CI (unless you render out in CI?) ● Use both techniques! Depending on situation: semi-declarative on dev (+flexibility), full declarative on prod. Platform, database fully declarative, stateless apps semi-declarative
  • 13. 🌶 Compliance ● Polyrepo ○ Assign specific teams to specific repositories ○ Can probably get away with branch protections requiring one review ○ ✅ Simpler change management controls ○ 🔐 Map repository teams directly to Kubernetes RBAC ○ ❌ Polyrepo management and complexity ● Monorepo ○ Developers and Operations belong to the same repo - how to avoid stepping on each other’s toes? ○ Write a CI script that checks for reviews from specific individuals based on contents of change ■ No ingress, platform, storage class changes? Allow developer to approve, otherwise operations must approve. 🔏 “Provide the list of users who can view/edit/delete the in-scope production applications”
  • 14. 🚧 Multi-Git Source Applications!? 🔧