Este disponibilă versiunea liberă a platformei PaaS Cozystack 1.4, construită pe baza Kubernetes. Proiectul vizează furnizarea unei platforme gata de utilizare pentru furnizorii de găzduire și a unui cadru pentru construirea de cloud-uri private și publice. Platforma se instalează direct pe servere și acoperă toate aspectele pregătirii infrastructurii pentru furnizarea de servicii gestionate. Cozystack permite lansarea și furnizarea de clustere Kubernetes, baze de date și mașini virtuale. Codul platformei este disponibil pe GitHub și se distribuie sub licența Apache-2.0.
Platforma include o implementare liberă a infrastructurii de rețea (fabric) bazată pe Kube-OVN și folosește Cilium pentru organizarea rețelei de servicii, MetalLB pentru anunțarea serviciilor în exterior. Stocarea este implementată pe LINSTOR, unde se oferă utilizarea ZFS ca strat de bază pentru stocare și DRBD pentru replicare. Există un stack de monitorizare preconfigurat bazat pe VictoriaMetrics și Grafana. Pentru lansare, mașini virtuale se folosește tehnologia KubeVirt, care permite lansarea de mașini virtuale clasice direct în containere Kubernetes și are deja toate integrările necesare cu Cluster API pentru lansarea clustere Kubernetes gestionate în interiorul unui cluster „hardware” Kubernetes. În cadrul platformei, este posibil să se desfășoare cu un clic Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics și alte servicii.
Noile inovații în Cozystack 1.4.0:
- A fost prezentat o nouă interfață de gestionare, bazată pe proiectul cozystack-ui. Vechea stivă openapi-ui și BFF a fost înlocuită cu un front-end pe React 19 și TypeScript, care lucrează direct cu API-ul Kubernetes. În plus, interfața a primit suport pentru URL-uri WebSocket VNC dinamice pentru mașinile virtuale, branding runtime prin ConfigMap, citirea ApplicationDefinition pentru catalogul aplicațiilor și redirecționarea vechilor adrese /openapi-ui/*.
- Pentru nodurile worker ale clusterele tenant, s-a implementat stocare permanentă. Mașinile virtuale ale nodurilor worker utilizează acum discuri PVC prin KubeVirt dataVolumeTemplates în loc de emptyDisk. Datorită acestui fapt, certificatele kubelet, kubeconfig și starea containerd sunt salvate după repornirea mașinii virtuale. Câmpul ephemeralStorage a fost redenumit în diskSize, iar setarea storageClass a fost adăugată la nivelul NodeGroup. În timpul migrației, valorile vechi sunt convertite automat.
- A fost adăugată o nouă schemă de preseturi de resurse similară tipurilor de mașini virtuale ale furnizorilor de servicii cloud. Preseturile sunt descrise în formatul ., unde seriile t1, c1, s1, u1 și m1 definesc diferite raporturi CPU și memorie, iar dimensiunile variază de la nano la 4xlarge. Sunt disponibile un total de 40 de opțiuni. Numelui vechilor preseturi au fost păstrate ca aliasuri învechite și sunt migrate automat fără a modifica limitele reale ale CPU și memorie.
- Sistemul de backup declarativ pentru aplicații gestionate a fost extins. Controlerul backupstrategy a primit strategii pentru PostgreSQL, MariaDB, ClickHouse și FoundationDB. Sunt acceptate BackupClass, Plan, BackupJob și RestoreJob, backupuri programate și unice, recuperare la fața locului și recuperare în copie. Datele sunt extrase într-un stocaj de obiecte compatibil S3, iar acreditivele sunt transmise prin Kubernetes Secret.
- A fost adăugat pachetul de sistem opțional hami cu HAMi 2.8.1 pentru acces comun la GPU NVIDIA în clusterele tenant. Workload-urile personalizate pot solicita resurse nvidia.com/gpu, nvidia.com/gpumem și nvidia.com/gpucores, ceea ce permite distribuirea vGPU între mai multe pod-uri. Activarea se face prin parametru hami.enabled și necesită NVIDIA GPU Operator.
- A apărut o setare unică publishing.proxyProtocol pentru activarea protocoalelor PROXY pe gazde cu ingress-nginx. Odată activată, se desfășoară automat Ouroboros, care elimină problema hairpin-NAT pentru apelurile din cluster către numele sale publice. Pentru clusterele tenant este prevăzut un addon addons.ouroboros.enabled.
- În cozystack-operator au fost adăugate setările pentru generarea HelmRelease: interval, interval de reîncercare, timp limită de instalare, timp limită de upgrade și max istoricul. Strategia de reîncercare a fost configurată pe RetryOnFailure, iar pentru aplicațiile individuale se poate specifica timpul limită printr-o notă release.cozystack.io/helm-install-timeout. Aceasta rezolvă o serie de probleme la pornirea rece a clusterelor tenant.
- Pentru nodurile worker ale Kubernetes-ului tenant, rezervarea resurselor kubelet pentru CPU și memorie este calculată automat. Notarea cluster-autoscaler reflectă acum resursele alocate, nu volumul total de CPU și memorie.
- Componentele de bază ale platformei au fost actualizate: Talos 1.13.0, cert-manager 1.20.2, Cilium 1.19.3, NVIDIA GPU Operator 26.3.1, etcd-operator 0.4.3, KubeVirt 1.8.2, cozy-proxy 0.3.0, linstor-csi 1.10.6. Au fost adăugate noi pachete HAMi 2.8.1 și Ouroboros 0.7.2.
- Diagnostică îmbunătățită: cozyreport acum colectează informații despre Flux, cert-manager, mediu host, Application, ApplicationDefinition și resurse Tenant, precum și generează summary.txt cu un rezumat al problemelor curente. Au fost adăugate dashboard-uri Grafana și reguli de colectare a datelor pentru monitorizarea GPU.
- Au fost corectate erorile din MongoDB, Kafka, bootstrap tenant Kubernetes, etcd, Velero, Kamaji, LINSTOR, SeaweedFS, Harbor, objectstorage-controller, API și alte componente. În API, a fost remediată vulnerabilitatea IDOR în handler-urile TenantNamespace Get și Watch.
La actualizare, trebuie avut în vedere că nodurile worker ale clusterelor tenant vor fi înlocuite secvențial o singură dată din cauza trecerii la disk-uri PVC permanente. Mașinile virtuale KubeVirt, lansate înainte de actualizarea platformei, vor necesita o repornire rece după trecerea la KubeVirt 1.8.2, deoarece migrarea live a proceselor vechi virt-launcher poate eșua din cauza schimbării versiunii QEMU. În plus, parametrii PostgreSQL sunt acum tipizați și verificați conform denylist-ului, iar cert-manager 1.20, în mod implicit, rulează containere cu UID/GID 65532.
Sursa: opennet.ro
