Jedinica 5 / 11

Kubernetes: Manifest, Helm i AI-Powered Orchestration

Dobici:

  • Sposobnost razumijevanja osnovnih objekata (Pod, Deployment, Service, ConfigMap, Secret, Namespace) i deklarativne filozofije Kubernetesa i izrade čvrstih manifesta za umjetnu inteligenciju
  • Sposobnost izrade manifesta spremnih za proizvodnju i sigurnih s ograničenjima resursa, zdravstvenim provjerama (sondama), fiksnim oznakama slike i uskim RBAC-om
  • Sposobnost provjere ispravnog konteksta prije izvođenja i primjene discipline trčanja na suho s trčanjem na suho/dif

Lako je pokrenuti jedan kontejner. Ali uspostavljanje sistema koji širi stotine kontejnera na desetine servera, automatski se ponovo pokreće kada se jedan od njih sruši, replicira ga kada se opterećenje poveća i ažurira ga bez prekida rada? To je orkestracija, a industrijski standardni alat je Kubernetes (skraćeno K8s) — platforma koja automatski postavlja, skalira i upravlja kontejnerima u cijelom klasteru. Kubernetes je moćan, ali složen: sve je definisano dugim YAML datotekama koje su osjetljive na uvlačenje – koje se nazivaju manifesti. Ovdje AI daje dašak svježeg zraka; Uz pravi kontekst, brzo proizvodi ove manifeste i dekodira njihove misteriozne greške.

Ali u Kubernetesu, pogrešan manifest znači neuspjeh u podizanju cijele usluge, pogrešno skaliranje ili ostavljanje ranjivosti. Vaša je odgovornost razumjeti i provjeriti svaki manifest koji AI proizvodi - posebno prije nego što se kubectl primijeni.

Kubernetes osnovni objekti

Za reviziju Kubernetesa, trebali biste znati glavne koncepte:

  • Pod: Najmanja radna jedinica; Sadrži jedan ili više kontejnera. Općenito, Pod se ne koristi direktno, ali se koriste nadređeni objekti koji njime upravljaju.
  • Deployment: Definira koliko će se kopija aplikacije pokrenuti, koju će sliku koristiti i kako će se ažurirati. Ako se Pod sruši, automatski će ga ponovo kreirati.
  • Usluga: Pruža fiksnu mrežnu adresu i balansiranje opterećenja podovima; Iako podovi dolaze i odlaze, pristupna adresa se ne mijenja.
  • ConfigMap and Secret: čuva vrijednosti konfiguracije i tajne informacije odvojeno od podova. ConfigMap je za eksplicitne postavke, Secret je za osjetljive vrijednosti.
  • Imenski prostor: Područje koje logično dijeli i izoluje resurse (npr. dev, prod).
  • Ingress: Skup pravila koji usmjerava HTTP promet iz vanjskog svijeta na usluge u klasteru.

Helm je „menadžer paketa“ Kubernetesa: omogućava vam da šablonirate ponavljajuće manifeste (grafikone) i da ih instalirate sa različitim vrednostima u različitim okruženjima pomoću jedne naredbe. AI proizvodi sirovi manifest i Helm grafikon.

Zašto ima toliko objekata? Zato što je osnovna filozofija Kubernetesa deklarativno: vi definirate "kako želite da sistem na kraju izgleda" (npr. "uvijek imate 3 pokrenute kopije ove aplikacije"), dok Kubernetes kontinuirano pomjera trenutno stanje bliže željenom stanju. Ako mahuna umre, ona stvara novu; ako čvor padne, on premješta radno opterećenje na drugi čvor. Zato manifesti nisu "uradi" komande, već "neka bude ovako" recepti. Shvatanje ove razlike je kritično kada se čitaju manifesti koje AI proizvodi: svaki domen opisuje dio željenog stanja sistema. Pogrešan domen znači da Kubernetes radi na pogrešnom cilju — a taj cilj se tiho, uporno sprovodi.

Savjet: U Kubernetesu, najvažniji bezbedni alat za testiranje je kubectl apply --dry-run=server -f file.yaml: pokazuje da li će server prihvatiti i šta da radi bez stvarne primene manifesta. Obavezno pokrenite dry-run i kubectl diff prije primjene manifesta na prod.

Korak po korak: Kreiranje manifesta pomoću AI

  1. Opišite aplikaciju i potrebu. Ime slike, port, koliko replika, ograničenja resursa (CPU/memorija).
  2. Zahtjev za implementaciju + uslugu. Obično su oba potrebna zajedno.
  3. Odvojena konfiguracija i tajna. Postavke za ConfigMap, osjetljive vrijednosti za Secret.
  4. Dodajte zdravstvene preglede. livenessProbe (da li je aktivan) i readinessProbe (da li je spreman za saobraćaj) su kritični.
  5. Postavite ograničenje resursa. Bez zahtjeva/ograničenja Pod može potrošiti cijeli čvor.
  6. Potvrdite sa `--dry-run` i `diff`, a zatim primijenite. Prvo u testnom imenskom prostoru.

Sigurnost: Rizici specifični za Kubernetes

  1. Tajna zapravo nije tajna – to je samo base64. Kubernetes Secret objekt base64 kodira vrijednosti; Ovo nije enkripcija, lako se dešifruje. Za istinsku privatnost potrebna je etcd enkripcija i eksterni trezor (trezor, cloud secret manager). Nikada ne urezujte tajne manifeste direktno u Git (postoje rješenja za ovo kao što su Sealed Secrets/External Secrets).
  2. Postavite ograničenje resursa. Pod bez ograničenja može srušiti cijeli čvor uz curenje memorije.
  3. Minimalno ovlaštenje (RBAC). Sa kontrolom pristupa zasnovanom na ulogama, svaka usluga/korisnik ima samo dozvole koje su mu potrebne. AI ponekad daje veliki cluster-admin; suzite ovo.
  4. Nemojte koristiti najnoviju oznaku slike. Ne znate koja je verzija pokrenuta i ne možete je vratiti.
Oprez: brisanje kubectl-a ili neispravna primjena mogu uništiti živu implementaciju. Obavezno provjerite u kojem se imenskom prostoru nalazite (kubectl config current-context) prije pokretanja naredbi; Slučajni rad je uobičajena katastrofa u kontekstu proizvodnje.

Sirovi manifest naspram Helm tabele

kriterijum

Sirovi YAML manifest

Helm chart

Instalacija

kubectl primijeniti -f

helm install

Multimedija (dev/prod.)

Copy-paste, sklon greškama

Jedan grafikon, različite vrijednosti.yaml

Verzija/povratak

rukom

lako sa vraćanjem kormila

Krivulja učenja

nisko

srednje

kada

Mala, jedinstvena sredina

Multimedijalni servis koji se ponavlja

tri mini kofera

Slučaj 1 — tajna srušenog servisa. Pod se stalno ponovo pokretao (CrashLoopBackOff). Tim je dao zapisnike i manifest AI; AI je pokazao da se Pod nikada nije smatrao "spremnim" jer je sonda spremnosti gledala na pogrešan port. Popravili su port, usluga je postala stabilna za 10 minuta. Ručno uspostavljanje ovog odnosa moglo bi potrajati satima.

Slučaj 2 — nepostavljanje granica je prekinulo čvor. Nije bilo ograničenja u raspoređivanju; Curenje memorije je naduvalo Pod i srušilo cijeli čvor, srušivši i susjedne usluge. Nakon incidenta, natjerali su AI da kaže "dodajte razumne zahtjeve za CPU/memoriju i ograničenja svim implementacijama" i učinili ga standardnim. Jedna linija koja nedostaje koštala je sate zastoja.

Slučaj 3 — snimljen veliki RBAC. Tokom istrage, otkriveno je da je manifest ServiceAccount generiran od strane AI vezan za ulogu administratora klastera - što znači da usluga može upravljati cijelim klasterom. Tim je suzio dozvolu na samo čitanje Podova u njihovom imenskom prostoru. Princip najmanje privilegija zatvorio je sigurnosnu ranjivost.

Četiri šablona za kopiranje

1) Raspoređivanje + proizvodnja usluge:

Napišite manifest implementacije i usluge za Kubernetes. Aplikacija: [AD], slika: [slika: fiksna-verzija], port: [X], replika: [N]. Pravila:- Dodajte CPU/memorijske zahtjeve i ograničenja.- Definirajte livenessProbe i readinessProbe.- Čitajte konfiguraciju iz ConfigMap-a, tajnu iz Secret objekta; Nemojte ugrađivati ​​vrijednosti u manifest, koristite čuvare mjesta. - NEMOJTE koristiti oznaku slike ":latest". Dajte sa opisom.

2) Rješavanje očigledne greške:

Trenutni Pod je u stanju [CrashLoopBackOff / Pending / ImagePullBackOff]. Prema sljedećem manifestu i izlazu 'kubectl describe', navedite moguće uzroke po vjerovatnoći i izdajte naredbu verify za svaki. Manifest: [YAML] Opišite: [IZLAZ]

3) Provjera sigurnosti/integriteta:

Proverite ovaj Kubernetes manifest: da li nedostaje ograničenje resursa, da li nedostaje prob, da li postoji oznaka :latest, da li postoji preširoka RBAC/dozvola, da li je tajna ugrađena u manifest? Zapišite nalaze po važnosti i sa ispravkom. Manifest: [YAML]

4) Konverzija u Helm grafikon:

Pretvorite sljedeće neobrađene manifeste u Helm grafikon za višekratnu upotrebu: koje vrijednosti treba da izlaze u values.yaml (slika, replika, izvor, okruženje)? Prikaži strukturu grafikona i vrijednosti uzorka.yaml.Manifesti: [YAML]

Slaba prompt / Jaka prompt

Slabo: "Napišite Kubernetes YAML za moju aplikaciju."

Rezultat: implementacija bez probe, bez ograničenja sa :latest tag, ugrađivanje tajne ravni; Nesiguran i krhak u produkciji.

Snažno: "Napišite Kubernetes Deployment + Service. Slika myapp:1.4.2, 3 replike, 8080 portova. CPU 100m-500m, memorija 128Mi-512Mi dodajte zahtjeve/ograničenja. Stavite sondu za živost za /healthz, probu spremnosti za' Secret sa /ready objektom. Pročitajte ga u objektu Secret, pročitajte ga. opis."

Razlika: druga prompt verzija daje skalu, ograničenja resursa, zdravstvene provjere i tajno pravilo; Proizvod je blizu proizvodnje i siguran.

Uobičajene greške

  • Ne postavlja se ograničenja resursa. Jedan Pod može potrošiti cijeli čvor.
  • Ne dodaje se zdravstveni pregled (sonda). Kubernetes ne može otkriti srušeni/nije spreman Pod.
  • `:najnovija` oznaka. Postaje nejasno koja je verzija pokrenuta, ne može se vratiti.
  • Prenošenje tajne direktno na Git. Base64 nije enkripcija; svi to rješavaju.
  • Izvođenje naredbi u pogrešnom kontekstu/imenskom prostoru. Najčešći način rušenja u prod.
  • preskakanje `--dry-run`/`diff`. Ne vidim šta će se dogoditi prije implementacije.

Ukratko

Kubernetes je moćan, ali složen orkestrator koji automatski postavlja, skalira i optimizuje kontejnere u klasteru; Sve je definirano manifestnim YAML-ovima, koje Helm šablonizira. AI brzo proizvodi Deployment/Service manifeste i Helm grafikone, rješava misteriozne greške - ali morate eksplicitno tražiti ograničenje resursa, provjeru zdravlja, nepromjenjivu oznaku slike, uski RBAC i tajna sigurnosna pravila. --dry-run, diff i ispravna provjera konteksta su navike koje sprječavaju padove proizvoda.

Zadatak aplikacije

Neka AI generira manifest za primjer aplikacije s predloškom "Razmještanje + generiranje usluge". Zatim: (1) Neka provjeri ograničenje resursa, provjeru, :latest i tajnu pomoću šablona "Provjera sigurnosti/zdravosti"; (2) pokrenite kubectl apply --dry-run=server na testnom klasteru/minikubeu ako je moguće i pročitajte izlaz; (3) zabilježite dvije najkritičnije stavke za sigurnost/robustnost za koje smatrate da nedostaju.

kontrolna lista

  • [ ] Dodao sam verziju slike, broj replika, portova i ograničenja resursa svom zahtjevu.
  • [ ] Dodao sam sondu životnosti i spremnosti u manifest.
  • [ ] Fiksna oznaka slike; Nisam koristio :latest.
  • [ ] Tajna nije ugrađena u manifest; Koristio sam tajni objekt/vanjski trezor.
  • [ ] Suzio sam RBAC/dozvole na minimalne dozvole.
  • [ ] Prije prijave, provjerio sam da sam u ispravnom kontekstu i da --dry-run/diff izlazi.