Skip to content

andreracz/TutorialDockerKubernetes

Repository files navigation

Tutorial Docker e Kubernetes

Este repositório é um tutorial sobre Docker e Kubernetes, ele traz os principais comandos utilizados e alguns conceitos na apresentação. Ele foi criado para o Bootcamp que a Avanade criou para formação de Devs, e pode ser utilizado ou copiado livremente. Apenas peço que dê o crédito se for copiar.

Este tutorial foi pensado para profissionais de desenvolvimento de sitemas, que querem conhecer Docker e Kubernetes, então temas como instalação e operação não são cobertos.

Os slides que eu uso para passar os conceitos principais sobre Docker e Kubernetes estão disponíveis aqui.

Pré-Requisitos

Para rodar estes exemplos, é necessário:

  1. Ter uma conta no Azure, com créditos disponíveis (a opção de trial gratuito funciona!)
  2. Ter o Azure Cli instalado
  3. Estar com o Azure cli logado na conta que deve ser utilizado e utilizando a subscription correta
  4. Ter o kubectl instalado
  5. Ter o Docker Desktop instalado, e configurado no Windows, ou uma distribuição do Docker no Linux (pode ser o WSL).
  6. Se for Windows, garantir que seu Docker está configurado para rodar Containers Linux
  7. Criar um cluster AKS e registro ACR

Tutoriais sobre Docker

  1. Rodando um Container Localmente
  2. Dockerfile simples
  3. Dockerfile multi-stage
  4. Publicando uma imagem no ACR

Tutoriais sobre Kubernetes

  1. Criando um namespace
  2. Rodando uma Pod
  3. Rodando um deployment com mais de uma Pod
  4. Rodando um service
  5. Escalando horizontalmente um deployment
  6. Publicando nossa aplicação

Desenvolvimento Futuro

Lista de tópicos que eu pretendo adicionar a este tutorial, e que podem ser úteis para quem quiser aprofundar os estudos:

  • Como utilizar quotas para restringir um namespace
  • Explicação detalhada sobre Deployment e ReplicaSet
  • Probes (readiness, liveness)
  • Utilização de Ingress
  • Utilização de Services para mapear serviços externos
  • Utilização de Persistent Volume e Persistent Volume Claims
  • Utilização de StatefulSet para criar serviços persistentes
  • Utilização de Secrets
  • Segurança: Network Policy
  • Segurança: Controle de Acesso
  • Pods com mais de um container (Sidecar, etc...)
  • Ferramentas de template (Helm / Kustomize)
  • Uso de Jobs
  • Uso de Init Containers
  • Uso do KEDA para escalar por filas
  • Uso de Node Pools
  • Uso de Node Affinity e Node Anti-affinity para controlar onde roda um serviço
  • Container Windows e Linux rodando no mesmo cluster
  • Monitoramento do AKS com App Insights

Agradecimentos

Gostaria de agradece ao stefanprodan, que publicou a excelente imagem docker podinfo que foram utilizadas em alguns demos.