Cluster compartilhado do Kubernetes

Cluster compartilhado do Kubernetes

Estamos planejando nossa nova infraestrutura de cluster Kubernetes e tenho algumas perguntas. Atualmente, temos um cluster maior onde ambientes (dev, staging, prod) e várias equipes estão trabalhando. No começo era apenas um “POC”, uma demonstração – mas gente, vocês sabem: nada dura mais do que soluções temporárias. Nesta configuração, temos alguns problemas gerais e na nossa arquitetura de destino, planejamos corrigir alguns desses tópicos.

Espero que alguns de vocês possam compartilhar conhecimento/experiência.

Em primeiro lugar: um cluster por aplicação não é solução. Os aplicativos são muito pequenos e cada equipe tem cerca de 3 a 5 aplicativos e precisa de cerca de 6 a 20 GB de RAM em todos os nós por ambiente. Portanto, um único cluster não é realmente uma opção.

Planejamos um cluster por ambiente: dev, staging (qa), prod e talvez para operações um cluster de demonstração. Tudo é e será automatizado e IaC com terraform + ansible (kubespray). Cada escopo de equipe/aplicativo receberá um único namespace - por causa.

Nossas dúvidas/problemas:

Monitoramento Normalmente usamos Prometheus e Grafana para monitorar o uso de recursos de pod/cluster. New também deve conter registro central (estamos testando soluções agora). Isso é bom para a equipe de infra, mas a infra não deseja monitorar no nível do aplicativo.

Existe alguma maneira funcional de fornecer monitoramento às equipes de aplicativos? Tipo: você (a equipe do aplicativo) pode configurar alertas sobre logs, CPU, uso de RAM, o que precisar. "Você só precisa implementar este gráfico de leme". Em um ótimo mundo, eu forneceria a cada equipe (portanto, a cada namespace) sua própria pilha de monitoramento, para que também pudéssemos limitar o armazenamento e o uso de memória RAM + CPU e cada equipe pudesse usar os recursos "ordenados" (portanto, se a equipe tem muitas necessidades de logs/monitoramento, precisa "pedir" mais recursos"). Também com base nessa abordagem, eles podem escolher o software que melhor se adapta.

Outra solução poderia ser que a equipe de infra-estrutura configurasse uma solução central de monitoramento/log e limitasse o acesso. O App-Team A não deve ser capaz de acessar logs/uso de CPU/uso de memória RAM/uso de disco do App-Team B. Mas não consigo ver nenhuma maneira de fazer isso realmente bom.

Pode ser uma opção que a equipe de infra instale essa pilha - mas tudo que vi é: quando instalo uma pilha de monitoramento em um namespace específico, a pilha precisa de acesso de administrador ao cluster. Isso não é legal na minha opinião.

Estou errado?

Armazenar Temos um armazenamento brilhante e queremos mantê-lo. Se uma equipe precisar de um disco, adicionamos um "volume persistente glusterfs" com um tamanho e storageClassName específicos como "team1-disk5". A partir disso, a equipe pode criar um PVC e utilizar o armazenamento. Funciona bem no passado.

Esta é uma boa solução? Alguma outra ideia?

Acho que isso é tudo por enquanto. Apenas essas duas perguntas. Alguma ideia para me levar na direção correta?

Obrigado!

informação relacionada