Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janeiro-2019
O documento apresenta dois perfis profissionais com experiência em tecnologia, especificamente na área de .NET e DevOps. Ambos possuem mais de uma década de experiência e atuam como autores técnicos e palestrantes.
Kubernetes - do Pod ao Deployment Automatizado - DevOps Professionals - Janeiro-2019
2.
• Microsoft MostValuable Professional (MVP)
• Multi-Plataform Technical Audience Contributor
(MTAC)
• Mais de 15 anos de experiência na área de
Tecnologia
• Autor Técnico e Palestrante
• Um dos organizadores do Canal .NET, .NET SP,
Azure Talks e DevOps Professionals
Renato Groffe
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
3.
• Microsoft MostValuable Professional (MVP)
• 14 anos com Tecnologia, sendo 9 na área de
Turismo
• Autor Técnico e Palestrante
• Um dos organizadores do.NET SP e DevOps
Professionals
Milton Câmara Gomes
h t t p s : / / m e d i u m . c o m / @ m c a m a r a /
4.
Agenda
• Um poucomais sobre containers Docker
• Dificuldades da adoção de containers
• Orquestração com Kubernetes: uma visão geral
• Kubernetes + Azure DevOps
• Exemplos práticos
Motivações para uso
•Isolamento
• Utilização mais racional de recursos
• Rapidez no deployment
• Menor dependência do ambiente
• Microserviços ganhando força
O que podemosinstalar?
• Servidores de bancos de dados
• Aplicações Web
• Serviços em geral
9.
Existem também dificuldades...
•Como escalar containers?
• Como garantir o trabalho coordenado
entre os diferentes containers de uma
aplicação?
• Como detectar containers com falhas e
corrigir isso automaticamente?
Kubernetes: uma visãogeral
• Também conhecido como K8s ou kube
• Desenvolvido originalmente pela Google
• Mantido pela Cloud Native Computing Foundation
• Escrito em Go
• Open source
16.
Kubernetes: uma visãogeral
• Cluster com máquina Master e Nodes
• Criação de objetos através de arquivos no formato
YAML
• Diversas funcionalidades para gerenciamento
• kubectl → ferramenta de linha de comando
• Minikube → ambiente de testes
Kubernetes: arquitetura
• Master
•Máquina que controla os Nodes (Nós)
• Responsável pelas atribuições de tarefas
aos Nodes
• Nodes
• Máquina que realizam as tarefas
atribuídas pelo Master
Kubernetes: arquitetura
• Pod
•Grupo de um ou mais containers
implantados em um Node (Nó)
• Compartilham o mesmo endereço IP,
IPC, nome do host e outros recursos
POD
Kubernetes: arquitetura
• Service
•Objeto mais estável (Pods são criados ou
removidos continuamente)
• Cuidará do acesso aos Pods, funcionando
como um Load Balancer
23.
Kubernetes: arquitetura
• ReplicationController
• Controla quantas cópias idênticas de um Pod
serão executadas e em quais locais do cluster
• Kubelet
• Serviço que garante a inicialização e execução
dos containers nos Nodes
Exemplo Prático
• APIREST criada com o ASP.NET Core 2.1
• Será utilizada a mesma API de contagem
de acessos dos exemplos anteriores
(publicada no Docker Hub como a imagem
renatogroffe/apicontagem)
• Criação de um cluster através do Azure
Kubernetes Service (AKS)
O que éDevOps?
“DevOps é a união de pessoas, processos e produtos para permitir a
entrega contínua de valor aos nossos usuários finais.
É muito importante perceber que o DevOps não é um produto.
Você não pode comprar DevOps e instalá-lo. O DevOps não é
apenas automação ou infraestrutura como código. DevOps é
pessoas que seguem um processo ativado por produtos para
agregar valor aos nossos usuários finais.”
Donovan Brown
kubectl
• Utilitário delinha de comando
do Kubernetes
• Multiplataforma (Windows,
Linux e macOS)
31.
Azure CLI (Command-LineInterface)
• Gerenciamento e administração de
recursos do Microsoft Azure via linha de
comando
• Compatível com Bash e PowerShell
• Multiplataforma (Windows, Linux e
macOS)
32.
Azure Cloud Shell
•Gerenciamento e administração de
recursos na nuvem via linha de
comando no Portal do Azure
• Suporte a Bash e PowerShell
• Diversas ferramentas pré-instaladas
(Azure CLI, kubectl, por exemplo)
33.
ASP.NET Core 2.1
•Gerenciamento e administração de
recursos do Microsoft Azure via linha de
comando
• Compatível com Bash e PowerShell
• Multiplataforma (Windows, Linux e
macOS)
34.
Azure Container Registry
•Armazenamento de imagens
Docker privadas na nuvem
• Alternativa ao Docker Hub /
Docker Store
Azure DevOps
• Controlede Versão do Código Fonte (GIT ou TFVC)
• Gestão de Tarefas (Scrum / Kanban)
• Integração Contínua
• Deploy Contínuo
• Testes Automatizados
• Dashboards
38.
Exemplo Prático
• Novamentea API REST criada com o ASP.NET Core
2.1: esta aplicação retornará uma contagem de
acessos e o Pod a partir do qual é executada a
instância de uma aplicação
• Esta mesma API foi publicada no Docker Hub como
a imagem renatogroffe/apicontagem
• Comando para obter as definições de acesso ao
cluster:
kubectl config view --raw