O que é considerado uma boa prática com K8S para gerenciar vários ambientes (QA, Staging, Production, Dev, etc)?
Por exemplo, digamos que uma equipe esteja trabalhando em um produto que requer a implantação de algumas APIs, juntamente com um aplicativo front-end. Normalmente, isso exigirá pelo menos 2 ambientes:
- Staging: Para iterações / testes e validação antes de liberar para o cliente
- Produção: Este é o ambiente ao qual o cliente tem acesso. Deve conter recursos estáveis e bem testados.
Portanto, supondo que a equipe esteja usando o Kubernetes, qual seria uma boa prática para hospedar esses ambientes? Até agora, consideramos duas opções:
- Use um cluster K8s para cada ambiente
- Use apenas um cluster K8s e mantenha-os em namespaces diferentes.
(1) Parece a opção mais segura, pois minimiza os riscos de possíveis erros humanos e falhas da máquina, que podem colocar o ambiente de produção em perigo. No entanto, isso acarreta o custo de mais máquinas master e também o custo de mais gerenciamento de infraestrutura.
(2) Parece que simplifica o gerenciamento de infraestrutura e implantação porque há um único cluster, mas levanta algumas questões como:
- Como ter certeza de que um erro humano pode afetar o ambiente de produção?
- Como ter certeza de que uma carga alta no ambiente de teste não causará perda de desempenho no ambiente de produção?
Pode haver algumas outras preocupações, então estou entrando em contato com a comunidade K8s no StackOverflow para ter uma melhor compreensão de como as pessoas estão lidando com esse tipo de desafio.