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.
.NET 5, C# 9.0 e outras novidades | TDC São Paulo Online 2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
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, do .NET
São Paulo e do Azure Talks
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. Renato Groffe - Contatos
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
/renatogroffe /in/renatogroffe
/canaldotnet
/renatogroffe
/canaldotnet
/renatogroff
4. Agenda
• Um pouco mais sobre Docker
• Docker + Bancos de Dados
• Docker Compose: deployment de aplicações e suas dependências
• Integração Docker + Visual Studio 2017
• Azure Web App for Containers
• Exemplos práticos
6. Conceitos Fundamentais
• Imagens → “receita” para criação de
containers (arquivo Dockerfile); contém
todos os arquivos e dependências de uma
aplicação – incluindo sistema operacional
• Containers → pacote com tudo que é
necessário para a execução de uma
aplicação (serviço, site, API)
8. Imagens Alpine
• Baseadas na distribuição Alpine Linux
• Preocupação com segurança e
simplicidade
• Imagens Docker menores (contendo
apenas o mínimo necessário para a
execução da aplicação)
17. Montando ambientes de testes com containers
• Rapidez na instalação
• Desinstalação sem grandes dificuldades
• Diferentes versões de um software numa mesma máquina
22. Docker Compose: uma visão geral
• Criação e execução conjunta dos múltiplos
containers de uma aplicação
• Facilita o deployment em ambientes de
desenvolvimento e testes
• Suporte a integração contínua
• Extremamente útil com microserviços
23. Docker Compose: uma visão geral
• É comum a criação de networks (redes) do
Docker para deployment
• Arquivo com configurações no formato YAML
(docker-compose.yml)
• Suporte também do Visual Studio Code
25. Docker + Visual Studio 2017
• Integração para a criação de imagens e containers
Docker em aplicações ASP.NET Core
• Possibilidade até de debug a partir de um
container
31. ASP.NET Core 2.1 + Redis +
Marvel API + Docker Compose
https://github.com/renatogroffe/ASPNETCore2.1_Docker-Compose
32. Uma dificuldade recorrente entre Devs...
• Como implementar soluções
similares a Windows Services e
multiplataformas?
• Como conseguir isto com o
máximo de reaproveitamento
de código?
36. E quanto ao suporte a Docker no Microsoft Azure?
+
37. Suporte a Docker no Azure
• Azure Container Instances
• Azure Container Registry
• Azure Web App for Containers
• Azure Container Service
• Azure Kubernetes Service (AKS)
41. Azure Web App for Containers
• Hospedagem de aplicações
• Anteriormente conhecido como Azure
Web App on Linux
• Uso de Containers Docker
• Suporte a Continuous Integration
42. Azure Web App for Containers
• Escalabilidade (vertical e horizontal)
• Suporte a HTTPS
• Criação de recursos a partir de
imagens, Docker Compose ou Pods do
Kubernetes
45. Exemplo Práticos com o Azure
• API REST criada com o ASP.NET Core 2.1
• Esta aplicação foi também publicada no
Docker Hub como a imagem
renatogroffe/apicontagem
• Contagem de acessos, além de exibição do
nome da máquina e do sistema
operacional em uso
47. Dificuldades na adoção de containers...
• 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?
53. 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
54. 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
• kubectl → ferramenta de linha de comando
• Minikube → ambiente de testes
55. Kubernetes: gerenciamento de containers
• Orquestração
• Auto recuperação
• Reinício
• Replicação
• Escalonamento
56. 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
58. 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
60. Kubernetes: arquitetura
• Service
• Objeto mais estável (Pods são criados ou
removidos continuamente)
• Cuidará do acesso aos Pods, funcionando
como um Load Balancer
61. Kubernetes: arquitetura
• Replication Controller
• 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
63. Exemplo Prático
• API REST 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)