Apresentação sobre caso de uso do Kubernetes no Governo Federal do Brasil (SERPRO), orientado à metodologia abordada para a implantação segura da tecnologia como base para a Plataforma como Serviço
Palestra apresentada no QCON SP 2018 sobre como estender o Kubernetes para além de um orquestrador de containers, apresentando todos os componentes e seu uso além do tradicional
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Renato Groff
Apresentação sobre o uso de Docker + Kubernetes no deployment de aplicações Web, com uma demonstração prática envolvendo o Azure Kubernetes Service e o ASP.NET Core. Palestra realizada em evento promovido pelo grupo DevOps Professionals em 19/09/2018 na cidade de São Paulo-SP.
Palestra apresentada no QCON SP 2018 sobre como estender o Kubernetes para além de um orquestrador de containers, apresentando todos os componentes e seu uso além do tradicional
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Renato Groff
Apresentação sobre o uso de Docker + Kubernetes no deployment de aplicações Web, com uma demonstração prática envolvendo o Azure Kubernetes Service e o ASP.NET Core. Palestra realizada em evento promovido pelo grupo DevOps Professionals em 19/09/2018 na cidade de São Paulo-SP.
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Renato Groff
Apresentação sobre o uso de Kubernetes como solução para orquestração de containers. Palestra realizada em 28/01/2020 em evento promovido pela comunidade .NET SP em São Paulo-SP.
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...Renato Groff
Apresentação sobre o uso de Docker e Docker Compose na criação de ambientes de Desenvolvimento e Testes. Palestra realizada durante o Open Source Roadshow 2019, um evento que aconteceu na cidade de Piracicaba-SP no dia 11/05/2019.
O REST é ainda hoje a opção mais usada para criação de APIs para comunicação entre processos sobre rede, embora em muitos casos não seja realmente uma escolha, mas um uso pelo fato de ser simples e amplamente usado e conhecido. Por outro lado, soluções como gRPC e GraphQL vêm crescendo e se popularizando cada vez mais como alternativa ao “plain old” REST.
Essa palestra tem o objetivo de apresentar o gRPC como uma solução aos problemas do REST para APIs, principalmente para microsserviços. Será trazido um pouco do contexto histórico da web e de comunicação entre processos (IPC), para entendermos como chegamos até aqui, levantando alguns questionamentos como “RPC sobre HTTP” e “REST com HTTP/2”. Também serão abordados os principais conceitos e características do gRPC, mostrando seus prós e contras, e exemplos de uso do gRPC com protobuffers.
Link para o código: https://github.com/yagotome/grpc-cache
Docker para Desenvolvedores - Developers-BR - Agosto-2018Renato Groff
Apresentação sobre o uso de Docker no desenvolvimento de soluções de sofrtware. Palestra realizada em 14/08/2018 em evento promovido pelo grupo Developers-BR em São Paulo-SP.
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Renato Groff
Slides de palestra sobre o uso de Docker Compose + Bancos de Dados Relacionais na montagem de ambientes de Desenvolvimento/Testes. Apresentação realizada em 20/07, durante a edição 2019 do TDC (The Developer's Conference) em São Paulo-SP.
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Renato Groff
Apresentação realizada em um evento promovido pelo grupo Azure Talks na cidade de São Paulo-SP. Esta palestra focou na utilização de containers Docker em conjunto com tecnologias como ASP.NET Core 2.1, .NET Core 2.1 e serviços do Microsoft Azure (Azure Web App for Containers, Azure Kubernetes Services) com diversos exemplos práticos e dicas para projetos reais.
Docker para Desenvolvedores - Developers-BR - Julho-2018Renato Groff
Apresentação sobre o uso de Docker no desenvolvimento de soluções de sofrtware. Palestra realizada em 17/07/2018 em evento promovido pelo grupo Developers-BR em São Paulo-SP.
Apresentação da ferramenta Docker para o pessoal da Websix. Passos básicos de como iniciar a utilização de containers a seu favor. Padronização de ambiente de desenvolvimento, staging, QA e Produção
Configuração de ativos de rede utilizando a abordagem infrastructure as codeAécio Pires
O objetivo desta palestra é apresentar a abordagem Infrastructure as Code (IaC) aplicada a switches e roteadores, utilizando uma solução de software integrada denominada PipeConf.
O intuito do PipeConf é realizar a automação da configuração de ativos de rede, levando em consideração diferentes modelos e fabricantes.
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Renato Groff
Apresentação sobre o uso de Kubernetes como solução para orquestração de containers. Palestra realizada em 28/01/2020 em evento promovido pela comunidade .NET SP em São Paulo-SP.
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...Renato Groff
Apresentação sobre o uso de Docker e Docker Compose na criação de ambientes de Desenvolvimento e Testes. Palestra realizada durante o Open Source Roadshow 2019, um evento que aconteceu na cidade de Piracicaba-SP no dia 11/05/2019.
O REST é ainda hoje a opção mais usada para criação de APIs para comunicação entre processos sobre rede, embora em muitos casos não seja realmente uma escolha, mas um uso pelo fato de ser simples e amplamente usado e conhecido. Por outro lado, soluções como gRPC e GraphQL vêm crescendo e se popularizando cada vez mais como alternativa ao “plain old” REST.
Essa palestra tem o objetivo de apresentar o gRPC como uma solução aos problemas do REST para APIs, principalmente para microsserviços. Será trazido um pouco do contexto histórico da web e de comunicação entre processos (IPC), para entendermos como chegamos até aqui, levantando alguns questionamentos como “RPC sobre HTTP” e “REST com HTTP/2”. Também serão abordados os principais conceitos e características do gRPC, mostrando seus prós e contras, e exemplos de uso do gRPC com protobuffers.
Link para o código: https://github.com/yagotome/grpc-cache
Docker para Desenvolvedores - Developers-BR - Agosto-2018Renato Groff
Apresentação sobre o uso de Docker no desenvolvimento de soluções de sofrtware. Palestra realizada em 14/08/2018 em evento promovido pelo grupo Developers-BR em São Paulo-SP.
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Renato Groff
Slides de palestra sobre o uso de Docker Compose + Bancos de Dados Relacionais na montagem de ambientes de Desenvolvimento/Testes. Apresentação realizada em 20/07, durante a edição 2019 do TDC (The Developer's Conference) em São Paulo-SP.
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Renato Groff
Apresentação realizada em um evento promovido pelo grupo Azure Talks na cidade de São Paulo-SP. Esta palestra focou na utilização de containers Docker em conjunto com tecnologias como ASP.NET Core 2.1, .NET Core 2.1 e serviços do Microsoft Azure (Azure Web App for Containers, Azure Kubernetes Services) com diversos exemplos práticos e dicas para projetos reais.
Docker para Desenvolvedores - Developers-BR - Julho-2018Renato Groff
Apresentação sobre o uso de Docker no desenvolvimento de soluções de sofrtware. Palestra realizada em 17/07/2018 em evento promovido pelo grupo Developers-BR em São Paulo-SP.
Apresentação da ferramenta Docker para o pessoal da Websix. Passos básicos de como iniciar a utilização de containers a seu favor. Padronização de ambiente de desenvolvimento, staging, QA e Produção
Configuração de ativos de rede utilizando a abordagem infrastructure as codeAécio Pires
O objetivo desta palestra é apresentar a abordagem Infrastructure as Code (IaC) aplicada a switches e roteadores, utilizando uma solução de software integrada denominada PipeConf.
O intuito do PipeConf é realizar a automação da configuração de ativos de rede, levando em consideração diferentes modelos e fabricantes.
Calico seguranca para containers e maisRicardo Katz
This presentation is in pt_BR, and shows what is Project Calico, and how it can be used to simplify networking stack in Kubernetes and also improve Security
Orquestrando Containers na Nuvem com o Azure Kubernetes Service - ThorArch #1...Renato Groff
Slides de apresentaçÃo no dia 27/06/2019 (quinta-feira) em que participei como palestrante do ThorArch #17, um encontro técnico com profissionais de Arquitetura de Software do Itaú Unibanco em São Paulo-SP e no qual tive a oportunidade de realizar uma apresentação focada no uso do Azure Kubernetes Service na orquestração de containers Docker.
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...Renato Groff
Apresentação sobre o uso integrado de ASP.NET Core, Kubernetes e o Microsoft Azure através do serviço AKS (Azure Kubernetes Service). Palestra realizada em 25/06/2018 durante o evento AzureDevOpsNight, uma iniciativa promovida pelo grupo Developers-BR em São Paulo-SP.
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Renato Groff
Apresentação sobre o uso de Docker e Kubernetes para a implementação de soluções a partir do Microsoft Azure. Palestra realizada em evento promovido pela XP Investimentos no dia 11/01/2020 em São Paulo-SP.
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...Renato Groff
Apresentação sobre o uso integrado de ASP.NET Core, Kubernetes e o Microsoft Azure. Palestra realizada em 16/05/2018 durante evento promovido pelo grupo .NET SP em São Paulo-SP.
Boas práticas na configuração de jobs no KubernetesGraziella Bonizi
Criar #jobs é uma prática comum no suporte a diversos casos de uso. Tarefas agendadas para mecanismos de Retry, Limpeza ou Monitoramento estão presentes em diversos cenários, porém devemos ter cuidado com a forma que implementamos persistência, escala e paralelismo. Nessa conversa iremos mostrar algumas recomendações e boas práticas na criação e configuração de #CronJobs dentro de um ambiente #Kubernetes.
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Renato Groff
Apresentação realizada no dia 02/10/2018 em um evento promovido pelo grupo .NET SP na cidade de São Paulo-SP. Esta palestra na utilização de containers Docker em conjunto com tecnologias como ASP.NET Core 2.1, .NET Core 2.1 e serviços do Microsoft Azure (Azure Web App for Containers, Azure Kubernetes Services) com diversos exemplos práticos e dicas para projetos reais.
Apresentação da palestra OpenShift Origin Index - Python e Flask na prática, ministrada por Mateus Caruccio na Semana Acadêmica ICET, Feevale, em 12/04/2014.
Blog post em http://getupcloud.com/blog/?p=1607
Slides da palestra apresentada no QCon 2019 sobre Kubernetes e um deepdive em seus componentes (apiserver, scheduler, ingress, etc) e os objetos do cluster
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Renato Groff
Apresentação sobre o uso de Docker + Kubernetes no deployment de aplicações Web, com uma demonstração prática envolvendo o Azure Kubernetes Service e o ASP.NET Core. Palestra realizada durante o evento Open Source Night #1, que foi promovido pela comunidade .NET SP Professionals em 26/11/2018 na cidade de São Paulo-SP.
Docker + Kubernetes: Turbinando seus projetos Web - Open Source Saturday - Ag...Renato Groff
Apresentação sobre o uso de Docker + Kubernetes no deployment de aplicações Web. Palestra realizada durante o Open Source Saturday, evento promovido pelo grupo Campinas .NET em 11/08/2018 na cidade de Campinas-SP.
2. Projeto Estaleiro
Modernização de Infraestrutura de Produção de Serviços dentro do SERPRO, com o objetivo de
uma entrega rápida e segura de novos serviços
● PaaS - Kubernetes
● STaaS - CEPH
● DBaaS - Openstack Trove
● Componentes periféricos que auxiliem na produção desses serviços - Graylog, Elasticsearch,
CA APM, NGINX, HAProxy, etc
● Empoderamento do desenvolvedor
● Produção passa a ser produção
4. Requisitos
● Segmentação - Serviços de Cliente A não impactem / influenciem / realizem acesso não
autorizado em Serviços de Cliente B.
● Segregação de papéis - Desenvolvedor responsável por produto A só tenha acesso aos
recursos desse produto
● Auditoria - Se alguém mudou algo no ambiente, quem foi e quando.
● Controle de vulnerabilidades - Algum pacote do Container desatualizado? Alguma
configuração inadequada?
● “Isso existia no ambiente tradicional” - Pré requisitos já existentes em um ambiente
tradicional, se eles são aplicáveis, e como aplicá-los
○ Ex.: Autenticação via certificado digital, Stickness de sessão
5. Segregação de rede
● A maior preocupação das equipes de Segurança
○ Uma aplicação chamando outra indevidamente
○ Uma aplicação chamando o ambiente tradicional indevidamente
○ Uma aplicação indo na Internet indevidamente (Facebook,
Wikipedia..)
○ Falta de rastreabilidade de rede (quem chamou e quando?)
○ Normas federais, Sindicâncias, auditorias, Polícia Federal :)
7. Segmentação de redes - Calico
● Calico - Projeto da Tigera
● Responsável pela parte de Networking e também pela implementação de Network Policies
● Principais funcionalidades:
○ Conectividade com o mundo externo via BGP (1 IP real por POD, se assim quiser)
○ Possibilidade de associar um range de IPs específico (inclusive IPv6) por POD ou
ReplicaSet
○ Possibilidade de criar regras de entrada e saída (o Kubernetes só suporta regras de
entrada)
● Baseado em Felix, Confd, IPTables e backend ETCD :)
● É tema inteiro para uma próxima palestra (quem se dispõe??)
11. Segregação de papéis
● Caso: Um desenvolvedor participa de mais de um projeto, mas não pode ter acesso ao
cluster inteiro
● RBAC: Nem todos podem ser admin :)
○ Atenção: roles ainda estão em Beta no Kubernetes 1.6
○ Objetos de um projeto: Namespace, ReplicaSet, DaemonSet, PODs, Network Policies,
Ingress Controllers, Service, etc etc etc
○ Manter o acesso de cada um apenas a seus objetos é um sofrimento!!
● Roles pré existentes: Node (sim, nodes também são usuários do Cluster), Sys admin.
● Grupos: Podem ser utilizados
○ No nosso caso usamos autenticação via Certificado Digital, então o grupo tem que
fazer parte do certificado no atributo ‘O’.
○ Ex.: "/CN=rkatz/O=projeto1/O=projeto2"
13. RBAC - Objetos
● ClusterRole - Papel existente no Cluster inteiro. Uma permissão global.
○ Ex.: readonly (para um bilhetador, por exemplo), node (para um node)
● Role - Papel existente apenas no contexto de um namespace.
○ Ex.: Um desenvolvedor dentro de um namespace com permissão apenas de mexer nos
objetos de Ingress.
● Uma ClusterRole pode ser associada a um grupo em uma namespace, limitando seu
escopo.
○ Ex.: Grupo X possui a ClusterRole readonly apenas no projeto prj1, podendo ver (mas
não modificar) qualquer recurso desse namespace
● Mais infos: https://kubernetes.io//docs/admin/authorization/rbac/
● Demonstração de funcionamento!
14. Auditoria
● Grandes poderes, grandes responsabilidades!
● Para cada acesso à API do Kubernetes uma entrada de auditoria é gerada, com as seguintes
informações:
○ ID da requisição
○ Quando
○ Quem (usuário e IP)
○ Onde (namespace e objeto do Kubernetes)
○ Conseguiu? - Essa auditoria é uma linha à parte, com o mesmo ID da requisição e o
Return Code da transação
● Demo time - Essa é rapida :)
16. Análise de vulnerabilidades
● O software em meu container está atualizado?
● O container está com alguma abominação instalada? SSH, clientes telnet, nc, etc
● O Dockerfile do container especifica um usuário (USER)? Ou roda como ‘root’?
● Proposta: Não se publica um container diretamente no registry. Apenas a integração
contínua o faz.
○ IC faz as análises de conteúdo do container, Dockerfile, pacotes, etc
○ CoreOS Clair faz a análise dos pacotes existentes e sua atualização
● Container com qualquer problema de segurança não é publicado no registry, e
consequentemente não é publicado
● WIP - O Harbor ainda não se integra com o Clair. Mas o Jenkins sim! Então estamos
trabalhando nisso.
19. Necessidades ambiente tradicional
● O foco nesse momento é em como as aplicações são ‘chamadas’
● Ingress - Objeto que especifica a forma de ‘entrada’ de um serviço.
○ Obs.: É diferente do objeto ‘Service’ que especifica como um conjunto de PODs é
exposto no cluster
● Hoje suporta protocolos HTTP/s, com especificação de URL, certificado digital a ser usado,
configurações de cabeçalho, configurações de protocolos SSL/TLS habilitados.
● Ingress Controller - Programa responsável por ler os objetos do Kubernetes (Ingress,
Service, Secrets e PODs) e reconfigurar o frontend conforme esses objetos
○ Nosso frontend hoje é o NGINX, mas existe implementação também para HAProxy
● https://github.com/kubernetes/ingress e https://github.com/jcmoraisjr/haproxy-ingress
● Demo time :)
20. Links interessantes
● https://www.serpro.gov.br
● https://landing.google.com/sre/book.html - Livro sobre SRE do Google
● http://docs.projectcalico.org/v2.1/reference/cni-plugin/configuration - Configuração do
plugin CNI do Calico, inclusive com as referências a alocação de IPs diferentes por POD
● https://github.com/kubernetes/ingress - Repositório oficial Ingress Controller
● https://github.com/jcmoraisjr - Repositório do João Morais (Serpro) com alguns softwares
desenvolvidos para o Estaleiro (omaha-server, ingress-haproxy, coreos-bootstrap, etc)
● https://github.com/rikatz/coreos-kube-lab - Repositório com os userdata que estavam
sendo utilizados para montar os laboratórios (WIP)
● https://www.graylog.org/ - Página oficial do Projeto Graylog
● https://quay.io/ - Docker Registry com Análise de vulnerabilidades