Está disponível a versão livre da plataforma PaaS Cozystack 0.33, construída sobre Kubernetes. O projeto visa fornecer uma plataforma pronta para provedores de hospedagem e uma estrutura para construir nuvens privadas e públicas. A plataforma é instalada diretamente nos servidores e abrange todos os aspectos da preparação da infraestrutura para oferecer serviços gerenciados. O 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'.
Nos últimos um mês e meio, a equipe do projeto lançou novas versões 0.31, 0.32 e 0.33. Entre as mudanças nessas versões:
- Gerenciamento unificado da alocação de recursos de CPU e memória. Foram adicionadas variáveis de configuração cpu-allocation-ratio e memory-allocation-ratio para limitar recursos de CPU e consumo de memória em máquinas virtuais sob a gestão do KubeVirt. As variáveis se aplicam a todos os aplicativos gerenciados e cotas de recursos de inquilinos. As predefinições também consideram os coeficientes de alocação de recursos e se comportam da mesma forma que definições explícitas de recursos. Ao atualizar de versões anteriores do Cozystack, a configuração de recursos em aplicativos gerenciados é convertida automaticamente para o novo formato.
- Adicionada a funcionalidade de backup de PVC em clusters Kubernetes de inquilinos, permitindo que administradores tanto da plataforma quanto de inquilinos individuais possam criar backups e restaurar dados de serviços em execução nos clusters. Para backup, foi utilizado o projeto Velero, e o sistema requer um armazenamento externo compatível com S3.
- Implementado suporte para uso de armazenamentos NFS compartilhados com um novo módulo de sistema opcional.
- Adicionada a capacidade de configurar os soquetes de CPU disponíveis para máquinas virtuais através do parâmetro resources.cpu.sockets, permitindo a atribuição de soquetes específicos às máquinas virtuais.
- Adicionado suporte para uso de imagens golden pré-carregadas para máquinas virtuais, acelerando a preparação através de links para imagens existentes em vez de download via HTTP.
- Implementada a opção exposeMethod para Ingress-NGINX em clusters de inquilinos, que permite escolher entre Proxied e LoadBalancer.
- Melhor suporte para aplicativos Java: os parâmetros 'heap' agora são calculados com base nas solicitações e limites de memória.
- Substituído o gerenciador de pacotes padrão — em vez do Helm, agora é utilizada uma nova ferramenta chamada cozypkg (um wrapper em torno do Helm e Flux para desenvolvimento local).
- Adicionado um sincronizador HelmRelease para componentes do sistema, garantindo o controle automático das principais alterações de configuração para atualizações oportunas de aplicativos do sistema.
- Adicionado suporte para mirror de registro em clusters Kubernetes de inquilinos, configurando o containerd para clusters de inquilhos.
- Implementada uma etiquetagem unificada de objetos filhos de aplicativos para monitoramento através do WorkloadMonitors.
- Adicionada a opção cluster-domain para sobrescrever o domínio cozy.local.
- Foram adicionadas regras RBAC para a liberação de portas no KubeVirt (SSH via virtctl).
- Coleta de eventos e logs de auditoria ativada.
- Implementado backup/recuperação para PostgreSQL.
- Adicionado uma nova ferramenta cozyreport e garantida a coleta de relatórios no CI. Agora, todas as informações de diagnóstico são salvas como artefatos de construção.
- Componentes atualizados: cozykpg v1.1.0, flux-operator 0.23.0, Flux 2.6.x, Talos Linux v1.10.3, Cilium 1.17.4, MetalLB 0.15.2, Kube-OVN 1.13.13, cozy-proxy 0.2.0, Kafka Operator 0.45.1-rc1.
- Possibilidade de instalação do Talos em ambientes Air Gap.
- Suporte a GPU adicionado para clusters Kubernetes de tenant. Os usuários da plataforma podem executar cargas de trabalho com GPU tanto em máquinas virtuais quanto em clusters Kubernetes.
- Suporte beta para a arquitetura ARM garantido (compilação cruzada). O sistema de compilação foi reformulado para suportar binários e imagens de contêineres multi-arquitetura.
- O VerticalPodAutoscaler (VPA) foi ampliado, ativado para mais componentes do Cozystack e permite a autoajuste de recursos. Em particular, o VPA foi adicionado para clusters tenant do plano de controle. Eu tenho muitos módulos e um tema pesado. O site não vai dar erro 500? Cozystack e etcd-operator. Todos os componentes do Cozystack com VPA ativado podem ajustar automaticamente suas solicitações de CPU e memória com base no uso, aumentando a estabilidade.
- Suporte para API Gateway no Cilium adicionado, permitindo o uso de recursos avançados de roteamento L4/L7 através da API Gateway do Kubernetes.
- Possibilidade de adicionar parâmetros personalizados nas configurações do Cilium para clusters tenant.
- No controlador Tenant HelmRelease Reconcile, garantida a disseminação de mudanças de configuração para cargas de trabalho de tenants (assegura que qualquer HelmRelease definido em um tenant está sincronizado com as atualizações da plataforma).
- Possibilidade de configurar a proporção de alocação de CPU no KubeVirt (como CPUs virtuais se relacionam com físicas) através do valor cpu-allocation-ratio no configmap. Administradores podem configurar o overcommit de CPU para máquinas virtuais, mantendo o equilíbrio necessário entre desempenho e densidade.
- Exportação de máquinas virtuais KubeVirt implementada. A função opera via VirtualMachineExport no KubeVirt e permite aos usuários criar snapshots ou backups de imagens de máquinas virtuais.
- O suporte a diferentes classes de armazenamento (storage classes) para máquinas virtuais é garantido. O aplicativo virtual-machine permite escolher qualquer StorageClass para o disco do sistema da máquina virtual em vez de usar um PVC fixo (veja os valores systemDisk.storage e systemDisk.storageClass na configuração do aplicativo).
Fonte: opennet.ru
