Lançamento da versão livre da plataforma PaaS Cozystack 0.40, construída sobre Kubernetes. O projeto visa oferecer uma plataforma pronta para provedores de hospedagem e um framework para a construção de nuvens privadas e públicas. A plataforma é instalada diretamente nos servidores e abrange todos os aspectos da preparação da infraestrutura para a oferta de serviços gerenciados. Cozystack permite iniciar e fornecer clusters Kubernetes, bancos de dados e máquinas virtuais. O código da plataforma está disponível no GitHub e é distribuído sob a licença Apache-2.0.
Como stack tecnológico base, é utilizado o Talos Linux e Flux CD. As imagens do sistema, do kernel e dos módulos necessários são pré-formadas e atualizadas de forma atômica, permitindo dispensar componentes como dkms e gerenciadores de pacotes, garantindo operação estável. É fornecido um método simples de instalação em um data center vazio usando PXE e o instalador talos-bootstrap do tipo debian. Dentro da plataforma, é possível implantar com um clique serviços como Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics e outros.
A plataforma inclui uma implementação livre da infraestrutura de rede (fabric) baseado em Kube-OVN, e usa Cilium para organizar a rede de serviços, MetalLB para anunciar serviços externamente. O armazenamento é implementado no LINSTOR, onde é oferecido o uso de ZFS como camada base para o armazenamento e DRBD para replicação. Há uma pilha de monitoramento pré-configurada baseada em VictoriaMetrics e Grafana. Para executar máquinas virtuais, utiliza-se a tecnologia KubeVirt, que permite rodar máquinas virtuais clássicas diretamente em contêineres Kubernetes e já possui todas as integrações necessárias com o Cluster API para iniciar clusters Kubernetes gerenciados dentro de um cluster Kubernetes 'bare metal'.
No novo lançamento:
- Adicionado o agendador LINSTOR para alocação otimizada de pods. O "scheduler extender" próprio para Kubernetes funciona em conjunto com o agendador padrão do Kubernetes e ajuda a alocar os pods de forma ideal nos nós com armazenamento LINSTOR. Quando um pod solicita um volume LINSTOR, o agendador consulta o controlador LINSTOR sobre quais nós têm réplicas locais dos volumes necessários. A prioridade é dada aos nós onde os dados já estão presentes, minimizando o tráfego de rede e aumentando a performance de I/O. Além disso, um admission webhook foi implementado para redirecionar automaticamente os pods que utilizam volumes CSI LINSTOR para seu próprio agendador, garantindo uma integração contínua sem necessidade de configuração manual.
- Armazenamento SeaweedFS SeaweedFS foi atualizado para a versão 4.05, na qual foi otimizado o tráfego S3 (localidade de tráfego): agora, as solicitações são direcionadas para os servidores mais próximos, reduzindo a latência e acelerando o funcionamento do armazenamento. Também foi adicionado um novo componente de administração com interface web e suporte a autorização, além de workers para executar tarefas distribuídas. No Grafana, foram adicionados dashboards avançados, permitindo o monitoramento de buckets, chamadas de API e performance. certificados TLS para os componentes de administração e worker.
- O mecanismo valuesFrom do FluxCD substituiu as funções de lookup nos gráficos Helm. Essa melhoria arquitetural proporciona uma transmissão de parâmetros mais limpa e elimina a necessidade de controladores de sincronização forçada (reconciliation). A configuração a partir de ConfigMaps e referências a serviços agora é gerenciada centralmente através da chave cozystack-values em cada namespace.
- Nos componentes para integração com LINSTOR, foi implementado suporte à função auto-diskful, que transforma nós sem disco (diskless) em nós com disco (diskful) se estes mantiverem recursos DRBD no estado Primário por mais de 30 minutos.
- Implementados sistemas de gerenciamento automático de versões para PostgreSQL, Kubernetes, MariaDB e Redis, que monitoram atualizações nos repositórios upstream e fornecem mecanismos para atualização automática de versões.
Fonte: opennet.ru
