Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team at - Escalando agents do jenkins no kubernetes

208 views

Published on

Trilha Containers How we figured out we had a SRE team at - Escalando agents do jenkins no kubernetes

Published in: Education
  • Be the first to comment

TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team at - Escalando agents do jenkins no kubernetes

  1. 1. Escalando agents do Jenkins no Kubernetes @ Lucas Vasconcelos lucas.vasconcelos@elo7.com.br github.com/lucasvasconcelos facebook.com/lucas.vasconcelos.santana twitter.com/lukssauro
  2. 2. Agenda ➔ Motivação ➔ Paralelizando os testes ➔ Kubernetes ➔ Jenkins Kubernetes Plugin ➔ Jenkins Agents Dinâmicos ➔ AWS EC2 Spot Instances + AutoScaling Groups ➔ Dúvidas
  3. 3. Motivação Testes de unidade Testes DAO Testes de Integração
  4. 4. Testes de lntegração ➔ Testa diversas funcionalidades da aplicação ➔ Simula ações como se fossem feitas por um usuário final ➔ RSpec + Selenium web-driver ➔ Executado nos ambientes de playground (staging) e preview (integração) ➔ São blocantes, ou seja, caso não haja sucesso em todos os testes, não podemos ir para o próximo passo do pipeline ➔ Aproximadamente 120 testes lentos* ➔ Demoraria dezenas de minutos para executá-los de maneira serializada
  5. 5. Paralelizando os testes ➔ Paralelizar os testes na instância principal do Jenkins é inviável ➔ Jenkins agents (slaves) ➔ Ambiente com a infra estática: 36 agents ➔ Execução paralela nos agents utilizando os Matrix Project Plugin ➔ Permite disparar a execução de cada teste RSpec em um agent ➔ Paralelizando 36 testes simultâneos
  6. 6. Matrix Project Plugin
  7. 7. Escala -> Problemas ➔ Quantidade de testes aumentando ➔ Os playgrounds passaram a serem executados no Kubernetes, ficando dinâmicos e mais gente passou a utilizá-los simultaneamente ➔ Fila para execução dos testes crescendo, impactando deploys em produção (que ocorrem várias vezes ao dia) ➔ Porém, existem picos de uso, escalar estaticamente pode aumentar os custos e não ter os recursos bem utilizados ➔ É aí que entra o Kubernetes
  8. 8. is an open-source system for automating deployment, scaling, and management of containerized applications.
  9. 9. features ➔ orquestração: procura utilizar da melhor maneira possível os recursos ➔ self-healing: desde que haja recursos, garante que os containers estejam sempre em execução ➔ escala horizontal: auto-scaling horizontal dos containers ➔ service-discovery: pode expor um serviço lógico que aponta para um ou mais containers ➔ service load-balancing: balanceia os acessos aos serviços expostos dentro do cluster ➔ rollouts/rollbacks: deploys automatizados ➔ secrets & config management: fornece a funcionalidade de gerenciamento da configuração das aplicações ➔ storage management: gerencia storages (NFS, Ceph, AWS, GCP, etc) ➔ jobs: suporte a execução de batches e jobs agendados
  10. 10. Kubernetes Plugin ➔ É a “cola” entre Jenkins e Kubernetes ➔ Permite criar agents dinâmicos no Kubernetes ➔ Ele dispara a criação de pods no Kubernetes com agents que se registram automaticamente ao Jenkins principal ➔ Os agents no Kubernetes possuem as mesmas capacidades de um agent convencional ➔ Podem ser utilizados para qualquer finalidade
  11. 11. Kubernetes Plugin
  12. 12. Kubernetes Plugin
  13. 13. Kubernetes Plugin + Matrix Project Plugin
  14. 14. Kubernetes & EC2 Spot Instances & AutoScaling Groups ➔ Uso da infra de testes extremamente volátil ➔ EC2 Spot Instances + AutoScaling Groups ➔ Possibilidade de tipos de instância maiores e AutoScaling ➔ Custos baixaram em 8x e capacidade para mais testes sendo executados simultaneamente aumentou em 2.5x (podendo aumentar se decidirmos mexer nos thresholds do ASG)
  15. 15. dúvidas?
  16. 16. obrigado visite nosso tech-blog! http://engenharia.elo7.com.br

×