Första utgåvan av Incus, en gaffel av LXD-containerhanteringssystemet

Den första versionen av Incus-projektet har presenterats, inom vilken Linux Containers-communityt utvecklar en gaffel av LXD-containerhanteringssystemet, skapat av det gamla utvecklingsteamet som en gång skapade LXD. Incus-koden är skriven i Go och distribueras under Apache 2.0-licensen.

Kom ihåg att Linux Containers-communityt övervakade utvecklingen av LXD innan Canonical bestämde sig för att utveckla LXD separat som ett företagsprojekt. Syftet med gaffeln är att tillhandahålla ett oberoende samhällsdrivet alternativ till det Canonical-kontrollerade LXD-projektet. Incus-projektet planerar också att ta itu med några konceptuella fel som gjordes under utvecklingen av LXD som tidigare inte kunde korrigeras utan att bryta bakåtkompatibiliteten.

Incus tillhandahåller verktyg för centraliserad hantering av containrar och virtuella maskiner som distribueras både på en enda värd och i ett kluster av flera servrarProjektet implementeras som en bakgrundsprocess som tar emot nätverksförfrågningar via ett REST API och stöder olika lagringsbackends (katalogträd, ZFS, Btrfs, LVM), snapshots med tillståndsskivor, livemigrering av körande containrar från en maskin till en annan och verktyg för att lagra containeravbildningar. LXC-verktygslådan används som en runtime för att starta containrar, inklusive liblxc-biblioteket, en uppsättning verktyg (lxc-create, lxc-start, lxc-stop, lxc-ls, etc.), mallar för att bygga containrar och en uppsättning bindningar för olika programmeringsspråk. Isolering uppnås med hjälp av standard Linux-kärnmekanismer (namnrymder, cgroups, Apparmor, SELinux, Seccomp).

Funktionsmässigt följer den första Incus-utgåvan den nyligen släppta LXD 5.18-uppdateringen och fokuserar främst på att byta namn och omorganisera kodbasen, samt att ta bort föråldrade funktioner. Samtidigt innehåller den nya versionen även Incus-specifika ändringar i kommandoradsgränssnittet och API, som inte kunde inkluderas i LXD på grund av krav på bakåtkompatibilitet. I framtiden planerar utvecklarna att överföra användbara förbättringar och korrigeringar från LXD-kodbasen, och även lägga till sina egna originalinnovationer, som, om Canonical önskar, kan portas till LXD.

De mest märkbara förändringarna:

  • En övergång har gjorts till den inbäddade SQL-motorn Cowsql - en gaffel av Dqlite, skapad av den ursprungliga författaren till Dqlite av samma skäl som Incus (tillbakadragande från påverkan av Canonical). Cowsql är kompatibel med SQLite, stöder datareplikering, automatisk återställning från fel och ger feltolerans genom att distribuera hanterare över flera noder.
  • Kommandot "incus snapshot" har lagts till i kommandoradsgränssnittet för hantering av ögonblicksbilder (ersätter de separata ögonblicksbilderna och återställ kommandona lxc). Genom "incus snapshot" kan du köra operationerna för att skapa, ta bort, visa en lista, byta namn på och återställa en ögonblicksbild.
  • Logiken för att bearbeta kommandona "incus config trust add" och "incus cluster add" har ändrats, vilket nu tar ett argument med ett namn och returnerar rätt token. Operationer med ett certifikat genom kommandot "incus config trust add" har flyttats till ett separat "incus config trust add-certificate"-kommando.
  • Kommandot "incus admin" har lagts till, vilket eliminerar behovet för administratören att direkt komma åt kommandona lxc och lxd. Följande underkommandon är tillgängliga:
    • incus admin kluster
    • incus admin init
    • incus admin återställa
    • incus admin avstängning
    • incus admin väntanklar
  • De föråldrade API-åtkomstpunkterna /1.0/containers och /1.0/virtual-machines har tagits bort, ersatts av /1.0/instanser.
  • /dev/lxd-enheten har ersatts med /dev/incus, referenser till lxd i koden har ersatts med incus.
  • Typ serverkonfigurationer Ersatte "map[string]any" med "map[string]string". Föråldrad autentiseringsmetod core.trust_password (ersatt av tokenbaserad autentisering), vilket förhindrade användningen av typen "map[string]string".
  • Föråldrade *Container-funktioner har tagits bort från API:t, som ersattes av *Instance-funktioner efter implementeringen av virtuell maskinhantering (till exempel ska CreateInstance användas istället för CreateContainer).
  • Lade till verktyget lxd-to-incus för migrering från LXD till Incus (automatisk konvertering av konfigurationsfiler stöds från LXD 4.0 till 5.18). Klustermigrering stöds inte ännu.
  • Release 1.20 anges som den minsta stödda versionen av Go-språket.
  • Vissa funktioner som är inbyggda i Ubuntu eller förlitar sig på föråldrad eller ostödd programvara har upphört:
    • Borttaget stöd för Ubuntu Fan-bindningar (bridge.mode, fan.overlay_subnet, fan.underlay_subnet, fan.type), som beror på kärnpatchar som endast används i Ubuntu.
    • Tog bort stöd för shiftfs kopplade till Ubuntu virtuella filkärnpaket för att mappa monteringspunkter till användarnamnrymder.
    • Borttaget stöd för det Canonical-specifika Candid-autentiseringssystemet.
    • Ta bort stöd för den proprietära implementeringen av RBAC (Role Based Access Control) autentiseringsmekanism skapad av Canonical baserat på Macaroons och Candid.
    • Borttagna komponenter för integration med MAAS (Metal-as-a-Service), en verktygslåda för att snabbt distribuera Ubuntu-konfigurationer.
    • Tog bort konceptet att komma åt servern med ett pålitligt lösenord (core.trust_password).

Källa: opennet.ru

Lägg en kommentar