1. GITOPS
&
BEST PRACTICES FOR CLOUD NATIVE CI/CD
Antonio ’Turibbio’ Liccardi
Cloud Developer & DevOps Engineer @ Blexin
Microsoft MVP for Developer Technologies
@turibbio
2.
3. #DOAW20
• Capire cosa è GitOps
• Differenze tra GitOps & DevOps
• Principi di GitOps
• Implementare GitOps (tools & best practices)
AGENDA
5. #DOAW20
1. L’intero sistema viene descritto in maniera dichiarativa
2. Il desired state del sistema è versionato in Git
3. Le modifiche soggette ad approvazione vengono applicate
automaticamente al sistema
4. Agenti o servizi garantiscono la corretta applicazione del
desired state e avvisano in caso di divergenza
PRINCIPIDIGITOPS
6. #DOAW20
Only what can be described and
observed can be automated and
controlled and accellerated
7. #DOAW20
• Tutte le azioni sono guidate dagli eventi in Git, ed è
considerato come l’unica fonte di verità dell’intero sistema
• GitOps si basa fortemente sulle pratiche DevOps
• Ma se DevOps esiste da anni, perché solo ora compare
GitOps?
• Fino ad oggi non abbiamo avuto tanti strumenti a favore di una
declarative infrastructure che potesse essere storicizzata in Git.
• Git rappresenta lo strumento migliore per questo scopo grazie a
audit, commenti e history
GITOPSINDETTAGLIO
8. #DOAW20
• Una volta impostato il flusso di lavoro, l’intero processo di
modifiche viene effettuato usando solo Git tramite Pull
Request.
• Sia il codice dell’applicazione, che la dichiarazione
dell’infrastruttura risiedono all’interno del repository. L’uso di
strumenti come kubectl per la configurazione
dell’infrastruttura è vietato, si predilige IaC
• L’intero processo deve essere automatizzato
• L’intero processo è sempre ripristinabile grazie ad IaC
GITOPSINDETTAGLIO
9. #DOAW20
1. Aumento della produttività
2. Esperienza di sviluppo migliore
3. Compliance & Stability
4. Reliability
5. Consistency & Standardization
6. Stronger Security Guarantees
VANTAGGIDIGITOPS
22. #DOAW20
• 1 repository per applicazione o servizio
• Usare branch separati per environment (Kubernetes
namespace o cluster)
• Push delle modifiche sia sul codice che sulla infrastruttura
• Rolling out tramite revert
• Uso dei protected branches per forzare la pull request
STRUTTURADIUNREPOSITORYGITOPS