Este documento descreve as diretrizes de segurança implementadas neste projeto educacional de instalação do Kubernetes, inspirado no guia "Kubernetes The Hard Way". O projeto demonstra uma instalação completa, desde a infraestrutura básica até implantações funcionais, utilizando o Ansible para automação.
Este projeto serve como:
- Ambiente de aprendizagem para instalação manual do Kubernetes
- Demonstração de boas práticas de segurança
- Guia prático para compreensão da infraestrutura de chaves públicas (PKI)
- Exemplo de automatização com Ansible
- Laboratório para testes de recursos do Kubernetes
- Implementação de PKI própria utilizando:
- Curva Ed25519 (mais moderna que RSA)
- Função de hash SHA-512 para maior segurança
- Autoridades Certificadoras (CAs) distintas para etcd e Kubernetes
- Prazos de validade configuráveis via variáveis do Ansible:
- CAs: 1 ano (
pki_validade_ca: 365
) - Certificados: 30 dias (
pki_validade_cert: 30
)
- CAs: 1 ano (
- Virtualização via Vagrant com LibVirt
- Rede isolada (172.24.0.0/24)
- Arquitetura em camadas:
- Balanceador de carga frontal (HAProxy)
- Plano de Controle com 3 nós
- Nós de trabalho para execução de cargas
- MetalLB para serviços de balanceamento de carga
- Demonstração de boas práticas:
- Chaves Ed25519 para acesso SSH
- Usuário sem privilégios de root (vagrant)
- Elevação de privilégios configurada via Ansible
- Observação: configurações simplificadas para ambiente de estudos
- HAProxy:
- Terminação TLS
- Distribuição de carga do Plano de Controle
- Monitoramento de integridade dos pontos de acesso
- MetalLB:
- Modo camada 2 para ambiente local
- Integração com serviços Kubernetes
- Faixa de endereços IP configurável
- Flannel CNI:
- Rede sobreposta VXLAN
- Isolamento de contêineres
- Políticas básicas de rede
- Malha de Serviços (planejado):
- Exemplo de implementação
- Monitoramento de tráfego
- Políticas granulares de acesso
Demonstração de segurança do etcd:
- TLS mútuo em todas as comunicações
- Certificados específicos por função
- Separação clara de responsabilidades:
- Certificados para servidores
- Certificados para comunicação entre pares
- Certificados para clientes (HAProxy/API Server)
Implementação didática dos componentes principais:
- Servidor de API com TLS
- Kubelet com autenticação por certificado
- Arquivo de configuração (kubeconfig) gerado automaticamente
- Controle de acesso básico demonstrativo (RBAC)
O projeto inclui exemplos de:
- Aplicações sem estado
- Aplicações com estado
- Configurações de entrada (Ingress)
- Gerenciamento de segredos
- Mapas de configuração
- Volumes persistentes
Exemplos de controle de tráfego:
- Isolamento de espaços de nome
- Regras de entrada e saída
- Políticas baseadas em rótulos
- Segmentação de rede refinada
Demonstrações de:
- IP interno do cluster (ClusterIP)
- Porta do nó (NodePort)
- Balanceador de carga via MetalLB
- Entrada com TLS
Este é um projeto educacional aberto a contribuições. Para contribuir:
- Faça uma cópia do repositório
- Crie um ramo para sua funcionalidade
- Mantenha o foco educacional
- Documente alterações de segurança
- Envie um pedido de incorporação
Este projeto NÃO deve ser usado em produção sem modificações significativas:
- Políticas mais rigorosas são necessárias
- Rotação de certificados deve ser implementada
- Sistema de monitoramento precisa ser adicionado
- Fortalecimento adicional de segurança é necessário
- Políticas de rede mais restritivas
- Configuração real de alta disponibilidade
- Projeto focado em aprendizagem
- Algumas configurações são simplificadas
- Use como material de estudo
- Implemente controles adicionais para produção
Para reportar problemas de segurança:
- Abra uma ocorrência detalhada
- Utilize a etiqueta "segurança"
- Explique o impacto educacional
- Sugira melhorias didáticas
- Kubernetes The Hard Way
- Documentação de Segurança do Kubernetes
- Modelo de Segurança do etcd
- Boas Práticas de PKI
- Flannel CNI
- MetalLB
- Boas Práticas do HAProxy
Este projeto é distribuído sob a licença MIT, permitindo uso educacional e derivações, desde que mantidos os créditos originais.