Releaser och releaseflödet
Vad en plattformsrelease är, hur plattformen läser och verifierar det signerade releaseflödet, vilken kanal den följer och vad som händer utan ett flöde.
Varje version som Livscykelhantering kan rulla ut kommer från releaseflödet. Plattformen läser det själv; ingenting skjuts någonsin ut till ett kluster.
Vad en release är
En plattformsrelease är en namngiven uppsättning komponentversioner — plattformens API, operatorn, portalen, backendmodulerna, CRD-paketet samt de tredjepartscharts och det installationsprogram som releasen låser. För varje komponent anger flödet:
- en containeravbildning låst med digest (
…@sha256:…), eller, för CRD-paketet och tredjepartscharts, en paket-URL med den SHA-256-kontrollsumma paketet måste stämma med; - vilken kanal releasen hör till;
- för ett CRD-paket, vilken version av installationsprogrammet releasen kör som sitt plattformssteg.
Flödet listar releaserna med den nyaste först, och listan Mål på planeringssidan visar dem i den ordningen.
Hur plattformen läser flödet
Lifecycle-modulen hämtar flödet och dess fristående signatur (flödets URL med .sig tillagt)
ungefär en gång i timmen, och igen varje gång någon väljer Sök efter uppdateringar på fliken
Components. Innan den använder något av innehållet gäller:
- Signaturen måste gå att verifiera mot en av de publika nycklar plattformen litar på. Ett flöde som saknar signatur, har en felaktig signatur, inte går att tolka eller når en plattform som inte litar på någon nyckel alls avvisas i sin helhet.
- Kanalen måste stämma. Flödet anger en kanal, och en plattform läser bara ett flöde på den
kanal den är konfigurerad för —
stableom inget annat anges. Ett flöde på en annan kanal ignoreras. - Varje post måste vara låst. En post vars avbildning inte är låst med digest hoppas över, liksom en post för en komponent som plattformen inte känner till och som flödet inte beskriver.
Ett avvisat flöde ändrar ingenting: de releaser som redan är registrerade finns kvar, och Sök efter uppdateringar svarar Kunde inte nå utgåvekanalen. Operatorn kontrollerar CRD-paketet mot dess kontrollsumma en gång till innan den tillämpar det, så ett paket kan inte ändras på vägen mellan flödet och klustret.
Att läsa flödet registrerar bara vilka releaser som finns. Ingenting som körs ändras förrän någon kör en utrullning.
Inställningar
Flödet konfigureras i ConfigMap module-lifecycle-config i stackship-system, som
Deploymenten module-lifecycle läser sina inställningar från när den startar: starta om
Deploymenten efter en ändring. Installationsprogrammet sätter värdena när plattformen installeras.
En utrullning som omfattar Lifecycle-modulen skriver dem igen: en flödes-URL eller kanal som du har
satt behålls, men ReleaseFeed__TrustedPublicKeysPem__0 sätts tillbaka till Stackships nyckel,
så lägg en egen nyckel som __1.
| Inställning | Standard | Betydelse |
|---|---|---|
ReleaseFeed__FeedUrl |
https://releases.stackship.se/feed.json, satt av installationsprogrammet |
Var flödet läses ifrån. Peka bara mot en spegel när klustret inte når det publika flödet; spegeln måste också servera .sig-filen bredvid |
ReleaseFeed__Channel |
stable |
Den enda kanal vars flöde används |
ReleaseFeed__TrustedPublicKeysPem__0 |
Stackships publika nyckel för releasesignering, satt av installationsprogrammet | En publik PEM-nyckel som flödets signatur kontrolleras mot; fler nycklar läggs i __1, __2 och så vidare |
ReleaseFeed__PollIntervalSeconds |
3600 |
Hur ofta flödet läses, i sekunder; aldrig oftare än var 60:e sekund |
Modulens konfigurationsreferens listar alla dess inställningar.
Utan ett flöde
När ReleaseFeed__FeedUrl är tom läser plattformen inget flöde. Det är en giltig konfiguration,
till exempel för en installation utan utgående åtkomst, och den får följande konsekvenser:
- Sök efter uppdateringar svarar Ingen utgåvekanal konfigurerad;
- inga releaser registreras, så det finns ingenting att planera en utrullning eller en installation utifrån;
- kontrollen före uppgradering Release feed is reachable hoppas över;
- de Kubernetes-behörigheter som en release deklarerar tillämpas aldrig, så fliken Components varnar för att kluster-RBAC inte är konvergerad — se Statusar.
Den installerade releasen
Avbildningar byggs en gång och flyttas vidare från release till release, så en avbildning kan
inte veta vilken release den hör till. Det kan CRD-paketet: varje release har ett, uppkallat
efter releasen. När en utrullning tillämpar en releases CRD-paket registrerar Lifecycle-modulen
den versionen som den installerade plattformsreleasen, i ConfigMap stackship-platform-release i
stackship-system, och plattformens API rapporterar den som plattformens version. Den
registrerar den när den märker att utrullningen har lyckats — se
Efter utrullningen.
Nytt i versionen
En release kan ha höjdpunkter: några korta punkter, på engelska och svenska, var och en med länkar in i dokumentationen. Flödets signatur täcker dem som resten av releasen. När Lifecycle-modulen registrerar den installerade releasen registrerar den releasens höjdpunkter bredvid den, och varje användare ser dem en gång i portalen efter uppgraderingen, under Nytt i versionen. De kan öppna den igen från hjälpmenyn. En release utan höjdpunkter visar ingenting.