• 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 /
• 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 /
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
Um pouco mais sobre containers Docker
Motivações para uso
• Isolamento
• Utilização mais racional de recursos
• Rapidez no deployment
• Menor dependência do ambiente
• Microserviços ganhando força
E com isto temos o fim do “bordão”...
O que podemos instalar?
• Servidores de bancos de dados
• Aplicações Web
• Serviços em geral
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?
E como superar tais dificuldades?
Utilizando orquestradores
E como a nuvem Microsoft fica nisto?
Azure Container Service
E mais recentemente
Azure Kubernetes Service (AKS)
conhecido anteriormente como AKS (managed Kubernetes)
+
Kubernetes: uma visão geral
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
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
Kubernetes: gerenciamento de containers
• Orquestração
• Auto recuperação
• Reinício
• Replicação
• Escalonamento
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
kubectl
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
• Deployment
• Abstração de um Pod com
recursos adicionais
• Conta com gerenciamento de
estados
Deployment
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
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
Kubernetes: arquitetura
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)
Aplicação
• Fontes:
https://github.com/renatogroffe/ASPNETCore2.1_Kubernetes
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
O que utilizaremos no deployment automatizado?
kubectl
• Utilitário de linha de comando
do Kubernetes
• Multiplataforma (Windows,
Linux e macOS)
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)
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)
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)
Azure Container Registry
• Armazenamento de imagens
Docker privadas na nuvem
• Alternativa ao Docker Hub /
Docker Store
AKS (Azure Kubernetes Service)
+
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
Exemplo Prático
• Novamente a 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
medium.com/@renato.groffe/

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
  • 5.
    Um pouco maissobre containers Docker
  • 6.
    Motivações para uso •Isolamento • Utilização mais racional de recursos • Rapidez no deployment • Menor dependência do ambiente • Microserviços ganhando força
  • 7.
    E com istotemos o fim do “bordão”...
  • 8.
    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?
  • 10.
    E como superartais dificuldades?
  • 11.
  • 12.
    E como anuvem Microsoft fica nisto? Azure Container Service
  • 13.
    E mais recentemente AzureKubernetes Service (AKS) conhecido anteriormente como AKS (managed Kubernetes) +
  • 14.
  • 15.
    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
  • 17.
    Kubernetes: gerenciamento decontainers • Orquestração • Auto recuperação • Reinício • Replicação • Escalonamento
  • 18.
    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.
  • 20.
    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 • Deployment •Abstração de um Pod com recursos adicionais • Conta com gerenciamento de estados Deployment POD
  • 22.
    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
  • 24.
  • 26.
    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)
  • 27.
  • 28.
    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
  • 29.
    O que utilizaremosno deployment automatizado?
  • 30.
    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
  • 35.
  • 36.
    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
  • 40.