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.
Para rodar estes exemplos, é necessário:
- Ter uma conta no Azure, com créditos disponíveis (a opção de trial gratuito funciona!)
- Ter o Azure Cli instalado
- Estar com o Azure cli logado na conta que deve ser utilizado e utilizando a subscription correta
- Ter o kubectl instalado
- Ter o Docker Desktop instalado, e configurado no Windows, ou uma distribuição do Docker no Linux (pode ser o WSL).
- Se for Windows, garantir que seu Docker está configurado para rodar Containers Linux
- Criar um cluster AKS e registro ACR
- Rodando um Container Localmente
- Dockerfile simples
- Dockerfile multi-stage
- Publicando uma imagem no ACR
- Criando um namespace
- Rodando uma Pod
- Rodando um deployment com mais de uma Pod
- Rodando um service
- Escalando horizontalmente um deployment
- Publicando nossa aplicação
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
Gostaria de agradece ao stefanprodan, que publicou a excelente imagem docker podinfo que foram utilizadas em alguns demos.