1
C O N T I N U O U S D E L I V E R Y C O M
A R G O C D
DEVOPS
TDCRECIFE2020
2
Até onde vai o
meu CI?
O padrão GitOps ArgoCD
AGENDA
3
Além do deploy, melhorias, testes,
trunk-based development
Apêndice B
Exemplos de scripts de CI
separados por vendor
Apêndice A
F I M
4
RODRIGO SOUZA
S O F T W A R E E N G I N E E R
Sami
rasouza
rasouza
rasouza.com.br
5
Desenhando a Pipeline de Integração Contínua e separando as
responsabilidades das ferramentas
ATÉ ONDE VAI
O MEU CI?
6
Nossa Pipeline
Dockerfiles Teste unitário
Teste de integração
Imagem do
container no
Dockerhub
ArgoCD
Build Test Push Deploy Commerce
7
Deploy Workflow
dev dev
stage
master
stage
prod
8
Nossa Pipeline
Dockerfiles Teste unitário
Teste de integração
Imagem do
container no
Dockerhub
ArgoCD
Build Test Push Deploy Commerce
9
Nossa Pipeline
Dockerfiles Teste unitário
Teste de integração
Imagem do
container no
Dockerhub
ArgoCD
Build Test Push Deploy Commerce
10
Nossa Pipeline
Dockerfiles Teste unitário
Teste de integração
Imagem do
container no
Dockerhub
ArgoCD
Build Test Push Deploy Commerce
12
13
Footprint mais enxuto
para produção
Multi-stage Build 01
14
Footprint mais enxuto
para produção
Multi-stage Build 01
Erros são captados mais
cedo no ciclo de vida de
desenvolvimento
Shift Left 02
15
Mesmos comandos
produzem o mesmo
resultado
Standards03
Footprint mais enxuto
para produção
Multi-stage Build 01
Erros são captados mais
cedo no ciclo de vida de
desenvolvimento
Shift Left 02
16
Mesmos comandos
produzem o mesmo
resultado
Standards03
Código está mais perto do
desenvolvedor e o
processo não está
escondido
Developer Ownership04
Footprint mais enxuto
para produção
Multi-stage Build 01
Erros são captados mais
cedo no ciclo de vida de
desenvolvimento
Shift Left 02
17
Mesmos comandos
produzem o mesmo
resultado
Standards03
Código está mais perto do
desenvolvedor e o
processo não está
escondido
Developer Ownership04
Footprint mais enxuto
para produção
Multi-stage Build 01
Erros são captados mais
cedo no ciclo de vida de
desenvolvimento
Shift Left 02
19
Mesmos comandos
produzem o mesmo
resultado
Standards03
Código está mais perto do
desenvolvedor e o
processo não está
escondido
Developer Ownership04
Footprint mais enxuto
para produção
Multi-stage Build 01
Erros são captados mais
cedo no ciclo de vida de
desenvolvimento
Shift Left 02
20
Entendendo o Design Pattern e fazendo os ajustes necessários
na pipeline
O PADRÃO
GITOPS
21
Fonte: https://morioh.com/p/05ce86b2ad73
22
Fonte: https://morioh.com/p/05ce86b2ad73
23
INFRASTRUCTURE
AS A CODE
P R O G R A M M I N G D I A R Y
Versione seus manifestos do
Kubernetes em um
repositório separado!
25
DEPLOYMENT
M A N I F E S T O
26
DEPLOYMENT
M A N I F E S T O
Precisamos trocar a imagem do container
no manifesto que está versionado.
27
DEPLOYMENT
M A N I F E S T O
Precisamos trocar a imagem do container
no manifesto que está versionado.
Algumas ferramentas podem ajudar:
Kustomize
HELM
28
29
30
QUAL O PROBLEMA QUE
ESTAMOS RESOLVENDO?
I M P O R T A N T E
31
QUAL O PROBLEMA QUE
ESTAMOS RESOLVENDO?
I M P O R T A N T E
O último commit da master é o
estado atual da infraestrutura.
INFRAESTRUTURA REPLICÁVEL
32
QUAL O PROBLEMA QUE
ESTAMOS RESOLVENDO?
I M P O R T A N T E
Mais de um desenvolvedor pode
evoluir a infraestrutura ao mesmo
tempo.
COLABORAÇÃO
O último commit da master é o
estado atual da infraestrutura.
INFRAESTRUTURA REPLICÁVEL
33
QUAL O PROBLEMA QUE
ESTAMOS RESOLVENDO?
I M P O R T A N T E
Mais de um desenvolvedor pode
evoluir a infraestrutura ao mesmo
tempo.
COLABORAÇÃO
O último commit da master é o
estado atual da infraestrutura.
INFRAESTRUTURA REPLICÁVEL
Infraestrutura e produto evoluem
separadamente. Ferramentas
especializadas trabalham melhor.
SEPARAÇÃO DE
RESPONSABILIDADES
34
QUAL O PROBLEMA QUE
ESTAMOS RESOLVENDO?
I M P O R T A N T E
Mais de um desenvolvedor pode
evoluir a infraestrutura ao mesmo
tempo.
COLABORAÇÃO
Os desenvolvedores não precisam
se preocupar mais com deploy,
apenas com código!
FOCO NO VALOR
O último commit da master é o
estado atual da infraestrutura.
INFRAESTRUTURA REPLICÁVEL
Infraestrutura e produto evoluem
separadamente. Ferramentas
especializadas trabalham melhor.
SEPARAÇÃO DE
RESPONSABILIDADES
35
Conhecendo a interface e configurando o deploy das aplicaçõesARGOCD
36
37
FEATURES
A R G O C D
Auto-Sync
38
FEATURES
A R G O C D
Auto-Sync
Log das aplicações
39
FEATURES
A R G O C D
Auto-Sync
Log das aplicações
Rollback
40
FEATURES
A R G O C D
Auto-Sync
Log das aplicações
Rollback
Recursos do Kubernetes
41
FEATURES
A R G O C D
Auto-Sync
Log das aplicações
Rollback
Recursos do Kubernetes
App Of Apps Pattern
42
C u s t o m R e s o u r c e D e f i n i t i o n
43
44
Exemplos de scripts separados por vendorAPÊNDICE A
45
CONTINUOUS
INTEGRATION
F E R R A M E N T A S
CircleCI
GitLab
CodeShip
46
CONTINUOUS
INTEGRATION
F E R R A M E N T A S
BuildKite
Jenkins
47
CONTINUOUS
DEPLOYMENT
F E R R A M E N T A S
FluxCD
ArgoCD
Spinnaker
48
CIRCLECI
C L I Q U E PA R A A B R I R O C Ó D I G O
49
BUILDKITE
C L I Q U E PA R A A B R I R O C Ó D I G O
50
GITLAB
C L I Q U E PA R A A B R I R O C Ó D I G O
51
JENKINS
C L I Q U E PA R A A B R I R O C Ó D I G O
52
Além do Continuous DeploymentAPÊNDICE B
53
CONTINUOUS DELIVERY
T E M A
Até agora cobrimos apenas alguns tópicos do tema
Continuous Delivery. Se quisermos completar a roda,
temos que estudar a fundo mais alguns tópicos
54
CONTINUOUS DELIVERY
T E M A
Até agora cobrimos apenas alguns tópicos do tema
Continuous Delivery. Se quisermos completar a roda,
temos que estudar a fundo mais alguns tópicos
55
Fonte: https://www.optimizely.com/optimization-glossary/trunk-based-development/
56
Fonte: https://www.perfecto.io/blog/what-is-continuous-testing
57
Fonte: https://www.logigear.com/blog/continuous-delivery-devops/beginner-guide-to-continuous-testing/
58
SLACK NOTIFICATION
C I R C L E C I
É importante aproximar o desenvolvedor
com a sua pipeline de desenvolvimento.
Promover o feedback de maneira prática é
um caminho.
Podemos integrar notificações do Slack
(local que já estamos acostumados a usar)
de maneira bem fácil, gastando pouco
esforço mas entregando um grande valor
Configuring notifications for your CI
builds with Slack
59
BIBLIOGRAFIA
60
BIBLIOGRAFIA
ArgoCD https://argoproj.github.io/argo-cd/
Guide to GitOps https://www.weave.works/technologies/gitops/
Shifting Left with Continuous Delivery https://dzone.com/refcardz/shifting-left-with-continuous-delivery?chapter=2
Using Multi-Stage Builds to Simplify And Standardize Build Processes
https://medium.com/capital-one-tech/multi-stage-builds-and-dockerfile-b5866d9e2f84
The Benefits of Continuous Delivery https://dzone.com/articles/the-benefits-of-continuous-delivery
61
OBRIGADO!
RODRIGO SOUZA
https://github.com/rasouza/diary-infra

Continuous Delivery com ArgoCD