En ny version af den åbne PaaS-platform Cozystack 1.4 er tilgængelig, bygget på Kubernetes. Projektet sigter mod at tilbyde en klar platform til hostingudbydere og et framework til opbygning af private og offentlige cloud-løsninger. Platformen installeres direkte på servere og dækker alle aspekter af infrastrukturforberedelse til levering af administrerede tjenester. Cozystack muliggør oprettelse og levering af Kubernetes-klynger, databaser og virtuelle maskiner. Kodebasen for platformen er tilgængelig på GitHub og distribueres under Apache-2.0 licensen.
Platformen inkluderer en gratis implementation af netværksinfrastrukturen (fabric) baseret på Kube-OVN og bruger Cilium til at organisere servicenetværket, MetalLB til at annoncere tjenester udadtil. Lagringen er implementeret på LINSTOR, hvor ZFS er foreslået som grundlag for lagringen og DRBD til replikation. Der er en forudkonfigureret monitoreringsstack baseret på VictoriaMetrics og Grafana. For at starte virtual machines bruges teknologien KubeVirt, som gør det muligt at køre klassiske virtuelle maskiner direkte i Kubernetes-containere og allerede har alle nødvendige integrationer med Cluster API til at lancere administrerede Kubernetes-klynger indeni en 'hardwarbaseret' Kubernetes-klynge. Inden for platformen kan der med et klik implementeres Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics og andre tjenester.
De vigtigste nyheder i Cozystack 1.4.0:
- Der er præsenteret et nyt administrationsinterface baseret på projektet cozystack-ui. Den gamle openapi-ui og BFF-stack er blevet erstattet af et frontend i React 19 og TypeScript, som arbejder direkte med Kubernetes API. Derudover har interfacet nu support for dynamiske VNC WebSocket-URL'er til virtuelle maskiner, runtime-branding via ConfigMap, læsning af ApplicationDefinition til applikationskataloget og omdirigering af gamle adresser /openapi-ui/*.
- For worker-noder i tenant-klynger er der implementeret vedvarende lager. Virtuelle maskiner for worker-noder bruger nu PVC-diskene gennem KubeVirt dataVolumeTemplates i stedet for emptyDisk. Dette sikrer, at kubelet-certifikater, kubeconfig og tilstanden af containerd bevares efter genstart af den virtuel maskine. Feltet ephemeralStorage er blevet omdøbt til diskSize, og indstillingen storageClass er blevet tilføjet på NodeGroup-niveau. Under migreringen bliver gamle værdier automatisk konverteret.
- Der er tilføjet et nyt sæt ressourcepresets svarende til typerne af virtuelle maskiner hos cloud-udbydere. Presets beskrives i formatet ., hvor serierne t1, c1, s1, u1 og m1 angiver forskellige forhold mellem CPU og hukommelse, mens størrelserne varierer fra nano til 4xlarge. I alt er 40 muligheder tilgængelige. Gamle preset-navne er bevaret som forældede aliasser og migreres automatisk uden ændringer i de faktiske CPU- og hukommelsesgrænser.
- Systemet til deklarativ backup af administrerede applikationer er blevet udvidet. Backupstrategy-controlleren har fået strategier for PostgreSQL, MariaDB, ClickHouse og FoundationDB. BackupClass, Plan, BackupJob og RestoreJob understøttes, inklusive planlagte og engangs-backups, gendannelse på stedet og gendannelse til en kopi. Data eksporteres til et S3-kompatibelt objektlager, og legitimationsoplysninger overføres via Kubernetes Secret.
- Der er tilføjet en valgfri systempakke hami med HAMi 2.8.1 til fælles adgang til NVIDIA GPU i tenantklynger. Brugerdefinerede workload’er kan anmode om ressourcer fra nvidia.com/gpu, nvidia.com/gpumem og nvidia.com/gpucores, hvilket gør det muligt at fordele vGPU mellem flere pod’er. Aktivering sker via parameteren hami.enabled og kræver NVIDIA GPU Operator.
- Der er nu en samlet indstilling publishing.proxyProtocol til aktivering af PROXY-protokollen på værter med ingress-nginx. Når denne aktiveres, udrulles Ouroboros automatisk, hvilket løser problemet med hairpin-NAT for anmodninger fra klyngen til dens offentlige navne. For tenantklynger er der tilføjet addons.ouroboros.enabled.
- I cozystack-operator er der tilføjet indstillinger til generering af HelmRelease: interval, retry interval, install timeout, upgrade timeout og max history. Retry-strategien er blevet ændret til RetryOnFailure, og for enkelte applikationer kan timeout angives gennem annoteringen release.cozystack.io/helm-install-timeout. Dette løser en række problemer ved kold opstart af tenantklynger.
- For worker-noder i tenant Kubernetes beregnes ressourcernes kubelet-reservation automatisk for CPU og hukommelse. Annoteringer i cluster-autoscaler afspejler nu tildelte ressourcer snarere end det samlede volumen af CPU og hukommelse.
- De grundlæggende komponenter på platformen er blevet opdateret: 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. Der er tilføjet nye pakker HAMi 2.8.1 og Ouroboros 0.7.2.
- Diagnostik er blevet forbedret: cozyreport indsamler nu oplysninger om Flux, cert-manager, værtsmiljø, Application, ApplicationDefinition og Tenant-ressourcer, og danner også summary.txt med en kortfattet oversigt over aktuelle problemer. Der er tilføjet Grafana-dashboard og dataindsamlingsregler til overvågning af GPU.
- Fejl er blevet rettet i MongoDB, Kafka, tenant Kubernetes bootstrap, etcd, Velero, Kamaji, LINSTOR, SeaweedFS, Harbor, objectstorage-controller, API og andre komponenter. I API er IDOR-sårbarheden i håndteringen af TenantNamespace Get og Watch blevet rettet.
Ved opdatering skal det tages i betragtning, at worker-noderne i tenantklyngerne vil blive udskiftet én gang sekventielt på grund af overgangen til permanente PVC-diske. KubeVirt-virtuelle maskiner, der er startet før opdateringen af platformen, vil kræve en kold genstart efter overgangen til KubeVirt 1.8.2, da live-migrering af gamle virt-launcher-processer kan ende med en fejl på grund af versionændringen af QEMU. Derudover er PostgreSQL-parametre nu typede og kontrolleres mod denylisten, og cert-manager 1.20 kører som standard containere med UID/GID 65532.
Kilde: opennet.ru
