Eenheid 5 / 11

Kubernetes: Manifest, Helm en AI-aangedreven orkestratie

Winst:

  • Vermogen om de basisobjecten (Pod, Deployment, Service, ConfigMap, Secret, Namespace) en declaratieve filosofie van Kubernetes te begrijpen en solide manifesten voor kunstmatige intelligentie te produceren
  • Mogelijkheid om manifesten klaar te maken voor productie en te beveiligen met resourcelimieten, gezondheidscontroles (sondes), vaste afbeeldingstags en smalle RBAC
  • Mogelijkheid om de juiste context te verifiëren vóór uitvoering en dry-run-discipline toe te passen met dry-run/diff

Het is gemakkelijk om één container te gebruiken. Maar een systeem opzetten dat honderden containers over tientallen servers verspreidt, automatisch opnieuw opstart wanneer een van hen crasht, het repliceert wanneer de belasting toeneemt, en het bijwerkt zonder enige downtime? Dat is orkestratie, en de standaardtool in de industrie is Kubernetes (kortweg K8s) – het platform dat containers automatisch in een cluster implementeert, schaalt en beheert. Kubernetes is krachtig maar complex: alles wordt gedefinieerd door lange, inspringingsgevoelige YAML-bestanden, genaamd manifesten. Dit is waar AI een frisse wind laat waaien; Met de juiste context produceert het snel deze manifesten en decodeert het hun mysterieuze fouten.

Maar in Kubernetes betekent een verkeerd manifest dat de hele service niet overeind blijft, dat de service verkeerd wordt geschaald of dat er een kwetsbaarheid achterblijft. Het is uw verantwoordelijkheid om elk manifest dat de AI produceert te begrijpen en te verifiëren – vooral voordat kubectl van toepassing is.

Kernobjecten van Kubernetes

Om Kubernetes te kunnen auditen, moet u de belangrijkste concepten kennen:

  • Pod: kleinste werkende eenheid; Het bevat een of meerdere containers. Over het algemeen wordt de Pod niet rechtstreeks gebruikt, maar worden de bovenliggende objecten die deze beheren, gebruikt.
  • Implementatie: definieert hoeveel exemplaren van een applicatie zullen worden uitgevoerd, welke image deze zal gebruiken en hoe deze zal worden bijgewerkt. Als een Pod crasht, wordt deze automatisch opnieuw aangemaakt.
  • Service: Biedt een vast netwerkadres en taakverdeling voor de pods; Hoewel pods komen en gaan, verandert het toegangsadres niet.
  • ConfigMap en geheim: houdt configuratiewaarden en geheime informatie gescheiden van pods. ConfigMap is voor expliciete instellingen, Secret is voor gevoelige waarden.
  • Naamruimte: het gebied dat bronnen logisch verdeelt en isoleert (bijvoorbeeld dev, prod).
  • Ingress: de regelset die HTTP-verkeer van de buitenwereld naar services in het cluster leidt.

Helm is de "pakketbeheerder" van Kubernetes: hiermee kunt u terugkerende manifesten (grafieken) van een sjabloon voorzien en deze met verschillende waarden in verschillende omgevingen installeren met één enkele opdracht. AI produceert zowel een onbewerkt manifest als een Helm-diagram.

Waarom zijn er zoveel objecten? Omdat de kernfilosofie van Kubernetes declaratief is: je definieert ‘hoe je wilt dat het systeem er uiteindelijk uitziet’ (bijvoorbeeld ‘laat altijd 3 exemplaren van deze applicatie draaien’), terwijl Kubernetes de huidige staat voortdurend dichter bij die gewenste staat brengt. Als een Pod sterft, wordt er een nieuwe gemaakt; als een knooppunt uitvalt, wordt de werklast naar een ander knooppunt verplaatst. Dat is de reden waarom manifesten geen ‘doe’-commando’s zijn, maar ‘laat het zo zijn’-recepten. Het begrijpen van dit onderscheid is van cruciaal belang bij het lezen van de manifesten die AI produceert: elk domein beschrijft een deel van de gewenste toestand van het systeem. Een verkeerd domein betekent dat Kubernetes naar een verkeerd doel toewerkt – en dat doel wordt stilzwijgend en voortdurend gehandhaafd.

Tip: In Kubernetes is de belangrijkste veilige testtool kubectl apply --dry-run=server -f file.yaml: het laat zien of de server het accepteert en wat te doen zonder het manifest daadwerkelijk toe te passen. Zorg ervoor dat u de testprocedure en kubectl diff uitvoert voordat u een manifest op prod toepast.

Stap voor stap: manifesten maken met AI

  1. Beschrijf de toepassing en behoefte. Naam van de afbeelding, poort, hoeveel replica's, resourcelimieten (CPU/geheugen).
  2. Implementatie + service aanvragen. Meestal zijn beide samen nodig.
  3. Aparte configuratie en geheim. Instellingen naar ConfigMap, gevoelige waarden naar Secret.
  4. Voeg gezondheidscontroles toe. livenessProbe (is het live) en readinessProbe (is het klaar voor verkeer) zijn van cruciaal belang.
  5. Stel een resourcelimiet in. Zonder verzoeken/limieten kan een Pod het hele knooppunt in beslag nemen.
  6. Verifieer met `--dry-run` en `diff`, en breng vervolgens aan. Eerst in de testnaamruimte.

Beveiliging: Kubernetes-specifieke risico's

  1. Geheim is niet echt geheim – het is gewoon base64. Het Kubernetes Secret-object base64 codeert waarden; Dit is geen encryptie, het kan gemakkelijk worden gedecodeerd. Voor echte privacy zijn etcd-codering en een externe kluis (Vault, cloudgeheimmanager) vereist. Stuur nooit geheime manifesten rechtstreeks naar Git (er zijn oplossingen hiervoor zoals Sealed Secrets/External Secrets).
  2. Stel een resourcelimiet in. Een Pod zonder grenzen kan het hele knooppunt laten crashen door een geheugenlek.
  3. Minimale autoriteit (RBAC). Met op rollen gebaseerd toegangscontrole heeft elke dienst/gebruiker alleen de rechten die hij nodig heeft. AI geeft soms grote cluster-admin; beperk dit.
  4. Gebruik niet de 'nieuwste' afbeeldingstag. U weet niet welke versie actief is en u kunt deze niet terugdraaien.
Let op: kubectl delete of een onjuiste toepassing kan een live implementatie vernietigen. Zorg ervoor dat u verifieert in welke naamruimte u zich bevindt (kubectl config current-context) voordat u de opdrachten uitvoert; Onbedoeld werk is een veel voorkomende ramp in de productiecontext.

Raw manifest versus Helm-tabel

criterium

Ruw YAML-manifest

Helmdiagram

Installatie

kubectl toepassen -f

roer installeren

Multimedia (ontwikkelaar/producent)

Copy-paste, foutgevoelig

Eén diagram, verschillende waarden.yaml

Versie/terugdraaien

met de hand

gemakkelijk met terugdraaien van het roer

Leercurve

laag

middelmatig

wanneer

Kleine, enkele omgeving

Multi-media, repetitieve service

drie minikoffers

Geval 1 – het geheim van de gecrashte dienst. Een Pod werd voortdurend opnieuw opgestart (CrashLoopBackOff). Het team gaf de logboeken en het manifest aan de AI; Uit de AI bleek dat de Pod nooit als ‘klaar’ werd beschouwd omdat de readinessProbe naar de verkeerde poort keek. Ze repareerden de haven, de dienst werd binnen 10 minuten stabiel. Het handmatig tot stand brengen van deze relatie kan uren duren.

Geval 2 – geen grenzen stellen, verbrak de knoop. Er waren geen grenzen aan een implementatie; Door een geheugenlek werd de Pod opgeblazen en crashte het hele knooppunt, waardoor ook aangrenzende services werden uitgeschakeld. Na het incident lieten ze AI zeggen "voeg redelijke CPU-/geheugenverzoeken en limieten toe aan alle implementaties" en maakten het standaard. Eén ontbrekende lijn kostte uren aan downtime.

Geval 3 – grote RBAC gevangen. Tijdens een onderzoek bleek een door AI gegenereerd ServiceAccount-manifest gekoppeld te zijn aan de rol van clusterbeheerder, wat betekent dat de service het hele cluster kon beheren. Het team beperkte de toestemming om alleen Pods in hun naamruimte te lezen. Het principe van de minste privileges sloot een beveiligingsprobleem af.

Vier kopieerbare sjablonen

1) Implementatie + serviceproductie:

Schrijf een implementatie- en servicemanifest voor Kubernetes. Toepassing: [AD], afbeelding: [afbeelding: vaste versie], poort: [X], replica: [N]. Regels: - Voeg CPU-/geheugenverzoeken en -limieten toe. - Definieer livenessProbe en readinessProbe. - Lees de configuratie van ConfigMap, geheim van geheim object; Sluit geen waarden in het manifest in, gebruik tijdelijke aanduidingen. - Gebruik GEEN afbeeldingstag ":latest". Geef met beschrijving.

2) Oplossen van manifeste fouten:

De huidige pod heeft de status [CrashLoopBackOff / Pending / ImagePullBackOff]. Volgens het volgende manifest en de 'kubectl write'-uitvoer vermeldt u de mogelijke hoofdoorzaken in volgorde van waarschijnlijkheid en geeft u voor elk de verificatieopdracht op. Manifest: [YAML] Beschrijf: [OUTPUT]

3) Veiligheids-/integriteitscontrole:

Controleer dit Kubernetes-manifest: ontbreekt de resourcelimiet, ontbreekt deze waarschijnlijk, is er een :latest-tag, is er een te brede RBAC/toestemming, is het geheim ingebed in het manifest? Schrijf de bevindingen in volgorde van belangrijkheid en met correctie. Manifest: [YAML]

4) Conversie naar helmdiagram:

Converteer de volgende onbewerkte manifesten naar een herbruikbaar Helm-diagram: welke waarden moeten naar waarden.yaml gaan (afbeelding, replica, bron, omgeving)? Diagramstructuur en voorbeeldwaarden weergeven.yaml.Manifesten: [YAML]

Zwakke prompt/sterke prompt

Zwak: "Schrijf Kubernetes YAML voor mijn toepassing."

Resultaat: een no-probe, no-limit implementatie met :latest tag, waarin de geheime vlakte is ingebed; Onzeker en kwetsbaar in prod.

Sterk: "Schrijf Kubernetes Deployment + Service. Image myapp:1.4.2, 3 replica's, 8080 poorten. CPU 100m-500m, geheugen 128Mi-512Mi voeg verzoeken/limieten toe. Plaats liveness probe voor /healthz, readiness probe voor /ready. Lees het geheim van het geheime object, sluit het niet in het manifest in. Geef met beschrijving."

Verschil: tweede promptversie geeft schaal, resourcelimieten, gezondheidscontroles en geheime regel; De output ligt dicht bij de productie en is veilig.

Veel voorkomende fouten

  • Geen resourcelimieten instellen. Eén enkele Pod kan het hele knooppunt verbruiken.
  • Er wordt geen statuscheck (probe) toegevoegd. Kubernetes kan een gecrashte/niet gereed Pod niet detecteren.
  • `:nieuwste`-tag. Het wordt onduidelijk welke versie actief is, deze kan niet worden teruggedraaid.
  • Het geheim rechtstreeks aan Git doorgeven. Base64 is geen encryptie; iedereen lost het op.
  • Opdrachten uitvoeren in verkeerde context/naamruimte. De meest voorkomende manier om te crashen in prod.
  • `--dry-run`/`diff` overslaan. Niet zien wat er vóór de implementatie zal gebeuren.

Samengevat

Kubernetes is een krachtige maar complexe orkestrator die automatisch containers in een cluster implementeert, schaalt en optimaliseert; Alles wordt gedefinieerd door manifeste YAML's, waarvan Helm een ​​sjabloon maakt. AI produceert snel Deployment/Service-manifesten en Helm-grafieken, lost mysterieuze bugs op, maar je moet expliciet vragen om een ​​resourcelimiet, een statuscheck, een onveranderlijke afbeeldingstag, beperkte RBAC en geheime beveiligingsregels. --dry-run, diff en correcte contextcontrole zijn gewoonten die productcrashes voorkomen.

Applicatie taak

Laat AI een manifest genereren voor een voorbeeldapplicatie met de sjabloon 'Implementatie + servicegeneratie'. Vervolgens: (1) Laat het controleren op resourcelimiet, probe, :latest en secret met de sjabloon "Security/sanity check"; (2) voer kubectl apply --dry-run=server uit op een testcluster/minikube indien mogelijk en lees de uitvoer; (3) noteer de twee meest kritische veiligheids-/robuustheidsitems die u mist.

controlelijst

  • [ ] Ik heb de imageversie, het aantal replica's, de poort- en resourcelimieten aan mijn verzoek toegevoegd.
  • [ ] Ik heb een onderzoek naar levendigheid en gereedheid aan het manifest toegevoegd.
  • [ ] Afbeeldingstag opgelost; Ik heb :latest niet gebruikt.
  • [ ] Het geheim is niet ingebed in het manifest; Ik heb een geheim object/externe kluis gebruikt.
  • [ ] Ik heb RBAC/permissions teruggebracht tot minimale permissies.
  • [ ] Voordat ik solliciteerde, heb ik gecontroleerd of ik me in de juiste context bevond en dat --dry-run/diff uitvoerde.