Apresentação sobre orquestração e deployment automatizado de containers utilizando Azure Kubernetes Service (AKS), ASP.NET Core e Azure DevOps. Palestra realizada em evento promovido pelas comunidades DevOps Professionals e TOTVS Developers no dia 08/10/2019 em São Paulo-SP.
Azure DevOps - Minicurso Gratuito Azure na Prática #3
DevOps + Kubernetes: orquestração e deployment automatizado de containers - Outubro-2019
1.
2. • Microsoft Most Valuable 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 Most Valuable 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 /
6. Agenda
• Um pouco mais sobre containers Docker
• Dificuldades da adoção de containers
• Orquestração com Kubernetes: uma visão geral
• Kubernetes + Azure DevOps
• Exemplos práticos
7. Por que utilizar Docker?
• Isolamento
• Utilização mais racional de recursos
• Rapidez no deployment
• Menor dependência do ambiente
9. O que podemos instalar?
• Servidores de bancos de dados
• Aplicações Web
• Serviços em geral
10. 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?
13. E como a nuvem Microsoft fica nisto?
Azure Kubernetes Service (AKS)
+
14. Kubernetes: uma visão geral
• Também conhecido como K8s ou kube
• Desenvolvido originalmente pela Google
• Mantido pela Cloud Native Computing Foundation
• Escrito em Go
• Open source
15. Kubernetes: uma visão geral
• Cluster com máquina Master e Nodes
• Criação de objetos através de arquivos
no formato YAML
• Diversas funcionalidades para
gerenciamento e orquestração
16. Kubernetes: uma visão geral
• kubectl → ferramenta de linha de comando
• Há também um dashboard acessível via
browser
• Minikube → ambiente de testes
17. 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
19. 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
21. Kubernetes: arquitetura
• Service
• Objeto mais estável (Pods são criados ou
removidos continuamente)
• Cuidará do acesso aos Pods, funcionando
como um Load Balancer
24. Exemplo Prático
• API REST criada com o ASP.NET Core 3.0
• Será utilizada a mesma API de contagem
de acessos dos exemplos anteriores
(publicada no Docker Hub como a imagem
renatogroffe/apicontagem-3-0-alpine)
• Criação de um cluster através do Azure
Kubernetes Service (AKS)
25. 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
27. kubectl
• Utilitário de linha de comando
do Kubernetes
• Multiplataforma (Windows,
Linux e macOS)
28. Azure CLI (Command-Line Interface)
• Gerenciamento e administração de
recursos do Microsoft Azure via linha de
comando
• Compatível com Bash e PowerShell
• Multiplataforma (Windows, Linux e
macOS)
29. 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)
30. Azure Container Registry
• Armazenamento de imagens
Docker privadas na nuvem
• Alternativa ao Docker Hub /
Docker Store
32. Azure DevOps
• Controle de 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
33.
34. Exemplo Prático
• Novamente a API REST criada com o ASP.NET Core:
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