SlideShare uma empresa Scribd logo
1 de 33
Do zero ao GitOps
Whoami
Cearense, cabra da peste,
resido em Floripa, trabalho
com tecnologia há 16 anos,
formado em Sistemas de
Informação, sysadmin root,
casado 14 anos, Pai do
Thomas, Skatista poser, Unix-
like addict e Cloud Computing
e Cloud Native Evangelist, SRE
na Pipefy.
Quais são os problemas que
precisamos resolver?
Evoluir a infraestrutura, operações, segurança na mesma velocidade da
aplicação
Os times estarem na mesma página quando se trata de modificações referente
ao ambiente ou que possam causar impacto em determinada aplicação
Quebrar as barreiras entre Squads na Engenharia
Desenvolvedores precisam criar infraestrutura a todo momento
Formas que não evolui na mesma velocidade da aplicação
* Parece piada mas é a vida de Ops hoje em dia
Entendendo a evolução de aplicações
DRY Principle
Ref: http://principles-wiki.net/principles:don_t_repeat_yourself
Como evoluir a infraestrutura da mesma forma que as aplicações ou melhor
em conjunto com a aplicação
GitOps
GITOPS
GitOps = IaC + Pull Requests + CI/CD with Anabolic Steroids
GitOps é uma maneira de fazer o gerenciamento de cluster do Kubernetes e
entrega de aplicativos e infraestrutura. Ele funciona usando Git como uma
única fonte de verdade para infraestrutura declarativa e aplicativos. Com o Git
no centro de seus pipelines de entrega, os desenvolvedores, podem fazer
solicitações pull para acelerar e simplificar as implantações de aplicativos e
tarefas operacionais.
Exemplo de pequena alteração incorreta na infraestrutura
Resolvendo problemas de infraestrutura
k8s-deploy() {
kubectl set image deployment/frontend www=image:v2
}
Não é uma boa prática para GitOps na pipeline
k8s-deploy() {
export RELEASE_TAG=$CI_COMMIT_SHORT_SHA
git config --global user.email "sre@example.com"
git config --global user.name "sre"
git checkout -f $CI_COMMIT_REF_NAME
sed -i -e "s/"$RELEASE_TAG"/"'$RELEASE_TAG'"/g" k8s/$ENVIRONMENT/file.yaml
for yaml in `grep -r -l "$CI_REGISTRY_IMAGE" k8s/$ENVIRONMENT`; do
if grep -q "kind: Deployment" $yaml; then
yq w -i $yaml spec.template.spec.containers[0].image $CI_REGISTRY_IMAGE:$RELEASE_TAG
fi
fi
git add k8s/$ENVIRONMENT
git commit -m “Release update version: $RELEASE_TAG
git push -o ci_skip origin/master
}
Boa prática usando GitOps na pipeline
ArgoCD
ArgoCD
OK Ceará, mas como eu crio recursos de infraestrutura utilizando
este conceito?
Atlantis e Terraform
Criar seu próprio controller para criação
de infraestrutura usando kube builder
https://github.com/kubernetes-sigs/kubebuilder
Crossplane.io e AWS ACK
https://github.com/crossplane/crossplane
apiVersion:
database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
name: rdspostgresql
spec:
forProvider:
dbInstanceClass: db.t2.small
masterUsername: masteruser
allocatedStorage: 20
engine: postgres
engineVersion: "9.6"
skipFinalSnapshotBeforeDeletion:
true
writeConnectionSecretToRef:
namespace: crossplane-system
name: aws-rdspostgresql-conn
providerRef:
name: aws-provider
reclaimPolicy: Delete
$ kubectl get buckets ack-test-
smoke-s3 -o yaml
apiVersion:
s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
name: ack-test-smoke-s3
namespace: default
spec:
name: ack-test-smoke-s3
Crossplane ACK (AWS Controller for Kubernetes)
https://aws.github.io/aws-controllers-k8s/
https://github.com/pulumi/examples
https://github.com/pulumi/examples
import * as eks from "@pulumi/eks";
import * as k8s from "@pulumi/kubernetes";
// Create an EKS cluster.
const cluster = new eks.Cluster("my-cluster");
// Deploy Wordpress into our cluster.
const wordpress = new
k8s.helm.v2.Chart("wordpress", {
repo: "stable",
chart: "wordpress",
values: {
wordpressBlogName: "My Cool Kubernetes
Blog!",
},
}, { providers: { "kubernetes":
cluster.provider } });
// Export the cluster's kubeconfig.
export const kubeconfig =
cluster.kubeconfig;
apiVersion: v1
kind: Secret
metadata:
name: pulumi-api-secret
type: Opaque
stringData:
accessToken: "<REDACTED: PULUMI_ACCESS_TOKEN>"
---
apiVersion: v1
kind: Secret
metadata:
name: pulumi-aws-secrets
type: Opaque
stringData:
AWS_ACCESS_KEY_ID: "<REDACTED: AWS_ACCESS_KEY_ID>"
AWS_SECRET_ACCESS_KEY: "<REDACTED:
AWS_SECRET_ACCESS_KEY>"
---
apiVersion: pulumi.com/v1alpha1
kind: Stack
metadata:
name: s3-bucket-stack
spec:
accessTokenSecret: pulumi-api-secret
envSecrets:
- pulumi-aws-secrets
stack: joeduffy/s3-op-project/dev
projectRepo: https://github.com/joeduffy/test-s3-op-project
commit: cc5442870f1195216d6bc340c14f8ae7d28cf3e2
config:
aws:region: us-east-2
Create a EKS cluster
Create a S3 bucket
Kustomize /Helm / Raw Manifests
Resumo do que precisamos
SCM (Git Repositories)
Git Flow
Codeowners
Kubernetes
Ferramenta de IaC (Terraform / Pulumi / Controller)
Pipelines (Fluxo de CI/CD)
Packaging approach
Reconcilier (ArgoCD / FluxCD)
Melhor prevenir/revisar que remediar
Perguntas?
Yros Aguiar
SRE
yrosaguiar@gmail.com
https://medium.com/@yrosaguiar
https://twitter.com/yrosaguiar
https://github.com/yrosaguiar
Thank you

Mais conteúdo relacionado

Semelhante a Do zero ao GitOps: evolua sua infraestrutura com Kubernetes e IaC

Infraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleInfraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleClaudemir de Almeida Rosa
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaJoselito Nascimento
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftGetup Cloud
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de InternetVanessa Oliveira
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 
Advanced live testing em tempo real
Advanced live testing em tempo realAdvanced live testing em tempo real
Advanced live testing em tempo realiMasters
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresasRafael Gomes
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoGuilhermeJorgeAragod
 
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Sergio Lima
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Kotlin no Android: desbravando as oportunidades de ponta a ponta!
Kotlin no Android: desbravando as oportunidades de ponta a ponta! Kotlin no Android: desbravando as oportunidades de ponta a ponta!
Kotlin no Android: desbravando as oportunidades de ponta a ponta! iMasters
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Getup Cloud
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Rodrigo Urubatan
 

Semelhante a Do zero ao GitOps: evolua sua infraestrutura com Kubernetes e IaC (20)

Infraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleInfraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift Ansible
 
Sailing Delivery
Sailing DeliverySailing Delivery
Sailing Delivery
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShift
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de Internet
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Nossa experiência com TDD
Nossa experiência com TDDNossa experiência com TDD
Nossa experiência com TDD
 
Advanced live testing em tempo real
Advanced live testing em tempo realAdvanced live testing em tempo real
Advanced live testing em tempo real
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
 
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Kotlin no Android: desbravando as oportunidades de ponta a ponta!
Kotlin no Android: desbravando as oportunidades de ponta a ponta! Kotlin no Android: desbravando as oportunidades de ponta a ponta!
Kotlin no Android: desbravando as oportunidades de ponta a ponta!
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_
 

Mais de Yros

CI/CD - Automatizando a entrega da sua aplicação
CI/CD - Automatizando a entrega da sua aplicaçãoCI/CD - Automatizando a entrega da sua aplicação
CI/CD - Automatizando a entrega da sua aplicaçãoYros
 
Docker and Infrastructure Evolution
Docker and Infrastructure EvolutionDocker and Infrastructure Evolution
Docker and Infrastructure EvolutionYros
 
Presentation yros | aws solution provider
Presentation yros | aws solution providerPresentation yros | aws solution provider
Presentation yros | aws solution providerYros
 
OnPremise to Cloud (o2c) - WhitePaper- yros
OnPremise to Cloud (o2c) - WhitePaper- yrosOnPremise to Cloud (o2c) - WhitePaper- yros
OnPremise to Cloud (o2c) - WhitePaper- yrosYros
 
On-premise to Cloud (o2c) - WhitePaper | yros
On-premise to Cloud (o2c) - WhitePaper | yros On-premise to Cloud (o2c) - WhitePaper | yros
On-premise to Cloud (o2c) - WhitePaper | yros Yros
 
OpenAM - Fast SSO
OpenAM - Fast SSOOpenAM - Fast SSO
OpenAM - Fast SSOYros
 
Dev ninja -> vagrant + virtualbox + chef-solo + git + ec2
Dev ninja  -> vagrant + virtualbox + chef-solo + git + ec2Dev ninja  -> vagrant + virtualbox + chef-solo + git + ec2
Dev ninja -> vagrant + virtualbox + chef-solo + git + ec2Yros
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosYros
 

Mais de Yros (8)

CI/CD - Automatizando a entrega da sua aplicação
CI/CD - Automatizando a entrega da sua aplicaçãoCI/CD - Automatizando a entrega da sua aplicação
CI/CD - Automatizando a entrega da sua aplicação
 
Docker and Infrastructure Evolution
Docker and Infrastructure EvolutionDocker and Infrastructure Evolution
Docker and Infrastructure Evolution
 
Presentation yros | aws solution provider
Presentation yros | aws solution providerPresentation yros | aws solution provider
Presentation yros | aws solution provider
 
OnPremise to Cloud (o2c) - WhitePaper- yros
OnPremise to Cloud (o2c) - WhitePaper- yrosOnPremise to Cloud (o2c) - WhitePaper- yros
OnPremise to Cloud (o2c) - WhitePaper- yros
 
On-premise to Cloud (o2c) - WhitePaper | yros
On-premise to Cloud (o2c) - WhitePaper | yros On-premise to Cloud (o2c) - WhitePaper | yros
On-premise to Cloud (o2c) - WhitePaper | yros
 
OpenAM - Fast SSO
OpenAM - Fast SSOOpenAM - Fast SSO
OpenAM - Fast SSO
 
Dev ninja -> vagrant + virtualbox + chef-solo + git + ec2
Dev ninja  -> vagrant + virtualbox + chef-solo + git + ec2Dev ninja  -> vagrant + virtualbox + chef-solo + git + ec2
Dev ninja -> vagrant + virtualbox + chef-solo + git + ec2
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e Beneficios
 

Do zero ao GitOps: evolua sua infraestrutura com Kubernetes e IaC

  • 1. Do zero ao GitOps
  • 2. Whoami Cearense, cabra da peste, resido em Floripa, trabalho com tecnologia há 16 anos, formado em Sistemas de Informação, sysadmin root, casado 14 anos, Pai do Thomas, Skatista poser, Unix- like addict e Cloud Computing e Cloud Native Evangelist, SRE na Pipefy.
  • 3. Quais são os problemas que precisamos resolver?
  • 4. Evoluir a infraestrutura, operações, segurança na mesma velocidade da aplicação Os times estarem na mesma página quando se trata de modificações referente ao ambiente ou que possam causar impacto em determinada aplicação Quebrar as barreiras entre Squads na Engenharia Desenvolvedores precisam criar infraestrutura a todo momento
  • 5. Formas que não evolui na mesma velocidade da aplicação
  • 6. * Parece piada mas é a vida de Ops hoje em dia
  • 7. Entendendo a evolução de aplicações
  • 9. Como evoluir a infraestrutura da mesma forma que as aplicações ou melhor em conjunto com a aplicação
  • 11. GITOPS GitOps = IaC + Pull Requests + CI/CD with Anabolic Steroids GitOps é uma maneira de fazer o gerenciamento de cluster do Kubernetes e entrega de aplicativos e infraestrutura. Ele funciona usando Git como uma única fonte de verdade para infraestrutura declarativa e aplicativos. Com o Git no centro de seus pipelines de entrega, os desenvolvedores, podem fazer solicitações pull para acelerar e simplificar as implantações de aplicativos e tarefas operacionais.
  • 12. Exemplo de pequena alteração incorreta na infraestrutura
  • 13. Resolvendo problemas de infraestrutura
  • 14.
  • 15.
  • 16.
  • 17. k8s-deploy() { kubectl set image deployment/frontend www=image:v2 } Não é uma boa prática para GitOps na pipeline
  • 18. k8s-deploy() { export RELEASE_TAG=$CI_COMMIT_SHORT_SHA git config --global user.email "sre@example.com" git config --global user.name "sre" git checkout -f $CI_COMMIT_REF_NAME sed -i -e "s/"$RELEASE_TAG"/"'$RELEASE_TAG'"/g" k8s/$ENVIRONMENT/file.yaml for yaml in `grep -r -l "$CI_REGISTRY_IMAGE" k8s/$ENVIRONMENT`; do if grep -q "kind: Deployment" $yaml; then yq w -i $yaml spec.template.spec.containers[0].image $CI_REGISTRY_IMAGE:$RELEASE_TAG fi fi git add k8s/$ENVIRONMENT git commit -m “Release update version: $RELEASE_TAG git push -o ci_skip origin/master } Boa prática usando GitOps na pipeline
  • 19.
  • 22. OK Ceará, mas como eu crio recursos de infraestrutura utilizando este conceito?
  • 24. Criar seu próprio controller para criação de infraestrutura usando kube builder https://github.com/kubernetes-sigs/kubebuilder
  • 25. Crossplane.io e AWS ACK https://github.com/crossplane/crossplane apiVersion: database.aws.crossplane.io/v1beta1 kind: RDSInstance metadata: name: rdspostgresql spec: forProvider: dbInstanceClass: db.t2.small masterUsername: masteruser allocatedStorage: 20 engine: postgres engineVersion: "9.6" skipFinalSnapshotBeforeDeletion: true writeConnectionSecretToRef: namespace: crossplane-system name: aws-rdspostgresql-conn providerRef: name: aws-provider reclaimPolicy: Delete $ kubectl get buckets ack-test- smoke-s3 -o yaml apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: ack-test-smoke-s3 namespace: default spec: name: ack-test-smoke-s3 Crossplane ACK (AWS Controller for Kubernetes) https://aws.github.io/aws-controllers-k8s/
  • 26.
  • 28. https://github.com/pulumi/examples import * as eks from "@pulumi/eks"; import * as k8s from "@pulumi/kubernetes"; // Create an EKS cluster. const cluster = new eks.Cluster("my-cluster"); // Deploy Wordpress into our cluster. const wordpress = new k8s.helm.v2.Chart("wordpress", { repo: "stable", chart: "wordpress", values: { wordpressBlogName: "My Cool Kubernetes Blog!", }, }, { providers: { "kubernetes": cluster.provider } }); // Export the cluster's kubeconfig. export const kubeconfig = cluster.kubeconfig; apiVersion: v1 kind: Secret metadata: name: pulumi-api-secret type: Opaque stringData: accessToken: "<REDACTED: PULUMI_ACCESS_TOKEN>" --- apiVersion: v1 kind: Secret metadata: name: pulumi-aws-secrets type: Opaque stringData: AWS_ACCESS_KEY_ID: "<REDACTED: AWS_ACCESS_KEY_ID>" AWS_SECRET_ACCESS_KEY: "<REDACTED: AWS_SECRET_ACCESS_KEY>" --- apiVersion: pulumi.com/v1alpha1 kind: Stack metadata: name: s3-bucket-stack spec: accessTokenSecret: pulumi-api-secret envSecrets: - pulumi-aws-secrets stack: joeduffy/s3-op-project/dev projectRepo: https://github.com/joeduffy/test-s3-op-project commit: cc5442870f1195216d6bc340c14f8ae7d28cf3e2 config: aws:region: us-east-2 Create a EKS cluster Create a S3 bucket
  • 29. Kustomize /Helm / Raw Manifests
  • 30. Resumo do que precisamos SCM (Git Repositories) Git Flow Codeowners Kubernetes Ferramenta de IaC (Terraform / Pulumi / Controller) Pipelines (Fluxo de CI/CD) Packaging approach Reconcilier (ArgoCD / FluxCD)

Notas do Editor

  1. Good question! What was really or issue? Where was the pain? What are we aiming to solve? Let’s keep going
  2. Estamos falando de cultura self service, separar a infra estrutura da aplicação da aplicação não é um caminho que ajuda na evolução Muitas alterações principalmente em ambientes cloud native precisam ser ontime, a aplicação precisa daquele recurso de infra no momento do deploy Precisa de solicitação pro time de ops quando necessita de algo de infra, muitas vezes o time não tem muito tempo ou não consegue atender a demanda no momento que o Desenvolvedor precisa Podemos colocar um chapter de SRE/Devops que atenda essa demanda pra cada time,nem sempre é possivel ter uma quantidade de Ops que atenda o time de Dev A ideía é o time de Ops criar um framework (modulos, codigos reutilizaveis) que os devs consigam utilizar e desenvolver infraestrutura sem ter um conhecimento muito avançado e o mais importante sem a necessidade de ter acesso Administrativo a tudo Alterações manuis além de ser um problema para a empresa, não escala, não evolui e não tem muito valor, pois codigo é ativo da empresa, mais dificil de escalar, será preciso aumentar o time de ops que permissoes para aletração para criar multiplos ambientes, o risco de erro é maior, não automatiza e não permite criar testes automatizados
  3. Repetir codigo, repetir manifestos
  4. As aplicações chegaram a esse nivel de evolução porque conseguimos usar projetos, modulos, codigos de terceiros e de outros times abstraindo assim algum problema ou resolvendo rapidamente um problema especifico sem precisarmos entender muito sobre o problema em si, a lib ou dependencia se encarrega de abstrair para nós o problema, o opensource é baseado nisso, as linguagens de programação são baseadas nisso, dificilmente iremos criar codigo do zero pra tudo, até porque se pensasemos em fazer isso quando nosso projeto estivesse pronto ele já seria um legado.
  5. What is this concept of GitOps? What does it means and what it stand for? Let’s see in the next slides
  6. READ THE DEFINITION ON THE SLIDE
  7. Alterações eram manuais Secrets e criação de infra estrutura era sempre feita antes ou depois da aplicação mas não ao mesmo tempo Alto risco de erros e problemas Rollback e visibilidade era mais complicada Uma simples alteração poderia causar um incidente e era mais dificil de identificar o que foi alterado e quando foi alterado
  8. GUYS, this is not true!!! (JOKE) We use to use way more tape than hi is using on the GIF Look: Just a small peace of tape What a noobie!
  9. The same code of the repositories is reflected into the cluster, all the changes is tracked
  10. The same code of the repositories is reflected into the cluster, all the changes is tracked
  11. O mesmo código dos repositórios é refletido no cluster, todas as mudanças são rastreadas
  12. READ THE DEFINITION ON THE SLIDE
  13. O reconciliador verifica as diferenças entre o código e os objetos e mostra as diferenças e sincroniza. Diferencia desired state do current state
  14. The ArgoCD is our reconcilier controller, the argo verify the differences between the code and the objects and show the differences and apply the syncronization.
  15. The ArgoCD is our reconcilier controller, the argo verify the differences between the code and the objects and show the differences and apply the syncronization.
  16. Helm , se você distribuir seus manifestos de implantação externamente , ou seja, fora de sua equipe ou mesmo de sua organização, e se contiver um alto nível de complexidade, vale a pena esconder. O Helm é sua ferramenta preferida para empacotamento e configuração de aplicativos e está muito tempo no mercado . é utilizado para entregar aplicativos prontos mas é necessario criação de templates e mais dificil de lhe dar com dependencias de terceiros Kustomize , se os manifestos são usados ​​principalmente dentro de sua própria equipe ou são simples o suficiente (de uma forma positiva) para evitar uma camada de abstração que esconde um monte de magia, use kustomize, é simples voce nao precisa repetir codigo e pode usar os manifestos de terceiros e fazer o override com suas configurações.
  17. Helm , se você distribuir seus manifestos de implantação externamente , ou seja, fora de sua equipe ou mesmo de sua organização, e se contiver um alto nível de complexidade, vale a pena esconder. O Helm é sua ferramenta preferida para empacotamento e configuração de aplicativos e está muito tempo no mercado . é utilizado para entregar aplicativos prontos mas é necessario criação de templates e mais dificil de lhe dar com dependencias de terceiros Kustomize , se os manifestos são usados ​​principalmente dentro de sua própria equipe ou são simples o suficiente (de uma forma positiva) para evitar uma camada de abstração que esconde um monte de magia, use kustomize, é simples voce nao precisa repetir codigo e pode usar os manifestos de terceiros e fazer o override com suas configurações.
  18. Helm , se você distribuir seus manifestos de implantação externamente , ou seja, fora de sua equipe ou mesmo de sua organização, e se contiver um alto nível de complexidade, vale a pena esconder. O Helm é sua ferramenta preferida para empacotamento e configuração de aplicativos e está muito tempo no mercado . é utilizado para entregar aplicativos prontos mas é necessario criação de templates e mais dificil de lhe dar com dependencias de terceiros Kustomize , se os manifestos são usados ​​principalmente dentro de sua própria equipe ou são simples o suficiente (de uma forma positiva) para evitar uma camada de abstração que esconde um monte de magia, use kustomize, é simples voce nao precisa repetir codigo e pode usar os manifestos de terceiros e fazer o override com suas configurações.