Hur policyer når klustren
Vilka objekt en policy blir i varje kluster, hur du kontrollerar om den tillämpas, och hur plattformen försöker igen mot kluster den inte nådde.
Hyresgäster skriver policyer via Policies-modulen, module-policies i stackship-system,
som sparar dem i sin egen databas. De tre admission-reglerna — Obligatoriska etiketter,
Tillåtna register och Förbjud taggen latest — förs sedan ut till varje kluster som policyn
gäller. Tillåtna beräkningsplaner lämnar aldrig kontrollplanet: modulerna som skapar resurser
frågar Policies-modulen om den.
Objekten i ett kluster
För varje kluster i policyns omfattning skriver modulen en klusteromfattande Policy-resurs
(policies.platform.stackship.se) med namnet policy-<policy id>, märkt
platform.stackship.se/boundary=<boundary id>. Den skriver den som plattformen, inte som personen
som sparade policyn.
Operatorn i klustret gör om resursen till:
- en
ValidatingAdmissionPolicymed namnetstackship-<policy id>, som innehåller regeln, med felpolicynFail: ett uttryck som inte kan utvärderas avvisar objektet; - medan policyn är påslagen, en
ValidatingAdmissionPolicyBindingmed samma namn och åtgärdenDeny, som väljer namnrymderna märktaplatform.stackship.se/boundary=<boundary id>.
När en policy inaktiveras tas bindningen bort och admission-policyn lämnas kvar, och den utvärderar
då ingenting. När Policy-resursen tas bort tar operatorn bort båda.
Kontrollera en policy i ett kluster
Resursens status visar vad operatorn gjorde av den:
kubectl get policies.platform.stackship.se policy-<policy-id> -o jsonpath='{.status.phase}'| Fas | Betydelse |
|---|---|
Enforcing |
Admission-policy och bindning är installerade |
Inert |
Installerad men inte bunden — policyn är inaktiverad |
Unsupported |
Klustret har inte ValidatingAdmissionPolicy, som kräver Kubernetes 1.30 eller senare. Ingenting tillämpas; operatorn kontrollerar igen varje timme |
Error |
Resursen kunde inte göras om till en admission-policy, eller så misslyckades tillämpningen; villkoret Ready säger varför |
Portalen visar inget av detta: en policy i ett kluster med Unsupported ser likadan ut som en som
tillämpas. Hyresgäster får veta en policys läge i klustren bara från dig.
Nya försök
En sparning skriver till alla kluster på en gång; ett kluster som avvisar eller inte går att nå registreras, och sparningen lyckas ändå. Var femte minut tillämpar modulen varje policy på nytt i alla kluster som dess boundary omfattar, så att ett sådant kluster kommer ikapp. Bara en replik kör en sådan omgång åt gången.
Omgången lägger bara till och uppdaterar; den tar aldrig bort. En policy lämnar ett kluster bara när någon snävar in dess omfattning eller tar bort den. När en boundary slutar omfatta ett kluster ligger dess policyer därför kvar där tills var och en sparas igen eller tas bort. En borttagning avvisas, och policyn behålls, tills varje kluster där den är installerad har tagit bort den.
| Inställning | Standard | Betydelse |
|---|---|---|
Policies__ConvergeIntervalMinutes |
5 |
Minuter mellan omgångarna |
Policies__ConvergeOnce |
false |
Kör en omgång och sluta sedan |
Båda är miljövariabler för deploymenten module-policies; installationsprogrammet erbjuder dem
inte.
Kyverno
När Policies-modulen installeras installeras också Kyverno 3.4.5, som plattformen använder för egna skydd. Hyresgästernas policyer är inte Kyverno-policyer; de är admission-objekten i Kubernetes ovan.